Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
4.6 kB · 148 lines
PHP
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149<?php
final class PhabricatorProjectColumnHideController extends PhabricatorProjectBoardController {
public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer(); $id = $request->getURIData('id'); $project_id = $request->getURIData('projectID');
$project = id(new PhabricatorProjectQuery()) ->setViewer($viewer) ->requireCapabilities( array( PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT, )) ->withIDs(array($project_id)) ->executeOne();
if (!$project) { return new Aphront404Response(); } $this->setProject($project);
$column = id(new PhabricatorProjectColumnQuery()) ->setViewer($viewer) ->withIDs(array($id)) ->requireCapabilities( array( PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT, )) ->executeOne(); if (!$column) { return new Aphront404Response(); }
$column_phid = $column->getPHID();
$view_uri = $project->getWorkboardURI(); $view_uri = new PhutilURI($view_uri); foreach ($request->getPassthroughRequestData() as $key => $value) { $view_uri->replaceQueryParam($key, $value); }
if ($column->isDefaultColumn()) { return $this->newDialog() ->setTitle(pht('Can Not Hide Default Column')) ->appendParagraph( pht('You can not hide the default/backlog column on a board.')) ->addCancelButton($view_uri, pht('Okay')); }
$proxy = $column->getProxy();
if ($request->isFormPost()) { if ($proxy) { if ($proxy->isArchived()) { $new_status = PhabricatorProjectStatus::STATUS_ACTIVE; } else { $new_status = PhabricatorProjectStatus::STATUS_ARCHIVED; }
$xactions = array();
$xactions[] = id(new PhabricatorProjectTransaction()) ->setTransactionType( PhabricatorProjectStatusTransaction::TRANSACTIONTYPE) ->setNewValue($new_status);
id(new PhabricatorProjectTransactionEditor()) ->setActor($viewer) ->setContentSourceFromRequest($request) ->setContinueOnNoEffect(true) ->setContinueOnMissingFields(true) ->applyTransactions($proxy, $xactions); } else { if ($column->isHidden()) { $new_status = PhabricatorProjectColumn::STATUS_ACTIVE; } else { $new_status = PhabricatorProjectColumn::STATUS_HIDDEN; }
$type_status = PhabricatorProjectColumnStatusTransaction::TRANSACTIONTYPE;
$xactions = array( id(new PhabricatorProjectColumnTransaction()) ->setTransactionType($type_status) ->setNewValue($new_status), );
$editor = id(new PhabricatorProjectColumnTransactionEditor()) ->setActor($viewer) ->setContinueOnNoEffect(true) ->setContinueOnMissingFields(true) ->setContentSourceFromRequest($request) ->applyTransactions($column, $xactions); }
return id(new AphrontRedirectResponse())->setURI($view_uri); }
if ($proxy) { if ($column->isHidden()) { $title = pht('Activate and Show Column'); $body = pht( 'This column is hidden because it represents an archived '. 'subproject. Do you want to activate the subproject so the '. 'column is visible again?'); $button = pht('Activate Subproject'); } else { $title = pht('Archive and Hide Column'); $body = pht( 'This column is visible because it represents an active '. 'subproject. Do you want to hide the column by archiving the '. 'subproject?'); $button = pht('Archive Subproject'); } } else { if ($column->isHidden()) { $title = pht('Show Column'); $body = pht('Are you sure you want to show this column?'); $button = pht('Show Column'); } else { $title = pht('Hide Column'); $body = pht( 'Are you sure you want to hide this column? It will no longer '. 'appear on the workboard.'); $button = pht('Hide Column'); } }
$dialog = $this->newDialog() ->setWidth(AphrontDialogView::WIDTH_FORM) ->setTitle($title) ->appendChild($body) ->addCancelButton($view_uri) ->addSubmitButton($button);
foreach ($request->getPassthroughRequestData() as $key => $value) { $dialog->addHiddenInput($key, $value); }
return $dialog; }}