Page MenuHomePhabricator

D14693.id35536.diff
No OneTemporary

D14693.id35536.diff

diff --git a/src/applications/home/application/PhabricatorHomeApplication.php b/src/applications/home/application/PhabricatorHomeApplication.php
--- a/src/applications/home/application/PhabricatorHomeApplication.php
+++ b/src/applications/home/application/PhabricatorHomeApplication.php
@@ -100,7 +100,7 @@
$view = null;
if ($items) {
$view = new PHUIListView();
- $view->newLabel(pht('Create New...'));
+ $view->newLabel(pht('Quick Create'));
foreach ($items as $item) {
$view->addMenuItem($item);
}
diff --git a/src/applications/maniphest/application/PhabricatorManiphestApplication.php b/src/applications/maniphest/application/PhabricatorManiphestApplication.php
--- a/src/applications/maniphest/application/PhabricatorManiphestApplication.php
+++ b/src/applications/maniphest/application/PhabricatorManiphestApplication.php
@@ -107,15 +107,9 @@
}
public function getQuickCreateItems(PhabricatorUser $viewer) {
- $items = array();
-
- $item = id(new PHUIListItemView())
- ->setName(pht('Maniphest Task'))
- ->setIcon('fa-anchor')
- ->setHref($this->getBaseURI().'task/create/');
- $items[] = $item;
-
- return $items;
+ return id(new ManiphestEditEngine())
+ ->setViewer($viewer)
+ ->loadQuickCreateItems();
}
public function supportsEmailIntegration() {
diff --git a/src/applications/paste/application/PhabricatorPasteApplication.php b/src/applications/paste/application/PhabricatorPasteApplication.php
--- a/src/applications/paste/application/PhabricatorPasteApplication.php
+++ b/src/applications/paste/application/PhabricatorPasteApplication.php
@@ -76,15 +76,9 @@
}
public function getQuickCreateItems(PhabricatorUser $viewer) {
- $items = array();
-
- $item = id(new PHUIListItemView())
- ->setName(pht('Paste'))
- ->setIcon('fa-clipboard')
- ->setHref($this->getBaseURI().'create/');
- $items[] = $item;
-
- return $items;
+ return id(new PhabricatorPasteEditEngine())
+ ->setViewer($viewer)
+ ->loadQuickCreateItems();
}
public function getMailCommandObjects() {
diff --git a/src/applications/transactions/editengine/PhabricatorEditEngine.php b/src/applications/transactions/editengine/PhabricatorEditEngine.php
--- a/src/applications/transactions/editengine/PhabricatorEditEngine.php
+++ b/src/applications/transactions/editengine/PhabricatorEditEngine.php
@@ -179,6 +179,14 @@
}
+ /**
+ * @task text
+ */
+ protected function getQuickCreateMenuHeaderText() {
+ return $this->getObjectCreateShortText();
+ }
+
+
/* -( Edit Engine Configuration )------------------------------------------ */
@@ -872,12 +880,7 @@
final public function addActionToCrumbs(PHUICrumbsView $crumbs) {
$viewer = $this->getViewer();
- $configs = id(new PhabricatorEditEngineConfigurationQuery())
- ->setViewer($viewer)
- ->withEngineKeys(array($this->getEngineKey()))
- ->withIsDefault(true)
- ->withIsDisabled(false)
- ->execute();
+ $configs = $this->loadUsableConfigurationsForCreate();
$dropdown = null;
$disabled = false;
@@ -1379,6 +1382,61 @@
->executeOne();
}
+ public function getIcon() {
+ $application = $this->getApplication();
+ return $application->getFontIcon();
+ }
+
+ public function loadQuickCreateItems() {
+ $configs = $this->loadUsableConfigurationsForCreate();
+
+ $items = array();
+
+ if (!$configs) {
+ // No items to add.
+ } else if (count($configs) == 1) {
+ $config = head($configs);
+ $items[] = $this->newQuickCreateItem($config);
+ } else {
+ $group_name = $this->getQuickCreateMenuHeaderText();
+
+ $items[] = id(new PHUIListItemView())
+ ->setType(PHUIListItemView::TYPE_LABEL)
+ ->setName($group_name);
+
+ foreach ($configs as $config) {
+ $items[] = $this->newQuickCreateItem($config);
+ }
+ }
+
+ return $items;
+ }
+
+ private function loadUsableConfigurationsForCreate() {
+ $viewer = $this->getViewer();
+
+ return id(new PhabricatorEditEngineConfigurationQuery())
+ ->setViewer($viewer)
+ ->withEngineKeys(array($this->getEngineKey()))
+ ->withIsDefault(true)
+ ->withIsDisabled(false)
+ ->execute();
+ }
+
+ private function newQuickCreateItem(
+ PhabricatorEditEngineConfiguration $config) {
+
+ $item_name = $config->getName();
+ $item_icon = $config->getIcon();
+ $form_key = $config->getIdentifier();
+ $item_uri = $this->getEditURI(null, "form/{$form_key}/");
+
+ return id(new PHUIListItemView())
+ ->setName($item_name)
+ ->setIcon($item_icon)
+ ->setHref($item_uri);
+ }
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
diff --git a/src/applications/transactions/storage/PhabricatorEditEngineConfiguration.php b/src/applications/transactions/storage/PhabricatorEditEngineConfiguration.php
--- a/src/applications/transactions/storage/PhabricatorEditEngineConfiguration.php
+++ b/src/applications/transactions/storage/PhabricatorEditEngineConfiguration.php
@@ -210,6 +210,10 @@
return $this->setProperty('defaults', $defaults);
}
+ public function getIcon() {
+ return $this->getEngine()->getIcon();
+ }
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */

File Metadata

Mime Type
text/plain
Expires
Thu, Jun 6, 4:54 PM (2 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6295218
Default Alt Text
D14693.id35536.diff (5 KB)

Event Timeline