2012-02-24 23:12:43 -05:00
< ? php
/**
2014-03-04 15:21:14 -05:00
* Theme Customize Screen .
2012-02-24 23:12:43 -05:00
*
* @ package WordPress
* @ subpackage Customize
* @ since 3.4 . 0
*/
2012-06-26 14:48:18 -04:00
define ( 'IFRAME_REQUEST' , true );
2014-03-04 15:21:14 -05:00
/** Load WordPress Administration Bootstrap */
2013-09-24 20:18:11 -04:00
require_once ( dirname ( __FILE__ ) . '/admin.php' );
2014-03-04 15:21:14 -05:00
2014-07-14 15:01:16 -04:00
if ( ! current_user_can ( 'customize' ) ) {
2015-09-02 13:05:22 -04:00
wp_die (
'<h1>' . __ ( 'Cheatin’ uh?' ) . '</h1>' .
2016-06-29 11:16:29 -04:00
'<p>' . __ ( 'Sorry, you are not allowed to customize this site.' ) . '</p>' ,
2015-09-02 13:05:22 -04:00
403
);
2014-07-08 13:15:14 -04:00
}
2012-02-24 23:12:43 -05:00
Customize: Implement customized state persistence with changesets.
Includes infrastructure developed in the Customize Snapshots feature plugin.
See https://make.wordpress.org/core/2016/10/12/customize-changesets-technical-design-decisions/
Props westonruter, valendesigns, utkarshpatel, stubgo, lgedeon, ocean90, ryankienstra, mihai2u, dlh, aaroncampbell, jonathanbardo, jorbin.
See #28721.
See #31089.
Fixes #30937.
Fixes #31517.
Fixes #30028.
Fixes #23225.
Fixes #34142.
Fixes #36485.
Built from https://develop.svn.wordpress.org/trunk@38810
git-svn-id: http://core.svn.wordpress.org/trunk@38753 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-18 16:05:31 -04:00
/**
* @ global WP_Scripts $wp_scripts
* @ global WP_Customize_Manager $wp_customize
*/
global $wp_scripts , $wp_customize ;
if ( $wp_customize -> changeset_post_id () ) {
if ( ! current_user_can ( get_post_type_object ( 'customize_changeset' ) -> cap -> edit_post , $wp_customize -> changeset_post_id () ) ) {
wp_die (
'<h1>' . __ ( 'Cheatin’ uh?' ) . '</h1>' .
'<p>' . __ ( 'Sorry, you are not allowed to edit this changeset.' ) . '</p>' ,
403
);
}
if ( in_array ( get_post_status ( $wp_customize -> changeset_post_id () ), array ( 'publish' , 'trash' ), true ) ) {
wp_die (
'<h1>' . __ ( 'Cheatin’ uh?' ) . '</h1>' .
'<p>' . __ ( 'This changeset has already been published and cannot be further modified.' ) . '</p>' .
'<p><a href="' . esc_url ( remove_query_arg ( 'changeset_uuid' ) ) . '">' . __ ( 'Customize New Changes' ) . '</a></p>' ,
403
);
}
}
2015-09-17 15:42:26 -04:00
wp_reset_vars ( array ( 'url' , 'return' , 'autofocus' ) );
if ( ! empty ( $url ) ) {
$wp_customize -> set_preview_url ( wp_unslash ( $url ) );
2014-07-08 13:15:14 -04:00
}
2015-09-17 15:42:26 -04:00
if ( ! empty ( $return ) ) {
$wp_customize -> set_return_url ( wp_unslash ( $return ) );
}
if ( ! empty ( $autofocus ) && is_array ( $autofocus ) ) {
$wp_customize -> set_autofocus ( wp_unslash ( $autofocus ) );
2014-07-08 13:15:14 -04:00
}
2012-06-08 14:45:12 -04:00
2012-02-24 23:12:43 -05:00
$registered = $wp_scripts -> registered ;
$wp_scripts = new WP_Scripts ;
$wp_scripts -> registered = $registered ;
add_action ( 'customize_controls_print_scripts' , 'print_head_scripts' , 20 );
add_action ( 'customize_controls_print_footer_scripts' , '_wp_footer_scripts' );
add_action ( 'customize_controls_print_styles' , 'print_admin_styles' , 20 );
2013-10-24 18:53:23 -04:00
/**
* Fires when Customizer controls are initialized , before scripts are enqueued .
*
* @ since 3.4 . 0
*/
2012-02-24 23:12:43 -05:00
do_action ( 'customize_controls_init' );
wp_enqueue_script ( 'customize-controls' );
wp_enqueue_style ( 'customize-controls' );
2013-10-24 18:53:23 -04:00
/**
2013-10-24 18:57:50 -04:00
* Enqueue Customizer control scripts .
2013-10-24 18:53:23 -04:00
*
* @ since 3.4 . 0
*/
2012-02-24 23:12:43 -05:00
do_action ( 'customize_controls_enqueue_scripts' );
// Let's roll.
@ header ( 'Content-Type: ' . get_option ( 'html_type' ) . '; charset=' . get_option ( 'blog_charset' ));
wp_user_settings ();
_wp_admin_html_begin ();
2013-11-11 12:39:09 -05:00
$body_class = 'wp-core-ui wp-customizer js' ;
2012-06-06 17:45:17 -04:00
if ( wp_is_mobile () ) :
$body_class .= ' mobile' ;
2015-03-29 08:23:27 -04:00
?> <meta name="viewport" id="viewport-meta" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=1.2" /><?php
2012-06-06 17:45:17 -04:00
endif ;
2015-09-17 15:42:26 -04:00
if ( $wp_customize -> is_ios () ) {
2012-06-06 17:45:17 -04:00
$body_class .= ' ios' ;
2014-11-11 17:29:23 -05:00
}
2012-06-06 17:45:17 -04:00
2014-11-11 17:29:23 -05:00
if ( is_rtl () ) {
$body_class .= ' rtl' ;
}
2012-11-08 17:01:06 -05:00
$body_class .= ' locale-' . sanitize_html_class ( strtolower ( str_replace ( '_' , '-' , get_locale () ) ) );
2015-09-17 15:42:26 -04:00
$admin_title = sprintf ( $wp_customize -> get_document_title_template (), __ ( 'Loading…' ) );
2014-11-11 17:29:23 -05:00
2013-11-11 10:47:09 -05:00
?> <title><?php echo $admin_title; ?></title>
2012-02-24 23:12:43 -05:00
2013-11-11 10:47:09 -05:00
< script type = " text/javascript " >
2016-10-18 23:20:29 -04:00
var ajaxurl = < ? php echo wp_json_encode ( admin_url ( 'admin-ajax.php' , 'relative' ) ); ?> ,
pagenow = 'customize' ;
2013-11-11 10:47:09 -05:00
</ script >
< ? php
2013-10-24 18:53:23 -04:00
/**
2014-03-25 04:05:15 -04:00
* Fires when Customizer control styles are printed .
2013-10-24 18:53:23 -04:00
*
* @ since 3.4 . 0
*/
2012-02-24 23:12:43 -05:00
do_action ( 'customize_controls_print_styles' );
2013-10-24 18:53:23 -04:00
/**
2014-03-25 04:05:15 -04:00
* Fires when Customizer control scripts are printed .
2013-10-24 18:53:23 -04:00
*
* @ since 3.4 . 0
*/
2012-02-24 23:12:43 -05:00
do_action ( 'customize_controls_print_scripts' );
?>
</ head >
2012-06-06 17:45:17 -04:00
< body class = " <?php echo esc_attr( $body_class ); ?> " >
< div class = " wp-full-overlay expanded " >
2012-04-30 11:46:17 -04:00
< form id = " customize-controls " class = " wrap wp-full-overlay-sidebar " >
2012-05-14 21:03:31 -04:00
< div id = " customize-header-actions " class = " wp-full-overlay-header " >
2015-08-09 15:00:24 -04:00
< ? php
$save_text = $wp_customize -> is_theme_active () ? __ ( 'Save & Publish' ) : __ ( 'Save & Activate' );
Customize: Implement customized state persistence with changesets.
Includes infrastructure developed in the Customize Snapshots feature plugin.
See https://make.wordpress.org/core/2016/10/12/customize-changesets-technical-design-decisions/
Props westonruter, valendesigns, utkarshpatel, stubgo, lgedeon, ocean90, ryankienstra, mihai2u, dlh, aaroncampbell, jonathanbardo, jorbin.
See #28721.
See #31089.
Fixes #30937.
Fixes #31517.
Fixes #30028.
Fixes #23225.
Fixes #34142.
Fixes #36485.
Built from https://develop.svn.wordpress.org/trunk@38810
git-svn-id: http://core.svn.wordpress.org/trunk@38753 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-18 16:05:31 -04:00
$save_attrs = array ();
if ( ! current_user_can ( get_post_type_object ( 'customize_changeset' ) -> cap -> publish_posts ) ) {
$save_attrs [ 'style' ] = 'display: none' ;
}
submit_button ( $save_text , 'primary save' , 'save' , false , $save_attrs );
2015-08-09 15:00:24 -04:00
?>
< span class = " spinner " ></ span >
2016-04-17 11:41:27 -04:00
< button type = " button " class = " customize-controls-preview-toggle " >
2015-08-09 15:00:24 -04:00
< span class = " controls " >< ? php _e ( 'Customize' ); ?> </span>
< span class = " preview " >< ? php _e ( 'Preview' ); ?> </span>
2016-04-17 11:41:27 -04:00
</ button >
2015-09-17 15:42:26 -04:00
< a class = " customize-controls-close " href = " <?php echo esc_url( $wp_customize->get_return_url () ); ?> " >
2016-04-17 11:41:27 -04:00
< span class = " screen-reader-text " >< ? php _e ( 'Close the Customizer and go back to the previous page' ); ?> </span>
2015-08-09 15:00:24 -04:00
</ a >
2012-04-16 10:02:28 -04:00
</ div >
2012-11-17 10:11:29 -05:00
2016-01-30 08:46:27 -05:00
< div id = " widgets-right " class = " wp-clearfix " ><!-- For Widget Customizer , many widgets try to look for instances under div #widgets-right, so we have to add that ID to a container div in the Customizer for compat -->
Improve/introduce Customizer JavaScript models for Controls, Sections, and Panels.
* Introduce models for panels and sections.
* Introduce API to expand and focus a control, section or panel.
* Allow deep-linking to panels, sections, and controls inside of the Customizer.
* Clean up `accordion.js`, removing all Customizer-specific logic.
* Add initial unit tests for `wp.customize.Class` in `customize-base.js`.
https://make.wordpress.org/core/2014/10/27/toward-a-complete-javascript-api-for-the-customizer/ provides an overview of how to use the JavaScript API.
props westonruter, celloexpressions, ryankienstra.
see #28032, #28579, #28580, #28650, #28709, #29758.
fixes #29529.
Built from https://develop.svn.wordpress.org/trunk@30102
git-svn-id: http://core.svn.wordpress.org/trunk@30102 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-29 18:51:22 -04:00
< div class = " wp-full-overlay-sidebar-content " tabindex = " -1 " >
2015-05-29 09:57:26 -04:00
< div id = " customize-info " class = " accordion-section customize-info " >
2015-09-13 02:16:26 -04:00
< div class = " accordion-section-title " >
2012-05-30 12:57:44 -04:00
< span class = " preview-notice " >< ? php
2016-02-21 01:15:28 -05:00
echo sprintf ( __ ( 'You are customizing %s' ), '<strong class="panel-title site-title">' . get_bloginfo ( 'name' ) . '</strong>' );
2012-05-30 12:57:44 -04:00
?> </span>
2016-04-17 11:41:27 -04:00
< button type = " button " class = " customize-help-toggle dashicons dashicons-editor-help " aria - expanded = " false " >< span class = " screen-reader-text " >< ? php _e ( 'Help' ); ?> </span></button>
2012-05-14 21:03:31 -04:00
</ div >
2015-05-29 09:57:26 -04:00
< div class = " customize-panel-description " >< ? php
2015-05-03 12:18:28 -04:00
_e ( 'The Customizer allows you to preview changes to your site before publishing them. You can also navigate to different pages on your site to preview them.' );
2015-02-24 15:31:24 -05:00
?> </div>
2012-03-03 21:06:11 -05:00
</ div >
2012-02-24 23:12:43 -05:00
Improve/introduce Customizer JavaScript models for Controls, Sections, and Panels.
* Introduce models for panels and sections.
* Introduce API to expand and focus a control, section or panel.
* Allow deep-linking to panels, sections, and controls inside of the Customizer.
* Clean up `accordion.js`, removing all Customizer-specific logic.
* Add initial unit tests for `wp.customize.Class` in `customize-base.js`.
https://make.wordpress.org/core/2014/10/27/toward-a-complete-javascript-api-for-the-customizer/ provides an overview of how to use the JavaScript API.
props westonruter, celloexpressions, ryankienstra.
see #28032, #28579, #28580, #28650, #28709, #29758.
fixes #29529.
Built from https://develop.svn.wordpress.org/trunk@30102
git-svn-id: http://core.svn.wordpress.org/trunk@30102 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-29 18:51:22 -04:00
< div id = " customize-theme-controls " >
2016-09-23 18:23:30 -04:00
< ul class = " customize-pane-parent " >< ? php // Panels and sections are managed here via JavaScript ?></ul>
Improve/introduce Customizer JavaScript models for Controls, Sections, and Panels.
* Introduce models for panels and sections.
* Introduce API to expand and focus a control, section or panel.
* Allow deep-linking to panels, sections, and controls inside of the Customizer.
* Clean up `accordion.js`, removing all Customizer-specific logic.
* Add initial unit tests for `wp.customize.Class` in `customize-base.js`.
https://make.wordpress.org/core/2014/10/27/toward-a-complete-javascript-api-for-the-customizer/ provides an overview of how to use the JavaScript API.
props westonruter, celloexpressions, ryankienstra.
see #28032, #28579, #28580, #28650, #28709, #29758.
fixes #29529.
Built from https://develop.svn.wordpress.org/trunk@30102
git-svn-id: http://core.svn.wordpress.org/trunk@30102 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-29 18:51:22 -04:00
</ div >
2012-05-14 21:03:31 -04:00
</ div >
2014-04-02 13:04:14 -04:00
</ div >
2012-02-24 23:12:43 -05:00
2012-05-14 21:03:31 -04:00
< div id = " customize-footer-actions " class = " wp-full-overlay-footer " >
2016-02-15 20:57:26 -05:00
< ? php $previewable_devices = $wp_customize -> get_previewable_devices (); ?>
< ? php if ( ! empty ( $previewable_devices ) ) : ?>
< div class = " devices " >
< ? php foreach ( ( array ) $previewable_devices as $device => $settings ) : ?>
< ? php
if ( empty ( $settings [ 'label' ] ) ) {
continue ;
}
$active = ! empty ( $settings [ 'default' ] );
$class = 'preview-' . $device ;
if ( $active ) {
$class .= ' active' ;
}
?>
< button type = " button " class = " <?php echo esc_attr( $class ); ?> " aria - pressed = " <?php echo esc_attr( $active ) ?> " data - device = " <?php echo esc_attr( $device ); ?> " >
< span class = " screen-reader-text " >< ? php echo esc_html ( $settings [ 'label' ] ); ?> </span>
</ button >
< ? php endforeach ; ?>
</ div >
< ? php endif ; ?>
2016-09-28 15:54:28 -04:00
< button type = " button " class = " collapse-sidebar button " aria - expanded = " true " aria - label = " <?php esc_attr_e( 'Collapse Sidebar' ); ?> " >
2012-04-16 10:02:28 -04:00
< span class = " collapse-sidebar-arrow " ></ span >
2015-07-10 17:22:26 -04:00
< span class = " collapse-sidebar-label " >< ? php _e ( 'Collapse' ); ?> </span>
</ button >
2012-02-24 23:12:43 -05:00
</ div >
</ form >
2012-04-30 11:46:17 -04:00
< div id = " customize-preview " class = " wp-full-overlay-main " ></ div >
2012-02-24 23:12:43 -05:00
< ? php
2013-10-24 18:53:23 -04:00
/**
2016-05-25 12:05:27 -04:00
* Prints templates , control scripts , and settings in the footer .
2013-10-24 18:53:23 -04:00
*
* @ since 3.4 . 0
*/
2012-02-24 23:12:43 -05:00
do_action ( 'customize_controls_print_footer_scripts' );
?>
2012-06-06 17:45:17 -04:00
</ div >
2012-02-24 23:12:43 -05:00
</ body >
</ html >