[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/calendar/controller/ -> PhabricatorCalendarEventViewController.php (source)

   1  <?php
   2  
   3  final class PhabricatorCalendarEventViewController
   4    extends PhabricatorCalendarController {
   5  
   6    private $id;
   7  
   8    public function shouldAllowPublic() {
   9      return true;
  10    }
  11  
  12    public function willProcessRequest(array $data) {
  13      $this->id = $data['id'];
  14    }
  15  
  16    public function processRequest() {
  17      $request = $this->getRequest();
  18      $viewer = $request->getUser();
  19  
  20      $event = id(new PhabricatorCalendarEventQuery())
  21        ->setViewer($viewer)
  22        ->withIDs(array($this->id))
  23        ->executeOne();
  24      if (!$event) {
  25        return new Aphront404Response();
  26      }
  27  
  28      $title = pht('Event %d', $event->getID());
  29      $crumbs = $this->buildApplicationCrumbs();
  30      $crumbs->addTextCrumb($title);
  31  
  32      $header = $this->buildHeaderView($event);
  33      $actions = $this->buildActionView($event);
  34      $properties = $this->buildPropertyView($event);
  35  
  36      $properties->setActionList($actions);
  37      $box = id(new PHUIObjectBoxView())
  38        ->setHeader($header)
  39        ->addPropertyList($properties);
  40  
  41      return $this->buildApplicationPage(
  42        array(
  43          $crumbs,
  44          $box,
  45        ),
  46        array(
  47          'title' => $title,
  48        ));
  49    }
  50  
  51    private function buildHeaderView(PhabricatorCalendarEvent $event) {
  52      $viewer = $this->getRequest()->getUser();
  53  
  54      return id(new PHUIHeaderView())
  55        ->setUser($viewer)
  56        ->setHeader($event->getTerseSummary($viewer))
  57        ->setPolicyObject($event);
  58    }
  59  
  60    private function buildActionView(PhabricatorCalendarEvent $event) {
  61      $viewer = $this->getRequest()->getUser();
  62      $id = $event->getID();
  63  
  64      $actions = id(new PhabricatorActionListView())
  65        ->setObjectURI($this->getApplicationURI('event/'.$id.'/'))
  66        ->setUser($viewer);
  67  
  68      $can_edit = PhabricatorPolicyFilter::hasCapability(
  69        $viewer,
  70        $event,
  71        PhabricatorPolicyCapability::CAN_EDIT);
  72  
  73      $actions->addAction(
  74        id(new PhabricatorActionView())
  75          ->setName(pht('Edit Event'))
  76          ->setIcon('fa-pencil')
  77          ->setHref($this->getApplicationURI("event/edit/{$id}/"))
  78          ->setDisabled(!$can_edit)
  79          ->setWorkflow(!$can_edit));
  80  
  81      $actions->addAction(
  82        id(new PhabricatorActionView())
  83          ->setName(pht('Cancel Event'))
  84          ->setIcon('fa-times')
  85          ->setHref($this->getApplicationURI("event/delete/{$id}/"))
  86          ->setDisabled(!$can_edit)
  87          ->setWorkflow(true));
  88  
  89      return $actions;
  90    }
  91  
  92    private function buildPropertyView(PhabricatorCalendarEvent $event) {
  93      $viewer = $this->getRequest()->getUser();
  94  
  95      $properties = id(new PHUIPropertyListView())
  96        ->setUser($viewer)
  97        ->setObject($event);
  98  
  99      $properties->addProperty(
 100        pht('Starts'),
 101        phabricator_datetime($event->getDateFrom(), $viewer));
 102  
 103      $properties->addProperty(
 104        pht('Ends'),
 105        phabricator_datetime($event->getDateTo(), $viewer));
 106  
 107      $properties->addSectionHeader(
 108        pht('Description'),
 109        PHUIPropertyListView::ICON_SUMMARY);
 110      $properties->addTextContent($event->getDescription());
 111  
 112      return $properties;
 113    }
 114  
 115  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1