diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -7,7 +7,7 @@ */ return array( 'names' => array( - 'core.pkg.css' => 'df3a0e9c', + 'core.pkg.css' => '96a7378c', 'core.pkg.js' => '41f5edc5', 'darkconsole.pkg.js' => 'e7393ebb', 'differential.pkg.css' => 'fe951924', @@ -25,7 +25,7 @@ 'rsrc/css/aphront/notification.css' => '9c279160', 'rsrc/css/aphront/panel-view.css' => '8427b78d', 'rsrc/css/aphront/phabricator-nav-view.css' => '0ecd30a1', - 'rsrc/css/aphront/table-view.css' => '4f2ed0bf', + 'rsrc/css/aphront/table-view.css' => 'e3632cc9', 'rsrc/css/aphront/tokenizer.css' => '04875312', 'rsrc/css/aphront/tooltip.css' => '7672b60f', 'rsrc/css/aphront/two-column.css' => '16ab3ad2', @@ -34,7 +34,7 @@ 'rsrc/css/application/almanac/almanac.css' => 'dbb9b3af', 'rsrc/css/application/auth/auth.css' => '44975d4b', 'rsrc/css/application/base/main-menu-view.css' => '44b4a289', - 'rsrc/css/application/base/notification-menu.css' => '713df25a', + 'rsrc/css/application/base/notification-menu.css' => 'f31c0bde', 'rsrc/css/application/base/phabricator-application-launch-view.css' => '9a233ed6', 'rsrc/css/application/base/phui-theme.css' => '1ccdcc84', 'rsrc/css/application/base/standard-page-view.css' => '43045fb4', @@ -488,7 +488,7 @@ 'aphront-list-filter-view-css' => 'aa5ffcb9', 'aphront-multi-column-view-css' => 'fd18389d', 'aphront-panel-view-css' => '8427b78d', - 'aphront-table-view-css' => '4f2ed0bf', + 'aphront-table-view-css' => 'e3632cc9', 'aphront-tokenizer-control-css' => '04875312', 'aphront-tooltip-css' => '7672b60f', 'aphront-two-column-view-css' => '16ab3ad2', @@ -726,7 +726,7 @@ 'phabricator-nav-view-css' => '0ecd30a1', 'phabricator-notification' => '0c6946e7', 'phabricator-notification-css' => '9c279160', - 'phabricator-notification-menu-css' => '713df25a', + 'phabricator-notification-menu-css' => 'f31c0bde', 'phabricator-object-selector-css' => '029a133d', 'phabricator-phtize' => 'd254d646', 'phabricator-prefab' => '6920d200', diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1340,6 +1340,7 @@ 'PhabricatorApplicationSearchController' => 'applications/search/controller/PhabricatorApplicationSearchController.php', 'PhabricatorApplicationSearchEngine' => 'applications/search/engine/PhabricatorApplicationSearchEngine.php', 'PhabricatorApplicationSearchEngineTestCase' => 'applications/search/engine/__tests__/PhabricatorApplicationSearchEngineTestCase.php', + 'PhabricatorApplicationSearchResultView' => 'applications/search/view/PhabricatorApplicationSearchResultView.php', 'PhabricatorApplicationSearchResultsControllerInterface' => 'applications/search/interface/PhabricatorApplicationSearchResultsControllerInterface.php', 'PhabricatorApplicationStatusView' => 'applications/meta/view/PhabricatorApplicationStatusView.php', 'PhabricatorApplicationTestCase' => 'applications/base/__tests__/PhabricatorApplicationTestCase.php', @@ -4845,6 +4846,7 @@ 'PhabricatorApplicationSearchController' => 'PhabricatorSearchBaseController', 'PhabricatorApplicationSearchEngine' => 'Phobject', 'PhabricatorApplicationSearchEngineTestCase' => 'PhabricatorTestCase', + 'PhabricatorApplicationSearchResultView' => 'Phobject', 'PhabricatorApplicationStatusView' => 'AphrontView', 'PhabricatorApplicationTestCase' => 'PhabricatorTestCase', 'PhabricatorApplicationTransaction' => array( diff --git a/src/applications/almanac/query/AlmanacDeviceSearchEngine.php b/src/applications/almanac/query/AlmanacDeviceSearchEngine.php --- a/src/applications/almanac/query/AlmanacDeviceSearchEngine.php +++ b/src/applications/almanac/query/AlmanacDeviceSearchEngine.php @@ -78,7 +78,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No Almanac Devices found.')); + + return $result; } } diff --git a/src/applications/almanac/query/AlmanacNetworkSearchEngine.php b/src/applications/almanac/query/AlmanacNetworkSearchEngine.php --- a/src/applications/almanac/query/AlmanacNetworkSearchEngine.php +++ b/src/applications/almanac/query/AlmanacNetworkSearchEngine.php @@ -80,6 +80,10 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No Almanac Networks found.')); + + return $result; } } diff --git a/src/applications/almanac/query/AlmanacServiceSearchEngine.php b/src/applications/almanac/query/AlmanacServiceSearchEngine.php --- a/src/applications/almanac/query/AlmanacServiceSearchEngine.php +++ b/src/applications/almanac/query/AlmanacServiceSearchEngine.php @@ -90,6 +90,10 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No Almanac Services found.')); + + return $result; } } diff --git a/src/applications/audit/query/PhabricatorCommitSearchEngine.php b/src/applications/audit/query/PhabricatorCommitSearchEngine.php --- a/src/applications/audit/query/PhabricatorCommitSearchEngine.php +++ b/src/applications/audit/query/PhabricatorCommitSearchEngine.php @@ -206,8 +206,12 @@ } $view->setHandles($handles); + $list = $view->buildList(); - return $view->buildList(); + $result = new PhabricatorApplicationSearchResultView(); + $result->setContent($list); + + return $result; } } diff --git a/src/applications/auth/query/PhabricatorAuthInviteSearchEngine.php b/src/applications/auth/query/PhabricatorAuthInviteSearchEngine.php --- a/src/applications/auth/query/PhabricatorAuthInviteSearchEngine.php +++ b/src/applications/auth/query/PhabricatorAuthInviteSearchEngine.php @@ -102,8 +102,9 @@ 'right', )); - return id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Email Invitations')) - ->setTable($table); + $result = new PhabricatorApplicationSearchResultView(); + $result->setTable($table); + + return $result; } } diff --git a/src/applications/calendar/query/PhabricatorCalendarEventSearchEngine.php b/src/applications/calendar/query/PhabricatorCalendarEventSearchEngine.php --- a/src/applications/calendar/query/PhabricatorCalendarEventSearchEngine.php +++ b/src/applications/calendar/query/PhabricatorCalendarEventSearchEngine.php @@ -328,7 +328,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No events found.')); + + return $result; } private function buildCalendarView( @@ -385,7 +389,11 @@ $month_view->setBrowseURI( $this->getURI('query/'.$query->getQueryKey().'/')); - return $month_view; + // TODO redesign-2015 : Move buttons out of PHUICalendarView? + $result = new PhabricatorApplicationSearchResultView(); + $result->setContent($month_view); + + return $result; } private function buildCalendarDayView( @@ -436,7 +444,10 @@ $day_view->setBrowseURI( $this->getURI('query/'.$query->getQueryKey().'/')); - return $day_view; + $result = new PhabricatorApplicationSearchResultView(); + $result->setContent($day_view); + + return $result; } private function getDisplayYearAndMonthAndDay( diff --git a/src/applications/conduit/query/PhabricatorConduitSearchEngine.php b/src/applications/conduit/query/PhabricatorConduitSearchEngine.php --- a/src/applications/conduit/query/PhabricatorConduitSearchEngine.php +++ b/src/applications/conduit/query/PhabricatorConduitSearchEngine.php @@ -196,7 +196,10 @@ $out[] = $list; } - return $out; + $result = new PhabricatorApplicationSearchResultView(); + $result->setContent($out); + + return $result; } } diff --git a/src/applications/conpherence/query/ConpherenceThreadSearchEngine.php b/src/applications/conpherence/query/ConpherenceThreadSearchEngine.php --- a/src/applications/conpherence/query/ConpherenceThreadSearchEngine.php +++ b/src/applications/conpherence/query/ConpherenceThreadSearchEngine.php @@ -253,7 +253,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No threads found.')); + + return $result; } private function getTypeOptions() { diff --git a/src/applications/countdown/query/PhabricatorCountdownSearchEngine.php b/src/applications/countdown/query/PhabricatorCountdownSearchEngine.php --- a/src/applications/countdown/query/PhabricatorCountdownSearchEngine.php +++ b/src/applications/countdown/query/PhabricatorCountdownSearchEngine.php @@ -140,7 +140,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No countdowns found.')); + + return $result; } } diff --git a/src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php b/src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php --- a/src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php +++ b/src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php @@ -185,9 +185,25 @@ if (!$id) { $id = celerity_generate_unique_node_id(); } - $box = id(new PHUIObjectBoxView()) - ->setHeader($header) - ->appendChild($content) + + $box = new PHUIObjectBoxView(); + + $interface = 'PhabricatorApplicationSearchResultView'; + if ($content instanceof $interface) { + if ($content->getObjectList()) { + $box->setObjectList($content->getObjectList()); + } + if ($content->getTable()) { + $box->setTable($content->getTable()); + } + if ($content->getContent()) { + $box->appendChild($content->getContent()); + } + } else { + $box->appendChild($content); + } + + $box->setHeader($header) ->setID($id) ->addSigil('dashboard-panel') ->setMetadata(array('objectPHID' => $panel->getPHID())); diff --git a/src/applications/dashboard/query/PhabricatorDashboardPanelSearchEngine.php b/src/applications/dashboard/query/PhabricatorDashboardPanelSearchEngine.php --- a/src/applications/dashboard/query/PhabricatorDashboardPanelSearchEngine.php +++ b/src/applications/dashboard/query/PhabricatorDashboardPanelSearchEngine.php @@ -132,7 +132,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No panels found.')); + + return $result; } } diff --git a/src/applications/dashboard/query/PhabricatorDashboardSearchEngine.php b/src/applications/dashboard/query/PhabricatorDashboardSearchEngine.php --- a/src/applications/dashboard/query/PhabricatorDashboardSearchEngine.php +++ b/src/applications/dashboard/query/PhabricatorDashboardSearchEngine.php @@ -104,7 +104,12 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No dashboards found.')); + + return $result; + } } diff --git a/src/applications/differential/query/DifferentialRevisionSearchEngine.php b/src/applications/differential/query/DifferentialRevisionSearchEngine.php --- a/src/applications/differential/query/DifferentialRevisionSearchEngine.php +++ b/src/applications/differential/query/DifferentialRevisionSearchEngine.php @@ -323,10 +323,15 @@ if (count($views) == 1) { // Reduce this to a PHUIObjectItemListView so we can get the free // support from ApplicationSearch. - return head($views)->render(); + $list = head($views)->render(); } else { - return $views; + $list = $views; } + + $result = new PhabricatorApplicationSearchResultView(); + $result->setContent($list); + + return $result; } } diff --git a/src/applications/diviner/query/DivinerAtomSearchEngine.php b/src/applications/diviner/query/DivinerAtomSearchEngine.php --- a/src/applications/diviner/query/DivinerAtomSearchEngine.php +++ b/src/applications/diviner/query/DivinerAtomSearchEngine.php @@ -116,7 +116,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No books found.')); + + return $result; } } diff --git a/src/applications/drydock/query/DrydockBlueprintSearchEngine.php b/src/applications/drydock/query/DrydockBlueprintSearchEngine.php --- a/src/applications/drydock/query/DrydockBlueprintSearchEngine.php +++ b/src/applications/drydock/query/DrydockBlueprintSearchEngine.php @@ -69,7 +69,11 @@ $view->addItem($item); } - return $view; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($view); + $result->setNoDataString(pht('No blueprints found.')); + + return $result; } } diff --git a/src/applications/drydock/query/DrydockLeaseSearchEngine.php b/src/applications/drydock/query/DrydockLeaseSearchEngine.php --- a/src/applications/drydock/query/DrydockLeaseSearchEngine.php +++ b/src/applications/drydock/query/DrydockLeaseSearchEngine.php @@ -89,10 +89,14 @@ PhabricatorSavedQuery $saved, array $handles) { - return id(new DrydockLeaseListView()) + $list = id(new DrydockLeaseListView()) ->setUser($this->requireViewer()) - ->setLeases($leases) - ->render(); + ->setLeases($leases); + + $result = new PhabricatorApplicationSearchResultView(); + $result->setTable($list); + + return $result; } } diff --git a/src/applications/drydock/query/DrydockLogSearchEngine.php b/src/applications/drydock/query/DrydockLogSearchEngine.php --- a/src/applications/drydock/query/DrydockLogSearchEngine.php +++ b/src/applications/drydock/query/DrydockLogSearchEngine.php @@ -49,10 +49,14 @@ PhabricatorSavedQuery $query, array $handles) { - return id(new DrydockLogListView()) + $list = id(new DrydockLogListView()) ->setUser($this->requireViewer()) - ->setLogs($logs) - ->render(); + ->setLogs($logs); + + $result = new PhabricatorApplicationSearchResultView(); + $result->setTable($list); + + return $result; } } diff --git a/src/applications/drydock/query/DrydockResourceSearchEngine.php b/src/applications/drydock/query/DrydockResourceSearchEngine.php --- a/src/applications/drydock/query/DrydockResourceSearchEngine.php +++ b/src/applications/drydock/query/DrydockResourceSearchEngine.php @@ -87,10 +87,14 @@ PhabricatorSavedQuery $query, array $handles) { - return id(new DrydockResourceListView()) + $list = id(new DrydockResourceListView()) ->setUser($this->requireViewer()) - ->setResources($resources) - ->render(); + ->setResources($resources); + + $result = new PhabricatorApplicationSearchResultView(); + $result->setTable($list); + + return $result; } } diff --git a/src/applications/feed/query/PhabricatorFeedSearchEngine.php b/src/applications/feed/query/PhabricatorFeedSearchEngine.php --- a/src/applications/feed/query/PhabricatorFeedSearchEngine.php +++ b/src/applications/feed/query/PhabricatorFeedSearchEngine.php @@ -139,7 +139,12 @@ $builder->setUser($this->requireViewer()); $view = $builder->buildView(); - return phutil_tag_div('phabricator-feed-frame', $view); + $list = phutil_tag_div('phabricator-feed-frame', $view); + + $result = new PhabricatorApplicationSearchResultView(); + $result->setContent($list); + + return $result; } } diff --git a/src/applications/files/query/PhabricatorFileSearchEngine.php b/src/applications/files/query/PhabricatorFileSearchEngine.php --- a/src/applications/files/query/PhabricatorFileSearchEngine.php +++ b/src/applications/files/query/PhabricatorFileSearchEngine.php @@ -171,7 +171,11 @@ $list_view->appendChild(id(new PhabricatorGlobalUploadTargetView()) ->setUser($viewer)); - return $list_view; + + $result = new PhabricatorApplicationSearchResultView(); + $result->setContent($list_view); + + return $result; } } diff --git a/src/applications/flag/query/PhabricatorFlagSearchEngine.php b/src/applications/flag/query/PhabricatorFlagSearchEngine.php --- a/src/applications/flag/query/PhabricatorFlagSearchEngine.php +++ b/src/applications/flag/query/PhabricatorFlagSearchEngine.php @@ -180,7 +180,12 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No flags found.')); + + return $result; + } diff --git a/src/applications/fund/query/FundBackerSearchEngine.php b/src/applications/fund/query/FundBackerSearchEngine.php --- a/src/applications/fund/query/FundBackerSearchEngine.php +++ b/src/applications/fund/query/FundBackerSearchEngine.php @@ -141,7 +141,10 @@ 'right', )); - return $table; + $result = new PhabricatorApplicationSearchResultView(); + $result->setTable($table); + + return $result; } } diff --git a/src/applications/fund/query/FundInitiativeSearchEngine.php b/src/applications/fund/query/FundInitiativeSearchEngine.php --- a/src/applications/fund/query/FundInitiativeSearchEngine.php +++ b/src/applications/fund/query/FundInitiativeSearchEngine.php @@ -163,6 +163,12 @@ $list->addItem($item); } + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No initiatives found.')); + + return $result; + return $list; } diff --git a/src/applications/harbormaster/query/HarbormasterBuildPlanSearchEngine.php b/src/applications/harbormaster/query/HarbormasterBuildPlanSearchEngine.php --- a/src/applications/harbormaster/query/HarbormasterBuildPlanSearchEngine.php +++ b/src/applications/harbormaster/query/HarbormasterBuildPlanSearchEngine.php @@ -93,7 +93,12 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No build plans found.')); + + return $result; + } } diff --git a/src/applications/harbormaster/query/HarbormasterBuildableSearchEngine.php b/src/applications/harbormaster/query/HarbormasterBuildableSearchEngine.php --- a/src/applications/harbormaster/query/HarbormasterBuildableSearchEngine.php +++ b/src/applications/harbormaster/query/HarbormasterBuildableSearchEngine.php @@ -216,7 +216,11 @@ } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No buildables found.')); + + return $result; } } diff --git a/src/applications/herald/query/HeraldRuleSearchEngine.php b/src/applications/herald/query/HeraldRuleSearchEngine.php --- a/src/applications/herald/query/HeraldRuleSearchEngine.php +++ b/src/applications/herald/query/HeraldRuleSearchEngine.php @@ -209,7 +209,12 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No rules found.')); + + return $result; + } } diff --git a/src/applications/herald/query/HeraldTranscriptSearchEngine.php b/src/applications/herald/query/HeraldTranscriptSearchEngine.php --- a/src/applications/herald/query/HeraldTranscriptSearchEngine.php +++ b/src/applications/herald/query/HeraldTranscriptSearchEngine.php @@ -133,7 +133,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No transcripts found.')); + + return $result; } } diff --git a/src/applications/legalpad/query/LegalpadDocumentSearchEngine.php b/src/applications/legalpad/query/LegalpadDocumentSearchEngine.php --- a/src/applications/legalpad/query/LegalpadDocumentSearchEngine.php +++ b/src/applications/legalpad/query/LegalpadDocumentSearchEngine.php @@ -209,7 +209,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No documents found.')); + + return $result; } } diff --git a/src/applications/legalpad/query/LegalpadDocumentSignatureSearchEngine.php b/src/applications/legalpad/query/LegalpadDocumentSignatureSearchEngine.php --- a/src/applications/legalpad/query/LegalpadDocumentSignatureSearchEngine.php +++ b/src/applications/legalpad/query/LegalpadDocumentSignatureSearchEngine.php @@ -267,18 +267,17 @@ 'right', )); - // TODO redesign-2015 : Talk to epriestley about 'correct' way to implelment - /* if ($this->document) { + $button = null; + if ($this->document) { $document_id = $this->document->getID(); - $header->addActionLink( - id(new PHUIButtonView()) - ->setText(pht('Add Signature Exemption')) + $button = id(new PHUIButtonView()) + ->setText(pht('Add Exemption')) ->setTag('a') ->setHref($this->getApplicationURI('addsignature/'.$document_id.'/')) ->setWorkflow(true) - ->setIcon(id(new PHUIIconView())->setIconFont('fa-pencil'))); - }*/ + ->setIcon(id(new PHUIIconView())->setIconFont('fa-pencil')); + } if (!$this->document) { $table->setNotice( @@ -286,7 +285,14 @@ 'documents you have permission to edit.')); } - return $table; + $result = new PhabricatorApplicationSearchResultView(); + $result->setTable($table); + if ($button) { + $result->addAction($button); + } + + return $result; + } private function renderIcon($icon, $color, $title) { diff --git a/src/applications/macro/query/PhabricatorMacroSearchEngine.php b/src/applications/macro/query/PhabricatorMacroSearchEngine.php --- a/src/applications/macro/query/PhabricatorMacroSearchEngine.php +++ b/src/applications/macro/query/PhabricatorMacroSearchEngine.php @@ -181,7 +181,10 @@ $pinboard->addItem($item); } - return $pinboard; + $result = new PhabricatorApplicationSearchResultView(); + $result->setContent($pinboard); + + return $result; } } diff --git a/src/applications/maniphest/query/ManiphestTaskSearchEngine.php b/src/applications/maniphest/query/ManiphestTaskSearchEngine.php --- a/src/applications/maniphest/query/ManiphestTaskSearchEngine.php +++ b/src/applications/maniphest/query/ManiphestTaskSearchEngine.php @@ -316,13 +316,18 @@ ManiphestBulkEditCapability::CAPABILITY); } - return id(new ManiphestTaskResultListView()) + $list = id(new ManiphestTaskResultListView()) ->setUser($viewer) ->setTasks($tasks) ->setSavedQuery($saved) ->setCanEditPriority($can_edit_priority) ->setCanBatchEdit($can_bulk_edit) ->setShowBatchControls($this->showBatchControls); + + $result = new PhabricatorApplicationSearchResultView(); + $result->setContent($list); + + return $result; } protected function willUseSavedQuery(PhabricatorSavedQuery $saved) { diff --git a/src/applications/meta/query/PhabricatorAppSearchEngine.php b/src/applications/meta/query/PhabricatorAppSearchEngine.php --- a/src/applications/meta/query/PhabricatorAppSearchEngine.php +++ b/src/applications/meta/query/PhabricatorAppSearchEngine.php @@ -267,7 +267,10 @@ $results[] = $list; } - return $results; + $result = new PhabricatorApplicationSearchResultView(); + $result->setContent($results); + + return $result; } } diff --git a/src/applications/notification/query/PhabricatorNotificationSearchEngine.php b/src/applications/notification/query/PhabricatorNotificationSearchEngine.php --- a/src/applications/notification/query/PhabricatorNotificationSearchEngine.php +++ b/src/applications/notification/query/PhabricatorNotificationSearchEngine.php @@ -127,13 +127,11 @@ ->addClass('phabricator-notification-list') ->appendChild($view); - $notif_header = id(new PHUIHeaderView()) - ->setHeader($header) - ->addActionLink($button); + $result = new PhabricatorApplicationSearchResultView(); + $result->addAction($button); + $result->setContent($view); - return id(new PHUIObjectBoxView()) - ->setHeader($notif_header) - ->appendChild($view); + return $result; } public function shouldUseOffsetPaging() { diff --git a/src/applications/nuance/query/NuanceQueueSearchEngine.php b/src/applications/nuance/query/NuanceQueueSearchEngine.php --- a/src/applications/nuance/query/NuanceQueueSearchEngine.php +++ b/src/applications/nuance/query/NuanceQueueSearchEngine.php @@ -69,7 +69,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No queues found.')); + + return $result; } } diff --git a/src/applications/nuance/query/NuanceSourceSearchEngine.php b/src/applications/nuance/query/NuanceSourceSearchEngine.php --- a/src/applications/nuance/query/NuanceSourceSearchEngine.php +++ b/src/applications/nuance/query/NuanceSourceSearchEngine.php @@ -72,7 +72,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No sources found.')); + + return $result; } } diff --git a/src/applications/oauthserver/query/PhabricatorOAuthServerClientSearchEngine.php b/src/applications/oauthserver/query/PhabricatorOAuthServerClientSearchEngine.php --- a/src/applications/oauthserver/query/PhabricatorOAuthServerClientSearchEngine.php +++ b/src/applications/oauthserver/query/PhabricatorOAuthServerClientSearchEngine.php @@ -108,7 +108,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No clients found.')); + + return $result; } } diff --git a/src/applications/passphrase/query/PassphraseCredentialSearchEngine.php b/src/applications/passphrase/query/PassphraseCredentialSearchEngine.php --- a/src/applications/passphrase/query/PassphraseCredentialSearchEngine.php +++ b/src/applications/passphrase/query/PassphraseCredentialSearchEngine.php @@ -123,7 +123,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No credentials found.')); + + return $result; } } diff --git a/src/applications/paste/query/PhabricatorPasteSearchEngine.php b/src/applications/paste/query/PhabricatorPasteSearchEngine.php --- a/src/applications/paste/query/PhabricatorPasteSearchEngine.php +++ b/src/applications/paste/query/PhabricatorPasteSearchEngine.php @@ -160,6 +160,10 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No pastes found.')); + + return $result; } } diff --git a/src/applications/people/query/PhabricatorPeopleLogSearchEngine.php b/src/applications/people/query/PhabricatorPeopleLogSearchEngine.php --- a/src/applications/people/query/PhabricatorPeopleLogSearchEngine.php +++ b/src/applications/people/query/PhabricatorPeopleLogSearchEngine.php @@ -186,6 +186,9 @@ $table->setSearchBaseURI($this->getApplicationURI('logs/')); } - return $table; + $result = new PhabricatorApplicationSearchResultView(); + $result->setTable($table); + + return $result; } } diff --git a/src/applications/people/query/PhabricatorPeopleSearchEngine.php b/src/applications/people/query/PhabricatorPeopleSearchEngine.php --- a/src/applications/people/query/PhabricatorPeopleSearchEngine.php +++ b/src/applications/people/query/PhabricatorPeopleSearchEngine.php @@ -247,7 +247,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No accounts found.')); + + return $result; } } diff --git a/src/applications/pholio/query/PholioMockSearchEngine.php b/src/applications/pholio/query/PholioMockSearchEngine.php --- a/src/applications/pholio/query/PholioMockSearchEngine.php +++ b/src/applications/pholio/query/PholioMockSearchEngine.php @@ -124,7 +124,10 @@ $board->addItem($item); } - return $board; + $result = new PhabricatorApplicationSearchResultView(); + $result->setContent($board); + + return $result; } } diff --git a/src/applications/phortune/controller/PhortuneMerchantViewController.php b/src/applications/phortune/controller/PhortuneMerchantViewController.php --- a/src/applications/phortune/controller/PhortuneMerchantViewController.php +++ b/src/applications/phortune/controller/PhortuneMerchantViewController.php @@ -30,7 +30,6 @@ $merchant->getName()); $header = id(new PHUIHeaderView()) - ->setObjectName(pht('Merchant %d', $merchant->getID())) ->setHeader($merchant->getName()) ->setUser($viewer) ->setPolicyObject($merchant); diff --git a/src/applications/phortune/query/PhortuneCartSearchEngine.php b/src/applications/phortune/query/PhortuneCartSearchEngine.php --- a/src/applications/phortune/query/PhortuneCartSearchEngine.php +++ b/src/applications/phortune/query/PhortuneCartSearchEngine.php @@ -228,6 +228,9 @@ } $table->setNotice($notice); - return $table; + $result = new PhabricatorApplicationSearchResultView(); + $result->setTable($table); + + return $result; } } diff --git a/src/applications/phortune/query/PhortuneChargeSearchEngine.php b/src/applications/phortune/query/PhortuneChargeSearchEngine.php --- a/src/applications/phortune/query/PhortuneChargeSearchEngine.php +++ b/src/applications/phortune/query/PhortuneChargeSearchEngine.php @@ -127,8 +127,9 @@ ->setCharges($charges) ->setHandles($handles); - return id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Charges')) - ->setTable($table); + $result = new PhabricatorApplicationSearchResultView(); + $result->setTable($table); + + return $table; } } diff --git a/src/applications/phortune/query/PhortuneMerchantSearchEngine.php b/src/applications/phortune/query/PhortuneMerchantSearchEngine.php --- a/src/applications/phortune/query/PhortuneMerchantSearchEngine.php +++ b/src/applications/phortune/query/PhortuneMerchantSearchEngine.php @@ -78,6 +78,10 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No merchants found.')); + + return $result; } } diff --git a/src/applications/phortune/query/PhortuneSubscriptionSearchEngine.php b/src/applications/phortune/query/PhortuneSubscriptionSearchEngine.php --- a/src/applications/phortune/query/PhortuneSubscriptionSearchEngine.php +++ b/src/applications/phortune/query/PhortuneSubscriptionSearchEngine.php @@ -158,8 +158,11 @@ $header = pht('Your Subscriptions'); } - return id(new PHUIObjectBoxView()) - ->setHeaderText($header) - ->setTable($table); + $table->setNotice($header); + + $result = new PhabricatorApplicationSearchResultView(); + $result->setTable($table); + + return $result; } } diff --git a/src/applications/phortune/view/PhortuneSubscriptionTableView.php b/src/applications/phortune/view/PhortuneSubscriptionTableView.php --- a/src/applications/phortune/view/PhortuneSubscriptionTableView.php +++ b/src/applications/phortune/view/PhortuneSubscriptionTableView.php @@ -5,6 +5,7 @@ private $subscriptions; private $handles; private $isMerchantView; + private $notice; public function setHandles(array $handles) { $this->handles = $handles; @@ -33,6 +34,11 @@ return $this->isMerchantView; } + public function setNotice($notice) { + $this->notice = $notice; + return $this; + } + public function render() { $subscriptions = $this->getSubscriptions(); $handles = $this->getHandles(); @@ -61,6 +67,7 @@ } $table = id(new AphrontTableView($rows)) + ->setNotice($this->notice) ->setHeaders( array( pht('ID'), diff --git a/src/applications/phrequent/query/PhrequentSearchEngine.php b/src/applications/phrequent/query/PhrequentSearchEngine.php --- a/src/applications/phrequent/query/PhrequentSearchEngine.php +++ b/src/applications/phrequent/query/PhrequentSearchEngine.php @@ -189,7 +189,10 @@ $view->addItem($item); } - return $view; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($view); + + return $result; } } diff --git a/src/applications/phriction/query/PhrictionSearchEngine.php b/src/applications/phriction/query/PhrictionSearchEngine.php --- a/src/applications/phriction/query/PhrictionSearchEngine.php +++ b/src/applications/phriction/query/PhrictionSearchEngine.php @@ -178,7 +178,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No documents found.')); + + return $result; } } diff --git a/src/applications/ponder/query/PonderQuestionSearchEngine.php b/src/applications/ponder/query/PonderQuestionSearchEngine.php --- a/src/applications/ponder/query/PonderQuestionSearchEngine.php +++ b/src/applications/ponder/query/PonderQuestionSearchEngine.php @@ -170,7 +170,11 @@ $view->addItem($item); } - return $view; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($view); + $result->setNoDataString(pht('No questions found.')); + + return $result; } } diff --git a/src/applications/project/query/PhabricatorProjectSearchEngine.php b/src/applications/project/query/PhabricatorProjectSearchEngine.php --- a/src/applications/project/query/PhabricatorProjectSearchEngine.php +++ b/src/applications/project/query/PhabricatorProjectSearchEngine.php @@ -193,7 +193,12 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No projects found.')); + + return $result; + } } diff --git a/src/applications/releeph/query/ReleephProductSearchEngine.php b/src/applications/releeph/query/ReleephProductSearchEngine.php --- a/src/applications/releeph/query/ReleephProductSearchEngine.php +++ b/src/applications/releeph/query/ReleephProductSearchEngine.php @@ -121,7 +121,10 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + + return $result; } } diff --git a/src/applications/repository/query/PhabricatorRepositoryPushLogSearchEngine.php b/src/applications/repository/query/PhabricatorRepositoryPushLogSearchEngine.php --- a/src/applications/repository/query/PhabricatorRepositoryPushLogSearchEngine.php +++ b/src/applications/repository/query/PhabricatorRepositoryPushLogSearchEngine.php @@ -108,11 +108,10 @@ ->setHandles($handles) ->setLogs($logs); - $box = id(new PHUIBoxView()) - ->addMargin(PHUI::MARGIN_LARGE) - ->appendChild($table); + $result = new PhabricatorApplicationSearchResultView(); + $result->setTable($table); - return $box; + return $result; } } diff --git a/src/applications/repository/query/PhabricatorRepositorySearchEngine.php b/src/applications/repository/query/PhabricatorRepositorySearchEngine.php --- a/src/applications/repository/query/PhabricatorRepositorySearchEngine.php +++ b/src/applications/repository/query/PhabricatorRepositorySearchEngine.php @@ -209,7 +209,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No repositories found for this query.')); + + return $result; } protected function willUseSavedQuery(PhabricatorSavedQuery $saved) { diff --git a/src/applications/search/controller/PhabricatorApplicationSearchController.php b/src/applications/search/controller/PhabricatorApplicationSearchController.php --- a/src/applications/search/controller/PhabricatorApplicationSearchController.php +++ b/src/applications/search/controller/PhabricatorApplicationSearchController.php @@ -185,8 +185,7 @@ $title = pht('Advanced Search'); } - $box = id(new PHUIObjectBoxView()) - ->setHeaderText($title); + $box = new PHUIObjectBoxView(); if ($run_query || $named_query) { $box->setShowHide( @@ -228,30 +227,45 @@ $saved_query); } - if ($list instanceof AphrontTableView) { - $box->setTable($list); - } else { - $box->setObjectList($list); + $header = id(new PHUIHeaderView()) + ->setHeader($title); + if ($list->getActions()) { + foreach ($list->getActions() as $action) { + $header->addActionLink($action); + } } - // TODO: This is a bit hacky. - if ($list instanceof PHUIObjectItemListView) { - $list->setNoDataString(pht('No results found for this query.')); - } else { - if ($pager->willShowPagingControls()) { - $pager_box = id(new PHUIBoxView()) - ->addPadding(PHUI::PADDING_MEDIUM) - ->addMargin(PHUI::MARGIN_LARGE) - ->setBorder(true) - ->appendChild($pager); - $nav->appendChild($pager_box); - } + $box->setHeader($header); + + if ($list->getObjectList()) { + $box->setObjectList($list->getObjectList()); + } + if ($list->getTable()) { + $box->setTable($list->getTable()); } + if ($list->getInfoView()) { + $box->setInfoView($list->getInfoView()); + } + if ($list->getContent()) { + $box->appendChild($list->getContent()); + } + + if ($pager->willShowPagingControls()) { + $pager_box = id(new PHUIBoxView()) + ->addPadding(PHUI::PADDING_MEDIUM) + ->addMargin(PHUI::MARGIN_LARGE) + ->setBorder(true) + ->appendChild($pager); + $nav->appendChild($pager_box); + } + } catch (PhabricatorTypeaheadInvalidTokenException $ex) { $errors[] = pht( 'This query specifies an invalid parameter. Review the '. 'query parameters and correct errors.'); } + } else { + $box->setHeaderText($title); } if ($errors) { diff --git a/src/applications/search/query/PhabricatorSearchApplicationSearchEngine.php b/src/applications/search/query/PhabricatorSearchApplicationSearchEngine.php --- a/src/applications/search/query/PhabricatorSearchApplicationSearchEngine.php +++ b/src/applications/search/query/PhabricatorSearchApplicationSearchEngine.php @@ -241,7 +241,7 @@ $viewer = $this->requireViewer(); $list = new PHUIObjectItemListView(); - $list->setNoDataString(pht('No results returned for that query.')); + $list->setNoDataString(pht('No results found.')); if ($results) { $objects = id(new PhabricatorObjectQuery()) @@ -259,7 +259,10 @@ } } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + + return $result; } private function readOwnerPHIDs(PhabricatorSavedQuery $saved) { diff --git a/src/applications/search/view/PhabricatorApplicationSearchResultView.php b/src/applications/search/view/PhabricatorApplicationSearchResultView.php new file mode 100644 --- /dev/null +++ b/src/applications/search/view/PhabricatorApplicationSearchResultView.php @@ -0,0 +1,86 @@ +objectList = $list; + return $this; + } + + public function getObjectList() { + $list = $this->objectList; + if ($list) { + if ($this->noDataString) { + $list->setNoDataString($this->noDataString); + } else { + $list->setNoDataString(pht('No results found for this query.')); + } + } + return $list; + } + + public function setTable(AphrontTableView $table) { + $this->table = $table; + return $this; + } + + public function getTable() { + return $this->table; + } + + public function setInfoView(PHUIInfoView $infoview) { + $this->infoView = $infoview; + return $this; + } + + public function getInfoView() { + return $this->infoView; + } + + public function setContent($content) { + $this->content = $content; + } + + public function getContent() { + return $this->content; + } + + public function addAction(PHUIButtonView $button) { + $this->actions[] = $button; + return $this; + } + + public function getActions() { + return $this->actions; + } + + public function setCollapsed($collapsed) { + $this->collapsed = $collapsed; + return $this; + } + + public function getCollapsed() { + return $this->collapsed; + } + + public function setNoDataString($nodata) { + $this->noDataString = $nodata; + return $this; + } + +} diff --git a/src/applications/slowvote/query/PhabricatorSlowvoteSearchEngine.php b/src/applications/slowvote/query/PhabricatorSlowvoteSearchEngine.php --- a/src/applications/slowvote/query/PhabricatorSlowvoteSearchEngine.php +++ b/src/applications/slowvote/query/PhabricatorSlowvoteSearchEngine.php @@ -167,7 +167,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No polls found.')); + + return $result; } } diff --git a/src/applications/spaces/query/PhabricatorSpacesNamespaceSearchEngine.php b/src/applications/spaces/query/PhabricatorSpacesNamespaceSearchEngine.php --- a/src/applications/spaces/query/PhabricatorSpacesNamespaceSearchEngine.php +++ b/src/applications/spaces/query/PhabricatorSpacesNamespaceSearchEngine.php @@ -91,7 +91,11 @@ $list->addItem($item); } - return $list; + $result = new PhabricatorApplicationSearchResultView(); + $result->setObjectList($list); + $result->setNoDataString(pht('No spaces found.')); + + return $result; } } diff --git a/webroot/rsrc/css/aphront/table-view.css b/webroot/rsrc/css/aphront/table-view.css --- a/webroot/rsrc/css/aphront/table-view.css +++ b/webroot/rsrc/css/aphront/table-view.css @@ -275,11 +275,6 @@ display: none; } -.aphront-table-view-device-ready { - width: 99%; - margin: 8px auto; -} - .aphront-table-view td.link { padding: 0; } diff --git a/webroot/rsrc/css/application/base/notification-menu.css b/webroot/rsrc/css/application/base/notification-menu.css --- a/webroot/rsrc/css/application/base/notification-menu.css +++ b/webroot/rsrc/css/application/base/notification-menu.css @@ -40,6 +40,14 @@ } +.phabricator-notification-list.pm { + padding: 0; +} + +.phabricator-notification-list .phabricator-notification { + padding: 10px 4px; +} + .phabricator-notification { padding: 6px 8px; }