Summary: Ref T13411. These three applications render an "Editable By: <policy>" field in their descriptions. The pages that these appear on all have "Edit <thing>" actions which either tell you the policy or allow you to discover the policy, and this field is unusual (the vast majority of objects don't have it). I think it largely got copy/pasted or used as space-filler and doesn't offer much of value. Remove it to simplify/standardize these pages and make changes to how this field works simpler to implement. Test Plan: Viewed a Credential, Blog, and Space; no longer saw the "Editable By" field. Maniphest Tasks: T13411 Differential Revision: https://secure.phabricator.com/D20802
137 lines
3.7 KiB
PHP
137 lines
3.7 KiB
PHP
<?php
|
|
|
|
final class PhabricatorSpacesViewController
|
|
extends PhabricatorSpacesController {
|
|
|
|
public function shouldAllowPublic() {
|
|
return true;
|
|
}
|
|
|
|
public function handleRequest(AphrontRequest $request) {
|
|
$viewer = $this->getViewer();
|
|
|
|
$space = id(new PhabricatorSpacesNamespaceQuery())
|
|
->setViewer($viewer)
|
|
->withIDs(array($request->getURIData('id')))
|
|
->executeOne();
|
|
if (!$space) {
|
|
return new Aphront404Response();
|
|
}
|
|
|
|
$curtain = $this->buildCurtain($space);
|
|
$property_list = $this->buildPropertyListView($space);
|
|
$title = array($space->getMonogram(), $space->getNamespaceName());
|
|
|
|
$xactions = id(new PhabricatorSpacesNamespaceTransactionQuery())
|
|
->setViewer($viewer)
|
|
->withObjectPHIDs(array($space->getPHID()))
|
|
->execute();
|
|
|
|
$timeline = $this->buildTransactionTimeline(
|
|
$space,
|
|
new PhabricatorSpacesNamespaceTransactionQuery());
|
|
$timeline->setShouldTerminate(true);
|
|
|
|
$header = id(new PHUIHeaderView())
|
|
->setUser($viewer)
|
|
->setHeader($space->getNamespaceName())
|
|
->setPolicyObject($space)
|
|
->setHeaderIcon('fa-th-large');
|
|
|
|
if ($space->getIsArchived()) {
|
|
$header->setStatus('fa-ban', 'indigo', pht('Archived'));
|
|
} else {
|
|
$header->setStatus('fa-check', 'bluegrey', pht('Active'));
|
|
}
|
|
|
|
$box = id(new PHUIObjectBoxView())
|
|
->setHeaderText(pht('Details'))
|
|
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
|
|
->addPropertyList($property_list);
|
|
|
|
$crumbs = $this->buildApplicationCrumbs();
|
|
$crumbs->addTextCrumb($space->getMonogram());
|
|
$crumbs->setBorder(true);
|
|
|
|
$view = id(new PHUITwoColumnView())
|
|
->setHeader($header)
|
|
->setMainColumn(array(
|
|
$box,
|
|
$timeline,
|
|
))
|
|
->setCurtain($curtain);
|
|
|
|
return $this->newPage()
|
|
->setTitle($title)
|
|
->setCrumbs($crumbs)
|
|
->appendChild($view);
|
|
|
|
}
|
|
|
|
private function buildPropertyListView(PhabricatorSpacesNamespace $space) {
|
|
$viewer = $this->getRequest()->getUser();
|
|
|
|
$list = id(new PHUIPropertyListView())
|
|
->setUser($viewer);
|
|
|
|
$list->addProperty(
|
|
pht('Default Space'),
|
|
$space->getIsDefaultNamespace()
|
|
? pht('Yes')
|
|
: pht('No'));
|
|
|
|
$description = $space->getDescription();
|
|
if (strlen($description)) {
|
|
$description = new PHUIRemarkupView($viewer, $description);
|
|
$list->addSectionHeader(
|
|
pht('Description'),
|
|
PHUIPropertyListView::ICON_SUMMARY);
|
|
$list->addTextContent($description);
|
|
}
|
|
|
|
return $list;
|
|
}
|
|
|
|
private function buildCurtain(PhabricatorSpacesNamespace $space) {
|
|
$viewer = $this->getRequest()->getUser();
|
|
|
|
$curtain = $this->newCurtainView($space);
|
|
|
|
$can_edit = PhabricatorPolicyFilter::hasCapability(
|
|
$viewer,
|
|
$space,
|
|
PhabricatorPolicyCapability::CAN_EDIT);
|
|
|
|
$curtain->addAction(
|
|
id(new PhabricatorActionView())
|
|
->setName(pht('Edit Space'))
|
|
->setIcon('fa-pencil')
|
|
->setHref($this->getApplicationURI('edit/'.$space->getID().'/'))
|
|
->setWorkflow(!$can_edit)
|
|
->setDisabled(!$can_edit));
|
|
|
|
$id = $space->getID();
|
|
|
|
if ($space->getIsArchived()) {
|
|
$curtain->addAction(
|
|
id(new PhabricatorActionView())
|
|
->setName(pht('Activate Space'))
|
|
->setIcon('fa-check')
|
|
->setHref($this->getApplicationURI("activate/{$id}/"))
|
|
->setDisabled(!$can_edit)
|
|
->setWorkflow(true));
|
|
} else {
|
|
$curtain->addAction(
|
|
id(new PhabricatorActionView())
|
|
->setName(pht('Archive Space'))
|
|
->setIcon('fa-ban')
|
|
->setHref($this->getApplicationURI("archive/{$id}/"))
|
|
->setDisabled(!$can_edit)
|
|
->setWorkflow(true));
|
|
}
|
|
|
|
return $curtain;
|
|
}
|
|
|
|
}
|