From 89fe35cb0ecb629243f8f9f9e09ff270de1d28b1 Mon Sep 17 00:00:00 2001 From: Bob Trahan Date: Mon, 30 Mar 2015 16:25:24 -0700 Subject: [PATCH] Conpherence - add application search in a few more places. Summary: Ref T7584. In Conpherence main view, this adds a "search" link right in the "Rooms" header. This piece addresses an outstanding item on T7584. This diff also adds a search button in the durable column that takes you to the application search. This kind of a big product bet that rooms are going to be dominating things and its most useful to find another room quickly from this view. That said, I think the application search should get massaged slightly to allow searching threads and this won't be much of a trade off at all. Test Plan: verified new search links took me to correct place and displayed reasonably. Reviewers: chad, epriestley Reviewed By: epriestley Subscribers: Korvin, epriestley Maniphest Tasks: T7584 Differential Revision: https://secure.phabricator.com/D12215 --- resources/celerity/map.php | 8 ++++---- .../PhabricatorConpherenceApplication.php | 2 ++ .../ConpherenceNewRoomController.php | 2 +- .../ConpherenceRoomListController.php | 3 +-- .../query/ConpherenceThreadSearchEngine.php | 8 ++------ .../view/ConpherenceDurableColumnView.php | 19 +++++++++++++++++++ .../view/ConpherenceThreadListView.php | 11 +++++++++-- .../conpherence/durable-column.css | 18 +++++++++++++++--- .../rsrc/css/application/conpherence/menu.css | 13 +++++++++++++ 9 files changed, 66 insertions(+), 18 deletions(-) diff --git a/resources/celerity/map.php b/resources/celerity/map.php index dca4edf60a..f02c03b092 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -44,8 +44,8 @@ return array( 'rsrc/css/application/config/config-welcome.css' => '6abd79be', 'rsrc/css/application/config/setup-issue.css' => '22270af2', 'rsrc/css/application/config/unhandled-exception.css' => '37d4f9a2', - 'rsrc/css/application/conpherence/durable-column.css' => 'e2011d85', - 'rsrc/css/application/conpherence/menu.css' => '2c1c727c', + 'rsrc/css/application/conpherence/durable-column.css' => 'caa12d4a', + 'rsrc/css/application/conpherence/menu.css' => 'beef0920', 'rsrc/css/application/conpherence/message-pane.css' => '44154798', 'rsrc/css/application/conpherence/notification.css' => '04a6e10a', 'rsrc/css/application/conpherence/update.css' => '1099a660', @@ -514,8 +514,8 @@ return array( 'changeset-view-manager' => '58562350', 'config-options-css' => '7fedf08b', 'config-welcome-css' => '6abd79be', - 'conpherence-durable-column-view' => 'e2011d85', - 'conpherence-menu-css' => '2c1c727c', + 'conpherence-durable-column-view' => 'caa12d4a', + 'conpherence-menu-css' => 'beef0920', 'conpherence-message-pane-css' => '44154798', 'conpherence-notification-css' => '04a6e10a', 'conpherence-thread-manager' => 'bb928342', diff --git a/src/applications/conpherence/application/PhabricatorConpherenceApplication.php b/src/applications/conpherence/application/PhabricatorConpherenceApplication.php index 33cd24e352..bcfd164c14 100644 --- a/src/applications/conpherence/application/PhabricatorConpherenceApplication.php +++ b/src/applications/conpherence/application/PhabricatorConpherenceApplication.php @@ -40,6 +40,8 @@ final class PhabricatorConpherenceApplication extends PhabricatorApplication { '(?:query/(?P[^/]+)/)?' => 'ConpherenceRoomListController', 'new/' => 'ConpherenceNewRoomController', ), + 'search/(?:query/(?P[^/]+)/)?' + => 'ConpherenceRoomListController', 'panel/' => 'ConpherenceNotificationPanelController', 'widget/(?P[1-9]\d*)/' => 'ConpherenceWidgetController', 'update/(?P[1-9]\d*)/' => 'ConpherenceUpdateController', diff --git a/src/applications/conpherence/controller/ConpherenceNewRoomController.php b/src/applications/conpherence/controller/ConpherenceNewRoomController.php index 10f1eeba71..ce9afcb195 100644 --- a/src/applications/conpherence/controller/ConpherenceNewRoomController.php +++ b/src/applications/conpherence/controller/ConpherenceNewRoomController.php @@ -56,7 +56,7 @@ final class ConpherenceNewRoomController extends ConpherenceController { ->execute(); $submit_uri = $this->getApplicationURI('room/new/'); - $cancel_uri = $this->getApplicationURI('room/'); + $cancel_uri = $this->getApplicationURI('search/'); $dialog = $this->newDialog() ->setWidth(AphrontDialogView::WIDTH_FORM) diff --git a/src/applications/conpherence/controller/ConpherenceRoomListController.php b/src/applications/conpherence/controller/ConpherenceRoomListController.php index 04a309d031..299ca6b8d0 100644 --- a/src/applications/conpherence/controller/ConpherenceRoomListController.php +++ b/src/applications/conpherence/controller/ConpherenceRoomListController.php @@ -8,8 +8,7 @@ final class ConpherenceRoomListController extends ConpherenceController { $controller = id(new PhabricatorApplicationSearchController()) ->setQueryKey($request->getURIData('queryKey')) ->setSearchEngine( - id(new ConpherenceThreadSearchEngine()) - ->setIsRooms(true)) + new ConpherenceThreadSearchEngine()) ->setNavigation($this->buildRoomsSideNavView()); return $this->delegateToController($controller); diff --git a/src/applications/conpherence/query/ConpherenceThreadSearchEngine.php b/src/applications/conpherence/query/ConpherenceThreadSearchEngine.php index f7c3187014..b137850e46 100644 --- a/src/applications/conpherence/query/ConpherenceThreadSearchEngine.php +++ b/src/applications/conpherence/query/ConpherenceThreadSearchEngine.php @@ -67,11 +67,7 @@ final class ConpherenceThreadSearchEngine } protected function getURI($path) { - if ($this->isRooms) { - return '/conpherence/room/'.$path; - } else { - // TODO - will need a path if / when "thread" search happens - } + return '/conpherence/search/'.$path; } protected function getBuiltinQueryNames() { @@ -83,7 +79,7 @@ final class ConpherenceThreadSearchEngine ); if ($this->requireViewer()->isLoggedIn()) { - $names['participant'] = pht('Participated'); + $names['participant'] = pht('Joined Rooms'); } } diff --git a/src/applications/conpherence/view/ConpherenceDurableColumnView.php b/src/applications/conpherence/view/ConpherenceDurableColumnView.php index 0329e627d0..ed88ebb8be 100644 --- a/src/applications/conpherence/view/ConpherenceDurableColumnView.php +++ b/src/applications/conpherence/view/ConpherenceDurableColumnView.php @@ -261,9 +261,28 @@ final class ConpherenceDurableColumnView extends AphrontTagView { ), '')); } + $icons[] = $this->buildSearchButton(); + return $icons; } + private function buildSearchButton() { + return phutil_tag( + 'div', + array( + 'class' => 'conpherence-durable-column-search-button', + ), + id(new PHUIButtonBarView()) + ->addButton( + id(new PHUIButtonView()) + ->setTag('a') + ->setHref('/conpherence/search/') + ->setColor(PHUIButtonView::GREY) + ->setIcon( + id(new PHUIIconView()) + ->setIconFont('fa-search')))); + } + private function buildHeader() { $conpherence = $this->getSelectedConpherence(); diff --git a/src/applications/conpherence/view/ConpherenceThreadListView.php b/src/applications/conpherence/view/ConpherenceThreadListView.php index 8b9a6e13fd..21bf24d0ff 100644 --- a/src/applications/conpherence/view/ConpherenceThreadListView.php +++ b/src/applications/conpherence/view/ConpherenceThreadListView.php @@ -144,13 +144,20 @@ final class ConpherenceThreadListView extends AphrontView { array $conpherences, array $policy_objects) { - $header = $this->renderMenuItemHeader(pht('Rooms')); + $header = $this->renderMenuItemHeader( + pht('Rooms'), + 'conpherence-room-list-header'); + $header->appendChild( + id(new PHUIIconView()) + ->setIconFont('fa-search') + ->setHref('/conpherence/search/') + ->setText(pht('Search'))); $menu->addMenuItem($header); if (empty($conpherences)) { $join_item = id(new PHUIListItemView()) ->setType(PHUIListItemView::TYPE_LINK) - ->setHref('/conpherence/room/') + ->setHref('/conpherence/search/') ->setName(pht('Join a Room')); $menu->addMenuItem($join_item); diff --git a/webroot/rsrc/css/application/conpherence/durable-column.css b/webroot/rsrc/css/application/conpherence/durable-column.css index 314b78098b..112bad061a 100644 --- a/webroot/rsrc/css/application/conpherence/durable-column.css +++ b/webroot/rsrc/css/application/conpherence/durable-column.css @@ -75,18 +75,30 @@ .conpherence-durable-column-icon-bar { height: 38px; - padding: 4px 8px; + padding: 4px; background-color: {$lightgreybackground}; } .conpherence-durable-column-icon-bar .conpherence-durable-column-thread-icon { float: left; display: block; - width: 34px; height: 34px; - margin: 0 4px 0 0; + width: 34px; border: 2px solid transparent; border-radius: 3px; + margin: 0 4px 0 0; +} + +.conpherence-durable-column-icon-bar .conpherence-durable-column-search-button { + margin: 4px 0px 0px 0px; +} +.conpherence-durable-column-icon-bar .phui-button-bar { +} +.conpherence-durable-column-icon-bar .phui-button-bar a.button.has-icon { + height: 21px; +} +.conpherence-durable-column-icon-bar .phui-button-bar .button .phui-icon-view { + top: 8px; } .conpherence-durable-column-icon-bar diff --git a/webroot/rsrc/css/application/conpherence/menu.css b/webroot/rsrc/css/application/conpherence/menu.css index a67947ecff..5b38944fd5 100644 --- a/webroot/rsrc/css/application/conpherence/menu.css +++ b/webroot/rsrc/css/application/conpherence/menu.css @@ -47,6 +47,19 @@ padding: 10px 0 9px 8px; } +.conpherence-menu-pane .conpherence-room-list-header +.phui-icon-view { + font-weight: bold; + float: right; + text-transform: none; + margin: 0px 8px 0px 0px; +} + +.conpherence-menu-pane .conpherence-room-list-header +.phui-icon-view:hover { + color: {$sky}; +} + .conpherence-menu-pane .conpherence-message-list-header { margin-top: 12px; }