Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15380499
D10190.id24517.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Referenced Files
None
Subscribers
None
D10190.id24517.diff
View Options
diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -415,7 +415,7 @@
'rsrc/js/application/policy/behavior-policy-rule-editor.js' => 'fe9a552f',
'rsrc/js/application/ponder/behavior-votebox.js' => '4e9b766b',
'rsrc/js/application/projects/behavior-boards-dropdown.js' => '0ec56e1d',
- 'rsrc/js/application/projects/behavior-project-boards.js' => 'f47fa23b',
+ 'rsrc/js/application/projects/behavior-project-boards.js' => 'd4bf1f3c',
'rsrc/js/application/projects/behavior-project-create.js' => '065227cc',
'rsrc/js/application/projects/behavior-reorder-columns.js' => '09eee344',
'rsrc/js/application/releeph/releeph-preview-branch.js' => 'b2b4fbaf',
@@ -639,7 +639,7 @@
'javelin-behavior-policy-control' => 'f3fef818',
'javelin-behavior-policy-rule-editor' => 'fe9a552f',
'javelin-behavior-ponder-votebox' => '4e9b766b',
- 'javelin-behavior-project-boards' => 'f47fa23b',
+ 'javelin-behavior-project-boards' => 'd4bf1f3c',
'javelin-behavior-project-create' => '065227cc',
'javelin-behavior-refresh-csrf' => '7814b593',
'javelin-behavior-releeph-preview-branch' => 'b2b4fbaf',
@@ -1700,6 +1700,14 @@
'javelin-dom',
'javelin-view',
),
+ 'd4bf1f3c' => array(
+ 'javelin-behavior',
+ 'javelin-dom',
+ 'javelin-util',
+ 'javelin-stratcom',
+ 'javelin-workflow',
+ 'phabricator-draggable-list',
+ ),
'd4eecc63' => array(
'javelin-behavior',
'javelin-dom',
@@ -1844,14 +1852,6 @@
'phuix-action-view',
'javelin-workflow',
),
- 'f47fa23b' => array(
- 'javelin-behavior',
- 'javelin-dom',
- 'javelin-util',
- 'javelin-stratcom',
- 'javelin-workflow',
- 'phabricator-draggable-list',
- ),
'f51afce0' => array(
'javelin-behavior',
'javelin-request',
diff --git a/src/applications/project/controller/PhabricatorProjectBoardViewController.php b/src/applications/project/controller/PhabricatorProjectBoardViewController.php
--- a/src/applications/project/controller/PhabricatorProjectBoardViewController.php
+++ b/src/applications/project/controller/PhabricatorProjectBoardViewController.php
@@ -223,14 +223,8 @@
->setHeader($column->getDisplayName())
->setHeaderColor($column->getHeaderColor());
- $panel->setEditURI($board_uri.'column/'.$column->getID().'/');
-
- $panel->setHeaderAction(id(new PHUIIconView())
- ->setIconFont('fa-plus')
- ->setHref('/maniphest/task/create/')
- ->addSigil('column-add-task')
- ->setMetadata(
- array('columnPHID' => $column->getPHID())));
+ $column_menu = $this->buildColumnMenu($project, $column);
+ $panel->addHeaderAction($column_menu);
$cards = id(new PHUIObjectItemListView())
->setUser($viewer)
@@ -511,6 +505,59 @@
return $manage_button;
}
+ private function buildColumnMenu(
+ PhabricatorProject $project,
+ PhabricatorProjectColumn $column) {
+
+ $request = $this->getRequest();
+ $viewer = $request->getUser();
+
+ $can_edit = PhabricatorPolicyFilter::hasCapability(
+ $viewer,
+ $project,
+ PhabricatorPolicyCapability::CAN_EDIT);
+
+ $column_items = array();
+
+ $column_items[] = id(new PhabricatorActionView())
+ ->setIcon('fa-plus')
+ ->setName(pht('Create Task...'))
+ ->setHref('/maniphest/task/create/')
+ ->addSigil('column-add-task')
+ ->setMetadata(
+ array(
+ 'columnPHID' => $column->getPHID(),
+ ))
+ ->setDisabled(!$can_edit);
+
+ $edit_uri = $this->getApplicationURI(
+ 'board/'.$this->id.'/column/'.$column->getID().'/');
+
+ $column_items[] = id(new PhabricatorActionView())
+ ->setIcon('fa-pencil')
+ ->setName(pht('Edit Column'))
+ ->setHref($edit_uri)
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(!$can_edit);
+
+ $column_menu = id(new PhabricatorActionListView())
+ ->setUser($viewer);
+ foreach ($column_items as $item) {
+ $column_menu->addAction($item);
+ }
+
+ $column_button = id(new PHUIIconView())
+ ->setIconFont('fa-caret-down')
+ ->setHref('#')
+ ->addSigil('boards-dropdown-menu')
+ ->setMetadata(
+ array(
+ 'items' => hsprintf('%s', $column_menu),
+ ));
+
+ return $column_button;
+ }
+
private function initializeWorkboardDialog(PhabricatorProject $project) {
$instructions = pht('This workboard has not been setup yet.');
diff --git a/src/view/phui/PHUIWorkpanelView.php b/src/view/phui/PHUIWorkpanelView.php
--- a/src/view/phui/PHUIWorkpanelView.php
+++ b/src/view/phui/PHUIWorkpanelView.php
@@ -4,15 +4,9 @@
private $cards = array();
private $header;
- private $editURI;
- private $headerAction;
private $footerAction;
private $headerColor = PHUIActionHeaderView::HEADER_GREY;
-
- public function setHeaderAction(PHUIIconView $header_action) {
- $this->headerAction = $header_action;
- return $this;
- }
+ private $headerActions = array();
public function setCards(PHUIObjectItemListView $cards) {
$this->cards[] = $cards;
@@ -24,11 +18,6 @@
return $this;
}
- public function setEditURI($edit_uri) {
- $this->editURI = $edit_uri;
- return $this;
- }
-
public function setFooterAction(PHUIListItemView $footer_action) {
$this->footerAction = $footer_action;
return $this;
@@ -39,6 +28,11 @@
return $this;
}
+ public function addHeaderAction(PHUIIconView $action) {
+ $this->headerActions[] = $action;
+ return $this;
+ }
+
public function getTagAttributes() {
return array(
'class' => 'phui-workpanel-view',
@@ -61,20 +55,12 @@
$footer_tag);
}
- $header_edit = null;
- if ($this->editURI) {
- $header_edit = id(new PHUIIconView())
- ->setIconFont('fa-pencil')
- ->setHref($this->editURI);
- }
$header = id(new PHUIActionHeaderView())
->setHeaderTitle($this->header)
->setHeaderColor($this->headerColor);
- if ($header_edit) {
- $header->addAction($header_edit);
- }
- if ($this->headerAction) {
- $header->addAction($this->headerAction);
+
+ foreach ($this->headerActions as $action) {
+ $header->addAction($action);
}
$classes[] = 'phui-workpanel-'.$this->headerColor;
diff --git a/webroot/rsrc/js/application/projects/behavior-project-boards.js b/webroot/rsrc/js/application/projects/behavior-project-boards.js
--- a/webroot/rsrc/js/application/projects/behavior-project-boards.js
+++ b/webroot/rsrc/js/application/projects/behavior-project-boards.js
@@ -163,7 +163,11 @@
'click',
['column-add-task'],
function (e) {
- e.kill();
+
+ // We want the 'boards-dropdown-menu' behavior to see this event and
+ // close the dropdown, but don't want to follow the link.
+ e.prevent();
+
var column_phid = e.getNodeData('column-add-task').columnPHID;
var request_data = {
responseType: 'card',
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Mar 15, 3:20 AM (6 d, 19 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7681874
Default Alt Text
D10190.id24517.diff (6 KB)
Attached To
Mode
D10190: Convert workboard column options into a dropdown menu
Attached
Detach File
Event Timeline
Log In to Comment