Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15502145
D20406.id48695.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
15 KB
Referenced Files
None
Subscribers
None
D20406.id48695.diff
View Options
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
@@ -2910,6 +2910,7 @@
'PhabricatorDashboardApplication' => 'applications/dashboard/application/PhabricatorDashboardApplication.php',
'PhabricatorDashboardApplicationInstallWorkflow' => 'applications/dashboard/install/PhabricatorDashboardApplicationInstallWorkflow.php',
'PhabricatorDashboardArchiveController' => 'applications/dashboard/controller/dashboard/PhabricatorDashboardArchiveController.php',
+ 'PhabricatorDashboardColumn' => 'applications/dashboard/layoutconfig/PhabricatorDashboardColumn.php',
'PhabricatorDashboardConsoleController' => 'applications/dashboard/controller/PhabricatorDashboardConsoleController.php',
'PhabricatorDashboardController' => 'applications/dashboard/controller/PhabricatorDashboardController.php',
'PhabricatorDashboardDAO' => 'applications/dashboard/storage/PhabricatorDashboardDAO.php',
@@ -2919,6 +2920,8 @@
'PhabricatorDashboardEditController' => 'applications/dashboard/controller/dashboard/PhabricatorDashboardEditController.php',
'PhabricatorDashboardEditEngine' => 'applications/dashboard/editor/PhabricatorDashboardEditEngine.php',
'PhabricatorDashboardFavoritesInstallWorkflow' => 'applications/dashboard/install/PhabricatorDashboardFavoritesInstallWorkflow.php',
+ 'PhabricatorDashboardFullLayoutMode' => 'applications/dashboard/layoutconfig/PhabricatorDashboardFullLayoutMode.php',
+ 'PhabricatorDashboardHalfLayoutMode' => 'applications/dashboard/layoutconfig/PhabricatorDashboardHalfLayoutMode.php',
'PhabricatorDashboardHomeInstallWorkflow' => 'applications/dashboard/install/PhabricatorDashboardHomeInstallWorkflow.php',
'PhabricatorDashboardIconSet' => 'applications/dashboard/icon/PhabricatorDashboardIconSet.php',
'PhabricatorDashboardIconTransaction' => 'applications/dashboard/xaction/dashboard/PhabricatorDashboardIconTransaction.php',
@@ -2926,12 +2929,14 @@
'PhabricatorDashboardInstallController' => 'applications/dashboard/controller/dashboard/PhabricatorDashboardInstallController.php',
'PhabricatorDashboardInstallWorkflow' => 'applications/dashboard/install/PhabricatorDashboardInstallWorkflow.php',
'PhabricatorDashboardLayoutConfig' => 'applications/dashboard/layoutconfig/PhabricatorDashboardLayoutConfig.php',
+ 'PhabricatorDashboardLayoutMode' => 'applications/dashboard/layoutconfig/PhabricatorDashboardLayoutMode.php',
'PhabricatorDashboardLayoutTransaction' => 'applications/dashboard/xaction/dashboard/PhabricatorDashboardLayoutTransaction.php',
'PhabricatorDashboardListController' => 'applications/dashboard/controller/PhabricatorDashboardListController.php',
'PhabricatorDashboardMovePanelController' => 'applications/dashboard/controller/PhabricatorDashboardMovePanelController.php',
'PhabricatorDashboardNameTransaction' => 'applications/dashboard/xaction/dashboard/PhabricatorDashboardNameTransaction.php',
'PhabricatorDashboardNgrams' => 'applications/dashboard/storage/PhabricatorDashboardNgrams.php',
'PhabricatorDashboardObjectInstallWorkflow' => 'applications/dashboard/install/PhabricatorDashboardObjectInstallWorkflow.php',
+ 'PhabricatorDashboardOneThirdLayoutMode' => 'applications/dashboard/layoutconfig/PhabricatorDashboardOneThirdLayoutMode.php',
'PhabricatorDashboardPanel' => 'applications/dashboard/storage/PhabricatorDashboardPanel.php',
'PhabricatorDashboardPanelArchiveController' => 'applications/dashboard/controller/panel/PhabricatorDashboardPanelArchiveController.php',
'PhabricatorDashboardPanelContainerIndexEngineExtension' => 'applications/dashboard/engineextension/PhabricatorDashboardPanelContainerIndexEngineExtension.php',
@@ -3006,6 +3011,7 @@
'PhabricatorDashboardTransactionEditor' => 'applications/dashboard/editor/PhabricatorDashboardTransactionEditor.php',
'PhabricatorDashboardTransactionQuery' => 'applications/dashboard/query/PhabricatorDashboardTransactionQuery.php',
'PhabricatorDashboardTransactionType' => 'applications/dashboard/xaction/dashboard/PhabricatorDashboardTransactionType.php',
+ 'PhabricatorDashboardTwoThirdsLayoutMode' => 'applications/dashboard/layoutconfig/PhabricatorDashboardTwoThirdsLayoutMode.php',
'PhabricatorDashboardViewController' => 'applications/dashboard/controller/dashboard/PhabricatorDashboardViewController.php',
'PhabricatorDataCacheSpec' => 'applications/cache/spec/PhabricatorDataCacheSpec.php',
'PhabricatorDataNotAttachedException' => 'infrastructure/storage/lisk/PhabricatorDataNotAttachedException.php',
@@ -8904,6 +8910,7 @@
'PhabricatorDashboardApplication' => 'PhabricatorApplication',
'PhabricatorDashboardApplicationInstallWorkflow' => 'PhabricatorDashboardInstallWorkflow',
'PhabricatorDashboardArchiveController' => 'PhabricatorDashboardController',
+ 'PhabricatorDashboardColumn' => 'Phobject',
'PhabricatorDashboardConsoleController' => 'PhabricatorDashboardController',
'PhabricatorDashboardController' => 'PhabricatorController',
'PhabricatorDashboardDAO' => 'PhabricatorLiskDAO',
@@ -8913,6 +8920,8 @@
'PhabricatorDashboardEditController' => 'PhabricatorDashboardController',
'PhabricatorDashboardEditEngine' => 'PhabricatorEditEngine',
'PhabricatorDashboardFavoritesInstallWorkflow' => 'PhabricatorDashboardApplicationInstallWorkflow',
+ 'PhabricatorDashboardFullLayoutMode' => 'PhabricatorDashboardLayoutMode',
+ 'PhabricatorDashboardHalfLayoutMode' => 'PhabricatorDashboardLayoutMode',
'PhabricatorDashboardHomeInstallWorkflow' => 'PhabricatorDashboardApplicationInstallWorkflow',
'PhabricatorDashboardIconSet' => 'PhabricatorIconSet',
'PhabricatorDashboardIconTransaction' => 'PhabricatorDashboardTransactionType',
@@ -8920,12 +8929,14 @@
'PhabricatorDashboardInstallController' => 'PhabricatorDashboardController',
'PhabricatorDashboardInstallWorkflow' => 'Phobject',
'PhabricatorDashboardLayoutConfig' => 'Phobject',
+ 'PhabricatorDashboardLayoutMode' => 'Phobject',
'PhabricatorDashboardLayoutTransaction' => 'PhabricatorDashboardTransactionType',
'PhabricatorDashboardListController' => 'PhabricatorDashboardController',
'PhabricatorDashboardMovePanelController' => 'PhabricatorDashboardController',
'PhabricatorDashboardNameTransaction' => 'PhabricatorDashboardTransactionType',
'PhabricatorDashboardNgrams' => 'PhabricatorSearchNgrams',
'PhabricatorDashboardObjectInstallWorkflow' => 'PhabricatorDashboardInstallWorkflow',
+ 'PhabricatorDashboardOneThirdLayoutMode' => 'PhabricatorDashboardLayoutMode',
'PhabricatorDashboardPanel' => array(
'PhabricatorDashboardDAO',
'PhabricatorApplicationTransactionInterface',
@@ -9015,6 +9026,7 @@
'PhabricatorDashboardTransactionEditor' => 'PhabricatorApplicationTransactionEditor',
'PhabricatorDashboardTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
'PhabricatorDashboardTransactionType' => 'PhabricatorModularTransactionType',
+ 'PhabricatorDashboardTwoThirdsLayoutMode' => 'PhabricatorDashboardLayoutMode',
'PhabricatorDashboardViewController' => 'PhabricatorDashboardProfileController',
'PhabricatorDataCacheSpec' => 'PhabricatorCacheSpec',
'PhabricatorDataNotAttachedException' => 'Exception',
diff --git a/src/applications/dashboard/editor/PhabricatorDashboardEditEngine.php b/src/applications/dashboard/editor/PhabricatorDashboardEditEngine.php
--- a/src/applications/dashboard/editor/PhabricatorDashboardEditEngine.php
+++ b/src/applications/dashboard/editor/PhabricatorDashboardEditEngine.php
@@ -67,6 +67,8 @@
}
protected function buildCustomEditFields($object) {
+ $layout_options = PhabricatorDashboardLayoutMode::getLayoutModeMap();
+
$fields = array(
id(new PhabricatorTextEditField())
->setKey('name')
@@ -96,8 +98,7 @@
->setConduitTypeDescription(pht('New dashboard layout mode.'))
->setTransactionType(
PhabricatorDashboardLayoutTransaction::TRANSACTIONTYPE)
- ->setOptions(
- PhabricatorDashboardLayoutConfig::getLayoutModeSelectOptions())
+ ->setOptions($layout_options)
->setValue($object->getRawLayoutMode()),
);
diff --git a/src/applications/dashboard/layoutconfig/PhabricatorDashboardColumn.php b/src/applications/dashboard/layoutconfig/PhabricatorDashboardColumn.php
new file mode 100644
--- /dev/null
+++ b/src/applications/dashboard/layoutconfig/PhabricatorDashboardColumn.php
@@ -0,0 +1,27 @@
+<?php
+
+final class PhabricatorDashboardColumn
+ extends Phobject {
+
+ private $columnKey;
+ private $classes = array();
+
+ public function setColumnKey($column_key) {
+ $this->columnKey = $column_key;
+ return $this;
+ }
+
+ public function getColumnKey() {
+ return $this->columnKey;
+ }
+
+ public function addClass($class) {
+ $this->classes[] = $class;
+ return $this;
+ }
+
+ public function getClasses() {
+ return $this->classes;
+ }
+
+}
diff --git a/src/applications/dashboard/layoutconfig/PhabricatorDashboardFullLayoutMode.php b/src/applications/dashboard/layoutconfig/PhabricatorDashboardFullLayoutMode.php
new file mode 100644
--- /dev/null
+++ b/src/applications/dashboard/layoutconfig/PhabricatorDashboardFullLayoutMode.php
@@ -0,0 +1,23 @@
+<?php
+
+final class PhabricatorDashboardFullLayoutMode
+ extends PhabricatorDashboardLayoutMode {
+
+ const LAYOUTMODE = 'layout-mode-full';
+
+ public function getLayoutModeOrder() {
+ return 0;
+ }
+
+ public function getLayoutModeName() {
+ return pht('One Column: 100%%');
+ }
+
+ public function getLayoutModeColumns() {
+ return array(
+ $this->newColumn()
+ ->setColumnKey('main'),
+ );
+ }
+
+}
diff --git a/src/applications/dashboard/layoutconfig/PhabricatorDashboardHalfLayoutMode.php b/src/applications/dashboard/layoutconfig/PhabricatorDashboardHalfLayoutMode.php
new file mode 100644
--- /dev/null
+++ b/src/applications/dashboard/layoutconfig/PhabricatorDashboardHalfLayoutMode.php
@@ -0,0 +1,27 @@
+<?php
+
+final class PhabricatorDashboardHalfLayoutMode
+ extends PhabricatorDashboardLayoutMode {
+
+ const LAYOUTMODE = 'layout-mode-half-and-half';
+
+ public function getLayoutModeOrder() {
+ return 500;
+ }
+
+ public function getLayoutModeName() {
+ return pht('Two Columns: 50%%/50%%');
+ }
+
+ public function getLayoutModeColumns() {
+ return array(
+ $this->newColumn()
+ ->setColumnKey('left')
+ ->addClass('half'),
+ $this->newColumn()
+ ->setColumnKey('right')
+ ->addClass('half'),
+ );
+ }
+
+}
diff --git a/src/applications/dashboard/layoutconfig/PhabricatorDashboardLayoutConfig.php b/src/applications/dashboard/layoutconfig/PhabricatorDashboardLayoutConfig.php
--- a/src/applications/dashboard/layoutconfig/PhabricatorDashboardLayoutConfig.php
+++ b/src/applications/dashboard/layoutconfig/PhabricatorDashboardLayoutConfig.php
@@ -107,15 +107,6 @@
return $class;
}
- public static function getLayoutModeSelectOptions() {
- return array(
- self::MODE_FULL => pht('One full-width column'),
- self::MODE_HALF_AND_HALF => pht('Two columns, 1/2 and 1/2'),
- self::MODE_THIRD_AND_THIRDS => pht('Two columns, 1/3 and 2/3'),
- self::MODE_THIRDS_AND_THIRD => pht('Two columns, 2/3 and 1/3'),
- );
- }
-
public static function newFromDictionary(array $dict) {
$layout_config = id(new PhabricatorDashboardLayoutConfig())
->setLayoutMode(idx($dict, 'layoutMode', self::MODE_FULL));
diff --git a/src/applications/dashboard/layoutconfig/PhabricatorDashboardLayoutMode.php b/src/applications/dashboard/layoutconfig/PhabricatorDashboardLayoutMode.php
new file mode 100644
--- /dev/null
+++ b/src/applications/dashboard/layoutconfig/PhabricatorDashboardLayoutMode.php
@@ -0,0 +1,34 @@
+<?php
+
+abstract class PhabricatorDashboardLayoutMode
+ extends Phobject {
+
+ final public function getLayoutModeKey() {
+ return $this->getPhobjectClassConstant('LAYOUTMODE', 32);
+ }
+
+ public function getLayoutModeOrder() {
+ return 1000;
+ }
+
+ abstract public function getLayoutModeName();
+ abstract public function getLayoutModeColumns();
+
+ final protected function newColumn() {
+ return new PhabricatorDashboardColumn();
+ }
+
+ final public static function getAllLayoutModes() {
+ return id(new PhutilClassMapQuery())
+ ->setAncestorClass(__CLASS__)
+ ->setUniqueMethod('getLayoutModeKey')
+ ->setSortMethod('getLayoutModeOrder')
+ ->execute();
+ }
+
+ final public static function getLayoutModeMap() {
+ $modes = self::getAllLayoutModes();
+ return mpull($modes, 'getLayoutModeName', 'getLayoutModeKey');
+ }
+
+}
diff --git a/src/applications/dashboard/layoutconfig/PhabricatorDashboardOneThirdLayoutMode.php b/src/applications/dashboard/layoutconfig/PhabricatorDashboardOneThirdLayoutMode.php
new file mode 100644
--- /dev/null
+++ b/src/applications/dashboard/layoutconfig/PhabricatorDashboardOneThirdLayoutMode.php
@@ -0,0 +1,27 @@
+<?php
+
+final class PhabricatorDashboardOneThirdLayoutMode
+ extends PhabricatorDashboardLayoutMode {
+
+ const LAYOUTMODE = 'layout-mode-third-and-thirds';
+
+ public function getLayoutModeOrder() {
+ return 700;
+ }
+
+ public function getLayoutModeName() {
+ return pht('Two Columns: 33%%/66%%');
+ }
+
+ public function getLayoutModeColumns() {
+ return array(
+ $this->newColumn()
+ ->setColumnKey('left')
+ ->addClass('third'),
+ $this->newColumn()
+ ->setColumnKey('right')
+ ->addClass('thirds'),
+ );
+ }
+
+}
diff --git a/src/applications/dashboard/layoutconfig/PhabricatorDashboardTwoThirdsLayoutMode.php b/src/applications/dashboard/layoutconfig/PhabricatorDashboardTwoThirdsLayoutMode.php
new file mode 100644
--- /dev/null
+++ b/src/applications/dashboard/layoutconfig/PhabricatorDashboardTwoThirdsLayoutMode.php
@@ -0,0 +1,27 @@
+<?php
+
+final class PhabricatorDashboardTwoThirdsLayoutMode
+ extends PhabricatorDashboardLayoutMode {
+
+ const LAYOUTMODE = 'layout-mode-thirds-and-third';
+
+ public function getLayoutModeOrder() {
+ return 600;
+ }
+
+ public function getLayoutModeName() {
+ return pht('Two Columns: 66%%/33%%');
+ }
+
+ public function getLayoutModeColumns() {
+ return array(
+ $this->newColumn()
+ ->setColumnKey('left')
+ ->addClass('thirds'),
+ $this->newColumn()
+ ->setColumnKey('right')
+ ->addClass('third'),
+ );
+ }
+
+}
diff --git a/src/applications/dashboard/xaction/dashboard/PhabricatorDashboardLayoutTransaction.php b/src/applications/dashboard/xaction/dashboard/PhabricatorDashboardLayoutTransaction.php
--- a/src/applications/dashboard/xaction/dashboard/PhabricatorDashboardLayoutTransaction.php
+++ b/src/applications/dashboard/xaction/dashboard/PhabricatorDashboardLayoutTransaction.php
@@ -26,7 +26,7 @@
public function validateTransactions($object, array $xactions) {
$errors = array();
- $mode_map = PhabricatorDashboardLayoutConfig::getLayoutModeSelectOptions();
+ $mode_map = PhabricatorDashboardLayoutMode::getLayoutModeMap();
$old_value = $object->getRawLayoutMode();
foreach ($xactions as $xaction) {
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Apr 14, 10:48 PM (1 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7732967
Default Alt Text
D20406.id48695.diff (15 KB)
Attached To
Mode
D20406: Modularize dashboard layout modes (one column, two columns, etc)
Attached
Detach File
Event Timeline
Log In to Comment