mirror of
https://we.phorge.it/source/phorge.git
synced 2025-01-03 19:31:02 +01:00
Merge "Profile" and "Account" settings panels
Summary: There are only a total of three options now, merge them into a single panel. Test Plan: Set all the settings. {F49406} Reviewers: btrahan, chad Reviewed By: chad CC: aran Differential Revision: https://secure.phabricator.com/D6400
This commit is contained in:
parent
63b4183d9a
commit
c20b7540c9
3 changed files with 48 additions and 121 deletions
|
@ -1496,7 +1496,6 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorSettingsPanelExternalAccounts' => 'applications/settings/panel/PhabricatorSettingsPanelExternalAccounts.php',
|
'PhabricatorSettingsPanelExternalAccounts' => 'applications/settings/panel/PhabricatorSettingsPanelExternalAccounts.php',
|
||||||
'PhabricatorSettingsPanelHomePreferences' => 'applications/settings/panel/PhabricatorSettingsPanelHomePreferences.php',
|
'PhabricatorSettingsPanelHomePreferences' => 'applications/settings/panel/PhabricatorSettingsPanelHomePreferences.php',
|
||||||
'PhabricatorSettingsPanelPassword' => 'applications/settings/panel/PhabricatorSettingsPanelPassword.php',
|
'PhabricatorSettingsPanelPassword' => 'applications/settings/panel/PhabricatorSettingsPanelPassword.php',
|
||||||
'PhabricatorSettingsPanelProfile' => 'applications/settings/panel/PhabricatorSettingsPanelProfile.php',
|
|
||||||
'PhabricatorSettingsPanelSSHKeys' => 'applications/settings/panel/PhabricatorSettingsPanelSSHKeys.php',
|
'PhabricatorSettingsPanelSSHKeys' => 'applications/settings/panel/PhabricatorSettingsPanelSSHKeys.php',
|
||||||
'PhabricatorSettingsPanelSearchPreferences' => 'applications/settings/panel/PhabricatorSettingsPanelSearchPreferences.php',
|
'PhabricatorSettingsPanelSearchPreferences' => 'applications/settings/panel/PhabricatorSettingsPanelSearchPreferences.php',
|
||||||
'PhabricatorSetupCheck' => 'applications/config/check/PhabricatorSetupCheck.php',
|
'PhabricatorSetupCheck' => 'applications/config/check/PhabricatorSetupCheck.php',
|
||||||
|
@ -3448,7 +3447,6 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorSettingsPanelExternalAccounts' => 'PhabricatorSettingsPanel',
|
'PhabricatorSettingsPanelExternalAccounts' => 'PhabricatorSettingsPanel',
|
||||||
'PhabricatorSettingsPanelHomePreferences' => 'PhabricatorSettingsPanel',
|
'PhabricatorSettingsPanelHomePreferences' => 'PhabricatorSettingsPanel',
|
||||||
'PhabricatorSettingsPanelPassword' => 'PhabricatorSettingsPanel',
|
'PhabricatorSettingsPanelPassword' => 'PhabricatorSettingsPanel',
|
||||||
'PhabricatorSettingsPanelProfile' => 'PhabricatorSettingsPanel',
|
|
||||||
'PhabricatorSettingsPanelSSHKeys' => 'PhabricatorSettingsPanel',
|
'PhabricatorSettingsPanelSSHKeys' => 'PhabricatorSettingsPanel',
|
||||||
'PhabricatorSettingsPanelSearchPreferences' => 'PhabricatorSettingsPanel',
|
'PhabricatorSettingsPanelSearchPreferences' => 'PhabricatorSettingsPanel',
|
||||||
'PhabricatorSetupCheckAPC' => 'PhabricatorSetupCheck',
|
'PhabricatorSetupCheckAPC' => 'PhabricatorSetupCheck',
|
||||||
|
|
|
@ -26,6 +26,17 @@ final class PhabricatorSettingsPanelAccount
|
||||||
$errors[] = pht('The selected timezone is not a valid timezone.');
|
$errors[] = pht('The selected timezone is not a valid timezone.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$sex = $request->getStr('sex');
|
||||||
|
$sexes = array(PhutilPerson::SEX_MALE, PhutilPerson::SEX_FEMALE);
|
||||||
|
if (in_array($sex, $sexes)) {
|
||||||
|
$user->setSex($sex);
|
||||||
|
} else {
|
||||||
|
$user->setSex(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Checked in runtime.
|
||||||
|
$user->setTranslation($request->getStr('translation'));
|
||||||
|
|
||||||
if (!$errors) {
|
if (!$errors) {
|
||||||
$user->save();
|
$user->save();
|
||||||
return id(new AphrontRedirectResponse())
|
return id(new AphrontRedirectResponse())
|
||||||
|
@ -45,30 +56,60 @@ final class PhabricatorSettingsPanelAccount
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$notice = new AphrontErrorView();
|
$notice = new AphrontErrorView();
|
||||||
$notice->setTitle(pht('Form Errors'));
|
|
||||||
$notice->setErrors($errors);
|
$notice->setErrors($errors);
|
||||||
$notice = $notice->render();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$timezone_ids = DateTimeZone::listIdentifiers();
|
$timezone_ids = DateTimeZone::listIdentifiers();
|
||||||
$timezone_id_map = array_fuse($timezone_ids);
|
$timezone_id_map = array_fuse($timezone_ids);
|
||||||
|
|
||||||
|
$sexes = array(
|
||||||
|
PhutilPerson::SEX_UNKNOWN => pht('Unspecified'),
|
||||||
|
PhutilPerson::SEX_MALE => pht('Male'),
|
||||||
|
PhutilPerson::SEX_FEMALE => pht('Female'),
|
||||||
|
);
|
||||||
|
|
||||||
|
$translations = array();
|
||||||
|
$symbols = id(new PhutilSymbolLoader())
|
||||||
|
->setType('class')
|
||||||
|
->setAncestorClass('PhabricatorTranslation')
|
||||||
|
->setConcreteOnly(true)
|
||||||
|
->selectAndLoadSymbols();
|
||||||
|
foreach ($symbols as $symbol) {
|
||||||
|
$class = $symbol['name'];
|
||||||
|
$translations[$class] = newv($class, array())->getName();
|
||||||
|
}
|
||||||
|
asort($translations);
|
||||||
|
$default = PhabricatorEnv::newObjectFromConfig('translation.provider');
|
||||||
|
$translations = array(
|
||||||
|
'' => pht('Server Default (%s)', $default->getName()),
|
||||||
|
) + $translations;
|
||||||
|
|
||||||
|
|
||||||
$form = new AphrontFormView();
|
$form = new AphrontFormView();
|
||||||
$form
|
$form
|
||||||
->setUser($user)
|
->setUser($user)
|
||||||
->appendChild(
|
->setFlexible(true)
|
||||||
id(new AphrontFormStaticControl())
|
|
||||||
->setLabel(pht('Username'))
|
|
||||||
->setValue($user->getUsername()))
|
|
||||||
->appendChild(
|
->appendChild(
|
||||||
id(new AphrontFormSelectControl())
|
id(new AphrontFormSelectControl())
|
||||||
->setLabel(pht('Timezone'))
|
->setLabel(pht('Timezone'))
|
||||||
->setName('timezone')
|
->setName('timezone')
|
||||||
->setOptions($timezone_id_map)
|
->setOptions($timezone_id_map)
|
||||||
->setValue($user->getTimezoneIdentifier()))
|
->setValue($user->getTimezoneIdentifier()))
|
||||||
|
->appendChild(
|
||||||
|
id(new AphrontFormSelectControl())
|
||||||
|
->setOptions($sexes)
|
||||||
|
->setLabel(pht('Sex'))
|
||||||
|
->setName('sex')
|
||||||
|
->setValue($user->getSex()))
|
||||||
|
->appendChild(
|
||||||
|
id(new AphrontFormSelectControl())
|
||||||
|
->setOptions($translations)
|
||||||
|
->setLabel(pht('Translation'))
|
||||||
|
->setName('translation')
|
||||||
|
->setValue($user->getTranslation()))
|
||||||
->appendChild(
|
->appendChild(
|
||||||
id(new AphrontFormSubmitControl())
|
id(new AphrontFormSubmitControl())
|
||||||
->setValue(pht('Save')));
|
->setValue(pht('Save Account Settings')));
|
||||||
|
|
||||||
$header = new PhabricatorHeaderView();
|
$header = new PhabricatorHeaderView();
|
||||||
$header->setHeader(pht('Account Settings'));
|
$header->setHeader(pht('Account Settings'));
|
||||||
|
|
|
@ -1,112 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
final class PhabricatorSettingsPanelProfile
|
|
||||||
extends PhabricatorSettingsPanel {
|
|
||||||
|
|
||||||
public function getPanelKey() {
|
|
||||||
return 'profile';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getPanelName() {
|
|
||||||
return pht('Profile');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getPanelGroup() {
|
|
||||||
return pht('Account Information');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function processRequest(AphrontRequest $request) {
|
|
||||||
$user = $request->getUser();
|
|
||||||
|
|
||||||
$errors = array();
|
|
||||||
if ($request->isFormPost()) {
|
|
||||||
$sex = $request->getStr('sex');
|
|
||||||
$sexes = array(PhutilPerson::SEX_MALE, PhutilPerson::SEX_FEMALE);
|
|
||||||
if (in_array($sex, $sexes)) {
|
|
||||||
$user->setSex($sex);
|
|
||||||
} else {
|
|
||||||
$user->setSex(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Checked in runtime.
|
|
||||||
$user->setTranslation($request->getStr('translation'));
|
|
||||||
|
|
||||||
if (!$errors) {
|
|
||||||
$user->save();
|
|
||||||
$response = id(new AphrontRedirectResponse())
|
|
||||||
->setURI($this->getPanelURI('?saved=true'));
|
|
||||||
return $response;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$error_view = null;
|
|
||||||
if ($errors) {
|
|
||||||
$error_view = new AphrontErrorView();
|
|
||||||
$error_view->setTitle(pht('Form Errors'));
|
|
||||||
$error_view->setErrors($errors);
|
|
||||||
} else {
|
|
||||||
if ($request->getStr('saved')) {
|
|
||||||
$error_view = new AphrontErrorView();
|
|
||||||
$error_view->setSeverity(AphrontErrorView::SEVERITY_NOTICE);
|
|
||||||
$error_view->setTitle(pht('Changes Saved'));
|
|
||||||
$error_view->appendChild(
|
|
||||||
phutil_tag('p', array(), pht('Your changes have been saved.')));
|
|
||||||
$error_view = $error_view->render();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$profile_uri = PhabricatorEnv::getURI('/p/'.$user->getUsername().'/');
|
|
||||||
|
|
||||||
$sexes = array(
|
|
||||||
PhutilPerson::SEX_UNKNOWN => pht('Unknown'),
|
|
||||||
PhutilPerson::SEX_MALE => pht('Male'),
|
|
||||||
PhutilPerson::SEX_FEMALE => pht('Female'),
|
|
||||||
);
|
|
||||||
|
|
||||||
$translations = array();
|
|
||||||
$symbols = id(new PhutilSymbolLoader())
|
|
||||||
->setType('class')
|
|
||||||
->setAncestorClass('PhabricatorTranslation')
|
|
||||||
->setConcreteOnly(true)
|
|
||||||
->selectAndLoadSymbols();
|
|
||||||
foreach ($symbols as $symbol) {
|
|
||||||
$class = $symbol['name'];
|
|
||||||
$translations[$class] = newv($class, array())->getName();
|
|
||||||
}
|
|
||||||
asort($translations);
|
|
||||||
$default = PhabricatorEnv::newObjectFromConfig('translation.provider');
|
|
||||||
$translations = array(
|
|
||||||
'' => pht('Server Default (%s)', $default->getName()),
|
|
||||||
) + $translations;
|
|
||||||
|
|
||||||
$form = new AphrontFormView();
|
|
||||||
$form
|
|
||||||
->setUser($request->getUser())
|
|
||||||
->appendChild(
|
|
||||||
id(new AphrontFormSelectControl())
|
|
||||||
->setOptions($sexes)
|
|
||||||
->setLabel(pht('Sex'))
|
|
||||||
->setName('sex')
|
|
||||||
->setValue($user->getSex()))
|
|
||||||
->appendChild(
|
|
||||||
id(new AphrontFormSelectControl())
|
|
||||||
->setOptions($translations)
|
|
||||||
->setLabel(pht('Translation'))
|
|
||||||
->setName('translation')
|
|
||||||
->setValue($user->getTranslation()));
|
|
||||||
|
|
||||||
$form->appendChild(
|
|
||||||
id(new AphrontFormSubmitControl())
|
|
||||||
->setValue(pht('Save')));
|
|
||||||
|
|
||||||
$header = new PhabricatorHeaderView();
|
|
||||||
$header->setHeader(pht('Edit Profile Details'));
|
|
||||||
|
|
||||||
return array(
|
|
||||||
$error_view,
|
|
||||||
$header,
|
|
||||||
$form,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in a new issue