mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-23 15:22:41 +01:00
Add a SearchEngine for Calendar import logs
Summary: Ref T10747. - Look at more than 25 logs! - Review your favorite logs. Heartwarming! :) Test Plan: Looked at logs. Wow! Logs! Reviewers: chad Reviewed By: chad Maniphest Tasks: T10747 Differential Revision: https://secure.phabricator.com/D16719
This commit is contained in:
parent
d8318089c8
commit
94a5a09d75
6 changed files with 187 additions and 34 deletions
|
@ -2119,8 +2119,11 @@ phutil_register_library_map(array(
|
|||
'PhabricatorCalendarImportIgnoredNodeLogType' => 'applications/calendar/importlog/PhabricatorCalendarImportIgnoredNodeLogType.php',
|
||||
'PhabricatorCalendarImportListController' => 'applications/calendar/controller/PhabricatorCalendarImportListController.php',
|
||||
'PhabricatorCalendarImportLog' => 'applications/calendar/storage/PhabricatorCalendarImportLog.php',
|
||||
'PhabricatorCalendarImportLogListController' => 'applications/calendar/controller/PhabricatorCalendarImportLogListController.php',
|
||||
'PhabricatorCalendarImportLogQuery' => 'applications/calendar/query/PhabricatorCalendarImportLogQuery.php',
|
||||
'PhabricatorCalendarImportLogSearchEngine' => 'applications/calendar/query/PhabricatorCalendarImportLogSearchEngine.php',
|
||||
'PhabricatorCalendarImportLogType' => 'applications/calendar/importlog/PhabricatorCalendarImportLogType.php',
|
||||
'PhabricatorCalendarImportLogView' => 'applications/calendar/view/PhabricatorCalendarImportLogView.php',
|
||||
'PhabricatorCalendarImportNameTransaction' => 'applications/calendar/xaction/PhabricatorCalendarImportNameTransaction.php',
|
||||
'PhabricatorCalendarImportOriginalLogType' => 'applications/calendar/importlog/PhabricatorCalendarImportOriginalLogType.php',
|
||||
'PhabricatorCalendarImportOrphanLogType' => 'applications/calendar/importlog/PhabricatorCalendarImportOrphanLogType.php',
|
||||
|
@ -6952,8 +6955,11 @@ phutil_register_library_map(array(
|
|||
'PhabricatorPolicyInterface',
|
||||
'PhabricatorDestructibleInterface',
|
||||
),
|
||||
'PhabricatorCalendarImportLogListController' => 'PhabricatorCalendarController',
|
||||
'PhabricatorCalendarImportLogQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||
'PhabricatorCalendarImportLogSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
||||
'PhabricatorCalendarImportLogType' => 'Phobject',
|
||||
'PhabricatorCalendarImportLogView' => 'AphrontView',
|
||||
'PhabricatorCalendarImportNameTransaction' => 'PhabricatorCalendarImportTransactionType',
|
||||
'PhabricatorCalendarImportOriginalLogType' => 'PhabricatorCalendarImportLogType',
|
||||
'PhabricatorCalendarImportOrphanLogType' => 'PhabricatorCalendarImportLogType',
|
||||
|
|
|
@ -83,6 +83,10 @@ final class PhabricatorCalendarApplication extends PhabricatorApplication {
|
|||
=> 'PhabricatorCalendarImportViewController',
|
||||
'disable/(?P<id>[1-9]\d*)/'
|
||||
=> 'PhabricatorCalendarImportDisableController',
|
||||
'log/' => array(
|
||||
$this->getQueryRoutePattern()
|
||||
=> 'PhabricatorCalendarImportLogListController',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorCalendarImportLogListController
|
||||
extends PhabricatorCalendarController {
|
||||
|
||||
public function handleRequest(AphrontRequest $request) {
|
||||
return id(new PhabricatorCalendarImportLogSearchEngine())
|
||||
->setController($this)
|
||||
->buildResponse();
|
||||
}
|
||||
|
||||
}
|
|
@ -145,39 +145,9 @@ final class PhabricatorCalendarImportViewController
|
|||
->setLimit(25)
|
||||
->execute();
|
||||
|
||||
$rows = array();
|
||||
foreach ($logs as $log) {
|
||||
$icon = $log->getDisplayIcon($viewer);
|
||||
$color = $log->getDisplayColor($viewer);
|
||||
$name = $log->getDisplayType($viewer);
|
||||
$description = $log->getDisplayDescription($viewer);
|
||||
|
||||
$rows[] = array(
|
||||
$log->getID(),
|
||||
id(new PHUIIconView())->setIcon($icon, $color),
|
||||
$name,
|
||||
$description,
|
||||
phabricator_datetime($log->getDateCreated(), $viewer),
|
||||
);
|
||||
}
|
||||
|
||||
$table = id(new AphrontTableView($rows))
|
||||
->setHeaders(
|
||||
array(
|
||||
pht('ID'),
|
||||
null,
|
||||
pht('Type'),
|
||||
pht('Mesage'),
|
||||
pht('Date'),
|
||||
))
|
||||
->setColumnClasses(
|
||||
array(
|
||||
null,
|
||||
null,
|
||||
'pri',
|
||||
'wide',
|
||||
null,
|
||||
));
|
||||
$logs_view = id(new PhabricatorCalendarImportLogView())
|
||||
->setViewer($viewer)
|
||||
->setLogs($logs);
|
||||
|
||||
$all_uri = $this->getApplicationURI('import/log/');
|
||||
$all_uri = (string)id(new PhutilURI($all_uri))
|
||||
|
@ -196,7 +166,7 @@ final class PhabricatorCalendarImportViewController
|
|||
return id(new PHUIObjectBoxView())
|
||||
->setHeader($header)
|
||||
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
|
||||
->setTable($table);
|
||||
->setTable($logs_view);
|
||||
}
|
||||
|
||||
private function buildImportedEvents(PhabricatorCalendarImport $import) {
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorCalendarImportLogSearchEngine
|
||||
extends PhabricatorApplicationSearchEngine {
|
||||
|
||||
public function getResultTypeDescription() {
|
||||
return pht('Calendar Import Logs');
|
||||
}
|
||||
|
||||
public function getApplicationClassName() {
|
||||
return 'PhabricatorCalendarApplication';
|
||||
}
|
||||
|
||||
public function newQuery() {
|
||||
return new PhabricatorCalendarImportLogQuery();
|
||||
}
|
||||
|
||||
protected function buildCustomSearchFields() {
|
||||
return array(
|
||||
id(new PhabricatorPHIDsSearchField())
|
||||
->setLabel(pht('Import Sources'))
|
||||
->setKey('importSourcePHIDs')
|
||||
->setAliases(array('importSourcePHID')),
|
||||
);
|
||||
}
|
||||
|
||||
protected function buildQueryFromParameters(array $map) {
|
||||
$query = $this->newQuery();
|
||||
|
||||
if ($map['importSourcePHIDs']) {
|
||||
$query->withImportPHIDs($map['importSourcePHIDs']);
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
protected function getURI($path) {
|
||||
return '/calendar/import/log/'.$path;
|
||||
}
|
||||
|
||||
protected function getBuiltinQueryNames() {
|
||||
$names = array(
|
||||
'all' => pht('All Logs'),
|
||||
);
|
||||
|
||||
return $names;
|
||||
}
|
||||
|
||||
public function buildSavedQueryFromBuiltin($query_key) {
|
||||
$query = $this->newSavedQuery();
|
||||
$query->setQueryKey($query_key);
|
||||
|
||||
switch ($query_key) {
|
||||
case 'all':
|
||||
return $query;
|
||||
}
|
||||
|
||||
return parent::buildSavedQueryFromBuiltin($query_key);
|
||||
}
|
||||
|
||||
protected function renderResultList(
|
||||
array $logs,
|
||||
PhabricatorSavedQuery $query,
|
||||
array $handles) {
|
||||
|
||||
assert_instances_of($logs, 'PhabricatorCalendarImportLog');
|
||||
$viewer = $this->requireViewer();
|
||||
|
||||
$view = id(new PhabricatorCalendarImportLogView())
|
||||
->setShowImportSources(true)
|
||||
->setViewer($viewer)
|
||||
->setLogs($logs);
|
||||
|
||||
return id(new PhabricatorApplicationSearchResultView())
|
||||
->setTable($view->newTable());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,84 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorCalendarImportLogView extends AphrontView {
|
||||
|
||||
private $logs = array();
|
||||
private $showImportSources = false;
|
||||
|
||||
public function setLogs(array $logs) {
|
||||
assert_instances_of($logs, 'PhabricatorCalendarImportLog');
|
||||
$this->logs = $logs;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getLogs() {
|
||||
return $this->logs;
|
||||
}
|
||||
|
||||
public function setShowImportSources($show_import_sources) {
|
||||
$this->showImportSources = $show_import_sources;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getShowImportSources() {
|
||||
return $this->showImportSources;
|
||||
}
|
||||
|
||||
public function render() {
|
||||
return $this->newTable();
|
||||
}
|
||||
|
||||
public function newTable() {
|
||||
$viewer = $this->getViewer();
|
||||
$logs = $this->getLogs();
|
||||
|
||||
$show_sources = $this->getShowImportSources();
|
||||
|
||||
$rows = array();
|
||||
foreach ($logs as $log) {
|
||||
$icon = $log->getDisplayIcon($viewer);
|
||||
$color = $log->getDisplayColor($viewer);
|
||||
$name = $log->getDisplayType($viewer);
|
||||
$description = $log->getDisplayDescription($viewer);
|
||||
|
||||
$rows[] = array(
|
||||
$log->getID(),
|
||||
($show_sources
|
||||
? $viewer->renderHandle($log->getImport()->getPHID())
|
||||
: null),
|
||||
id(new PHUIIconView())->setIcon($icon, $color),
|
||||
$name,
|
||||
$description,
|
||||
phabricator_datetime($log->getDateCreated(), $viewer),
|
||||
);
|
||||
}
|
||||
|
||||
$table = id(new AphrontTableView($rows))
|
||||
->setHeaders(
|
||||
array(
|
||||
pht('ID'),
|
||||
pht('Source'),
|
||||
null,
|
||||
pht('Type'),
|
||||
pht('Mesage'),
|
||||
pht('Date'),
|
||||
))
|
||||
->setColumnVisibility(
|
||||
array(
|
||||
true,
|
||||
$show_sources,
|
||||
))
|
||||
->setColumnClasses(
|
||||
array(
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
'pri',
|
||||
'wide',
|
||||
null,
|
||||
));
|
||||
|
||||
return $table;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue