public function validateTransactions($object, array $xactions) { $errors = array(); $valid = PhabricatorCalendarExport::getPolicyModes(); $valid = array_fuse($valid); foreach ($xactions as $xaction) { $value = $xaction->getNewValue(); if (isset($valid[$value])) { continue; } $errors[] = $this->newInvalidError(pht('Mode "%s" is not a valid policy mode. Valid modes are: %s.', $value, implode(', ', $valid)), $xaction); } return $errors; }
private function buildPropertySection(PhabricatorCalendarExport $export) { $viewer = $this->getViewer(); $properties = id(new PHUIPropertyListView())->setUser($viewer); $mode = $export->getPolicyMode(); $policy_icon = PhabricatorCalendarExport::getPolicyModeIcon($mode); $policy_name = PhabricatorCalendarExport::getPolicyModeName($mode); $policy_desc = PhabricatorCalendarExport::getPolicyModeDescription($mode); $policy_color = PhabricatorCalendarExport::getPolicyModeColor($mode); $policy_view = id(new PHUIStatusListView())->addItem(id(new PHUIStatusItemView())->setIcon($policy_icon, $policy_color)->setTarget($policy_name)->setNote($policy_desc)); $properties->addProperty(pht('Mode'), $policy_view); $query_key = $export->getQueryKey(); $query_link = phutil_tag('a', array('href' => $this->getApplicationURI("/query/{$query_key}/")), $query_key); $properties->addProperty(pht('Query'), $query_link); $ics_uri = $export->getICSURI(); $ics_uri = PhabricatorEnv::getURI($ics_uri); if ($export->getIsDisabled()) { $ics_href = phutil_tag('em', array(), $ics_uri); } else { $ics_href = phutil_tag('a', array('href' => $ics_uri), $ics_uri); } $properties->addProperty(pht('ICS URI'), $ics_href); return $properties; }
protected function buildCustomEditFields($object) { $viewer = $this->getViewer(); $export_modes = PhabricatorCalendarExport::getAvailablePolicyModes(); $export_modes = array_fuse($export_modes); $current_mode = $object->getPolicyMode(); if (empty($export_modes[$current_mode])) { array_shift($export_modes, $current_mode); } $mode_options = array(); foreach ($export_modes as $export_mode) { $mode_name = PhabricatorCalendarExport::getPolicyModeName($export_mode); $mode_summary = PhabricatorCalendarExport::getPolicyModeSummary($export_mode); $mode_options[$export_mode] = pht('%s: %s', $mode_name, $mode_summary); } $fields = array(id(new PhabricatorTextEditField())->setKey('name')->setLabel(pht('Name'))->setDescription(pht('Name of the export.'))->setIsRequired(true)->setTransactionType(PhabricatorCalendarExportNameTransaction::TRANSACTIONTYPE)->setConduitDescription(pht('Rename the export.'))->setConduitTypeDescription(pht('New export name.'))->setValue($object->getName()), id(new PhabricatorBoolEditField())->setKey('disabled')->setOptions(pht('Active'), pht('Disabled'))->setLabel(pht('Disabled'))->setDescription(pht('Disable the export.'))->setTransactionType(PhabricatorCalendarExportDisableTransaction::TRANSACTIONTYPE)->setIsConduitOnly(true)->setConduitDescription(pht('Disable or restore the export.'))->setConduitTypeDescription(pht('True to cancel the export.'))->setValue($object->getIsDisabled()), id(new PhabricatorTextEditField())->setKey('queryKey')->setLabel(pht('Query Key'))->setDescription(pht('Query to execute.'))->setIsRequired(true)->setTransactionType(PhabricatorCalendarExportQueryKeyTransaction::TRANSACTIONTYPE)->setConduitDescription(pht('Change the export query key.'))->setConduitTypeDescription(pht('New export query key.'))->setValue($object->getQueryKey()), id(new PhabricatorSelectEditField())->setKey('mode')->setLabel(pht('Mode'))->setTransactionType(PhabricatorCalendarExportModeTransaction::TRANSACTIONTYPE)->setOptions($mode_options)->setDescription(pht('Change the policy mode for the export.'))->setConduitDescription(pht('Adjust export mode.'))->setConduitTypeDescription(pht('New export mode.'))->setValue($current_mode)); return $fields; }
protected function renderResultList(array $exports, PhabricatorSavedQuery $query, array $handles) { assert_instances_of($exports, 'PhabricatorCalendarExport'); $viewer = $this->requireViewer(); $list = new PHUIObjectItemListView(); foreach ($exports as $export) { $item = id(new PHUIObjectItemView())->setViewer($viewer)->setObjectName(pht('Export %d', $export->getID()))->setHeader($export->getName())->setHref($export->getURI()); if ($export->getIsDisabled()) { $item->setDisabled(true); } $mode = $export->getPolicyMode(); $policy_icon = PhabricatorCalendarExport::getPolicyModeIcon($mode); $policy_name = PhabricatorCalendarExport::getPolicyModeName($mode); $policy_color = PhabricatorCalendarExport::getPolicyModeColor($mode); $item->addIcon("{$policy_icon} {$policy_color}", $policy_name); $list->addItem($item); } $result = new PhabricatorApplicationSearchResultView(); $result->setObjectList($list); $result->setNoDataString(pht('No exports found.')); return $result; }