Path: blob/master/src/applications/diffusion/management/DiffusionRepositoryPoliciesManagementPanel.php
13395 views
<?php12final class DiffusionRepositoryPoliciesManagementPanel3extends DiffusionRepositoryManagementPanel {45const PANELKEY = 'policies';67public function getManagementPanelLabel() {8return pht('Policies');9}1011public function getManagementPanelOrder() {12return 300;13}1415public function getManagementPanelIcon() {16$viewer = $this->getViewer();17$repository = $this->getRepository();1819$can_view = PhabricatorPolicyCapability::CAN_VIEW;20$can_edit = PhabricatorPolicyCapability::CAN_EDIT;21$can_push = DiffusionPushCapability::CAPABILITY;2223$actual_values = array(24'spacePHID' => $repository->getSpacePHID(),25'view' => $repository->getPolicy($can_view),26'edit' => $repository->getPolicy($can_edit),27'push' => $repository->getPolicy($can_push),28);2930$default = PhabricatorRepository::initializeNewRepository(31$viewer);3233$default_values = array(34'spacePHID' => $default->getSpacePHID(),35'view' => $default->getPolicy($can_view),36'edit' => $default->getPolicy($can_edit),37'push' => $default->getPolicy($can_push),38);3940if ($actual_values === $default_values) {41return 'fa-lock grey';42} else {43return 'fa-lock';44}45}4647protected function getEditEngineFieldKeys() {48return array(49'policy.view',50'policy.edit',51'spacePHID',52'policy.push',53);54}5556public function buildManagementPanelCurtain() {57$repository = $this->getRepository();58$viewer = $this->getViewer();59$action_list = $this->newActionList();6061$can_edit = PhabricatorPolicyFilter::hasCapability(62$viewer,63$repository,64PhabricatorPolicyCapability::CAN_EDIT);6566$edit_uri = $this->getEditPageURI();6768$action_list->addAction(69id(new PhabricatorActionView())70->setName(pht('Edit Policies'))71->setHref($edit_uri)72->setIcon('fa-pencil')73->setDisabled(!$can_edit)74->setWorkflow(!$can_edit));7576return $this->newCurtainView()77->setActionList($action_list);78}798081public function buildManagementPanelContent() {82$repository = $this->getRepository();83$viewer = $this->getViewer();8485$view = id(new PHUIPropertyListView())86->setViewer($viewer);8788$descriptions = PhabricatorPolicyQuery::renderPolicyDescriptions(89$viewer,90$repository);9192$view_parts = array();93if (PhabricatorSpacesNamespaceQuery::getViewerSpacesExist($viewer)) {94$space_phid = PhabricatorSpacesNamespaceQuery::getObjectSpacePHID(95$repository);96$view_parts[] = $viewer->renderHandle($space_phid);97}98$view_parts[] = $descriptions[PhabricatorPolicyCapability::CAN_VIEW];99100$view->addProperty(101pht('Visible To'),102phutil_implode_html(" \xC2\xB7 ", $view_parts));103104$view->addProperty(105pht('Editable By'),106$descriptions[PhabricatorPolicyCapability::CAN_EDIT]);107108$pushable = $repository->isHosted()109? $descriptions[DiffusionPushCapability::CAPABILITY]110: phutil_tag('em', array(), pht('Not a Hosted Repository'));111$view->addProperty(pht('Pushable By'), $pushable);112113return $this->newBox(pht('Policies'), $view);114}115116}117118119