Differential D17235 Diff 41452 src/applications/search/menuitem/PhabricatorApplicationProfileMenuItem.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/search/menuitem/PhabricatorApplicationProfileMenuItem.php
<?php | <?php | ||||
final class PhabricatorApplicationProfileMenuItem | final class PhabricatorApplicationProfileMenuItem | ||||
extends PhabricatorProfileMenuItem { | extends PhabricatorProfileMenuItem { | ||||
const MENUITEMKEY = 'application'; | const MENUITEMKEY = 'application'; | ||||
const FIELD_APPLICATION = 'application'; | |||||
public function getMenuItemTypeIcon() { | public function getMenuItemTypeIcon() { | ||||
return 'fa-globe'; | return 'fa-globe'; | ||||
} | } | ||||
public function getMenuItemTypeName() { | public function getMenuItemTypeName() { | ||||
return pht('Application'); | return pht('Application'); | ||||
} | } | ||||
Show All 11 Lines | public function getDisplayName( | ||||
} | } | ||||
return $app->getName(); | return $app->getName(); | ||||
} | } | ||||
public function buildEditEngineFields( | public function buildEditEngineFields( | ||||
PhabricatorProfileMenuItemConfiguration $config) { | PhabricatorProfileMenuItemConfiguration $config) { | ||||
return array( | return array( | ||||
id(new PhabricatorDatasourceEditField()) | id(new PhabricatorDatasourceEditField()) | ||||
->setKey('application') | ->setKey(self::FIELD_APPLICATION) | ||||
->setLabel(pht('Application')) | ->setLabel(pht('Application')) | ||||
->setIsRequired(true) | ->setIsRequired(true) | ||||
->setDatasource(new PhabricatorApplicationDatasource()) | ->setDatasource(new PhabricatorApplicationDatasource()) | ||||
->setIsRequired(true) | |||||
chad: dupe | |||||
->setSingleValue($config->getMenuItemProperty('application')), | ->setSingleValue($config->getMenuItemProperty('application')), | ||||
); | ); | ||||
} | } | ||||
private function getApplication( | private function getApplication( | ||||
PhabricatorProfileMenuItemConfiguration $config) { | PhabricatorProfileMenuItemConfiguration $config) { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
$phid = $config->getMenuItemProperty('application'); | $phid = $config->getMenuItemProperty('application'); | ||||
$app = id(new PhabricatorApplicationQuery()) | $app = id(new PhabricatorApplicationQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->withPHIDs(array($phid)) | ->withPHIDs(array($phid)) | ||||
->executeOne(); | ->executeOne(); | ||||
return $app; | return $app; | ||||
} | } | ||||
Show All 17 Lines | $item = $this->newItem() | ||||
->setName($app->getName()) | ->setName($app->getName()) | ||||
->setIcon($app->getIcon()); | ->setIcon($app->getIcon()); | ||||
return array( | return array( | ||||
$item, | $item, | ||||
); | ); | ||||
} | } | ||||
public function validateTransactions( | |||||
PhabricatorProfileMenuItemConfiguration $config, | |||||
$field_key, | |||||
$value, | |||||
array $xactions) { | |||||
$viewer = $this->getViewer(); | |||||
$errors = array(); | |||||
if ($field_key == self::FIELD_APPLICATION) { | |||||
if ($this->isEmptyTransaction($value, $xactions)) { | |||||
$errors[] = $this->newRequiredError( | |||||
pht('You must choose an application.'), | |||||
$field_key); | |||||
} | |||||
foreach ($xactions as $xaction) { | |||||
$new = $xaction['new']; | |||||
if (!$new) { | |||||
continue; | |||||
} | |||||
if ($new === $value) { | |||||
continue; | |||||
} | |||||
$applications = id(new PhabricatorApplicationQuery()) | |||||
->setViewer($viewer) | |||||
->withPHIDs(array($new)) | |||||
->execute(); | |||||
if (!$applications) { | |||||
$errors[] = $this->newInvalidError( | |||||
pht( | |||||
'Application "%s" is not a valid application which you have '. | |||||
'permission to see.', | |||||
$new), | |||||
$xaction['xaction']); | |||||
} | |||||
} | |||||
} | |||||
return $errors; | |||||
} | |||||
} | } |
dupe