Move search, new room into thread column in Conpherence
Summary:
Moves search and new room out of crumb bar and into the thread column. This opens up space to add "Edit Room" into the crumbs area as an action link. Also removed 'widget-edit' pathways and javascript.
Fixes T8972
Test Plan:
Search, New, Edit rooms. Click different rooms, see correct URL each time.
{F1813226}
Reviewers: epriestley
Reviewed By: epriestley
Subscribers: Korvin
Maniphest Tasks: T8972
Differential Revision: https://secure.phabricator.com/D16543
			
			
This commit is contained in:
		| @@ -45,7 +45,7 @@ return array( | ||||
|     'rsrc/css/application/config/setup-issue.css' => 'f794cfc3', | ||||
|     'rsrc/css/application/config/unhandled-exception.css' => '4c96257a', | ||||
|     'rsrc/css/application/conpherence/durable-column.css' => '194ac487', | ||||
|     'rsrc/css/application/conpherence/menu.css' => '3a0fd18a', | ||||
|     'rsrc/css/application/conpherence/menu.css' => '4c959efa', | ||||
|     'rsrc/css/application/conpherence/message-pane.css' => '31dc663d', | ||||
|     'rsrc/css/application/conpherence/notification.css' => '6cdcc253', | ||||
|     'rsrc/css/application/conpherence/transaction.css' => '2c71247c', | ||||
| @@ -438,7 +438,7 @@ return array( | ||||
|     'rsrc/js/application/conpherence/behavior-menu.js' => '1d45c74d', | ||||
|     'rsrc/js/application/conpherence/behavior-pontificate.js' => '21ba5861', | ||||
|     'rsrc/js/application/conpherence/behavior-quicksand-blacklist.js' => '7927a7d3', | ||||
|     'rsrc/js/application/conpherence/behavior-widget-pane.js' => 'a8458711', | ||||
|     'rsrc/js/application/conpherence/behavior-widget-pane.js' => '65845387', | ||||
|     'rsrc/js/application/countdown/timer.js' => 'e4cc26b3', | ||||
|     'rsrc/js/application/daemon/behavior-bulk-job-reload.js' => 'edf8a145', | ||||
|     'rsrc/js/application/dashboard/behavior-dashboard-async-panel.js' => '469c0d9e', | ||||
| @@ -614,7 +614,7 @@ return array( | ||||
|     'config-options-css' => '0ede4c9b', | ||||
|     'config-page-css' => '8798e14f', | ||||
|     'conpherence-durable-column-view' => '194ac487', | ||||
|     'conpherence-menu-css' => '3a0fd18a', | ||||
|     'conpherence-menu-css' => '4c959efa', | ||||
|     'conpherence-message-pane-css' => '31dc663d', | ||||
|     'conpherence-notification-css' => '6cdcc253', | ||||
|     'conpherence-thread-manager' => '01774ab2', | ||||
| @@ -664,7 +664,7 @@ return array( | ||||
|     'javelin-behavior-conpherence-drag-and-drop-photo' => 'cf86d16a', | ||||
|     'javelin-behavior-conpherence-menu' => '1d45c74d', | ||||
|     'javelin-behavior-conpherence-pontificate' => '21ba5861', | ||||
|     'javelin-behavior-conpherence-widget-pane' => 'a8458711', | ||||
|     'javelin-behavior-conpherence-widget-pane' => '65845387', | ||||
|     'javelin-behavior-countdown-timer' => 'e4cc26b3', | ||||
|     'javelin-behavior-dark-console' => 'f411b6ae', | ||||
|     'javelin-behavior-dashboard-async-panel' => '469c0d9e', | ||||
| @@ -1479,6 +1479,19 @@ return array( | ||||
|       'javelin-request', | ||||
|       'javelin-workflow', | ||||
|     ), | ||||
|     65845387 => array( | ||||
|       'javelin-behavior', | ||||
|       'javelin-dom', | ||||
|       'javelin-stratcom', | ||||
|       'javelin-workflow', | ||||
|       'javelin-util', | ||||
|       'phabricator-notification', | ||||
|       'javelin-behavior-device', | ||||
|       'phuix-dropdown-menu', | ||||
|       'phuix-action-list-view', | ||||
|       'phuix-action-view', | ||||
|       'conpherence-thread-manager', | ||||
|     ), | ||||
|     '680ea2c8' => array( | ||||
|       'javelin-install', | ||||
|       'javelin-dom', | ||||
| @@ -1784,19 +1797,6 @@ return array( | ||||
|       'javelin-stratcom', | ||||
|       'javelin-dom', | ||||
|     ), | ||||
|     'a8458711' => array( | ||||
|       'javelin-behavior', | ||||
|       'javelin-dom', | ||||
|       'javelin-stratcom', | ||||
|       'javelin-workflow', | ||||
|       'javelin-util', | ||||
|       'phabricator-notification', | ||||
|       'javelin-behavior-device', | ||||
|       'phuix-dropdown-menu', | ||||
|       'phuix-action-list-view', | ||||
|       'phuix-action-view', | ||||
|       'conpherence-thread-manager', | ||||
|     ), | ||||
|     'a8d8459d' => array( | ||||
|       'javelin-behavior', | ||||
|       'javelin-dom', | ||||
|   | ||||
| @@ -36,12 +36,6 @@ final class ConpherenceWidgetConfigConstants extends ConpherenceConstants { | ||||
|         'deviceOnly' => false, | ||||
|         'hasCreate' => false, | ||||
|       ), | ||||
|       'widgets-edit' => array( | ||||
|         'name' => pht('Edit Room'), | ||||
|         'icon' => 'fa-pencil', | ||||
|         'deviceOnly' => false, | ||||
|         'hasCreate' => false, | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -38,28 +38,8 @@ abstract class ConpherenceController extends PhabricatorController { | ||||
|     $crumbs = parent::buildApplicationCrumbs(); | ||||
|     $crumbs->setBorder(true); | ||||
|  | ||||
|     $crumbs->addAction( | ||||
|       id(new PHUIListItemView()) | ||||
|       ->setName(pht('Search')) | ||||
|       ->setHref($this->getApplicationURI('search/')) | ||||
|       ->setIcon('fa-search')); | ||||
|  | ||||
|     if ($is_rooms) { | ||||
|     if (!$is_rooms) { | ||||
|       $crumbs | ||||
|         ->addAction( | ||||
|           id(new PHUIListItemView()) | ||||
|           ->setName(pht('New Room')) | ||||
|           ->setHref($this->getApplicationURI('new/')) | ||||
|           ->setIcon('fa-plus-square') | ||||
|           ->setWorkflow(true)); | ||||
|     } else { | ||||
|       $crumbs | ||||
|         ->addAction( | ||||
|           id(new PHUIListItemView()) | ||||
|           ->setName(pht('New Room')) | ||||
|           ->setHref($this->getApplicationURI('new/')) | ||||
|           ->setIcon('fa-plus-square') | ||||
|           ->setWorkflow(true)) | ||||
|         ->addAction( | ||||
|           id(new PHUIListItemView()) | ||||
|           ->setName(pht('Room')) | ||||
| @@ -76,6 +56,7 @@ abstract class ConpherenceController extends PhabricatorController { | ||||
|     ConpherenceThread $conpherence, | ||||
|     array $policy_objects) { | ||||
|     assert_instances_of($policy_objects, 'PhabricatorPolicy'); | ||||
|     $viewer = $this->getViewer(); | ||||
|  | ||||
|     $crumbs = $this->buildApplicationCrumbs(); | ||||
|     $data = $conpherence->getDisplayData($this->getViewer()); | ||||
| @@ -84,6 +65,21 @@ abstract class ConpherenceController extends PhabricatorController { | ||||
|       ->setName($data['title']) | ||||
|       ->setHref('/'.$conpherence->getMonogram())); | ||||
|  | ||||
|     $can_edit = PhabricatorPolicyFilter::hasCapability( | ||||
|       $viewer, | ||||
|       $conpherence, | ||||
|       PhabricatorPolicyCapability::CAN_EDIT); | ||||
|  | ||||
|     $crumbs | ||||
|       ->addAction( | ||||
|         id(new PHUIListItemView()) | ||||
|         ->setName(pht('Edit Room')) | ||||
|         ->setHref( | ||||
|           $this->getApplicationURI('update/'.$conpherence->getID()).'/') | ||||
|         ->setIcon('fa-pencil') | ||||
|         ->setDisabled(!$can_edit) | ||||
|         ->setWorkflow(true)); | ||||
|  | ||||
|     return hsprintf( | ||||
|       '%s', | ||||
|       array( | ||||
|   | ||||
| @@ -82,13 +82,6 @@ final class ConpherenceWidgetController extends ConpherenceController { | ||||
|         'style' => 'display: none', | ||||
|       ), | ||||
|       $this->renderSettingsWidgetPaneContent()); | ||||
|     $widgets[] = phutil_tag( | ||||
|       'div', | ||||
|       array( | ||||
|         'class' => 'widgets-body', | ||||
|         'id' => 'widgets-edit', | ||||
|         'style' => 'display: none', | ||||
|       )); | ||||
|  | ||||
|     // without this implosion we get "," between each element in our widgets | ||||
|     // array | ||||
|   | ||||
| @@ -99,9 +99,7 @@ final class ConpherenceThreadListView extends AphrontView { | ||||
|     array $rooms, | ||||
|     array $policy_objects) { | ||||
|  | ||||
|     $header = $this->renderMenuItemHeader( | ||||
|       pht('Rooms'), | ||||
|       'conpherence-room-list-header'); | ||||
|     $header = $this->renderMenuItemHeader(); | ||||
|     $menu->addMenuItem($header); | ||||
|  | ||||
|     if (empty($rooms)) { | ||||
| @@ -189,11 +187,53 @@ final class ConpherenceThreadListView extends AphrontView { | ||||
|     return $menu; | ||||
|   } | ||||
|  | ||||
|   private function renderMenuItemHeader($title, $class = null) { | ||||
|   private function renderMenuItemHeader() { | ||||
|     $rooms = phutil_tag( | ||||
|       'a', | ||||
|       array( | ||||
|         'class' => 'room-list-href', | ||||
|         'href' => '/conpherence/search/', | ||||
|       ), | ||||
|       pht('Rooms')); | ||||
|  | ||||
|     $new_icon = id(new PHUIIconView()) | ||||
|       ->setIcon('fa-plus-square') | ||||
|       ->addSigil('has-tooltip') | ||||
|       ->setHref('/conpherence/new/') | ||||
|       ->setWorkflow(true) | ||||
|       ->setMetaData(array( | ||||
|         'tip' => pht('New Room'), | ||||
|       )); | ||||
|  | ||||
|     $search_icon = id(new PHUIIconView()) | ||||
|       ->setIcon('fa-search') | ||||
|       ->addSigil('has-tooltip') | ||||
|       ->setHref('/conpherence/search/') | ||||
|       ->setMetaData(array( | ||||
|         'tip' => pht('Search Rooms'), | ||||
|       )); | ||||
|  | ||||
|     $icons = phutil_tag( | ||||
|       'span', | ||||
|       array( | ||||
|         'class' => 'room-list-icons', | ||||
|       ), | ||||
|       array( | ||||
|         $new_icon, | ||||
|         $search_icon, | ||||
|       )); | ||||
|  | ||||
|     $new_icon = id(new PHUIIconView()) | ||||
|       ->setIcon('fa-plus-square') | ||||
|       ->setHref('/conpherence/new/') | ||||
|       ->setWorkflow(true); | ||||
|  | ||||
|     $custom = array($rooms, $icons); | ||||
|  | ||||
|     $item = id(new PHUIListItemView()) | ||||
|       ->setType(PHUIListItemView::TYPE_LABEL) | ||||
|       ->setName($title) | ||||
|       ->addClass($class); | ||||
|       ->setType(PHUIListItemView::TYPE_CUSTOM) | ||||
|       ->setName($custom) | ||||
|       ->addClass('conpherence-room-list-header'); | ||||
|     return $item; | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -51,8 +51,24 @@ | ||||
|   display: none; | ||||
| } | ||||
|  | ||||
| .conpherence-menu-pane.phabricator-side-menu .phui-list-item-type-label { | ||||
| .conpherence-menu-pane.phabricator-side-menu .room-list-href { | ||||
|   padding: 10px 0 9px 8px; | ||||
|   display: inline-block; | ||||
|   text-transform: uppercase; | ||||
|   color: {$darkgreytext}; | ||||
|   font-weight: bold; | ||||
|   font-size: {$smallerfontsize}; | ||||
| } | ||||
|  | ||||
| .conpherence-menu-pane.phabricator-side-menu .room-list-icons { | ||||
|   display: inline-block; | ||||
|   float: right; | ||||
|   padding: 8px 0 5px; | ||||
| } | ||||
|  | ||||
| .conpherence-menu-pane .conpherence-room-list-header { | ||||
|   clear: both; | ||||
|   overflow: hidden; | ||||
| } | ||||
|  | ||||
| .conpherence-menu-pane .conpherence-room-list-header | ||||
| @@ -60,7 +76,7 @@ | ||||
|   font-weight: bold; | ||||
|   float: right; | ||||
|   text-transform: none; | ||||
|   margin: 0px 8px 0px 0px; | ||||
|   padding: 4px; | ||||
| } | ||||
|  | ||||
| .conpherence-menu-pane .conpherence-room-list-header | ||||
|   | ||||
| @@ -83,27 +83,11 @@ JX.behavior('conpherence-widget-pane', function(config) { | ||||
|  | ||||
|       var handler; | ||||
|       var href; | ||||
|       if (widget == 'widgets-edit') { | ||||
|         var threadManager = JX.ConpherenceThreadManager.getInstance(); | ||||
|         handler = function(e) { | ||||
|           e.prevent(); | ||||
|           menu.close(); | ||||
|           threadManager.runUpdateWorkflowFromLink( | ||||
|             e.getTarget(), | ||||
|             { | ||||
|               action : 'metadata', | ||||
|               force_ajax : true, | ||||
|               stage : 'submit' | ||||
|             }); | ||||
|         }; | ||||
|         href = threadManager._getUpdateURI(); | ||||
|       } else { | ||||
|         handler = JX.bind(null, function(widget, e) { | ||||
|           toggleWidget({widget: widget}); | ||||
|           e.prevent(); | ||||
|           menu.close(); | ||||
|         }, widget); | ||||
|       } | ||||
|       handler = JX.bind(null, function(widget, e) { | ||||
|         toggleWidget({widget: widget}); | ||||
|         e.prevent(); | ||||
|         menu.close(); | ||||
|       }, widget); | ||||
|       var item = new JX.PHUIXActionView() | ||||
|         .setIcon(widget_data.icon || 'none') | ||||
|         .setName(widget_data.name) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Chad Little
					Chad Little