- Patch #659480 by mgifford, David_Rothstein, aaronbauman, Jody Lynn, casey, cwgordon7: added per-user setting for the overlay.

merge-requests/26/head
Dries Buytaert 2010-07-28 02:50:00 +00:00
parent 26392c86d0
commit 58a8be92bc
1 changed files with 37 additions and 1 deletions

View File

@ -57,6 +57,39 @@ function overlay_theme() {
); );
} }
/**
* Implements hook_form_FORM_ID_alter().
*/
function overlay_form_user_profile_form_alter(&$form, &$form_state) {
if ($form['#user_category'] == 'account') {
$account = $form['#user'];
if (user_access('access overlay', $account)) {
$form['overlay_control'] = array(
'#type' => 'fieldset',
'#title' => t('Administrative overlay'),
'#weight' => 4,
'#collapsible' => TRUE,
);
$form['overlay_control']['overlay'] = array(
'#type' => 'checkbox',
'#title' => t('Use the overlay for administrative pages.'),
'#description' => t('Show administrative pages on top of the page you started from.'),
'#default_value' => isset($account->data['overlay']) ? $account->data['overlay'] : 1,
);
}
}
}
/**
* Implements hook_user_presave().
*/
function overlay_user_presave(&$edit, $account, $category) {
if (isset($edit['overlay'])) {
$edit['data']['overlay'] = $edit['overlay'];
}
}
/** /**
* Implements hook_init(). * Implements hook_init().
* *
@ -66,11 +99,14 @@ function overlay_theme() {
* @see overlay_set_mode() * @see overlay_set_mode()
*/ */
function overlay_init() { function overlay_init() {
global $user;
$mode = overlay_get_mode(); $mode = overlay_get_mode();
// Only act if the user has access to the overlay and a mode was not already // Only act if the user has access to the overlay and a mode was not already
// set. Other modules can also enable the overlay directly for other uses. // set. Other modules can also enable the overlay directly for other uses.
if (empty($mode) && user_access('access overlay')) { $use_overlay = !isset($user->data['overlay']) || $user->data['overlay'];
if (empty($mode) && user_access('access overlay') && $use_overlay) {
$current_path = current_path(); $current_path = current_path();
// After overlay is enabled on the modules page, redirect to // After overlay is enabled on the modules page, redirect to
// <front>#overlay=admin/modules to actually enable the overlay. // <front>#overlay=admin/modules to actually enable the overlay.