From 6f913b71242a6d9e8d0e52d585c7b63e5efaf74c Mon Sep 17 00:00:00 2001 From: epriestley Date: Wed, 21 Nov 2012 17:24:01 -0800 Subject: [PATCH] Add Pholio mock view basics Summary: Just laying more groundwork out of ready-made UI. {F22349} Test Plan: Looked at a mock. Reviewers: btrahan, chad Reviewed By: chad CC: aran Maniphest Tasks: T2097 Differential Revision: https://secure.phabricator.com/D3832 --- .../controller/PholioMockViewController.php | 118 +++++++++++++++++- .../markup/PhabricatorMarkupEngine.php | 2 +- 2 files changed, 114 insertions(+), 6 deletions(-) diff --git a/src/applications/pholio/controller/PholioMockViewController.php b/src/applications/pholio/controller/PholioMockViewController.php index 5372ccc706..62bb5bad2b 100644 --- a/src/applications/pholio/controller/PholioMockViewController.php +++ b/src/applications/pholio/controller/PholioMockViewController.php @@ -40,28 +40,136 @@ final class PholioMockViewController extends PholioController { return new Aphront404Response(); } + $phids = array(); + $phids[] = $mock->getAuthorPHID(); + $this->loadHandles($phids); + + + $engine = id(new PhabricatorMarkupEngine()) + ->setViewer($user); + $engine->addObject($mock, PholioMock::MARKUP_FIELD_DESCRIPTION); + $engine->process(); + $title = 'M'.$mock->getID().' '.$mock->getName(); $header = id(new PhabricatorHeaderView()) ->setHeader($title); - $actions = id(new PhabricatorActionListView()) - ->setUser($user) - ->setObject($mock); + $actions = $this->buildActionView($mock); + $properties = $this->buildPropertyView($mock, $engine); - $properties = new PhabricatorPropertyListView(); + $carousel = + '

'. + 'Carousel Goes Here

'; + $comments = + '

'. + 'Comments/Transactions Go Here

'; + + $add_comment = $this->buildAddCommentView($mock); $content = array( $header, $actions, - $properties + $properties, + $carousel, + $comments, + $add_comment, ); return $this->buildApplicationPage( $content, array( 'title' => $title, + 'device' => true, )); } + private function buildActionView(PholioMock $mock) { + $user = $this->getRequest()->getUser(); + + $actions = id(new PhabricatorActionListView()) + ->setUser($user) + ->setObject($mock); + + $can_edit = PhabricatorPolicyFilter::hasCapability( + $user, + $mock, + PhabricatorPolicyCapability::CAN_EDIT); + + $actions->addAction( + id(new PhabricatorActionView()) + ->setIcon('edit') + ->setName(pht('Edit Mock')) + ->setHref($this->getApplicationURI('/edit/'.$mock->getID())) + ->setDisabled(!$can_edit) + ->setWorkflow(!$can_edit)); + + return $actions; + } + + private function buildPropertyView( + PholioMock $mock, + PhabricatorMarkupEngine $engine) { + + $user = $this->getRequest()->getUser(); + + $properties = new PhabricatorPropertyListView(); + + $properties->addProperty( + pht('Author'), + $this->getHandle($mock->getAuthorPHID())->renderLink()); + + $properties->addProperty( + pht('Created'), + phabricator_datetime($mock->getDateCreated(), $user)); + + $descriptions = PhabricatorPolicyQuery::renderPolicyDescriptions( + $user, + $mock); + + $properties->addProperty( + pht('Visible To'), + $descriptions[PhabricatorPolicyCapability::CAN_VIEW]); + + $properties->addTextContent( + $engine->getOutput($mock, PholioMock::MARKUP_FIELD_DESCRIPTION)); + + return $properties; + } + + private function buildAddCommentView(PholioMock $mock) { + $user = $this->getRequest()->getUser(); + + $is_serious = PhabricatorEnv::getEnvConfig('phabricator.serious-business'); + + $title = $is_serious + ? pht('Add Comment') + : pht('History Beckons'); + + $header = id(new PhabricatorHeaderView()) + ->setHeader($title); + + $action = $is_serious + ? pht('Add Comment') + : pht('Answer The Call'); + + $form = id(new AphrontFormView()) + ->setUser($user) + ->setAction($this->getApplicationURI('/addcomment/'.$mock->getID().'/')) + ->setWorkflow(true) + ->setFlexible(true) + ->appendChild( + id(new PhabricatorRemarkupControl()) + ->setName('comment') + ->setLabel(pht('Comment'))) + ->appendChild( + id(new AphrontFormSubmitControl()) + ->setValue($action)); + + return array( + $header, + $form, + ); + } + } diff --git a/src/infrastructure/markup/PhabricatorMarkupEngine.php b/src/infrastructure/markup/PhabricatorMarkupEngine.php index ea133a3a1a..0936609c5b 100644 --- a/src/infrastructure/markup/PhabricatorMarkupEngine.php +++ b/src/infrastructure/markup/PhabricatorMarkupEngine.php @@ -362,7 +362,7 @@ final class PhabricatorMarkupEngine { /** * @task engine */ - private static function newMarkupEngine(array $options) { + public static function newMarkupEngine(array $options) { $options += self::getMarkupEngineDefaultConfiguration();