Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/applications/directory/controller/PhabricatorDirectoryController.php b/src/applications/directory/controller/PhabricatorDirectoryController.php
index 9c8e8b19c1..2e517a333d 100644
--- a/src/applications/directory/controller/PhabricatorDirectoryController.php
+++ b/src/applications/directory/controller/PhabricatorDirectoryController.php
@@ -1,73 +1,79 @@
<?php
abstract class PhabricatorDirectoryController extends PhabricatorController {
public function buildStandardPageResponse($view, array $data) {
$page = $this->buildStandardPageView();
$page->setBaseURI('/');
$page->setTitle(idx($data, 'title'));
$page->setGlyph("\xE2\x9A\x92");
$page->appendChild($view);
$response = new AphrontWebpageResponse();
return $response->setContent($page->render());
}
public function buildNav() {
$user = $this->getRequest()->getUser();
$nav = new AphrontSideNavFilterView();
$nav->setBaseURI(new PhutilURI('/'));
$applications = PhabricatorApplication::getAllInstalledApplications();
foreach ($applications as $key => $application) {
if (!$application->shouldAppearInLaunchView()) {
unset($applications[$key]);
}
}
$groups = PhabricatorApplication::getApplicationGroups();
$applications = msort($applications, 'getApplicationOrder');
$applications = mgroup($applications, 'getApplicationGroup');
$applications = array_select_keys($applications, array_keys($groups));
$view = array();
foreach ($applications as $group => $application_list) {
$status = array();
foreach ($application_list as $key => $application) {
$status[$key] = $application->loadStatus($user);
}
$views = array();
foreach ($application_list as $key => $application) {
- $views[] = id(new PhabricatorApplicationLaunchView())
+ $tile = id(new PhabricatorApplicationLaunchView())
->setApplication($application)
->setApplicationStatus(idx($status, $key, array()))
->setUser($user);
+
+ if ($group == PhabricatorApplication::GROUP_CORE) {
+ $tile->setFullWidth(true);
+ }
+
+ $views[] = $tile;
}
while (count($views) % 4) {
$views[] = id(new PhabricatorApplicationLaunchView());
}
$nav->addLabel($groups[$group]);
$nav->addCustomBlock(
phutil_render_tag(
'div',
array(
'class' => 'application-tile-group',
),
id(new AphrontNullView())->appendChild($views)->render()));
}
$nav->addClass('phabricator-side-menu-home');
$nav->selectFilter(null);
return $nav;
}
}
diff --git a/src/applications/meta/view/PhabricatorApplicationLaunchView.php b/src/applications/meta/view/PhabricatorApplicationLaunchView.php
index 329792b476..09b77611c7 100644
--- a/src/applications/meta/view/PhabricatorApplicationLaunchView.php
+++ b/src/applications/meta/view/PhabricatorApplicationLaunchView.php
@@ -1,80 +1,101 @@
<?php
final class PhabricatorApplicationLaunchView extends AphrontView {
private $application;
private $status;
+ private $fullWidth;
+
+ public function setFullWidth($full_width) {
+ $this->fullWidth = $full_width;
+ return $this;
+ }
public function setApplication(PhabricatorApplication $application) {
$this->application = $application;
return $this;
}
public function setApplicationStatus(array $status) {
$this->status = $status;
return $this;
}
public function render() {
$application = $this->application;
require_celerity_resource('phabricator-application-launch-view-css');
require_celerity_resource('sprite-apps-large-css');
$content = array();
$icon = null;
if ($application) {
$content[] = phutil_render_tag(
'span',
array(
'class' => 'phabricator-application-launch-name',
),
phutil_escape_html($application->getName()));
+ if ($this->fullWidth) {
+ $content[] = phutil_render_tag(
+ 'span',
+ array(
+ 'class' => 'phabricator-application-launch-description',
+ ),
+ phutil_escape_html($application->getShortDescription()));
+ }
+
$count = 0;
if ($this->status) {
foreach ($this->status as $status) {
$count += $status->getCount();
}
}
if ($count) {
$content[] = phutil_render_tag(
'span',
array(
'class' => 'phabricator-application-launch-attention',
),
phutil_escape_html($count));
}
$classes = array();
$classes[] = 'phabricator-application-launch-icon';
$styles = array();
if ($application->getIconURI()) {
$styles[] = 'background-image: url('.$application->getIconURI().')';
} else {
$icon = $application->getIconName();
$classes[] = 'sprite-apps-large';
$classes[] = 'app-'.$icon.'-light-large';
}
$icon = phutil_render_tag(
'span',
array(
'class' => implode(' ', $classes),
'style' => nonempty(implode('; ', $styles), null),
),
'');
}
+ $classes = array();
+ $classes[] = 'phabricator-application-launch-container';
+ if ($this->fullWidth) {
+ $classes[] = 'application-tile-full';
+ }
+
return phutil_render_tag(
$application ? 'a' : 'div',
array(
- 'class' => 'phabricator-application-launch-container',
+ 'class' => implode(' ', $classes),
'href' => $application ? $application->getBaseURI() : null,
),
$icon.
$this->renderSingleView($content));
}
}
diff --git a/webroot/rsrc/css/application/base/phabricator-application-launch-view.css b/webroot/rsrc/css/application/base/phabricator-application-launch-view.css
index 278c6f463f..b65f02581b 100644
--- a/webroot/rsrc/css/application/base/phabricator-application-launch-view.css
+++ b/webroot/rsrc/css/application/base/phabricator-application-launch-view.css
@@ -1,80 +1,110 @@
/**
* @provides phabricator-application-launch-view-css
*/
/* - Application List ----------------------------------------------------------
Spacing container for the list of large application buttons.
*/
.application-tile-group {
overflow: hidden;
}
/* - Application Launch Button -------------------------------------------------
Spacing container for the list of large application buttons.
*/
a.phabricator-application-launch-container,
div.phabricator-application-launch-container {
display: block;
float: left;
width: 78px;
height: 78px;
overflow: hidden;
position: relative;
text-decoration: none;
border: 1px solid #080909;
}
+a.application-tile-full {
+ width: 100%;
+ height: 52px;
+}
+
a.phabricator-application-launch-container:hover {
text-decoration: none;
}
/* The hover effect looks awful on phones/tablets when scrolling. */
.device-desktop a.phabricator-application-launch-container:hover {
background-color: #638ed3;
border-color: #0a1d59;
color: #fff;
}
.phabricator-application-launch-icon {
display: block;
position: absolute;
left: 25px;
top: 15px;
width: 28px;
height: 28px;
}
+.application-tile-full .phabricator-application-launch-icon {
+ top: 12px;
+ left: 12px;
+}
+
+
.phabricator-application-launch-name {
display: block;
margin-top: 50px;
font-weight: bold;
font-size: 11px;
text-align: center;
color: #ffffff;
text-shadow: 0px 1px 1px #000000;
}
+.application-tile-full .phabricator-application-launch-name {
+ margin-top: 12px;
+ text-align: left;
+ margin-left: 52px;
+
+}
+
+.application-tile-full .phabricator-application-launch-description {
+ color: #bfbfbf;
+ font-size: 11px;
+ margin-top: 24px;
+ margin-left: 52px;
+}
+
.phabricator-application-launch-attention {
position: absolute;
right: 4px;
top: 4px;
background: #ff0000;
border-radius: 10px;
color: white;
font-weight: bold;
padding: 1px 6px 2px;
border: 1px solid #aa0000;
font-size: 12px;
}
+
+.application-tile-full .phabricator-application-launch-attention {
+ top: 16px;
+ right: 12px;
+}

File Metadata

Mime Type
text/x-diff
Expires
Wed, Dec 3, 4:15 PM (6 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
433706
Default Alt Text
(8 KB)

Event Timeline