@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Restrict movable panels to non-tab panels

Summary: Fixes T12248. Adds a flag for movable panels, and only allows those to be moved. Also cleaned up some CSS rules missing once a panel was drug into a new position.

Test Plan: Try to drag a tab panel content pane, cannot. Drag normal pane, see CSS, grab and drag same panel back, CSS looks the same.

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin

Maniphest Tasks: T12248

Differential Revision: https://secure.phabricator.com/D17356

+36 -20
+13 -13
resources/celerity/map.php
··· 9 9 'names' => array( 10 10 'conpherence.pkg.css' => 'a520d619', 11 11 'conpherence.pkg.js' => '6249a1cf', 12 - 'core.pkg.css' => '1179d101', 12 + 'core.pkg.css' => '0d7ecd3b', 13 13 'core.pkg.js' => '1fa7c0c5', 14 14 'darkconsole.pkg.js' => 'e7393ebb', 15 15 'differential.pkg.css' => '4815647b', ··· 55 55 'rsrc/css/application/contentsource/content-source-view.css' => '4b8b05d4', 56 56 'rsrc/css/application/countdown/timer.css' => '16c52f5c', 57 57 'rsrc/css/application/daemon/bulk-job.css' => 'df9c1d4a', 58 - 'rsrc/css/application/dashboard/dashboard.css' => '005e064e', 58 + 'rsrc/css/application/dashboard/dashboard.css' => '0921c307', 59 59 'rsrc/css/application/diff/inline-comment-summary.css' => '51efda3a', 60 60 'rsrc/css/application/differential/add-comment.css' => 'c47f8c40', 61 61 'rsrc/css/application/differential/changeset-view.css' => '6a9bdf9c', ··· 392 392 'rsrc/js/application/countdown/timer.js' => 'e4cc26b3', 393 393 'rsrc/js/application/daemon/behavior-bulk-job-reload.js' => 'edf8a145', 394 394 'rsrc/js/application/dashboard/behavior-dashboard-async-panel.js' => '469c0d9e', 395 - 'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '019f36c4', 395 + 'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '408bf173', 396 396 'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '453c5375', 397 397 'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => 'd4eecc63', 398 398 'rsrc/js/application/diff/behavior-preview-link.js' => '051c7832', ··· 617 617 'javelin-behavior-countdown-timer' => 'e4cc26b3', 618 618 'javelin-behavior-dark-console' => 'f411b6ae', 619 619 'javelin-behavior-dashboard-async-panel' => '469c0d9e', 620 - 'javelin-behavior-dashboard-move-panels' => '019f36c4', 620 + 'javelin-behavior-dashboard-move-panels' => '408bf173', 621 621 'javelin-behavior-dashboard-query-panel-select' => '453c5375', 622 622 'javelin-behavior-dashboard-tab-panel' => 'd4eecc63', 623 623 'javelin-behavior-day-view' => '4b3c4443', ··· 786 786 'phabricator-content-source-view-css' => '4b8b05d4', 787 787 'phabricator-core-css' => '9f4cb463', 788 788 'phabricator-countdown-css' => '16c52f5c', 789 - 'phabricator-dashboard-css' => '005e064e', 789 + 'phabricator-dashboard-css' => '0921c307', 790 790 'phabricator-drag-and-drop-file-upload' => '58dea2fa', 791 791 'phabricator-draggable-list' => 'bea6e7f4', 792 792 'phabricator-fatal-config-template-css' => '8f18fa41', ··· 927 927 'javelin-request', 928 928 'javelin-typeahead-source', 929 929 ), 930 - '019f36c4' => array( 931 - 'javelin-behavior', 932 - 'javelin-dom', 933 - 'javelin-util', 934 - 'javelin-stratcom', 935 - 'javelin-workflow', 936 - 'phabricator-draggable-list', 937 - ), 938 930 '01fca1f0' => array( 939 931 'javelin-behavior', 940 932 'javelin-workflow', ··· 1160 1152 'javelin-util', 1161 1153 'javelin-workflow', 1162 1154 'javelin-stratcom', 1155 + ), 1156 + '408bf173' => array( 1157 + 'javelin-behavior', 1158 + 'javelin-dom', 1159 + 'javelin-util', 1160 + 'javelin-stratcom', 1161 + 'javelin-workflow', 1162 + 'phabricator-draggable-list', 1163 1163 ), 1164 1164 '40a6a403' => array( 1165 1165 'javelin-install',
+15
src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php
··· 13 13 private $parentPanelPHIDs; 14 14 private $headerMode = self::HEADER_MODE_NORMAL; 15 15 private $dashboardID; 16 + private $movable = true; 16 17 17 18 public function setDashboardID($id) { 18 19 $this->dashboardID = $id; ··· 61 62 public function setPanel(PhabricatorDashboardPanel $panel) { 62 63 $this->panel = $panel; 63 64 return $this; 65 + } 66 + 67 + public function setMovable($movable) { 68 + $this->movable = $movable; 69 + return $this; 70 + } 71 + 72 + public function getMovable() { 73 + return $this->movable; 64 74 } 65 75 66 76 public function getPanel() { ··· 221 231 $box 222 232 ->setHeader($header) 223 233 ->setID($id) 234 + ->addClass('dashboard-box') 224 235 ->addSigil('dashboard-panel'); 236 + 237 + if ($this->getMovable()) { 238 + $box->addSigil('panel-movable'); 239 + } 225 240 226 241 if ($panel) { 227 242 $box->setMetadata(
+1
src/applications/dashboard/paneltype/PhabricatorDashboardTabsPanelType.php
··· 97 97 ->setPanel($panel) 98 98 ->setPanelPHID($panel->getPHID()) 99 99 ->setHeaderMode($no_headers) 100 + ->setMovable(false) 100 101 ->renderPanel(); 101 102 } else { 102 103 $panel_content = pht('(Invalid Panel)');
+6 -6
webroot/rsrc/css/application/dashboard/dashboard.css
··· 14 14 margin: 0 0 16px 0; 15 15 } 16 16 17 - .dashboard-view .phui-header-shell { 17 + .dashboard-box .phui-header-shell { 18 18 padding-top: 4px; 19 19 padding-bottom: 16px; 20 20 } 21 21 22 - .dashboard-view .phui-header-header { 22 + .dashboard-box .phui-header-header { 23 23 color: #000; 24 24 } 25 25 ··· 49 49 width: 66.66%; 50 50 } 51 51 52 - .grippable .aphront-multi-column-column .dashboard-pane .phui-object-box { 52 + .grippable .aphront-multi-column-column .dashboard-box.phui-object-box { 53 53 cursor: move; 54 54 } 55 55 56 - .grippable .aphront-multi-column-column .dashboard-pane .phui-object-box:hover { 56 + .grippable .aphront-multi-column-column .dashboard-box.phui-object-box:hover { 57 57 box-shadow: {$dropshadow}; 58 58 } 59 59 60 - .grippable .aphront-multi-column-column .dashboard-pane .phui-object-box:hover 61 - .phui-object-box { 60 + .grippable .aphront-multi-column-column .dashboard-box.phui-object-box:hover 61 + .dashboard-box { 62 62 box-shadow: none; 63 63 } 64 64
+1 -1
webroot/rsrc/js/application/dashboard/behavior-dashboard-move-panels.js
··· 10 10 11 11 JX.behavior('dashboard-move-panels', function(config) { 12 12 13 - var itemSigil = 'dashboard-panel'; 13 + var itemSigil = 'panel-movable'; 14 14 15 15 function finditems(col) { 16 16 return JX.DOM.scry(col, 'div', itemSigil);