From a45fe337a12f29efdf425086018f1160906f0d0f Mon Sep 17 00:00:00 2001 From: epriestley Date: Sat, 6 Feb 2016 16:25:18 -0800 Subject: [PATCH] Link proxy column headers on workboards to proxied projects Summary: Ref T10010. Allows you to click "Milestone 99" to jump directly to that project. Test Plan: - Clicked milestone header, went to milestone. - Clicked normal column header, nothing happened. Wow! Reviewers: chad Reviewed By: chad Maniphest Tasks: T10010 Differential Revision: https://secure.phabricator.com/D15204 --- .../PhabricatorProjectBoardViewController.php | 7 ++++++ src/view/phui/PHUIHeaderView.php | 25 ++++++++++++++++++- src/view/phui/PHUIWorkpanelView.php | 15 +++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/applications/project/controller/PhabricatorProjectBoardViewController.php b/src/applications/project/controller/PhabricatorProjectBoardViewController.php index ce8a63062e..a10cdc1696 100644 --- a/src/applications/project/controller/PhabricatorProjectBoardViewController.php +++ b/src/applications/project/controller/PhabricatorProjectBoardViewController.php @@ -281,6 +281,13 @@ final class PhabricatorProjectBoardViewController ->setSubHeader($column->getDisplayType()) ->addSigil('workpanel'); + $proxy = $column->getProxy(); + if ($proxy) { + $proxy_id = $proxy->getID(); + $href = $this->getApplicationURI("view/{$proxy_id}/"); + $panel->setHref($href); + } + $header_icon = $column->getHeaderIcon(); if ($header_icon) { $panel->setHeaderIcon($header_icon); diff --git a/src/view/phui/PHUIHeaderView.php b/src/view/phui/PHUIHeaderView.php index 48fedd11ae..50f0e36317 100644 --- a/src/view/phui/PHUIHeaderView.php +++ b/src/view/phui/PHUIHeaderView.php @@ -22,6 +22,7 @@ final class PHUIHeaderView extends AphrontTagView { private $epoch; private $actionIcons = array(); private $badges = array(); + private $href; public function setHeader($header) { $this->header = $header; @@ -147,6 +148,15 @@ final class PHUIHeaderView extends AphrontTagView { return $this; } + public function setHref($href) { + $this->href = $href; + return $this; + } + + public function getHref() { + return $this->href; + } + protected function getTagName() { return 'div'; } @@ -290,12 +300,25 @@ final class PHUIHeaderView extends AphrontTagView { ->setIcon($this->headerIcon); $left[] = $icon; } + + $header_content = $this->header; + + $href = $this->getHref(); + if ($href !== null) { + $header_content = phutil_tag( + 'a', + array( + 'href' => $href, + ), + $header_content); + } + $left[] = phutil_tag( 'span', array( 'class' => 'phui-header-header', ), - $this->header); + $header_content); if ($this->subheader || $this->badges) { $badges = null; diff --git a/src/view/phui/PHUIWorkpanelView.php b/src/view/phui/PHUIWorkpanelView.php index 50b2e12161..f672dc8e04 100644 --- a/src/view/phui/PHUIWorkpanelView.php +++ b/src/view/phui/PHUIWorkpanelView.php @@ -9,6 +9,7 @@ final class PHUIWorkpanelView extends AphrontTagView { private $headerActions = array(); private $headerTag; private $headerIcon; + private $href; public function setHeaderIcon($icon) { $this->headerIcon = $icon; @@ -49,6 +50,15 @@ final class PHUIWorkpanelView extends AphrontTagView { return $this; } + public function setHref($href) { + $this->href = $href; + return $this; + } + + public function getHref() { + return $this->href; + } + protected function getTagAttributes() { return array( 'class' => 'phui-workpanel-view', @@ -85,6 +95,11 @@ final class PHUIWorkpanelView extends AphrontTagView { $header->addActionIcon($action); } + $href = $this->getHref(); + if ($href !== null) { + $header->setHref($href); + } + $body = phutil_tag( 'div', array(