public static function initializeNewSource(PhabricatorUser $actor) { $app = id(new PhabricatorApplicationQuery())->setViewer($actor)->withClasses(array('PhabricatorNuanceApplication'))->executeOne(); $view_policy = $app->getPolicy(NuanceSourceDefaultViewCapability::CAPABILITY); $edit_policy = $app->getPolicy(NuanceSourceDefaultEditCapability::CAPABILITY); $definitions = NuanceSourceDefinition::getAllDefinitions(); $lucky_definition = head($definitions); return id(new NuanceSource())->setViewPolicy($view_policy)->setEditPolicy($edit_policy)->setType($lucky_definition->getSourceTypeConstant()); }
public function getDefinition() { if ($this->definition === null) { $definitions = NuanceSourceDefinition::getAllDefinitions(); if (isset($definitions[$this->getType()])) { $definition = clone $definitions[$this->getType()]; $definition->setSourceObject($this); $this->definition = $definition; } } return $this->definition; }
public function handleRequest(AphrontRequest $request) { $can_edit = $this->requireApplicationCapability(NuanceSourceManageCapability::CAPABILITY); $viewer = $this->getViewer(); $sources_uri = $this->getApplicationURI('source/'); $source_id = $request->getURIData('id'); $is_new = !$source_id; if ($is_new) { $source = NuanceSource::initializeNewSource($viewer); $type = $request->getURIData('type'); $map = NuanceSourceDefinition::getAllDefinitions(); if (empty($map[$type])) { return new Aphront404Response(); } $source->setType($type); $cancel_uri = $sources_uri; } else { $source = id(new NuanceSourceQuery())->setViewer($viewer)->withIDs(array($source_id))->requireCapabilities(array(PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT))->executeOne(); if (!$source) { return new Aphront404Response(); } $cancel_uri = $source->getURI(); } $definition = NuanceSourceDefinition::getDefinitionForSource($source); $definition->setActor($viewer); $response = $definition->buildEditLayout($request); if ($response instanceof AphrontResponse) { return $response; } $layout = $response; $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb(pht('Sources'), $sources_uri); if ($is_new) { $crumbs->addTextCrumb(pht('New')); } else { $crumbs->addTextCrumb($source->getName(), $cancel_uri); $crumbs->addTextCrumb(pht('Edit')); } return $this->buildApplicationPage(array($crumbs, $layout), array('title' => $definition->getEditTitle())); }
protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) { $where = parent::buildWhereClauseParts($conn); if ($this->types !== null) { $where[] = qsprintf($conn, 'source.type IN (%Ls)', $this->types); } if ($this->ids !== null) { $where[] = qsprintf($conn, 'source.id IN (%Ld)', $this->ids); } if ($this->phids !== null) { $where[] = qsprintf($conn, 'source.phid IN (%Ls)', $this->phids); } if ($this->isDisabled !== null) { $where[] = qsprintf($conn, 'source.isDisabled = %d', (int) $this->isDisabled); } if ($this->hasCursors !== null) { $cursor_types = array(); $definitions = NuanceSourceDefinition::getAllDefinitions(); foreach ($definitions as $key => $definition) { if ($definition->hasImportCursors()) { $cursor_types[] = $key; } } if ($this->hasCursors) { if (!$cursor_types) { throw new PhabricatorEmptyQueryException(); } else { $where[] = qsprintf($conn, 'source.type IN (%Ls)', $cursor_types); } } else { if (!$cursor_types) { // Apply no constraint. } else { $where[] = qsprintf($conn, 'source.type NOT IN (%Ls)', $cursor_types); } } } return $where; }
private function buildSourceTypeResponse($cancel_uri) { $viewer = $this->getViewer(); $request = $this->getRequest(); $map = NuanceSourceDefinition::getAllDefinitions(); $errors = array(); $e_source = null; if ($request->isFormPost()) { $errors[] = pht('You must choose a source type.'); $e_source = pht('Required'); } $source_types = id(new AphrontFormRadioButtonControl())->setName('sourceType')->setLabel(pht('Source Type')); foreach ($map as $type => $definition) { $source_types->addButton($type, $definition->getName(), $definition->getSourceDescription()); } $form = id(new AphrontFormView())->setUser($viewer)->appendChild($source_types)->appendChild(id(new AphrontFormSubmitControl())->setValue(pht('Continue'))->addCancelButton($cancel_uri)); $box = id(new PHUIObjectBoxView())->setFormErrors($errors)->setHeaderText(pht('Choose Source Type'))->appendChild($form); $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb(pht('Sources'), $cancel_uri); $crumbs->addTextCrumb(pht('New')); return $this->newPage()->setTitle(pht('Choose Source Type'))->setCrumbs($crumbs)->appendChild($box); }
public function handleRequest(AphrontRequest $request) { $can_edit = $this->requireApplicationCapability(NuanceSourceManageCapability::CAPABILITY); $viewer = $this->getViewer(); $map = NuanceSourceDefinition::getAllDefinitions(); $cancel_uri = $this->getApplicationURI('source/'); if ($request->isFormPost()) { $type = $request->getStr('type'); if (isset($map[$type])) { $uri = $this->getApplicationURI('source/new/' . $type . '/'); return id(new AphrontRedirectResponse())->setURI($uri); } } $source_types = id(new AphrontFormRadioButtonControl())->setName('type')->setLabel(pht('Source Type')); foreach ($map as $type => $definition) { $source_types->addButton($type, $definition->getName(), $definition->getSourceDescription()); } $form = id(new AphrontFormView())->setUser($viewer)->appendChild($source_types)->appendChild(id(new AphrontFormSubmitControl())->setValue(pht('Continue'))->addCancelButton($cancel_uri)); $box = id(new PHUIObjectBoxView())->setHeaderText(pht('Choose Source Type'))->appendChild($form); $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb(pht('Sources'), $cancel_uri); $crumbs->addTextCrumb(pht('New')); return $this->buildApplicationPage(array($crumbs, $box), array('title' => pht('Choose Source Type'))); }
public function testGetAllTypes() { NuanceSourceDefinition::getAllDefinitions(); $this->assertTrue(true); }