diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -50,7 +50,7 @@ 'rsrc/css/application/conpherence/notification.css' => '6cdcc253', 'rsrc/css/application/conpherence/transaction.css' => '2c71247c', 'rsrc/css/application/conpherence/update.css' => 'faf6be09', - 'rsrc/css/application/conpherence/widget-pane.css' => 'c689f6a4', + 'rsrc/css/application/conpherence/widget-pane.css' => 'a131d5b6', 'rsrc/css/application/contentsource/content-source-view.css' => '4b8b05d4', 'rsrc/css/application/countdown/timer.css' => '16c52f5c', 'rsrc/css/application/daemon/bulk-job.css' => 'df9c1d4a', @@ -399,6 +399,7 @@ '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-toggle-widget.js' => 'a2d6a469', 'rsrc/js/application/conpherence/behavior-widget-pane.js' => 'a8458711', 'rsrc/js/application/countdown/timer.js' => 'e4cc26b3', 'rsrc/js/application/daemon/behavior-bulk-job-reload.js' => 'edf8a145', @@ -581,7 +582,7 @@ 'conpherence-thread-manager' => '01774ab2', 'conpherence-transaction-css' => '2c71247c', 'conpherence-update-css' => 'faf6be09', - 'conpherence-widget-pane-css' => 'c689f6a4', + 'conpherence-widget-pane-css' => 'a131d5b6', 'd3' => 'a11a5ff2', 'differential-changeset-view-css' => '9ef7d354', 'differential-core-view-css' => '5b7b8ff4', @@ -731,6 +732,7 @@ 'javelin-behavior-test-payment-form' => 'fc91ab6c', 'javelin-behavior-time-typeahead' => '522431f7', 'javelin-behavior-toggle-class' => '92b9ec77', + 'javelin-behavior-toggle-widget' => 'a2d6a469', 'javelin-behavior-typeahead-browse' => '635de1ec', 'javelin-behavior-typeahead-search' => '93d0c9e3', 'javelin-behavior-view-placeholder' => '47830651', @@ -1730,6 +1732,11 @@ 'javelin-behavior-device', 'javelin-vector', ), + 'a2d6a469' => array( + 'javelin-behavior', + 'javelin-dom', + 'javelin-behavior-toggle-class', + ), 'a464fe03' => array( 'javelin-behavior', 'javelin-uri', 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 @@ -2216,6 +2216,7 @@ 'PhabricatorConpherenceNotificationsSetting' => 'applications/settings/setting/PhabricatorConpherenceNotificationsSetting.php', 'PhabricatorConpherencePreferencesSettingsPanel' => 'applications/settings/panel/PhabricatorConpherencePreferencesSettingsPanel.php', 'PhabricatorConpherenceThreadPHIDType' => 'applications/conpherence/phid/PhabricatorConpherenceThreadPHIDType.php', + 'PhabricatorConpherenceWidgetVisibleSetting' => 'applications/settings/setting/PhabricatorConpherenceWidgetVisibleSetting.php', 'PhabricatorConsoleApplication' => 'applications/console/application/PhabricatorConsoleApplication.php', 'PhabricatorConsoleContentSource' => 'infrastructure/contentsource/PhabricatorConsoleContentSource.php', 'PhabricatorContentSource' => 'infrastructure/contentsource/PhabricatorContentSource.php', @@ -6973,6 +6974,7 @@ 'PhabricatorConpherenceNotificationsSetting' => 'PhabricatorSelectSetting', 'PhabricatorConpherencePreferencesSettingsPanel' => 'PhabricatorEditEngineSettingsPanel', 'PhabricatorConpherenceThreadPHIDType' => 'PhabricatorPHIDType', + 'PhabricatorConpherenceWidgetVisibleSetting' => 'PhabricatorInternalSetting', 'PhabricatorConsoleApplication' => 'PhabricatorApplication', 'PhabricatorConsoleContentSource' => 'PhabricatorContentSource', 'PhabricatorContentSource' => 'Phobject', diff --git a/src/applications/conpherence/controller/ConpherenceViewController.php b/src/applications/conpherence/controller/ConpherenceViewController.php --- a/src/applications/conpherence/controller/ConpherenceViewController.php +++ b/src/applications/conpherence/controller/ConpherenceViewController.php @@ -12,6 +12,30 @@ protected function buildApplicationCrumbs() { $crumbs = $this->buildConpherenceApplicationCrumbs(); $crumbs->setBorder(true); + + $widget_key = PhabricatorConpherenceWidgetVisibleSetting::SETTINGKEY; + $user = $this->getViewer(); + $widget_view = (bool)$user->getUserSetting($widget_key, false); + + $divider = id(new PHUIListItemView()) + ->setType(PHUIListItemView::TYPE_DIVIDER); + $crumbs->addAction($divider); + + $toggle_id = celerity_generate_unique_node_id(); + Javelin::initBehavior( + 'toggle-widget', + array( + 'show' => (int)$widget_view, + 'settingsURI' => '/settings/adjust/?key='.$widget_key, + 'nodeID' => $toggle_id, + )); + + $crumbs->addAction( + id(new PHUIListItemView()) + ->setHref('#') + ->setID($toggle_id) + ->setIcon('fa-columns')); + return $crumbs; } diff --git a/src/applications/conpherence/view/ConpherenceLayoutView.php b/src/applications/conpherence/view/ConpherenceLayoutView.php --- a/src/applications/conpherence/view/ConpherenceLayoutView.php +++ b/src/applications/conpherence/view/ConpherenceLayoutView.php @@ -55,12 +55,18 @@ return $this; } + public function getWidgetColumnVisible() { + $widget_key = PhabricatorConpherenceWidgetVisibleSetting::SETTINGKEY; + $user = $this->getUser(); + return (bool)$user->getUserSetting($widget_key, false); + } + public function render() { require_celerity_resource('conpherence-menu-css'); require_celerity_resource('conpherence-message-pane-css'); require_celerity_resource('conpherence-widget-pane-css'); - $layout_id = celerity_generate_unique_node_id(); + $layout_id = 'conpherence-main-layout'; $selected_id = null; $selected_thread_id = null; @@ -90,9 +96,13 @@ 'hasWidgets' => false, )); - $class = null; + $classes = array(); if (!$this->getUser()->isLoggedIn()) { - $class = 'conpherence-logged-out'; + $classes[] = 'conpherence-logged-out'; + } + + if (!$this->getWidgetColumnVisible()) { + $classes[] = 'hide-widgets'; } $this->initBehavior( @@ -105,7 +115,7 @@ 'id' => $layout_id, 'sigil' => 'conpherence-layout', 'class' => 'conpherence-layout '. - $class. + implode(' ', $classes). ' conpherence-role-'.$this->role, ), array( diff --git a/src/applications/settings/setting/PhabricatorConpherenceWidgetVisibleSetting.php b/src/applications/settings/setting/PhabricatorConpherenceWidgetVisibleSetting.php new file mode 100644 --- /dev/null +++ b/src/applications/settings/setting/PhabricatorConpherenceWidgetVisibleSetting.php @@ -0,0 +1,12 @@ +