Changeset View
Changeset View
Standalone View
Standalone View
src/applications/settings/editor/PhabricatorSettingsEditEngine.php
| <?php | <?php | ||||
| final class PhabricatorSettingsEditEngine | final class PhabricatorSettingsEditEngine | ||||
| extends PhabricatorEditEngine { | extends PhabricatorEditEngine { | ||||
| const ENGINECONST = 'settings.settings'; | const ENGINECONST = 'settings.settings'; | ||||
| private $isSelfEdit; | |||||
| private $profileURI; | |||||
| public function setIsSelfEdit($is_self_edit) { | |||||
| $this->isSelfEdit = $is_self_edit; | |||||
| return $this; | |||||
| } | |||||
| public function getIsSelfEdit() { | |||||
| return $this->isSelfEdit; | |||||
| } | |||||
| public function setProfileURI($profile_uri) { | |||||
| $this->profileURI = $profile_uri; | |||||
| return $this; | |||||
| } | |||||
| public function getProfileURI() { | |||||
| return $this->profileURI; | |||||
| } | |||||
| public function isEngineConfigurable() { | public function isEngineConfigurable() { | ||||
| return false; | return false; | ||||
| } | } | ||||
| public function getEngineName() { | public function getEngineName() { | ||||
| return pht('Settings'); | return pht('Settings'); | ||||
| } | } | ||||
| Show All 33 Lines | protected function getObjectEditShortText($object) { | ||||
| return pht('Edit Settings'); | return pht('Edit Settings'); | ||||
| } | } | ||||
| protected function getObjectCreateShortText() { | protected function getObjectCreateShortText() { | ||||
| return pht('Create Settings'); | return pht('Create Settings'); | ||||
| } | } | ||||
| protected function getObjectName() { | protected function getObjectName() { | ||||
| $page = $this->getSelectedPage(); | |||||
| if ($page) { | |||||
| return $page->getLabel(); | |||||
| } | |||||
| return pht('Settings'); | return pht('Settings'); | ||||
| } | } | ||||
| protected function getEditorURI() { | protected function getEditorURI() { | ||||
| return '/settings/edit/'; | return '/settings/edit/'; | ||||
| } | } | ||||
| protected function getObjectCreateCancelURI($object) { | protected function getObjectCreateCancelURI($object) { | ||||
| return '/settings/'; | return '/settings/'; | ||||
| } | } | ||||
| protected function getObjectViewURI($object) { | protected function getObjectViewURI($object) { | ||||
| // TODO: This isn't correct... | // TODO: This isn't correct... | ||||
| return '/settings/user/'.$this->getViewer()->getUsername().'/'; | return '/settings/user/'.$this->getViewer()->getUsername().'/'; | ||||
| } | } | ||||
| protected function getCreateNewObjectPolicy() { | protected function getCreateNewObjectPolicy() { | ||||
| return PhabricatorPolicies::POLICY_ADMIN; | return PhabricatorPolicies::POLICY_ADMIN; | ||||
| } | } | ||||
| public function getEffectiveObjectEditCancelURI($object) { | |||||
| if ($this->getIsSelfEdit()) { | |||||
| return null; | |||||
| } | |||||
| if ($this->getProfileURI()) { | |||||
| return $this->getProfileURI(); | |||||
| } | |||||
| return parent::getEffectiveObjectEditCancelURI($object); | |||||
| } | |||||
| protected function newPages($object) { | |||||
| $viewer = $this->getViewer(); | |||||
| $user = $object->getUser(); | |||||
| $panels = PhabricatorSettingsPanel::getAllPanels(); | |||||
| foreach ($panels as $key => $panel) { | |||||
| if (!($panel instanceof PhabricatorEditEngineSettingsPanel)) { | |||||
| unset($panels[$key]); | |||||
| continue; | |||||
| } | |||||
| $panel->setViewer($viewer); | |||||
| if ($user) { | |||||
| $panel->setUser($user); | |||||
| } | |||||
| } | |||||
| $pages = array(); | |||||
| $uris = array(); | |||||
| foreach ($panels as $key => $panel) { | |||||
| $uris[$key] = $panel->getPanelURI(); | |||||
| $page = $panel->newEditEnginePage(); | |||||
| if (!$page) { | |||||
| continue; | |||||
| } | |||||
| $pages[] = $page; | |||||
| } | |||||
| $more_pages = array( | |||||
| id(new PhabricatorEditPage()) | |||||
| ->setKey('extra') | |||||
| ->setLabel(pht('Extra Settings')) | |||||
| ->setIsDefault(true), | |||||
| ); | |||||
| foreach ($more_pages as $page) { | |||||
| $pages[] = $page; | |||||
| } | |||||
| return $pages; | |||||
| } | |||||
| protected function buildCustomEditFields($object) { | protected function buildCustomEditFields($object) { | ||||
| $viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
| $settings = PhabricatorSetting::getAllEnabledSettings($viewer); | $settings = PhabricatorSetting::getAllEnabledSettings($viewer); | ||||
| foreach ($settings as $key => $setting) { | foreach ($settings as $key => $setting) { | ||||
| $setting = clone $setting; | $setting = clone $setting; | ||||
| $setting->setViewer($viewer); | $setting->setViewer($viewer); | ||||
| $settings[$key] = $setting; | $settings[$key] = $setting; | ||||
| } | } | ||||
| $settings = msortv($settings, 'getSettingOrderVector'); | |||||
| $fields = array(); | $fields = array(); | ||||
| foreach ($settings as $setting) { | foreach ($settings as $setting) { | ||||
| foreach ($setting->newCustomEditFields($object) as $field) { | foreach ($setting->newCustomEditFields($object) as $field) { | ||||
| $fields[] = $field; | $fields[] = $field; | ||||
| } | } | ||||
| } | } | ||||
| return $fields; | return $fields; | ||||
| } | } | ||||
| } | } | ||||