1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-02-09 13:28:29 +01:00
phorge-phorge/src/applications/settings/panel/PhabricatorEditEngineSettingsPanel.php
epriestley 2f936094d8 Convert "Account" and "Date and Time" settings to EditEngine
Summary:
Ref T4103. This pretty much replaces these panels in-place with similar looking ones that go through EditEngine.

This has a few rough edges but they're pretty minor and/or hard to hit (for example, when editing another user's settings, the crumbs have a redundant link in them).

Test Plan:
  - Edited my own settings.
  - Edited a bot user's settings.
  - Tried to edit another user's settings (failed).

{F1674465}

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T4103

Differential Revision: https://secure.phabricator.com/D16017
2016-06-04 14:38:20 -07:00

74 lines
1.8 KiB
PHP

<?php
abstract class PhabricatorEditEngineSettingsPanel
extends PhabricatorSettingsPanel {
final public function processRequest(AphrontRequest $request) {
$viewer = $this->getViewer();
$user = $this->getUser();
if ($user->getPHID() === $viewer->getPHID()) {
$is_self = true;
} else {
$is_self = false;
}
if ($user->getPHID()) {
$profile_uri = '/people/manage/'.$user->getID().'/';
} else {
$profile_uri = null;
}
$engine = id(new PhabricatorSettingsEditEngine())
->setController($this->getController())
->setNavigation($this->getNavigation())
->setHideHeader(true)
->setIsSelfEdit($is_self)
->setProfileURI($profile_uri);
$preferences = $user->loadPreferences();
PhabricatorPolicyFilter::requireCapability(
$viewer,
$preferences,
PhabricatorPolicyCapability::CAN_EDIT);
$engine->setTargetObject($preferences);
return $engine->buildResponse();
}
final public function newEditEnginePage() {
$field_keys = $this->getPanelSettingsKeys();
if (!$field_keys) {
return null;
}
$key = $this->getPanelKey();
$label = $this->getPanelName();
$panel_uri = $this->getPanelURI().'saved/';
return id(new PhabricatorEditPage())
->setKey($key)
->setLabel($label)
->setViewURI($panel_uri)
->setFieldKeys($field_keys);
}
final public function getPanelSettingsKeys() {
$viewer = $this->getViewer();
$settings = PhabricatorSetting::getAllEnabledSettings($viewer);
$this_key = $this->getPanelKey();
$panel_settings = array();
foreach ($settings as $setting) {
if ($setting->getSettingPanelKey() == $this_key) {
$panel_settings[] = $setting;
}
}
return mpull($panel_settings, 'getSettingKey');
}
}