diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 9f85b1f934..c30fb888a6 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -510,6 +510,7 @@ phutil_register_library_map(array( 'DiffusionRepositoryEditBranchesController' => 'applications/diffusion/controller/DiffusionRepositoryEditBranchesController.php', 'DiffusionRepositoryEditController' => 'applications/diffusion/controller/DiffusionRepositoryEditController.php', 'DiffusionRepositoryEditEncodingController' => 'applications/diffusion/controller/DiffusionRepositoryEditEncodingController.php', + 'DiffusionRepositoryEditMainController' => 'applications/diffusion/controller/DiffusionRepositoryEditMainController.php', 'DiffusionRepositoryEditPolicyController' => 'applications/diffusion/controller/DiffusionRepositoryEditPolicyController.php', 'DiffusionRepositoryEditSubversionController' => 'applications/diffusion/controller/DiffusionRepositoryEditSubversionController.php', 'DiffusionRepositoryListController' => 'applications/diffusion/controller/DiffusionRepositoryListController.php', @@ -2678,15 +2679,16 @@ phutil_register_library_map(array( 'DiffusionRawDiffQuery' => 'DiffusionQuery', 'DiffusionRemarkupRule' => 'PhabricatorRemarkupRuleObject', 'DiffusionRepositoryController' => 'DiffusionController', - 'DiffusionRepositoryCreateController' => 'DiffusionController', - 'DiffusionRepositoryEditActionsController' => 'DiffusionController', - 'DiffusionRepositoryEditActivateController' => 'DiffusionController', - 'DiffusionRepositoryEditBasicController' => 'DiffusionController', - 'DiffusionRepositoryEditBranchesController' => 'DiffusionController', + 'DiffusionRepositoryCreateController' => 'DiffusionRepositoryEditController', + 'DiffusionRepositoryEditActionsController' => 'DiffusionRepositoryEditController', + 'DiffusionRepositoryEditActivateController' => 'DiffusionRepositoryEditController', + 'DiffusionRepositoryEditBasicController' => 'DiffusionRepositoryEditController', + 'DiffusionRepositoryEditBranchesController' => 'DiffusionRepositoryEditController', 'DiffusionRepositoryEditController' => 'DiffusionController', - 'DiffusionRepositoryEditEncodingController' => 'DiffusionController', - 'DiffusionRepositoryEditPolicyController' => 'DiffusionController', - 'DiffusionRepositoryEditSubversionController' => 'DiffusionController', + 'DiffusionRepositoryEditEncodingController' => 'DiffusionRepositoryEditController', + 'DiffusionRepositoryEditMainController' => 'DiffusionRepositoryEditController', + 'DiffusionRepositoryEditPolicyController' => 'DiffusionRepositoryEditController', + 'DiffusionRepositoryEditSubversionController' => 'DiffusionRepositoryEditController', 'DiffusionRepositoryListController' => array( 0 => 'DiffusionController', diff --git a/src/applications/diffusion/application/PhabricatorApplicationDiffusion.php b/src/applications/diffusion/application/PhabricatorApplicationDiffusion.php index 1cf6101732..c499461585 100644 --- a/src/applications/diffusion/application/PhabricatorApplicationDiffusion.php +++ b/src/applications/diffusion/application/PhabricatorApplicationDiffusion.php @@ -64,7 +64,7 @@ final class PhabricatorApplicationDiffusion extends PhabricatorApplication { 'commit/(?P[a-z0-9]+)/edit/' => 'DiffusionCommitEditController', 'edit/' => array( - '' => 'DiffusionRepositoryEditController', + '' => 'DiffusionRepositoryEditMainController', 'basic/' => 'DiffusionRepositoryEditBasicController', 'encoding/' => 'DiffusionRepositoryEditEncodingController', 'activate/' => 'DiffusionRepositoryEditActivateController', diff --git a/src/applications/diffusion/controller/DiffusionRepositoryCreateController.php b/src/applications/diffusion/controller/DiffusionRepositoryCreateController.php index f0af2e5de0..c32d08f128 100644 --- a/src/applications/diffusion/controller/DiffusionRepositoryCreateController.php +++ b/src/applications/diffusion/controller/DiffusionRepositoryCreateController.php @@ -1,6 +1,7 @@ readFromObject($dict); } - $crumbs = $this->buildCrumbs(); + $crumbs = $this->buildApplicationCrumbs(); $crumbs->addCrumb( id(new PhabricatorCrumbView()) ->setName($title)); diff --git a/src/applications/diffusion/controller/DiffusionRepositoryEditActionsController.php b/src/applications/diffusion/controller/DiffusionRepositoryEditActionsController.php index 7260935c12..67e3b7aa7e 100644 --- a/src/applications/diffusion/controller/DiffusionRepositoryEditActionsController.php +++ b/src/applications/diffusion/controller/DiffusionRepositoryEditActionsController.php @@ -1,7 +1,7 @@ getRequest(); @@ -58,7 +58,7 @@ final class DiffusionRepositoryEditActionsController $content = array(); - $crumbs = $this->buildCrumbs(); + $crumbs = $this->buildApplicationCrumbs(); $crumbs->addCrumb( id(new PhabricatorCrumbView()) ->setName(pht('Edit Actions'))); diff --git a/src/applications/diffusion/controller/DiffusionRepositoryEditActivateController.php b/src/applications/diffusion/controller/DiffusionRepositoryEditActivateController.php index c386d93d22..2ea6913a7c 100644 --- a/src/applications/diffusion/controller/DiffusionRepositoryEditActivateController.php +++ b/src/applications/diffusion/controller/DiffusionRepositoryEditActivateController.php @@ -1,7 +1,7 @@ getRequest(); diff --git a/src/applications/diffusion/controller/DiffusionRepositoryEditBasicController.php b/src/applications/diffusion/controller/DiffusionRepositoryEditBasicController.php index 107f99425d..62b58da016 100644 --- a/src/applications/diffusion/controller/DiffusionRepositoryEditBasicController.php +++ b/src/applications/diffusion/controller/DiffusionRepositoryEditBasicController.php @@ -1,6 +1,7 @@ getRequest(); @@ -65,7 +66,7 @@ final class DiffusionRepositoryEditBasicController extends DiffusionController { } } - $crumbs = $this->buildCrumbs(); + $crumbs = $this->buildApplicationCrumbs(); $crumbs->addCrumb( id(new PhabricatorCrumbView()) ->setName(pht('Edit Basics'))); diff --git a/src/applications/diffusion/controller/DiffusionRepositoryEditBranchesController.php b/src/applications/diffusion/controller/DiffusionRepositoryEditBranchesController.php index c177d13fed..0734d52088 100644 --- a/src/applications/diffusion/controller/DiffusionRepositoryEditBranchesController.php +++ b/src/applications/diffusion/controller/DiffusionRepositoryEditBranchesController.php @@ -1,7 +1,7 @@ getRequest(); @@ -18,7 +18,6 @@ final class DiffusionRepositoryEditBranchesController )) ->withIDs(array($repository->getID())) ->executeOne(); - if (!$repository) { return new Aphront404Response(); } @@ -76,7 +75,7 @@ final class DiffusionRepositoryEditBranchesController $content = array(); - $crumbs = $this->buildCrumbs(); + $crumbs = $this->buildApplicationCrumbs(); $crumbs->addCrumb( id(new PhabricatorCrumbView()) ->setName(pht('Edit Branches'))); diff --git a/src/applications/diffusion/controller/DiffusionRepositoryEditController.php b/src/applications/diffusion/controller/DiffusionRepositoryEditController.php index a393343920..7909194e41 100644 --- a/src/applications/diffusion/controller/DiffusionRepositoryEditController.php +++ b/src/applications/diffusion/controller/DiffusionRepositoryEditController.php @@ -1,450 +1,28 @@ getRequest(); - $viewer = $request->getUser(); - $drequest = $this->diffusionRequest; - $repository = $drequest->getRepository(); + public function buildApplicationCrumbs() { + $crumbs = parent::buildApplicationCrumbs(); - PhabricatorPolicyFilter::requireCapability( - $viewer, - $repository, - PhabricatorPolicyCapability::CAN_EDIT); + if ($this->diffusionRequest) { + $repository = $this->getDiffusionRequest()->getRepository(); + $repo_uri = $this->getRepositoryControllerURI($repository, ''); + $edit_uri = $this->getRepositoryControllerURI($repository, 'edit/'); - $is_svn = false; - $is_git = false; - $is_hg = false; - switch ($repository->getVersionControlSystem()) { - case PhabricatorRepositoryType::REPOSITORY_TYPE_GIT: - $is_git = true; - break; - case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN: - $is_svn = true; - break; - case PhabricatorRepositoryType::REPOSITORY_TYPE_MERCURIAL: - $is_hg = true; - break; + $crumbs->addCrumb( + id(new PhabricatorCrumbView()) + ->setName('r'.$repository->getCallsign()) + ->setHref($repo_uri)); + + $crumbs->addCrumb( + id(new PhabricatorCrumbView()) + ->setName(pht('Edit')) + ->setHref($edit_uri)); } - $has_branches = ($is_git || $is_hg); - - $crumbs = $this->buildCrumbs(); - $crumbs->addCrumb( - id(new PhabricatorCrumbView()) - ->setName(pht('Edit'))); - - $title = pht('Edit %s', $repository->getName()); - - $header = id(new PHUIHeaderView()) - ->setHeader($title); - if (!$repository->isTracked()) { - $header->addTag( - id(new PhabricatorTagView()) - ->setType(PhabricatorTagView::TYPE_STATE) - ->setName(pht('Inactive')) - ->setBackgroundColor(PhabricatorTagView::COLOR_BLACK)); - } - - $basic_actions = $this->buildBasicActions($repository); - $basic_properties = - $this->buildBasicProperties($repository, $basic_actions); - - $policy_actions = $this->buildPolicyActions($repository); - $policy_properties = - $this->buildPolicyProperties($repository, $policy_actions); - - $remote_properties = $this->buildRemoteProperties( - $repository, - $this->buildRemoteActions($repository)); - - $encoding_actions = $this->buildEncodingActions($repository); - $encoding_properties = - $this->buildEncodingProperties($repository, $encoding_actions); - - $branches_properties = null; - if ($has_branches) { - $branches_properties = $this->buildBranchesProperties( - $repository, - $this->buildBranchesActions($repository)); - } - - $subversion_properties = null; - if ($is_svn) { - $subversion_properties = $this->buildSubversionProperties( - $repository, - $this->buildSubversionActions($repository)); - } - - $actions_properties = $this->buildActionsProperties( - $repository, - $this->buildActionsActions($repository)); - - $xactions = id(new PhabricatorRepositoryTransactionQuery()) - ->setViewer($viewer) - ->withObjectPHIDs(array($repository->getPHID())) - ->execute(); - - $engine = id(new PhabricatorMarkupEngine()) - ->setViewer($viewer); - foreach ($xactions as $xaction) { - if ($xaction->getComment()) { - $engine->addObject( - $xaction->getComment(), - PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT); - } - } - $engine->process(); - - $xaction_view = id(new PhabricatorApplicationTransactionView()) - ->setUser($viewer) - ->setObjectPHID($repository->getPHID()) - ->setTransactions($xactions) - ->setMarkupEngine($engine); - - $obj_box = id(new PHUIObjectBoxView()) - ->setHeader($header) - ->addPropertyList($basic_properties) - ->addPropertyList($policy_properties) - ->addPropertyList($remote_properties) - ->addPropertyList($encoding_properties); - - if ($branches_properties) { - $obj_box->addPropertyList($branches_properties); - } - - if ($subversion_properties) { - $obj_box->addPropertyList($subversion_properties); - } - - $obj_box->addPropertyList($actions_properties); - - return $this->buildApplicationPage( - array( - $crumbs, - $obj_box, - $xaction_view, - ), - array( - 'title' => $title, - 'device' => true, - )); - } - - private function buildBasicActions(PhabricatorRepository $repository) { - $viewer = $this->getRequest()->getUser(); - - $view = id(new PhabricatorActionListView()) - ->setObjectURI($this->getRequest()->getRequestURI()) - ->setUser($viewer); - - $edit = id(new PhabricatorActionView()) - ->setIcon('edit') - ->setName(pht('Edit Basic Information')) - ->setHref($this->getRepositoryControllerURI($repository, 'edit/basic/')); - $view->addAction($edit); - - $activate = id(new PhabricatorActionView()) - ->setHref( - $this->getRepositoryControllerURI($repository, 'edit/activate/')) - ->setWorkflow(true); - - if ($repository->isTracked()) { - $activate - ->setIcon('disable') - ->setName(pht('Deactivate Repository')); - } else { - $activate - ->setIcon('enable') - ->setName(pht('Activate Repository')); - } - - $view->addAction($activate); - - return $view; - } - - private function buildBasicProperties( - PhabricatorRepository $repository, - PhabricatorActionListView $actions) { - - $viewer = $this->getRequest()->getUser(); - - $view = id(new PHUIPropertyListView()) - ->setUser($viewer) - ->setActionList($actions); - - $view->addProperty(pht('Name'), $repository->getName()); - $view->addProperty(pht('ID'), $repository->getID()); - $view->addProperty(pht('PHID'), $repository->getPHID()); - - $type = PhabricatorRepositoryType::getNameForRepositoryType( - $repository->getVersionControlSystem()); - - $view->addProperty(pht('Type'), $type); - $view->addProperty(pht('Callsign'), $repository->getCallsign()); - - $description = $repository->getDetail('description'); - $view->addSectionHeader(pht('Description')); - if (!strlen($description)) { - $description = phutil_tag('em', array(), pht('No description provided.')); - } else { - $description = PhabricatorMarkupEngine::renderOneObject( - $repository, - 'description', - $viewer); - } - $view->addTextContent($description); - - return $view; - } - - private function buildEncodingActions(PhabricatorRepository $repository) { - $viewer = $this->getRequest()->getUser(); - - $view = id(new PhabricatorActionListView()) - ->setObjectURI($this->getRequest()->getRequestURI()) - ->setUser($viewer); - - $edit = id(new PhabricatorActionView()) - ->setIcon('edit') - ->setName(pht('Edit Text Encoding')) - ->setHref( - $this->getRepositoryControllerURI($repository, 'edit/encoding/')); - $view->addAction($edit); - - return $view; - } - - private function buildEncodingProperties( - PhabricatorRepository $repository, - PhabricatorActionListView $actions) { - - $viewer = $this->getRequest()->getUser(); - - $view = id(new PHUIPropertyListView()) - ->setUser($viewer) - ->setActionList($actions) - ->addSectionHeader(pht('Text Encoding')); - - $encoding = $repository->getDetail('encoding'); - if (!$encoding) { - $encoding = phutil_tag('em', array(), pht('Use Default (UTF-8)')); - } - - $view->addProperty(pht('Encoding'), $encoding); - - return $view; - } - - private function buildPolicyActions(PhabricatorRepository $repository) { - $viewer = $this->getRequest()->getUser(); - - $view = id(new PhabricatorActionListView()) - ->setObjectURI($this->getRequest()->getRequestURI()) - ->setUser($viewer); - - $edit = id(new PhabricatorActionView()) - ->setIcon('edit') - ->setName(pht('Edit Policies')) - ->setHref( - $this->getRepositoryControllerURI($repository, 'edit/policy/')); - $view->addAction($edit); - - return $view; - } - - private function buildPolicyProperties( - PhabricatorRepository $repository, - PhabricatorActionListView $actions) { - - $viewer = $this->getRequest()->getUser(); - - $view = id(new PHUIPropertyListView()) - ->setUser($viewer) - ->setActionList($actions) - ->addSectionHeader(pht('Policies')); - - $descriptions = PhabricatorPolicyQuery::renderPolicyDescriptions( - $viewer, - $repository); - - $view->addProperty( - pht('Visible To'), - $descriptions[PhabricatorPolicyCapability::CAN_VIEW]); - - $view->addProperty( - pht('Editable By'), - $descriptions[PhabricatorPolicyCapability::CAN_EDIT]); - - - return $view; - } - - private function buildBranchesActions(PhabricatorRepository $repository) { - $viewer = $this->getRequest()->getUser(); - - $view = id(new PhabricatorActionListView()) - ->setObjectURI($this->getRequest()->getRequestURI()) - ->setUser($viewer); - - $edit = id(new PhabricatorActionView()) - ->setIcon('edit') - ->setName(pht('Edit Branches')) - ->setHref( - $this->getRepositoryControllerURI($repository, 'edit/branches/')); - $view->addAction($edit); - - return $view; - } - - private function buildBranchesProperties( - PhabricatorRepository $repository, - PhabricatorActionListView $actions) { - - $viewer = $this->getRequest()->getUser(); - - $view = id(new PHUIPropertyListView()) - ->setUser($viewer) - ->setActionList($actions) - ->addSectionHeader(pht('Branches')); - - $default_branch = nonempty( - $repository->getHumanReadableDetail('default-branch'), - phutil_tag('em', array(), $repository->getDefaultBranch())); - $view->addProperty(pht('Default Branch'), $default_branch); - - $track_only = nonempty( - $repository->getHumanReadableDetail('branch-filter'), - phutil_tag('em', array(), pht('Track All Branches'))); - $view->addProperty(pht('Track Only'), $track_only); - - $autoclose_only = nonempty( - $repository->getHumanReadableDetail('close-commits-filter'), - phutil_tag('em', array(), pht('Autoclose On All Branches'))); - $view->addProperty(pht('Autoclose Only'), $autoclose_only); - - return $view; - } - - private function buildSubversionActions(PhabricatorRepository $repository) { - $viewer = $this->getRequest()->getUser(); - - $view = id(new PhabricatorActionListView()) - ->setObjectURI($this->getRequest()->getRequestURI()) - ->setUser($viewer); - - $edit = id(new PhabricatorActionView()) - ->setIcon('edit') - ->setName(pht('Edit Subversion Info')) - ->setHref( - $this->getRepositoryControllerURI($repository, 'edit/subversion/')); - $view->addAction($edit); - - return $view; - } - - private function buildSubversionProperties( - PhabricatorRepository $repository, - PhabricatorActionListView $actions) { - - $viewer = $this->getRequest()->getUser(); - - $view = id(new PHUIPropertyListView()) - ->setUser($viewer) - ->setActionList($actions) - ->addSectionHeader(pht('Subversion')); - - $svn_uuid = nonempty( - $repository->getUUID(), - phutil_tag('em', array(), pht('Not Configured'))); - $view->addProperty(pht('Subversion UUID'), $svn_uuid); - - $svn_subpath = nonempty( - $repository->getHumanReadableDetail('svn-subpath'), - phutil_tag('em', array(), pht('Import Entire Repository'))); - $view->addProperty(pht('Import Only'), $svn_subpath); - - return $view; - } - - private function buildActionsActions(PhabricatorRepository $repository) { - $viewer = $this->getRequest()->getUser(); - - $view = id(new PhabricatorActionListView()) - ->setObjectURI($this->getRequest()->getRequestURI()) - ->setUser($viewer); - - $edit = id(new PhabricatorActionView()) - ->setIcon('edit') - ->setName(pht('Edit Actions')) - ->setHref( - $this->getRepositoryControllerURI($repository, 'edit/actions/')); - $view->addAction($edit); - - return $view; - } - - private function buildActionsProperties( - PhabricatorRepository $repository, - PhabricatorActionListView $actions) { - - $viewer = $this->getRequest()->getUser(); - - $view = id(new PHUIPropertyListView()) - ->setUser($viewer) - ->setActionList($actions) - ->addSectionHeader(pht('Actions')); - - $notify = $repository->getDetail('herald-disabled') - ? pht('Off') - : pht('On'); - $notify = phutil_tag('em', array(), $notify); - $view->addProperty(pht('Publish/Notify'), $notify); - - $autoclose = $repository->getDetail('disable-autoclose') - ? pht('Off') - : pht('On'); - $autoclose = phutil_tag('em', array(), $autoclose); - $view->addProperty(pht('Autoclose'), $autoclose); - - return $view; - } - - private function buildRemoteActions(PhabricatorRepository $repository) { - $viewer = $this->getRequest()->getUser(); - - $view = id(new PhabricatorActionListView()) - ->setObjectURI($this->getRequest()->getRequestURI()) - ->setUser($viewer); - - $edit = id(new PhabricatorActionView()) - ->setIcon('edit') - ->setName(pht('Edit Remote')) - ->setHref( - $this->getRepositoryControllerURI($repository, 'edit/remote/')); - $view->addAction($edit); - - return $view; - } - - private function buildRemoteProperties( - PhabricatorRepository $repository, - PhabricatorActionListView $actions) { - - $viewer = $this->getRequest()->getUser(); - - $view = id(new PHUIPropertyListView()) - ->setUser($viewer) - ->setActionList($actions) - ->addSectionHeader(pht('Remote')); - - $view->addProperty( - pht('Remote URI'), - $repository->getDetail('remote-uri')); - - return $view; + return $crumbs; } } diff --git a/src/applications/diffusion/controller/DiffusionRepositoryEditEncodingController.php b/src/applications/diffusion/controller/DiffusionRepositoryEditEncodingController.php index c03b02967f..24ad783e09 100644 --- a/src/applications/diffusion/controller/DiffusionRepositoryEditEncodingController.php +++ b/src/applications/diffusion/controller/DiffusionRepositoryEditEncodingController.php @@ -1,7 +1,7 @@ getRequest(); @@ -56,7 +56,7 @@ final class DiffusionRepositoryEditEncodingController } } - $crumbs = $this->buildCrumbs(); + $crumbs = $this->buildApplicationCrumbs(); $crumbs->addCrumb( id(new PhabricatorCrumbView()) ->setName(pht('Edit Encoding'))); diff --git a/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php b/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php new file mode 100644 index 0000000000..aa6e0ef838 --- /dev/null +++ b/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php @@ -0,0 +1,448 @@ +getRequest(); + $viewer = $request->getUser(); + $drequest = $this->diffusionRequest; + $repository = $drequest->getRepository(); + + PhabricatorPolicyFilter::requireCapability( + $viewer, + $repository, + PhabricatorPolicyCapability::CAN_EDIT); + + $is_svn = false; + $is_git = false; + $is_hg = false; + switch ($repository->getVersionControlSystem()) { + case PhabricatorRepositoryType::REPOSITORY_TYPE_GIT: + $is_git = true; + break; + case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN: + $is_svn = true; + break; + case PhabricatorRepositoryType::REPOSITORY_TYPE_MERCURIAL: + $is_hg = true; + break; + } + + $has_branches = ($is_git || $is_hg); + + $crumbs = $this->buildApplicationCrumbs(); + + $title = pht('Edit %s', $repository->getName()); + + $header = id(new PHUIHeaderView()) + ->setHeader($title); + if (!$repository->isTracked()) { + $header->addTag( + id(new PhabricatorTagView()) + ->setType(PhabricatorTagView::TYPE_STATE) + ->setName(pht('Inactive')) + ->setBackgroundColor(PhabricatorTagView::COLOR_BLACK)); + } + + $basic_actions = $this->buildBasicActions($repository); + $basic_properties = + $this->buildBasicProperties($repository, $basic_actions); + + $policy_actions = $this->buildPolicyActions($repository); + $policy_properties = + $this->buildPolicyProperties($repository, $policy_actions); + + $remote_properties = $this->buildRemoteProperties( + $repository, + $this->buildRemoteActions($repository)); + + $encoding_actions = $this->buildEncodingActions($repository); + $encoding_properties = + $this->buildEncodingProperties($repository, $encoding_actions); + + $branches_properties = null; + if ($has_branches) { + $branches_properties = $this->buildBranchesProperties( + $repository, + $this->buildBranchesActions($repository)); + } + + $subversion_properties = null; + if ($is_svn) { + $subversion_properties = $this->buildSubversionProperties( + $repository, + $this->buildSubversionActions($repository)); + } + + $actions_properties = $this->buildActionsProperties( + $repository, + $this->buildActionsActions($repository)); + + $xactions = id(new PhabricatorRepositoryTransactionQuery()) + ->setViewer($viewer) + ->withObjectPHIDs(array($repository->getPHID())) + ->execute(); + + $engine = id(new PhabricatorMarkupEngine()) + ->setViewer($viewer); + foreach ($xactions as $xaction) { + if ($xaction->getComment()) { + $engine->addObject( + $xaction->getComment(), + PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT); + } + } + $engine->process(); + + $xaction_view = id(new PhabricatorApplicationTransactionView()) + ->setUser($viewer) + ->setObjectPHID($repository->getPHID()) + ->setTransactions($xactions) + ->setMarkupEngine($engine); + + $obj_box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->addPropertyList($basic_properties) + ->addPropertyList($policy_properties) + ->addPropertyList($remote_properties) + ->addPropertyList($encoding_properties); + + if ($branches_properties) { + $obj_box->addPropertyList($branches_properties); + } + + if ($subversion_properties) { + $obj_box->addPropertyList($subversion_properties); + } + + $obj_box->addPropertyList($actions_properties); + + return $this->buildApplicationPage( + array( + $crumbs, + $obj_box, + $xaction_view, + ), + array( + 'title' => $title, + 'device' => true, + )); + } + + private function buildBasicActions(PhabricatorRepository $repository) { + $viewer = $this->getRequest()->getUser(); + + $view = id(new PhabricatorActionListView()) + ->setObjectURI($this->getRequest()->getRequestURI()) + ->setUser($viewer); + + $edit = id(new PhabricatorActionView()) + ->setIcon('edit') + ->setName(pht('Edit Basic Information')) + ->setHref($this->getRepositoryControllerURI($repository, 'edit/basic/')); + $view->addAction($edit); + + $activate = id(new PhabricatorActionView()) + ->setHref( + $this->getRepositoryControllerURI($repository, 'edit/activate/')) + ->setWorkflow(true); + + if ($repository->isTracked()) { + $activate + ->setIcon('disable') + ->setName(pht('Deactivate Repository')); + } else { + $activate + ->setIcon('enable') + ->setName(pht('Activate Repository')); + } + + $view->addAction($activate); + + return $view; + } + + private function buildBasicProperties( + PhabricatorRepository $repository, + PhabricatorActionListView $actions) { + + $viewer = $this->getRequest()->getUser(); + + $view = id(new PHUIPropertyListView()) + ->setUser($viewer) + ->setActionList($actions); + + $view->addProperty(pht('Name'), $repository->getName()); + $view->addProperty(pht('ID'), $repository->getID()); + $view->addProperty(pht('PHID'), $repository->getPHID()); + + $type = PhabricatorRepositoryType::getNameForRepositoryType( + $repository->getVersionControlSystem()); + + $view->addProperty(pht('Type'), $type); + $view->addProperty(pht('Callsign'), $repository->getCallsign()); + + $description = $repository->getDetail('description'); + $view->addSectionHeader(pht('Description')); + if (!strlen($description)) { + $description = phutil_tag('em', array(), pht('No description provided.')); + } else { + $description = PhabricatorMarkupEngine::renderOneObject( + $repository, + 'description', + $viewer); + } + $view->addTextContent($description); + + return $view; + } + + private function buildEncodingActions(PhabricatorRepository $repository) { + $viewer = $this->getRequest()->getUser(); + + $view = id(new PhabricatorActionListView()) + ->setObjectURI($this->getRequest()->getRequestURI()) + ->setUser($viewer); + + $edit = id(new PhabricatorActionView()) + ->setIcon('edit') + ->setName(pht('Edit Text Encoding')) + ->setHref( + $this->getRepositoryControllerURI($repository, 'edit/encoding/')); + $view->addAction($edit); + + return $view; + } + + private function buildEncodingProperties( + PhabricatorRepository $repository, + PhabricatorActionListView $actions) { + + $viewer = $this->getRequest()->getUser(); + + $view = id(new PHUIPropertyListView()) + ->setUser($viewer) + ->setActionList($actions) + ->addSectionHeader(pht('Text Encoding')); + + $encoding = $repository->getDetail('encoding'); + if (!$encoding) { + $encoding = phutil_tag('em', array(), pht('Use Default (UTF-8)')); + } + + $view->addProperty(pht('Encoding'), $encoding); + + return $view; + } + + private function buildPolicyActions(PhabricatorRepository $repository) { + $viewer = $this->getRequest()->getUser(); + + $view = id(new PhabricatorActionListView()) + ->setObjectURI($this->getRequest()->getRequestURI()) + ->setUser($viewer); + + $edit = id(new PhabricatorActionView()) + ->setIcon('edit') + ->setName(pht('Edit Policies')) + ->setHref( + $this->getRepositoryControllerURI($repository, 'edit/policy/')); + $view->addAction($edit); + + return $view; + } + + private function buildPolicyProperties( + PhabricatorRepository $repository, + PhabricatorActionListView $actions) { + + $viewer = $this->getRequest()->getUser(); + + $view = id(new PHUIPropertyListView()) + ->setUser($viewer) + ->setActionList($actions) + ->addSectionHeader(pht('Policies')); + + $descriptions = PhabricatorPolicyQuery::renderPolicyDescriptions( + $viewer, + $repository); + + $view->addProperty( + pht('Visible To'), + $descriptions[PhabricatorPolicyCapability::CAN_VIEW]); + + $view->addProperty( + pht('Editable By'), + $descriptions[PhabricatorPolicyCapability::CAN_EDIT]); + + + return $view; + } + + private function buildBranchesActions(PhabricatorRepository $repository) { + $viewer = $this->getRequest()->getUser(); + + $view = id(new PhabricatorActionListView()) + ->setObjectURI($this->getRequest()->getRequestURI()) + ->setUser($viewer); + + $edit = id(new PhabricatorActionView()) + ->setIcon('edit') + ->setName(pht('Edit Branches')) + ->setHref( + $this->getRepositoryControllerURI($repository, 'edit/branches/')); + $view->addAction($edit); + + return $view; + } + + private function buildBranchesProperties( + PhabricatorRepository $repository, + PhabricatorActionListView $actions) { + + $viewer = $this->getRequest()->getUser(); + + $view = id(new PHUIPropertyListView()) + ->setUser($viewer) + ->setActionList($actions) + ->addSectionHeader(pht('Branches')); + + $default_branch = nonempty( + $repository->getHumanReadableDetail('default-branch'), + phutil_tag('em', array(), $repository->getDefaultBranch())); + $view->addProperty(pht('Default Branch'), $default_branch); + + $track_only = nonempty( + $repository->getHumanReadableDetail('branch-filter'), + phutil_tag('em', array(), pht('Track All Branches'))); + $view->addProperty(pht('Track Only'), $track_only); + + $autoclose_only = nonempty( + $repository->getHumanReadableDetail('close-commits-filter'), + phutil_tag('em', array(), pht('Autoclose On All Branches'))); + $view->addProperty(pht('Autoclose Only'), $autoclose_only); + + return $view; + } + + private function buildSubversionActions(PhabricatorRepository $repository) { + $viewer = $this->getRequest()->getUser(); + + $view = id(new PhabricatorActionListView()) + ->setObjectURI($this->getRequest()->getRequestURI()) + ->setUser($viewer); + + $edit = id(new PhabricatorActionView()) + ->setIcon('edit') + ->setName(pht('Edit Subversion Info')) + ->setHref( + $this->getRepositoryControllerURI($repository, 'edit/subversion/')); + $view->addAction($edit); + + return $view; + } + + private function buildSubversionProperties( + PhabricatorRepository $repository, + PhabricatorActionListView $actions) { + + $viewer = $this->getRequest()->getUser(); + + $view = id(new PHUIPropertyListView()) + ->setUser($viewer) + ->setActionList($actions) + ->addSectionHeader(pht('Subversion')); + + $svn_uuid = nonempty( + $repository->getUUID(), + phutil_tag('em', array(), pht('Not Configured'))); + $view->addProperty(pht('Subversion UUID'), $svn_uuid); + + $svn_subpath = nonempty( + $repository->getHumanReadableDetail('svn-subpath'), + phutil_tag('em', array(), pht('Import Entire Repository'))); + $view->addProperty(pht('Import Only'), $svn_subpath); + + return $view; + } + + private function buildActionsActions(PhabricatorRepository $repository) { + $viewer = $this->getRequest()->getUser(); + + $view = id(new PhabricatorActionListView()) + ->setObjectURI($this->getRequest()->getRequestURI()) + ->setUser($viewer); + + $edit = id(new PhabricatorActionView()) + ->setIcon('edit') + ->setName(pht('Edit Actions')) + ->setHref( + $this->getRepositoryControllerURI($repository, 'edit/actions/')); + $view->addAction($edit); + + return $view; + } + + private function buildActionsProperties( + PhabricatorRepository $repository, + PhabricatorActionListView $actions) { + + $viewer = $this->getRequest()->getUser(); + + $view = id(new PHUIPropertyListView()) + ->setUser($viewer) + ->setActionList($actions) + ->addSectionHeader(pht('Actions')); + + $notify = $repository->getDetail('herald-disabled') + ? pht('Off') + : pht('On'); + $notify = phutil_tag('em', array(), $notify); + $view->addProperty(pht('Publish/Notify'), $notify); + + $autoclose = $repository->getDetail('disable-autoclose') + ? pht('Off') + : pht('On'); + $autoclose = phutil_tag('em', array(), $autoclose); + $view->addProperty(pht('Autoclose'), $autoclose); + + return $view; + } + + private function buildRemoteActions(PhabricatorRepository $repository) { + $viewer = $this->getRequest()->getUser(); + + $view = id(new PhabricatorActionListView()) + ->setObjectURI($this->getRequest()->getRequestURI()) + ->setUser($viewer); + + $edit = id(new PhabricatorActionView()) + ->setIcon('edit') + ->setName(pht('Edit Remote')) + ->setHref( + $this->getRepositoryControllerURI($repository, 'edit/remote/')); + $view->addAction($edit); + + return $view; + } + + private function buildRemoteProperties( + PhabricatorRepository $repository, + PhabricatorActionListView $actions) { + + $viewer = $this->getRequest()->getUser(); + + $view = id(new PHUIPropertyListView()) + ->setUser($viewer) + ->setActionList($actions) + ->addSectionHeader(pht('Remote')); + + $view->addProperty( + pht('Remote URI'), + $repository->getDetail('remote-uri')); + + return $view; + } + +} diff --git a/src/applications/diffusion/controller/DiffusionRepositoryEditPolicyController.php b/src/applications/diffusion/controller/DiffusionRepositoryEditPolicyController.php index e0c93f86db..b68057adb3 100644 --- a/src/applications/diffusion/controller/DiffusionRepositoryEditPolicyController.php +++ b/src/applications/diffusion/controller/DiffusionRepositoryEditPolicyController.php @@ -1,7 +1,7 @@ getRequest(); @@ -57,7 +57,7 @@ final class DiffusionRepositoryEditPolicyController $content = array(); - $crumbs = $this->buildCrumbs(); + $crumbs = $this->buildApplicationCrumbs(); $crumbs->addCrumb( id(new PhabricatorCrumbView()) ->setName(pht('Edit Policies'))); diff --git a/src/applications/diffusion/controller/DiffusionRepositoryEditSubversionController.php b/src/applications/diffusion/controller/DiffusionRepositoryEditSubversionController.php index 7464eb37a9..425d28d38b 100644 --- a/src/applications/diffusion/controller/DiffusionRepositoryEditSubversionController.php +++ b/src/applications/diffusion/controller/DiffusionRepositoryEditSubversionController.php @@ -1,7 +1,7 @@ getRequest(); @@ -69,7 +69,7 @@ final class DiffusionRepositoryEditSubversionController $content = array(); - $crumbs = $this->buildCrumbs(); + $crumbs = $this->buildApplicationCrumbs(); $crumbs->addCrumb( id(new PhabricatorCrumbView()) ->setName(pht('Edit Subversion Info')));