protected function buildSideNavView(PhabricatorCalendarEvent $status = null) { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); $nav->addLabel(pht('Calendar')); $nav->addFilter('/', pht('My Events')); $nav->addFilter('all/', pht('View All')); $nav->addFilter('event/create/', pht('Create Event')); if ($status && $status->getID()) { $nav->addFilter('event/edit/' . $status->getID() . '/', pht('Edit Event')); } $nav->addFilter('event/', pht('Upcoming Events')); return $nav; }
private function buildActionView(PhabricatorCalendarEvent $event) { $viewer = $this->getRequest()->getUser(); $id = $event->getID(); $actions = id(new PhabricatorActionListView())->setObjectURI($this->getApplicationURI('event/' . $id . '/'))->setUser($viewer); $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $event, PhabricatorPolicyCapability::CAN_EDIT); $actions->addAction(id(new PhabricatorActionView())->setName(pht('Edit Event'))->setIcon('fa-pencil')->setHref($this->getApplicationURI("event/edit/{$id}/"))->setDisabled(!$can_edit)->setWorkflow(!$can_edit)); $actions->addAction(id(new PhabricatorActionView())->setName(pht('Cancel Event'))->setIcon('fa-times')->setHref($this->getApplicationURI("event/delete/{$id}/"))->setDisabled(!$can_edit)->setWorkflow(true)); return $actions; }
private function buildActionView(PhabricatorCalendarEvent $event) { $viewer = $this->getRequest()->getUser(); $id = $event->getID(); $is_cancelled = $event->getIsCancelled(); $is_attending = $event->getIsUserAttending($viewer->getPHID()); $actions = id(new PhabricatorActionListView())->setUser($viewer)->setObject($event); $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $event, PhabricatorPolicyCapability::CAN_EDIT); $edit_label = false; $edit_uri = false; if ($event->getIsGhostEvent()) { $index = $event->getSequenceIndex(); $edit_label = pht('Edit This Instance'); $edit_uri = "event/edit/{$id}/{$index}/"; } else { if ($event->getIsRecurrenceException()) { $edit_label = pht('Edit This Instance'); $edit_uri = "event/edit/{$id}/"; } else { $edit_label = pht('Edit'); $edit_uri = "event/edit/{$id}/"; } } if ($edit_label && $edit_uri) { $actions->addAction(id(new PhabricatorActionView())->setName($edit_label)->setIcon('fa-pencil')->setHref($this->getApplicationURI($edit_uri))->setDisabled(!$can_edit)->setWorkflow(!$can_edit)); } if ($is_attending) { $actions->addAction(id(new PhabricatorActionView())->setName(pht('Decline Event'))->setIcon('fa-user-times')->setHref($this->getApplicationURI("event/join/{$id}/"))->setWorkflow(true)); } else { $actions->addAction(id(new PhabricatorActionView())->setName(pht('Join Event'))->setIcon('fa-user-plus')->setHref($this->getApplicationURI("event/join/{$id}/"))->setWorkflow(true)); } $cancel_uri = $this->getApplicationURI("event/cancel/{$id}/"); if ($event->getIsGhostEvent()) { $index = $event->getSequenceIndex(); $can_reinstate = $event->getIsParentCancelled(); $cancel_label = pht('Cancel This Instance'); $reinstate_label = pht('Reinstate This Instance'); $cancel_disabled = !$can_edit || $can_reinstate; $cancel_uri = $this->getApplicationURI("event/cancel/{$id}/{$index}/"); } else { if ($event->getIsRecurrenceException()) { $can_reinstate = $event->getIsParentCancelled(); $cancel_label = pht('Cancel This Instance'); $reinstate_label = pht('Reinstate This Instance'); $cancel_disabled = !$can_edit || $can_reinstate; } else { if ($event->getIsRecurrenceParent()) { $cancel_label = pht('Cancel Recurrence'); $reinstate_label = pht('Reinstate Recurrence'); $cancel_disabled = !$can_edit; } else { $cancel_label = pht('Cancel Event'); $reinstate_label = pht('Reinstate Event'); $cancel_disabled = !$can_edit; } } } if ($is_cancelled) { $actions->addAction(id(new PhabricatorActionView())->setName($reinstate_label)->setIcon('fa-plus')->setHref($cancel_uri)->setDisabled($cancel_disabled)->setWorkflow(true)); } else { $actions->addAction(id(new PhabricatorActionView())->setName($cancel_label)->setIcon('fa-times')->setHref($cancel_uri)->setDisabled($cancel_disabled)->setWorkflow(true)); } return $actions; }
private function buildRSVPActions(PhabricatorCalendarEvent $event) { $viewer = $this->getViewer(); $id = $event->getID(); $invite_status = $event->getUserInviteStatus($viewer->getPHID()); $status_invited = PhabricatorCalendarEventInvitee::STATUS_INVITED; $is_invite_pending = $invite_status == $status_invited; if (!$is_invite_pending) { return array(); } $decline_button = id(new PHUIButtonView())->setTag('a')->setIcon('fa-times grey')->setHref($this->getApplicationURI("/event/decline/{$id}/"))->setWorkflow(true)->setText(pht('Decline')); $accept_button = id(new PHUIButtonView())->setTag('a')->setIcon('fa-check green')->setHref($this->getApplicationURI("/event/accept/{$id}/"))->setWorkflow(true)->setText(pht('Accept')); return array($decline_button, $accept_button); }
private function newUpdateTransactions(PhabricatorCalendarEvent $event, PhutilCalendarEventNode $node) { $xactions = array(); $uid = $node->getUID(); if (!$event->getID()) { $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorTransactions::TYPE_CREATE)->setNewValue(true); } $name = $node->getName(); if (!strlen($name)) { if (strlen($uid)) { $name = pht('Unnamed Event "%s"', $uid); } else { $name = pht('Unnamed Imported Event'); } } $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorCalendarEventNameTransaction::TRANSACTIONTYPE)->setNewValue($name); $description = $node->getDescription(); $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorCalendarEventDescriptionTransaction::TRANSACTIONTYPE)->setNewValue((string) $description); $is_recurring = (bool) $node->getRecurrenceRule(); $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorCalendarEventRecurringTransaction::TRANSACTIONTYPE)->setNewValue($is_recurring); return $xactions; }