mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-03-31 18:54:29 +00:00
Saving/restoring the user interface state, see #7654
git-svn-id: https://develop.svn.wordpress.org/trunk@8784 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -192,5 +192,6 @@ add_action('comment_form', 'wp_comment_form_unfiltered_html_nonce');
|
||||
add_action('template_redirect', 'wp_old_slug_redirect');
|
||||
add_action('edit_post', 'wp_check_for_changed_slugs');
|
||||
add_action('edit_form_advanced', 'wp_remember_old_slug');
|
||||
add_action('init', 'wp_user_settings', 9);
|
||||
|
||||
?>
|
||||
|
||||
@@ -643,6 +643,134 @@ function delete_option( $name ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves and restores user interface settings stored in a cookie.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Option
|
||||
* @since 2.7.0
|
||||
*
|
||||
* Checks if the current user-settings cookie is updated and stores it.
|
||||
* When no cookie exists (different browser used), adds the last saved cookie restoring the settings.
|
||||
*/
|
||||
function wp_user_settings() {
|
||||
|
||||
if ( ! is_admin() )
|
||||
return;
|
||||
|
||||
if ( ! $user = wp_get_current_user() )
|
||||
return;
|
||||
|
||||
$settings = get_user_option( 'user-settings', $user->ID );
|
||||
|
||||
if ( isset($_COOKIE['wp-settings-'.$user->ID]) ) {
|
||||
$cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['wp-settings-'.$user->ID] );
|
||||
|
||||
if ( ! empty($cookie) && strpos($cookie, '=') ) {
|
||||
if ( $cookie == $settings )
|
||||
return;
|
||||
|
||||
$last_time = (int) get_user_option( 'user-settings-time', $user->ID );
|
||||
$saved = isset($_COOKIE['wp-settings-time-'.$user->ID]) ? preg_replace( '/[^0-9]/', '', $_COOKIE['wp-settings-time-'.$user->ID] ) : 0;
|
||||
|
||||
if ( $saved > $last_time ) {
|
||||
update_user_option( $user->ID, 'user-settings', $cookie );
|
||||
update_user_option( $user->ID, 'user-settings-time', time() - 5 );
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setcookie('wp-settings-'.$user->ID, $settings, time() + 31536000, SITECOOKIEPATH);
|
||||
setcookie('wp-settings-time-'.$user->ID, time(), time() + 31536000, SITECOOKIEPATH);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve user interface setting value based on setting name.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Option
|
||||
* @since 2.7.0
|
||||
*
|
||||
* @param string $name The name of the setting.
|
||||
* @param string $default Optional default value to return when $name is not set.
|
||||
* @return mixed the last saved user setting or the default value/false if it doesn't exist.
|
||||
*/
|
||||
function get_user_setting( $name, $default = false ) {
|
||||
|
||||
$arr = get_all_user_settings();
|
||||
|
||||
return isset($arr[$name]) ? $arr[$name] : $default;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete user interface settings.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Option
|
||||
* @since 2.7.0
|
||||
*
|
||||
* Deleting settings would reset them to the defaults.
|
||||
*
|
||||
* @param mixed $names The name or array of names of the setting to be deleted.
|
||||
*/
|
||||
function delete_user_setting( $names ) {
|
||||
global $current_user;
|
||||
|
||||
$arr = get_all_user_settings();
|
||||
$names = (array) $names;
|
||||
|
||||
foreach ( $names as $name ) {
|
||||
if ( isset($arr[$name]) ) {
|
||||
unset($arr[$name]);
|
||||
$settings = '';
|
||||
}
|
||||
}
|
||||
|
||||
if ( isset($settings) ) {
|
||||
foreach ( $arr as $k => $v )
|
||||
$settings .= $k . '=' . $v . '&';
|
||||
|
||||
$settings = rtrim($settings, '&');
|
||||
|
||||
update_user_option( $current_user->ID, 'user-settings', $settings );
|
||||
setcookie('wp-settings-'.$current_user->ID, $settings, time() + 31536000, SITECOOKIEPATH);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve all user interface settings.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Option
|
||||
* @since 2.7.0
|
||||
*
|
||||
* @return array the last saved user settings or empty array.
|
||||
*/
|
||||
function get_all_user_settings() {
|
||||
if ( ! $user = wp_get_current_user() )
|
||||
return array();
|
||||
|
||||
if ( isset($_COOKIE['wp-settings-'.$user->ID]) ) {
|
||||
$cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['wp-settings-'.$user->ID] );
|
||||
|
||||
if ( $cookie && strpos($cookie, '=') ) { // the '=' cannot be 1st char
|
||||
parse_str($cookie, $arr);
|
||||
return $arr;
|
||||
}
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
function delete_all_user_settings() {
|
||||
if ( ! $user = wp_get_current_user() )
|
||||
return;
|
||||
|
||||
delete_usermeta( $user->ID, 'user-settings' );
|
||||
setcookie('wp-settings-'.$user->ID, ' ', time() - 31536000, SITECOOKIEPATH);
|
||||
}
|
||||
|
||||
/**
|
||||
* Serialize data, if needed.
|
||||
*
|
||||
|
||||
@@ -942,8 +942,8 @@ function user_can_richedit() {
|
||||
function wp_default_editor() {
|
||||
$r = user_can_richedit() ? 'tinymce' : 'html'; // defaults
|
||||
if ( $user = wp_get_current_user() ) { // look for cookie
|
||||
if ( isset($_COOKIE['wordpress_editor_' . $user->ID]) && in_array($_COOKIE['wordpress_editor_' . $user->ID], array('tinymce', 'html', 'test') ) )
|
||||
$r = $_COOKIE['wordpress_editor_' . $user->ID];
|
||||
$ed = get_user_setting('editor', 'tinymce');
|
||||
$r = ( in_array($ed, array('tinymce', 'html', 'test') ) ) ? $ed : $r;
|
||||
}
|
||||
return apply_filters( 'wp_default_editor', $r ); // filter
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
var moreHTML = '<img src="' + url + '/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />';
|
||||
var nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />';
|
||||
|
||||
if ( tinymce.util.Cookie.get('kitchenSink') == '1' )
|
||||
if ( getUserSetting('hidetb', '0') == '1' )
|
||||
ed.settings.wordpress_adv_hidden = 0;
|
||||
|
||||
// Hides the specified toolbar and resizes the iframe
|
||||
@@ -44,23 +44,20 @@
|
||||
});
|
||||
|
||||
ed.addCommand('WP_Adv', function() {
|
||||
var id = ed.controlManager.get(tbId).id, cm = ed.controlManager, cook = tinymce.util.Cookie, date;
|
||||
|
||||
date = new Date();
|
||||
date.setTime(date.getTime()+(10*365*24*60*60*1000));
|
||||
var id = ed.controlManager.get(tbId).id, cm = ed.controlManager;
|
||||
|
||||
if (DOM.isHidden(id)) {
|
||||
cm.setActive('wp_adv', 1);
|
||||
DOM.show(id);
|
||||
t._resizeIframe(ed, tbId, -28);
|
||||
ed.settings.wordpress_adv_hidden = 0;
|
||||
cook.set('kitchenSink', '1', date);
|
||||
setUserSetting('hidetb', '1');
|
||||
} else {
|
||||
cm.setActive('wp_adv', 0);
|
||||
DOM.hide(id);
|
||||
t._resizeIframe(ed, tbId, 28);
|
||||
ed.settings.wordpress_adv_hidden = 1;
|
||||
cook.set('kitchenSink', '0', date);
|
||||
setUserSetting('hidetb', '0');
|
||||
}
|
||||
});
|
||||
|
||||
@@ -94,11 +91,14 @@
|
||||
title : 'wordpress.add_media',
|
||||
image : url + '/img/media.gif',
|
||||
onclick : function() {
|
||||
tb_show('', tinymce.DOM.get('add_media').href);
|
||||
tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' );
|
||||
var a = tinymce.DOM.get('add-media-link');
|
||||
if ( a ) {
|
||||
tb_show('', a.href);
|
||||
tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' );
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
ed.addButton('add_image', {
|
||||
title : 'wordpress.add_image',
|
||||
image : url + '/img/image.gif',
|
||||
@@ -125,12 +125,12 @@
|
||||
tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' );
|
||||
}
|
||||
});
|
||||
|
||||
*/
|
||||
// Add Media buttons to fullscreen
|
||||
ed.onBeforeExecCommand.add(function(ed, cmd, ui, val) {
|
||||
if ( 'mceFullScreen' != cmd ) return;
|
||||
if ( 'mce_fullscreen' != ed.id )
|
||||
ed.settings.theme_advanced_buttons1 += ',|,add_image,add_video,add_audio,add_media';
|
||||
ed.settings.theme_advanced_buttons1 += ',|,add_media';
|
||||
});
|
||||
|
||||
// Add class "alignleft", "alignright" and "aligncenter" when selecting align for images.
|
||||
|
||||
@@ -134,7 +134,7 @@ $no_captions = ( apply_filters( 'disable_captions', '' ) ) ? true : false;
|
||||
// TinyMCE init settings
|
||||
$initArray = array (
|
||||
'mode' => 'none',
|
||||
'onpageload' => 'wpEditorInit',
|
||||
'onpageload' => 'switchEditors.edInit',
|
||||
'width' => '100%',
|
||||
'theme' => 'advanced',
|
||||
'skin' => 'wp_theme',
|
||||
@@ -214,7 +214,7 @@ if ( $compress && isset($_SERVER['HTTP_ACCEPT_ENCODING']) ) {
|
||||
// Setup cache info
|
||||
if ( $disk_cache ) {
|
||||
|
||||
$cacheKey = apply_filters('tiny_mce_version', '20080731');
|
||||
$cacheKey = apply_filters('tiny_mce_version', '20080830');
|
||||
|
||||
foreach ( $initArray as $v )
|
||||
$cacheKey .= $v;
|
||||
|
||||
@@ -35,12 +35,16 @@ require( ABSPATH . WPINC . '/functions.wp-styles.php' );
|
||||
* @param object $scripts WP_Scripts object.
|
||||
*/
|
||||
function wp_default_scripts( &$scripts ) {
|
||||
global $current_user;
|
||||
|
||||
if (!$guessurl = site_url())
|
||||
$guessurl = wp_guess_url();
|
||||
|
||||
$userid = isset($current_user) ? $current_user->ID : 0;
|
||||
$scripts->base_url = $guessurl;
|
||||
$scripts->default_version = get_bloginfo( 'version' );
|
||||
|
||||
$scripts->add( 'common', '/wp-admin/js/common.js', array('jquery'), '20080318' );
|
||||
$scripts->add( 'common', '/wp-admin/js/common.js', array('jquery', 'user-settings'), '20080318' );
|
||||
$scripts->add( 'sack', '/wp-includes/js/tw-sack.js', false, '1.6.1' );
|
||||
|
||||
$scripts->add( 'quicktags', '/wp-includes/js/quicktags.js', false, '20080823' );
|
||||
@@ -65,7 +69,7 @@ function wp_default_scripts( &$scripts ) {
|
||||
$scripts->add( 'editor_functions', '/wp-admin/js/editor.js', false, '20080823' );
|
||||
|
||||
// Modify this version when tinyMCE plugins are changed.
|
||||
$mce_version = apply_filters('tiny_mce_version', '20080730');
|
||||
$mce_version = apply_filters('tiny_mce_version', '20080830');
|
||||
$scripts->add( 'tiny_mce', '/wp-includes/js/tinymce/tiny_mce_config.php', array('editor_functions'), $mce_version );
|
||||
|
||||
$scripts->add( 'prototype', '/wp-includes/js/prototype.js', false, '1.6');
|
||||
@@ -242,6 +246,13 @@ function wp_default_scripts( &$scripts ) {
|
||||
) );
|
||||
|
||||
$scripts->add( 'farbtastic', '/wp-admin/js/farbtastic.js', array('jquery'), '1.2' );
|
||||
|
||||
$scripts->add( 'user-settings', '/wp-admin/js/user-settings.js', array(), '20080829' );
|
||||
$scripts->localize( 'user-settings', 'userSettings', array(
|
||||
'url' => SITECOOKIEPATH,
|
||||
'uid' => $userid,
|
||||
'time' => time()
|
||||
) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -334,7 +345,6 @@ function wp_prototype_before_jquery( $js_array ) {
|
||||
* @since 2.5.0
|
||||
*/
|
||||
function wp_just_in_time_script_localization() {
|
||||
wp_localize_script( 'tiny_mce', 'wpTinyMCEConfig', array( 'defaultEditor' => wp_default_editor() ) );
|
||||
wp_localize_script( 'autosave', 'autosaveL10n', array(
|
||||
'autosaveInterval' => AUTOSAVE_INTERVAL,
|
||||
'previewPageText' => __('Preview this Page'),
|
||||
|
||||
Reference in New Issue
Block a user