mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-29 02:02:41 +01:00
64d6593e9c
Summary: Ref T4103. A few bits here: - We have an ancient "tiles" preference which was just a fallback from 2-3 years ago. Throw that away. - Modenize the other pinned stuff. We should likely revisit this after the next homepage update but I just left the actual defaults alone for now. - Lightly prepare for global default editing. - Add a "reset to defaults" option. Test Plan: - Pinned, unpinned, reordered and reset application homepage order. Reviewers: chad Reviewed By: chad Maniphest Tasks: T4103 Differential Revision: https://secure.phabricator.com/D16028
72 lines
1.8 KiB
PHP
72 lines
1.8 KiB
PHP
<?php
|
|
|
|
abstract class PhabricatorHomeController extends PhabricatorController {
|
|
|
|
public function buildNav() {
|
|
$user = $this->getRequest()->getUser();
|
|
|
|
$nav = new AphrontSideNavFilterView();
|
|
$nav->setBaseURI(new PhutilURI('/'));
|
|
|
|
$applications = id(new PhabricatorApplicationQuery())
|
|
->setViewer($user)
|
|
->withInstalled(true)
|
|
->withUnlisted(false)
|
|
->withLaunchable(true)
|
|
->execute();
|
|
|
|
$pinned = $user->getUserSetting(
|
|
PhabricatorPinnedApplicationsSetting::SETTINGKEY);
|
|
|
|
// Force "Applications" to appear at the bottom.
|
|
$meta_app = 'PhabricatorApplicationsApplication';
|
|
$pinned = array_fuse($pinned);
|
|
unset($pinned[$meta_app]);
|
|
$pinned[$meta_app] = $meta_app;
|
|
$applications[$meta_app] = PhabricatorApplication::getByClass($meta_app);
|
|
|
|
$tiles = array();
|
|
|
|
$home_app = new PhabricatorHomeApplication();
|
|
|
|
$tiles[] = id(new PhabricatorApplicationLaunchView())
|
|
->setApplication($home_app)
|
|
->setApplicationStatus($home_app->loadStatus($user))
|
|
->addClass('phabricator-application-launch-phone-only')
|
|
->setUser($user);
|
|
|
|
foreach ($pinned as $pinned_application) {
|
|
if (empty($applications[$pinned_application])) {
|
|
continue;
|
|
}
|
|
|
|
$application = $applications[$pinned_application];
|
|
|
|
$tile = id(new PhabricatorApplicationLaunchView())
|
|
->setApplication($application)
|
|
->setApplicationStatus($application->loadStatus($user))
|
|
->setUser($user);
|
|
|
|
$tiles[] = $tile;
|
|
}
|
|
|
|
$nav->addCustomBlock(
|
|
phutil_tag(
|
|
'div',
|
|
array(
|
|
'class' => 'application-tile-group',
|
|
),
|
|
$tiles));
|
|
|
|
$nav->addFilter(
|
|
'',
|
|
pht('Customize Menu...'),
|
|
'/settings/panel/home/');
|
|
|
|
$nav->addClass('phabricator-side-menu-home');
|
|
$nav->selectFilter(null);
|
|
|
|
return $nav;
|
|
}
|
|
|
|
}
|