Path: blob/master/src/applications/calendar/controller/PhabricatorCalendarExportViewController.php
12256 views
<?php12final class PhabricatorCalendarExportViewController3extends PhabricatorCalendarController {45public function handleRequest(AphrontRequest $request) {6$viewer = $request->getViewer();78$export = id(new PhabricatorCalendarExportQuery())9->setViewer($viewer)10->withIDs(array($request->getURIData('id')))11->executeOne();12if (!$export) {13return new Aphront404Response();14}1516$crumbs = $this->buildApplicationCrumbs();17$crumbs->addTextCrumb(18pht('Exports'),19'/calendar/export/');20$crumbs->addTextCrumb(pht('Export %d', $export->getID()));21$crumbs->setBorder(true);2223$timeline = $this->buildTransactionTimeline(24$export,25new PhabricatorCalendarExportTransactionQuery());26$timeline->setShouldTerminate(true);2728$header = $this->buildHeaderView($export);29$curtain = $this->buildCurtain($export);30$details = $this->buildPropertySection($export);3132$view = id(new PHUITwoColumnView())33->setHeader($header)34->setMainColumn(35array(36$timeline,37))38->setCurtain($curtain)39->addPropertySection(pht('Details'), $details);4041$page_title = pht('Export %d %s', $export->getID(), $export->getName());4243return $this->newPage()44->setTitle($page_title)45->setCrumbs($crumbs)46->setPageObjectPHIDs(array($export->getPHID()))47->appendChild($view);48}4950private function buildHeaderView(51PhabricatorCalendarExport $export) {52$viewer = $this->getViewer();53$id = $export->getID();5455if ($export->getIsDisabled()) {56$icon = 'fa-ban';57$color = 'red';58$status = pht('Disabled');59} else {60$icon = 'fa-check';61$color = 'bluegrey';62$status = pht('Active');63}6465$header = id(new PHUIHeaderView())66->setUser($viewer)67->setHeader($export->getName())68->setStatus($icon, $color, $status)69->setPolicyObject($export);7071return $header;72}7374private function buildCurtain(PhabricatorCalendarExport $export) {75$viewer = $this->getRequest()->getUser();76$id = $export->getID();7778$curtain = $this->newCurtainView($export);7980$can_edit = PhabricatorPolicyFilter::hasCapability(81$viewer,82$export,83PhabricatorPolicyCapability::CAN_EDIT);8485$ics_uri = $export->getICSURI();8687$edit_uri = "export/edit/{$id}/";88$edit_uri = $this->getApplicationURI($edit_uri);8990$curtain->addAction(91id(new PhabricatorActionView())92->setName(pht('Edit Export'))93->setIcon('fa-pencil')94->setDisabled(!$can_edit)95->setWorkflow(!$can_edit)96->setHref($edit_uri));9798$curtain->addAction(99id(new PhabricatorActionView())100->setName(pht('Export as .ics'))101->setIcon('fa-download')102->setHref($ics_uri));103104$disable_uri = "export/disable/{$id}/";105$disable_uri = $this->getApplicationURI($disable_uri);106if ($export->getIsDisabled()) {107$disable_name = pht('Enable Export');108$disable_icon = 'fa-check';109} else {110$disable_name = pht('Disable Export');111$disable_icon = 'fa-ban';112}113114$curtain->addAction(115id(new PhabricatorActionView())116->setName($disable_name)117->setIcon($disable_icon)118->setDisabled(!$can_edit)119->setWorkflow(true)120->setHref($disable_uri));121122return $curtain;123}124125private function buildPropertySection(126PhabricatorCalendarExport $export) {127$viewer = $this->getViewer();128129$properties = id(new PHUIPropertyListView())130->setUser($viewer);131132$mode = $export->getPolicyMode();133134$policy_icon = PhabricatorCalendarExport::getPolicyModeIcon($mode);135$policy_name = PhabricatorCalendarExport::getPolicyModeName($mode);136$policy_desc = PhabricatorCalendarExport::getPolicyModeDescription($mode);137$policy_color = PhabricatorCalendarExport::getPolicyModeColor($mode);138139$policy_view = id(new PHUIStatusListView())140->addItem(141id(new PHUIStatusItemView())142->setIcon($policy_icon, $policy_color)143->setTarget($policy_name)144->setNote($policy_desc));145146$properties->addProperty(pht('Mode'), $policy_view);147148$query_key = $export->getQueryKey();149$query_link = phutil_tag(150'a',151array(152'href' => $this->getApplicationURI("/query/{$query_key}/"),153),154$query_key);155$properties->addProperty(pht('Query'), $query_link);156157$ics_uri = $export->getICSURI();158$ics_uri = PhabricatorEnv::getURI($ics_uri);159160if ($export->getIsDisabled()) {161$ics_href = phutil_tag('em', array(), $ics_uri);162} else {163$ics_href = phutil_tag(164'a',165array(166'href' => $ics_uri,167),168$ics_uri);169}170171$properties->addProperty(pht('ICS URI'), $ics_href);172173return $properties;174}175}176177178