Page MenuHomePhabricator

D8088.diff
No OneTemporary

D8088.diff

Index: src/__phutil_library_map__.php
===================================================================
--- src/__phutil_library_map__.php
+++ src/__phutil_library_map__.php
@@ -1530,6 +1530,7 @@
'PhabricatorHelpKeyboardShortcutController' => 'applications/help/controller/PhabricatorHelpKeyboardShortcutController.php',
'PhabricatorHomeController' => 'applications/home/controller/PhabricatorHomeController.php',
'PhabricatorHomeMainController' => 'applications/home/controller/PhabricatorHomeMainController.php',
+ 'PhabricatorHomeQuickCreateController' => 'applications/home/controller/PhabricatorHomeQuickCreateController.php',
'PhabricatorHovercardExample' => 'applications/uiexample/examples/PhabricatorHovercardExample.php',
'PhabricatorHovercardView' => 'view/widget/hovercard/PhabricatorHovercardView.php',
'PhabricatorIRCBot' => 'infrastructure/daemon/bot/PhabricatorIRCBot.php',
@@ -4177,6 +4178,7 @@
'PhabricatorHelpKeyboardShortcutController' => 'PhabricatorHelpController',
'PhabricatorHomeController' => 'PhabricatorController',
'PhabricatorHomeMainController' => 'PhabricatorHomeController',
+ 'PhabricatorHomeQuickCreateController' => 'PhabricatorHomeController',
'PhabricatorHovercardExample' => 'PhabricatorUIExample',
'PhabricatorHovercardView' => 'AphrontView',
'PhabricatorIRCBot' => 'PhabricatorDaemon',
Index: src/applications/auth/application/PhabricatorApplicationAuth.php
===================================================================
--- src/applications/auth/application/PhabricatorApplicationAuth.php
+++ src/applications/auth/application/PhabricatorApplicationAuth.php
@@ -39,7 +39,8 @@
->setIcon('power')
->setWorkflow(true)
->setHref('/logout/')
- ->setSelected(($controller instanceof PhabricatorLogoutController));
+ ->setSelected(($controller instanceof PhabricatorLogoutController))
+ ->setOrder(900);
$items[] = $item;
} else {
if ($controller instanceof PhabricatorAuthController) {
@@ -51,7 +52,8 @@
->setName(pht('Log In'))
// TODO: Login icon?
->setIcon('power')
- ->setHref('/auth/start/');
+ ->setHref('/auth/start/')
+ ->setOrder(900);
$items[] = $item;
}
}
Index: src/applications/base/PhabricatorApplication.php
===================================================================
--- src/applications/base/PhabricatorApplication.php
+++ src/applications/base/PhabricatorApplication.php
@@ -248,7 +248,7 @@
* @param PhabricatorUser The viewing user.
* @param AphrontController The current controller. May be null for special
* pages like 404, exception handlers, etc.
- * @return list<PhabricatorMainMenuIconView> List of menu items.
+ * @return list<PHUIListItemView> List of menu items.
* @task ui
*/
public function buildMainMenuItems(
@@ -270,6 +270,17 @@
}
+ /**
+ * Build items for the "quick create" menu.
+ *
+ * @param PhabricatorUser The viewing user.
+ * @return list<PHUIListItemView> List of menu items.
+ */
+ public function getQuickCreateItems(PhabricatorUser $viewer) {
+ return array();
+ }
+
+
/* -( Application Management )--------------------------------------------- */
public static function getByClass($class_name) {
Index: src/applications/conpherence/application/PhabricatorApplicationConpherence.php
===================================================================
--- src/applications/conpherence/application/PhabricatorApplicationConpherence.php
+++ src/applications/conpherence/application/PhabricatorApplicationConpherence.php
@@ -50,4 +50,18 @@
);
}
+ public function getQuickCreateItems(PhabricatorUser $viewer) {
+ $items = array();
+
+ $item = id(new PHUIListItemView())
+ ->setName(pht('New Conpherence Thread'))
+ ->setIcon('new')
+ ->setWorkflow(true)
+ ->setHref($this->getBaseURI().'new/');
+ $items[] = $item;
+
+ return $items;
+ }
+
+
}
Index: src/applications/diviner/application/PhabricatorApplicationDiviner.php
===================================================================
--- src/applications/diviner/application/PhabricatorApplicationDiviner.php
+++ src/applications/diviner/application/PhabricatorApplicationDiviner.php
@@ -58,11 +58,12 @@
}
if ($application && $application->getHelpURI()) {
- $item = new PHUIListItemView();
- $item->setName(pht('%s Help', $application->getName()));
- $item->addClass('core-menu-item');
- $item->setIcon('help');
- $item->setHref($application->getHelpURI());
+ $item = id(new PHUIListItemView())
+ ->setName(pht('%s Help', $application->getName()))
+ ->addClass('core-menu-item')
+ ->setIcon('help')
+ ->setOrder(100)
+ ->setHref($application->getHelpURI());
$items[] = $item;
}
Index: src/applications/home/application/PhabricatorApplicationHome.php
===================================================================
--- src/applications/home/application/PhabricatorApplicationHome.php
+++ src/applications/home/application/PhabricatorApplicationHome.php
@@ -17,6 +17,9 @@
public function getRoutes() {
return array(
'/(?:(?P<filter>(?:jump))/)?' => 'PhabricatorHomeMainController',
+ '/home/' => array(
+ 'create/' => 'PhabricatorHomeQuickCreateController',
+ ),
);
}
@@ -28,4 +31,27 @@
return false;
}
+ public function getApplicationOrder() {
+ return 9;
+ }
+
+ public function buildMainMenuItems(
+ PhabricatorUser $user,
+ PhabricatorController $controller = null) {
+
+ $items = array();
+
+ if ($user->isLoggedIn() && $user->isUserActivated()) {
+ $item = id(new PHUIListItemView())
+ ->setName(pht('Create New...'))
+ ->setIcon('new')
+ ->addClass('core-menu-item')
+ ->setHref('/home/create/')
+ ->setOrder(300);
+ $items[] = $item;
+ }
+
+ return $items;
+ }
+
}
Index: src/applications/home/controller/PhabricatorHomeQuickCreateController.php
===================================================================
--- /dev/null
+++ src/applications/home/controller/PhabricatorHomeQuickCreateController.php
@@ -0,0 +1,47 @@
+<?php
+
+final class PhabricatorHomeQuickCreateController
+ extends PhabricatorHomeController {
+
+ public function processRequest() {
+ $viewer = $this->getRequest()->getUser();
+
+ $applications = id(new PhabricatorApplicationQuery())
+ ->setViewer($viewer)
+ ->withInstalled(true)
+ ->execute();
+
+ $items = array();
+ foreach ($applications as $application) {
+ $app_items = $application->getQuickCreateItems($viewer);
+ foreach ($app_items as $app_item) {
+ $items[] = $app_item;
+ }
+ }
+
+ $list = id(new PHUIObjectItemListView())
+ ->setUser($viewer);
+
+ foreach ($items as $item) {
+ $list->addItem(
+ id(new PHUIObjectItemView())
+ ->setHeader($item->getName())
+ ->setWorkflow($item->getWorkflow())
+ ->setHref($item->getHref()));
+ }
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $crumbs->addTextCrumb(pht('Quick Create'));
+
+ return $this->buildApplicationPage(
+ array(
+ $crumbs,
+ $list,
+ ),
+ array(
+ 'title' => pht('Quick Create'),
+ ));
+ }
+
+
+}
Index: src/applications/maniphest/application/PhabricatorApplicationManiphest.php
===================================================================
--- src/applications/maniphest/application/PhabricatorApplicationManiphest.php
+++ src/applications/maniphest/application/PhabricatorApplicationManiphest.php
@@ -90,6 +90,18 @@
return $status;
}
+ public function getQuickCreateItems(PhabricatorUser $viewer) {
+ $items = array();
+
+ $item = id(new PHUIListItemView())
+ ->setName(pht('New Maniphest Task'))
+ ->setIcon('new')
+ ->setHref($this->getBaseURI().'task/create/');
+ $items[] = $item;
+
+ return $items;
+ }
+
protected function getCustomCapabilities() {
return array(
ManiphestCapabilityDefaultView::CAPABILITY => array(
Index: src/applications/paste/application/PhabricatorApplicationPaste.php
===================================================================
--- src/applications/paste/application/PhabricatorApplicationPaste.php
+++ src/applications/paste/application/PhabricatorApplicationPaste.php
@@ -50,4 +50,16 @@
);
}
+ public function getQuickCreateItems(PhabricatorUser $viewer) {
+ $items = array();
+
+ $item = id(new PHUIListItemView())
+ ->setName(pht('New Paste'))
+ ->setIcon('new')
+ ->setHref($this->getBaseURI().'create/');
+ $items[] = $item;
+
+ return $items;
+ }
+
}
Index: src/applications/people/application/PhabricatorApplicationPeople.php
===================================================================
--- src/applications/people/application/PhabricatorApplicationPeople.php
+++ src/applications/people/application/PhabricatorApplicationPeople.php
@@ -97,10 +97,11 @@
if ($user->isLoggedIn() && $user->isUserActivated()) {
$image = $user->loadProfileImageURI();
- $item = new PHUIListItemView();
- $item->setName($user->getUsername());
- $item->setHref('/p/'.$user->getUsername().'/');
- $item->addClass('core-menu-item');
+ $item = id(new PHUIListItemView())
+ ->setName($user->getUsername())
+ ->setHref('/p/'.$user->getUsername().'/')
+ ->addClass('core-menu-item')
+ ->setOrder(200);
$classes = array(
'phabricator-core-menu-icon',
Index: src/applications/settings/application/PhabricatorApplicationSettings.php
===================================================================
--- src/applications/settings/application/PhabricatorApplicationSettings.php
+++ src/applications/settings/application/PhabricatorApplicationSettings.php
@@ -39,12 +39,13 @@
if ($user->isLoggedIn() && $user->isUserActivated()) {
$selected = ($controller instanceof PhabricatorSettingsMainController);
- $item = new PHUIListItemView();
- $item->setName(pht('Settings'));
- $item->setIcon('settings');
- $item->addClass('core-menu-item');
- $item->setSelected($selected);
- $item->setHref('/settings/');
+ $item = id(new PHUIListItemView())
+ ->setName(pht('Settings'))
+ ->setIcon('settings')
+ ->addClass('core-menu-item')
+ ->setSelected($selected)
+ ->setHref('/settings/')
+ ->setOrder(400);
$items[] = $item;
}
Index: src/view/page/menu/PhabricatorMainMenuView.php
===================================================================
--- src/view/page/menu/PhabricatorMainMenuView.php
+++ src/view/page/menu/PhabricatorMainMenuView.php
@@ -163,6 +163,8 @@
}
}
+ $actions = msort($actions, 'getOrder');
+
$view = $this->getApplicationMenu();
if (!$view) {
Index: src/view/phui/PHUIListItemView.php
===================================================================
--- src/view/phui/PHUIListItemView.php
+++ src/view/phui/PHUIListItemView.php
@@ -23,6 +23,16 @@
private $disabled;
private $renderNameAsTooltip;
private $statusColor;
+ private $order;
+
+ public function setOrder($order) {
+ $this->order = $order;
+ return $this;
+ }
+
+ public function getOrder() {
+ return $this->order;
+ }
public function setRenderNameAsTooltip($render_name_as_tooltip) {
$this->renderNameAsTooltip = $render_name_as_tooltip;

File Metadata

Mime Type
text/plain
Expires
Thu, Apr 10, 3:46 AM (6 d, 11 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7738626
Default Alt Text
D8088.diff (11 KB)

Event Timeline