Page MenuHomePhabricator

D20406.id48695.diff
No OneTemporary

D20406.id48695.diff

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

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)

Event Timeline