Page MenuHomePhabricator

D17160.id41266.diff
No OneTemporary

D17160.id41266.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
@@ -2654,6 +2654,11 @@
'PhabricatorFactSimpleSpec' => 'applications/fact/spec/PhabricatorFactSimpleSpec.php',
'PhabricatorFactSpec' => 'applications/fact/spec/PhabricatorFactSpec.php',
'PhabricatorFactUpdateIterator' => 'applications/fact/extract/PhabricatorFactUpdateIterator.php',
+ 'PhabricatorFavoritesApplication' => 'applications/favorites/application/PhabricatorFavoritesApplication.php',
+ 'PhabricatorFavoritesController' => 'applications/favorites/controller/PhabricatorFavoritesController.php',
+ 'PhabricatorFavoritesMainController' => 'applications/favorites/controller/PhabricatorFavoritesMainController.php',
+ 'PhabricatorFavoritesMenuItemController' => 'applications/favorites/controller/PhabricatorFavoritesMenuItemController.php',
+ 'PhabricatorFavoritesProfileMenuEngine' => 'applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php',
'PhabricatorFaxContentSource' => 'infrastructure/contentsource/PhabricatorFaxContentSource.php',
'PhabricatorFeedApplication' => 'applications/feed/application/PhabricatorFeedApplication.php',
'PhabricatorFeedBuilder' => 'applications/feed/builder/PhabricatorFeedBuilder.php',
@@ -7650,6 +7655,11 @@
'PhabricatorFactSimpleSpec' => 'PhabricatorFactSpec',
'PhabricatorFactSpec' => 'Phobject',
'PhabricatorFactUpdateIterator' => 'PhutilBufferedIterator',
+ 'PhabricatorFavoritesApplication' => 'PhabricatorApplication',
+ 'PhabricatorFavoritesController' => 'PhabricatorController',
+ 'PhabricatorFavoritesMainController' => 'PhabricatorFavoritesController',
+ 'PhabricatorFavoritesMenuItemController' => 'PhabricatorFavoritesController',
+ 'PhabricatorFavoritesProfileMenuEngine' => 'PhabricatorProfileMenuEngine',
'PhabricatorFaxContentSource' => 'PhabricatorContentSource',
'PhabricatorFeedApplication' => 'PhabricatorApplication',
'PhabricatorFeedBuilder' => 'Phobject',
diff --git a/src/applications/favorites/application/PhabricatorFavoritesApplication.php b/src/applications/favorites/application/PhabricatorFavoritesApplication.php
new file mode 100644
--- /dev/null
+++ b/src/applications/favorites/application/PhabricatorFavoritesApplication.php
@@ -0,0 +1,39 @@
+<?php
+
+final class PhabricatorFavoritesApplication extends PhabricatorApplication {
+
+ public function getBaseURI() {
+ return '/favorites/';
+ }
+
+ public function getName() {
+ return pht('Favorites');
+ }
+
+ public function getShortDescription() {
+ return pht('Favorite Items');
+ }
+
+ public function getIcon() {
+ return 'fa-star-o';
+ }
+
+ public function getRoutes() {
+ return array(
+ '/favorites/' => array(
+ '' => 'PhabricatorFavoritesMainController',
+ '(?P<type>global|personal)/item/' => $this->getProfileMenuRouting(
+ 'PhabricatorFavoritesMenuItemController'),
+ ),
+ );
+ }
+
+ public function isLaunchable() {
+ return false;
+ }
+
+ public function getApplicationOrder() {
+ return 9;
+ }
+
+}
diff --git a/src/applications/favorites/controller/PhabricatorFavoritesController.php b/src/applications/favorites/controller/PhabricatorFavoritesController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/favorites/controller/PhabricatorFavoritesController.php
@@ -0,0 +1,3 @@
+<?php
+
+abstract class PhabricatorFavoritesController extends PhabricatorController {}
diff --git a/src/applications/favorites/controller/PhabricatorFavoritesMainController.php b/src/applications/favorites/controller/PhabricatorFavoritesMainController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/favorites/controller/PhabricatorFavoritesMainController.php
@@ -0,0 +1,58 @@
+<?php
+
+final class PhabricatorFavoritesMainController
+ extends PhabricatorFavoritesController {
+
+ public function shouldAllowPublic() {
+ return false;
+ }
+
+ public function handleRequest(AphrontRequest $request) {
+ $viewer = $request->getViewer();
+
+ $menu = id(new PHUIObjectItemListView())
+ ->setUser($viewer);
+
+ $menu->addItem(
+ id(new PHUIObjectItemView())
+ ->setHeader(pht('Personal Menu Items'))
+ ->setHref($this->getApplicationURI('personal/item/'))
+ ->setImageURI($viewer->getProfileImageURI())
+ ->addAttribute(pht('Edit favorites for your personal account.')));
+
+ $icon = id(new PHUIIconView())
+ ->setIcon('fa-globe')
+ ->setBackground('bg-blue');
+
+ $menu->addItem(
+ id(new PHUIObjectItemView())
+ ->setHeader(pht('Global Menu Items'))
+ ->setHref($this->getApplicationURI('global/item/'))
+ ->setImageIcon($icon)
+ ->addAttribute(pht('Edit global default favorites for all users.')));
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $crumbs->addTextCrumb(pht('Manage'));
+ $crumbs->setBorder(true);
+
+ $box = id(new PHUIObjectBoxView())
+ ->setObjectList($menu);
+
+ $header = id(new PHUIHeaderView())
+ ->setHeader(pht('Manage Favorites'))
+ ->setHeaderIcon('fa-star-o');
+
+ $view = id(new PHUITwoColumnView())
+ ->setHeader($header)
+ ->setFooter(array(
+ $box,
+ ));
+
+ return $this->newPage()
+ ->setTitle(pht('Manage'))
+ ->setCrumbs($crumbs)
+ ->appendChild($view);
+
+ }
+
+}
diff --git a/src/applications/favorites/controller/PhabricatorFavoritesMenuItemController.php b/src/applications/favorites/controller/PhabricatorFavoritesMenuItemController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/favorites/controller/PhabricatorFavoritesMenuItemController.php
@@ -0,0 +1,24 @@
+<?php
+
+final class PhabricatorFavoritesMenuItemController
+ extends PhabricatorFavoritesController {
+
+ public function handleRequest(AphrontRequest $request) {
+ $viewer = $this->getViewer();
+ $application = 'PhabricatorFavoritesApplication';
+ $favorites = id(new PhabricatorApplicationQuery())
+ ->setViewer($viewer)
+ ->withClasses(array($application))
+ ->withInstalled(true)
+ ->executeOne();
+
+ $engine = id(new PhabricatorFavoritesProfileMenuEngine())
+ ->setProfileObject($favorites)
+ ->setController($this);
+
+ $this->setProfileMenuEngine($engine);
+
+ return $engine->buildResponse();
+ }
+
+}
diff --git a/src/applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php b/src/applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php
new file mode 100644
--- /dev/null
+++ b/src/applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php
@@ -0,0 +1,20 @@
+<?php
+
+final class PhabricatorFavoritesProfileMenuEngine
+ extends PhabricatorProfileMenuEngine {
+
+ protected function isMenuEngineConfigurable() {
+ return true;
+ }
+
+ protected function getItemURI($path) {
+ return "/favorites/item/{$path}";
+ }
+
+ protected function getBuiltinProfileItems($object) {
+ $items = array();
+
+ return $items;
+ }
+
+}

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 17, 10:36 PM (6 d, 23 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7708973
Default Alt Text
D17160.id41266.diff (6 KB)

Event Timeline