2011-02-06 07:36:21 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/*
|
Add optional "Re:" prefix to all threaded mail and allow disabling mail about
your own actions
Summary:
- Mail.app on Lion has cumbersome threading rules, see T782. Add an option to
stick "Re: " in front of all threaded mail so it behaves. This is horrible, but
apparently the least-horrible option.
- While I was in there, I added an option for T228.
Test Plan:
- Sent a bunch of threaded and unthreaded mail with varous "Re:" settings,
seemed to get "Re:" in the right places.
- Disabled email about my stuff, created a task with just me, got voided mail,
added a CC, got mail to just the CC.
Reviewers: btrahan, jungejason
Reviewed By: btrahan
CC: aran, mkjones
Maniphest Tasks: T228, T782
Differential Revision: https://secure.phabricator.com/D1448
2012-01-18 05:32:28 +01:00
|
|
|
* Copyright 2012 Facebook, Inc.
|
2011-02-06 07:36:21 +01:00
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
*/
|
|
|
|
|
2012-03-10 00:46:25 +01:00
|
|
|
final class PhabricatorUserSettingsController
|
|
|
|
extends PhabricatorPeopleController {
|
2011-02-06 07:36:21 +01:00
|
|
|
|
|
|
|
private $page;
|
2011-07-18 17:02:00 +02:00
|
|
|
private $pages;
|
2011-02-06 07:36:21 +01:00
|
|
|
|
|
|
|
public function willProcessRequest(array $data) {
|
|
|
|
$this->page = idx($data, 'page');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function processRequest() {
|
|
|
|
|
|
|
|
$request = $this->getRequest();
|
|
|
|
|
2011-02-22 07:51:34 +01:00
|
|
|
$oauth_providers = PhabricatorOAuthProvider::getAllProviders();
|
Add optional "Re:" prefix to all threaded mail and allow disabling mail about
your own actions
Summary:
- Mail.app on Lion has cumbersome threading rules, see T782. Add an option to
stick "Re: " in front of all threaded mail so it behaves. This is horrible, but
apparently the least-horrible option.
- While I was in there, I added an option for T228.
Test Plan:
- Sent a bunch of threaded and unthreaded mail with varous "Re:" settings,
seemed to get "Re:" in the right places.
- Disabled email about my stuff, created a task with just me, got voided mail,
added a CC, got mail to just the CC.
Reviewers: btrahan, jungejason
Reviewed By: btrahan
CC: aran, mkjones
Maniphest Tasks: T228, T782
Differential Revision: https://secure.phabricator.com/D1448
2012-01-18 05:32:28 +01:00
|
|
|
$sidenav = $this->renderSideNav($oauth_providers);
|
|
|
|
$this->page = $sidenav->selectFilter($this->page, 'account');
|
2011-02-06 07:36:21 +01:00
|
|
|
|
|
|
|
switch ($this->page) {
|
2011-02-06 08:56:06 +01:00
|
|
|
case 'account':
|
2011-07-18 17:02:00 +02:00
|
|
|
$delegate = new PhabricatorUserAccountSettingsPanelController($request);
|
2011-02-06 08:56:06 +01:00
|
|
|
break;
|
2011-07-25 00:03:59 +02:00
|
|
|
case 'profile':
|
|
|
|
$delegate = new PhabricatorUserProfileSettingsPanelController($request);
|
|
|
|
break;
|
2011-02-20 01:46:14 +01:00
|
|
|
case 'email':
|
2011-07-18 17:02:00 +02:00
|
|
|
$delegate = new PhabricatorUserEmailSettingsPanelController($request);
|
|
|
|
break;
|
Add optional "Re:" prefix to all threaded mail and allow disabling mail about
your own actions
Summary:
- Mail.app on Lion has cumbersome threading rules, see T782. Add an option to
stick "Re: " in front of all threaded mail so it behaves. This is horrible, but
apparently the least-horrible option.
- While I was in there, I added an option for T228.
Test Plan:
- Sent a bunch of threaded and unthreaded mail with varous "Re:" settings,
seemed to get "Re:" in the right places.
- Disabled email about my stuff, created a task with just me, got voided mail,
added a CC, got mail to just the CC.
Reviewers: btrahan, jungejason
Reviewed By: btrahan
CC: aran, mkjones
Maniphest Tasks: T228, T782
Differential Revision: https://secure.phabricator.com/D1448
2012-01-18 05:32:28 +01:00
|
|
|
case 'emailpref':
|
|
|
|
$delegate = new PhabricatorUserEmailPreferenceSettingsPanelController(
|
|
|
|
$request);
|
|
|
|
break;
|
Add change password settings panel
Summary:
In password-based auth environments, there is now a user settings
panel to allow them to change their password.
Test Plan:
Click settings, choose password from the left:
* enter current password, new password (twice), log out, and log in with
new password
* enter current password, non-matching passwords, and get error
* enter invalid old password, and get error
* use firebug to change csrf token and verify that it does not save with
and invalid token
Changed config to disable password auth, loaded settings panel and saw
that password was no longer visible. Tried loading the panel anyway and
got redirected.
Reviewers: epriestley
Reviewed By: epriestley
CC: aran, epriestley
Differential Revision: 890
2011-09-04 10:53:58 +02:00
|
|
|
case 'password':
|
|
|
|
$delegate = new PhabricatorUserPasswordSettingsPanelController(
|
|
|
|
$request);
|
|
|
|
break;
|
2011-07-18 17:02:00 +02:00
|
|
|
case 'conduit':
|
|
|
|
$delegate = new PhabricatorUserConduitSettingsPanelController($request);
|
2011-02-20 01:46:14 +01:00
|
|
|
break;
|
2011-07-22 19:17:57 +02:00
|
|
|
case 'sshkeys':
|
|
|
|
$delegate = new PhabricatorUserSSHKeysSettingsPanelController($request);
|
|
|
|
break;
|
2011-07-24 20:02:08 +02:00
|
|
|
case 'preferences':
|
|
|
|
$delegate = new PhabricatorUserPreferenceSettingsPanelController(
|
|
|
|
$request);
|
|
|
|
break;
|
2012-03-15 04:47:17 +01:00
|
|
|
case 'search':
|
|
|
|
$delegate = new PhabricatorUserSearchSettingsPanelController($request);
|
|
|
|
break;
|
2011-02-06 07:36:21 +01:00
|
|
|
default:
|
2011-07-18 17:02:00 +02:00
|
|
|
$delegate = new PhabricatorUserOAuthSettingsPanelController($request);
|
|
|
|
$delegate->setOAuthProvider($oauth_providers[$this->page]);
|
Add optional "Re:" prefix to all threaded mail and allow disabling mail about
your own actions
Summary:
- Mail.app on Lion has cumbersome threading rules, see T782. Add an option to
stick "Re: " in front of all threaded mail so it behaves. This is horrible, but
apparently the least-horrible option.
- While I was in there, I added an option for T228.
Test Plan:
- Sent a bunch of threaded and unthreaded mail with varous "Re:" settings,
seemed to get "Re:" in the right places.
- Disabled email about my stuff, created a task with just me, got voided mail,
added a CC, got mail to just the CC.
Reviewers: btrahan, jungejason
Reviewed By: btrahan
CC: aran, mkjones
Maniphest Tasks: T228, T782
Differential Revision: https://secure.phabricator.com/D1448
2012-01-18 05:32:28 +01:00
|
|
|
break;
|
2011-02-06 07:36:21 +01:00
|
|
|
}
|
|
|
|
|
2011-07-18 17:02:00 +02:00
|
|
|
$response = $this->delegateToController($delegate);
|
2011-02-06 07:36:21 +01:00
|
|
|
|
2011-07-18 17:02:00 +02:00
|
|
|
if ($response instanceof AphrontView) {
|
|
|
|
$sidenav->appendChild($response);
|
|
|
|
return $this->buildStandardPageResponse(
|
|
|
|
$sidenav,
|
|
|
|
array(
|
|
|
|
'title' => 'Account Settings',
|
|
|
|
));
|
|
|
|
} else {
|
|
|
|
return $response;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
Add optional "Re:" prefix to all threaded mail and allow disabling mail about
your own actions
Summary:
- Mail.app on Lion has cumbersome threading rules, see T782. Add an option to
stick "Re: " in front of all threaded mail so it behaves. This is horrible, but
apparently the least-horrible option.
- While I was in there, I added an option for T228.
Test Plan:
- Sent a bunch of threaded and unthreaded mail with varous "Re:" settings,
seemed to get "Re:" in the right places.
- Disabled email about my stuff, created a task with just me, got voided mail,
added a CC, got mail to just the CC.
Reviewers: btrahan, jungejason
Reviewed By: btrahan
CC: aran, mkjones
Maniphest Tasks: T228, T782
Differential Revision: https://secure.phabricator.com/D1448
2012-01-18 05:32:28 +01:00
|
|
|
private function renderSideNav($oauth_providers) {
|
|
|
|
$sidenav = new AphrontSideNavFilterView();
|
|
|
|
$sidenav
|
|
|
|
->setBaseURI(new PhutilURI('/settings/page/'))
|
|
|
|
->addLabel('Account Information')
|
|
|
|
->addFilter('account', 'Account')
|
|
|
|
->addFilter('profile', 'Profile')
|
|
|
|
->addSpacer()
|
|
|
|
->addLabel('Email')
|
2012-05-07 19:29:33 +02:00
|
|
|
->addFilter('email', 'Email Addresses')
|
Add optional "Re:" prefix to all threaded mail and allow disabling mail about
your own actions
Summary:
- Mail.app on Lion has cumbersome threading rules, see T782. Add an option to
stick "Re: " in front of all threaded mail so it behaves. This is horrible, but
apparently the least-horrible option.
- While I was in there, I added an option for T228.
Test Plan:
- Sent a bunch of threaded and unthreaded mail with varous "Re:" settings,
seemed to get "Re:" in the right places.
- Disabled email about my stuff, created a task with just me, got voided mail,
added a CC, got mail to just the CC.
Reviewers: btrahan, jungejason
Reviewed By: btrahan
CC: aran, mkjones
Maniphest Tasks: T228, T782
Differential Revision: https://secure.phabricator.com/D1448
2012-01-18 05:32:28 +01:00
|
|
|
->addFilter('emailpref', 'Email Preferences')
|
|
|
|
->addSpacer()
|
|
|
|
->addLabel('Authentication');
|
|
|
|
|
|
|
|
if (PhabricatorEnv::getEnvConfig('account.editable') &&
|
|
|
|
PhabricatorEnv::getEnvConfig('auth.password-auth-enabled')) {
|
|
|
|
$sidenav->addFilter('password', 'Password');
|
2011-02-06 07:36:21 +01:00
|
|
|
}
|
Add optional "Re:" prefix to all threaded mail and allow disabling mail about
your own actions
Summary:
- Mail.app on Lion has cumbersome threading rules, see T782. Add an option to
stick "Re: " in front of all threaded mail so it behaves. This is horrible, but
apparently the least-horrible option.
- While I was in there, I added an option for T228.
Test Plan:
- Sent a bunch of threaded and unthreaded mail with varous "Re:" settings,
seemed to get "Re:" in the right places.
- Disabled email about my stuff, created a task with just me, got voided mail,
added a CC, got mail to just the CC.
Reviewers: btrahan, jungejason
Reviewed By: btrahan
CC: aran, mkjones
Maniphest Tasks: T228, T782
Differential Revision: https://secure.phabricator.com/D1448
2012-01-18 05:32:28 +01:00
|
|
|
|
|
|
|
$sidenav->addFilter('conduit', 'Conduit Certificate');
|
|
|
|
|
|
|
|
if (PhabricatorUserSSHKeysSettingsPanelController::isEnabled()) {
|
|
|
|
$sidenav->addFilter('sshkeys', 'SSH Public Keys');
|
|
|
|
}
|
|
|
|
|
|
|
|
$sidenav->addSpacer();
|
|
|
|
$sidenav->addLabel('Application Settings');
|
|
|
|
$sidenav->addFilter('preferences', 'Display Preferences');
|
2012-03-15 04:47:17 +01:00
|
|
|
$sidenav->addFilter('search', 'Search Preferences');
|
Add optional "Re:" prefix to all threaded mail and allow disabling mail about
your own actions
Summary:
- Mail.app on Lion has cumbersome threading rules, see T782. Add an option to
stick "Re: " in front of all threaded mail so it behaves. This is horrible, but
apparently the least-horrible option.
- While I was in there, I added an option for T228.
Test Plan:
- Sent a bunch of threaded and unthreaded mail with varous "Re:" settings,
seemed to get "Re:" in the right places.
- Disabled email about my stuff, created a task with just me, got voided mail,
added a CC, got mail to just the CC.
Reviewers: btrahan, jungejason
Reviewed By: btrahan
CC: aran, mkjones
Maniphest Tasks: T228, T782
Differential Revision: https://secure.phabricator.com/D1448
2012-01-18 05:32:28 +01:00
|
|
|
|
|
|
|
$items = array();
|
|
|
|
foreach ($oauth_providers as $provider) {
|
|
|
|
if (!$provider->isProviderEnabled()) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$key = $provider->getProviderKey();
|
|
|
|
$name = $provider->getProviderName();
|
|
|
|
$items[$key] = $name.' Account';
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($items) {
|
|
|
|
$sidenav->addSpacer();
|
|
|
|
$sidenav->addLabel('Linked Accounts');
|
|
|
|
foreach ($items as $key => $name) {
|
|
|
|
$sidenav->addFilter($key, $name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-07-18 17:02:00 +02:00
|
|
|
return $sidenav;
|
2011-02-22 07:51:34 +01:00
|
|
|
}
|
2011-06-18 22:07:02 +02:00
|
|
|
}
|