Differential D20287 Diff 48495 src/applications/project/controller/PhabricatorProjectBoardViewController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/PhabricatorProjectBoardViewController.php
| Show First 20 Lines • Show All 568 Lines • ▼ Show 20 Lines | foreach ($visible_columns as $column_phid => $column) { | ||||
| if ($column->isHidden()) { | if ($column->isHidden()) { | ||||
| $panel->addClass('project-panel-hidden'); | $panel->addClass('project-panel-hidden'); | ||||
| } | } | ||||
| $column_menu = $this->buildColumnMenu($project, $column); | $column_menu = $this->buildColumnMenu($project, $column); | ||||
| $panel->addHeaderAction($column_menu); | $panel->addHeaderAction($column_menu); | ||||
| if ($column->canHaveTrigger()) { | |||||
| $trigger_menu = $this->buildTriggerMenu($column); | |||||
| $panel->addHeaderAction($trigger_menu); | |||||
| } | |||||
| $count_tag = id(new PHUITagView()) | $count_tag = id(new PHUITagView()) | ||||
| ->setType(PHUITagView::TYPE_SHADE) | ->setType(PHUITagView::TYPE_SHADE) | ||||
| ->setColor(PHUITagView::COLOR_BLUE) | ->setColor(PHUITagView::COLOR_BLUE) | ||||
| ->addSigil('column-points') | ->addSigil('column-points') | ||||
| ->setName( | ->setName( | ||||
| javelin_tag( | javelin_tag( | ||||
| 'span', | 'span', | ||||
| array( | array( | ||||
| ▲ Show 20 Lines • Show All 582 Lines • ▼ Show 20 Lines | if (!$column->isHidden()) { | ||||
| $column_items[] = id(new PhabricatorActionView()) | $column_items[] = id(new PhabricatorActionView()) | ||||
| ->setName(pht('Show Column')) | ->setName(pht('Show Column')) | ||||
| ->setIcon('fa-eye') | ->setIcon('fa-eye') | ||||
| ->setHref($hide_uri) | ->setHref($hide_uri) | ||||
| ->setDisabled(!$can_hide) | ->setDisabled(!$can_hide) | ||||
| ->setWorkflow(true); | ->setWorkflow(true); | ||||
| } | } | ||||
| if ($column->canHaveTrigger()) { | $column_menu = id(new PhabricatorActionListView()) | ||||
| $column_items[] = id(new PhabricatorActionView()) | ->setUser($viewer); | ||||
| ->setType(PhabricatorActionView::TYPE_DIVIDER); | foreach ($column_items as $item) { | ||||
| $column_menu->addAction($item); | |||||
| } | |||||
| $column_button = id(new PHUIIconView()) | |||||
| ->setIcon('fa-pencil') | |||||
| ->setHref('#') | |||||
| ->addSigil('boards-dropdown-menu') | |||||
| ->setMetadata( | |||||
| array( | |||||
| 'items' => hsprintf('%s', $column_menu), | |||||
| )); | |||||
| return $column_button; | |||||
| } | |||||
| private function buildTriggerMenu(PhabricatorProjectColumn $column) { | |||||
| $viewer = $this->getViewer(); | |||||
| $trigger = $column->getTrigger(); | $trigger = $column->getTrigger(); | ||||
| $can_edit = PhabricatorPolicyFilter::hasCapability( | |||||
| $viewer, | |||||
| $column, | |||||
| PhabricatorPolicyCapability::CAN_EDIT); | |||||
| $trigger_items = array(); | |||||
| if (!$trigger) { | if (!$trigger) { | ||||
| $set_uri = $this->getApplicationURI( | $set_uri = $this->getApplicationURI( | ||||
| new PhutilURI( | new PhutilURI( | ||||
| 'trigger/edit/', | 'trigger/edit/', | ||||
| array( | array( | ||||
| 'columnPHID' => $column->getPHID(), | 'columnPHID' => $column->getPHID(), | ||||
| ))); | ))); | ||||
| $column_items[] = id(new PhabricatorActionView()) | $trigger_items[] = id(new PhabricatorActionView()) | ||||
| ->setIcon('fa-cogs') | ->setIcon('fa-cogs') | ||||
| ->setName(pht('New Trigger...')) | ->setName(pht('New Trigger...')) | ||||
| ->setHref($set_uri) | ->setHref($set_uri) | ||||
| ->setDisabled(!$can_edit); | ->setDisabled(!$can_edit); | ||||
| } else { | } else { | ||||
| $column_items[] = id(new PhabricatorActionView()) | $trigger_items[] = id(new PhabricatorActionView()) | ||||
| ->setIcon('fa-cogs') | ->setIcon('fa-cogs') | ||||
| ->setName(pht('View Trigger')) | ->setName(pht('View Trigger')) | ||||
| ->setHref($trigger->getURI()) | ->setHref($trigger->getURI()) | ||||
| ->setDisabled(!$can_edit); | ->setDisabled(!$can_edit); | ||||
| } | } | ||||
| $column_items[] = id(new PhabricatorActionView()) | $remove_uri = $this->getApplicationURI( | ||||
| new PhutilURI( | |||||
| urisprintf( | |||||
| 'column/remove/%d/', | |||||
| $column->getID()))); | |||||
| $trigger_items[] = id(new PhabricatorActionView()) | |||||
| ->setIcon('fa-times') | ->setIcon('fa-times') | ||||
| ->setName(pht('Remove Trigger')) | ->setName(pht('Remove Trigger')) | ||||
| ->setHref('#') | ->setHref($remove_uri) | ||||
| ->setWorkflow(true) | ->setWorkflow(true) | ||||
| ->setDisabled(!$can_edit || !$trigger); | ->setDisabled(!$can_edit || !$trigger); | ||||
| } | |||||
| $column_menu = id(new PhabricatorActionListView()) | $trigger_menu = id(new PhabricatorActionListView()) | ||||
| ->setUser($viewer); | ->setUser($viewer); | ||||
| foreach ($column_items as $item) { | foreach ($trigger_items as $item) { | ||||
| $column_menu->addAction($item); | $trigger_menu->addAction($item); | ||||
| } | } | ||||
| $column_button = id(new PHUIIconView()) | if ($trigger) { | ||||
| ->setIcon('fa-caret-down') | $trigger_icon = 'fa-cogs'; | ||||
| } else { | |||||
| $trigger_icon = 'fa-cogs grey'; | |||||
| } | |||||
| if ($trigger) { | |||||
| $trigger_tip = array( | |||||
| pht('%s: %s', $trigger->getObjectName(), $trigger->getDisplayName()), | |||||
| $trigger->getRulesDescription(), | |||||
| ); | |||||
| $trigger_tip = implode("\n", $trigger_tip); | |||||
| } else { | |||||
| $trigger_tip = pht('No column trigger.'); | |||||
| } | |||||
| $trigger_button = id(new PHUIIconView()) | |||||
| ->setIcon($trigger_icon) | |||||
| ->setHref('#') | ->setHref('#') | ||||
| ->addSigil('boards-dropdown-menu') | ->addSigil('boards-dropdown-menu') | ||||
| ->addSigil('has-tooltip') | |||||
| ->setMetadata( | ->setMetadata( | ||||
| array( | array( | ||||
| 'items' => hsprintf('%s', $column_menu), | 'items' => hsprintf('%s', $trigger_menu), | ||||
| 'tip' => $trigger_tip, | |||||
| )); | )); | ||||
| return $column_button; | return $trigger_button; | ||||
| } | } | ||||
| /** | /** | ||||
| * Add current state parameters (like order and the visibility of hidden | * Add current state parameters (like order and the visibility of hidden | ||||
| * columns) to a URI. | * columns) to a URI. | ||||
| * | * | ||||
| * This allows actions which toggle or adjust one piece of state to keep | * This allows actions which toggle or adjust one piece of state to keep | ||||
| * the rest of the board state persistent. If no URI is provided, this method | * the rest of the board state persistent. If no URI is provided, this method | ||||
| * starts with the request URI. | * starts with the request URI. | ||||
| * | * | ||||
| ▲ Show 20 Lines • Show All 208 Lines • Show Last 20 Lines | |||||