wp/wp-admin/widgets.php
changeset 7 cf61fcea0001
parent 5 5e2f62d02dcd
child 9 177826044cd9
--- a/wp/wp-admin/widgets.php	Tue Jun 09 11:14:17 2015 +0000
+++ b/wp/wp-admin/widgets.php	Mon Oct 14 17:39:30 2019 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * Widgets administration panel.
+ * Widget administration panel
  *
  * @package WordPress
  * @subpackage Administration
@@ -12,19 +12,22 @@
 /** WordPress Administration Widgets API */
 require_once(ABSPATH . 'wp-admin/includes/widgets.php');
 
-if ( ! current_user_can('edit_theme_options') )
-	wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+if ( ! current_user_can( 'edit_theme_options' ) ) {
+	wp_die(
+		'<h1>' . __( 'You need a higher level of permission.' ) . '</h1>' .
+		'<p>' . __( 'Sorry, you are not allowed to edit theme options on this site.' ) . '</p>',
+		403
+	);
+}
 
 $widgets_access = get_user_setting( 'widgets_access' );
 if ( isset($_GET['widgets-access']) ) {
+	check_admin_referer( 'widgets-access' );
+
 	$widgets_access = 'on' == $_GET['widgets-access'] ? 'on' : 'off';
 	set_user_setting( 'widgets_access', $widgets_access );
 }
 
-function wp_widgets_access_body_class($classes) {
-	return "$classes widgets_access ";
-}
-
 if ( 'on' == $widgets_access ) {
 	add_filter( 'admin_body_class', 'wp_widgets_access_body_class' );
 } else {
@@ -70,8 +73,8 @@
 
 get_current_screen()->set_help_sidebar(
 	'<p><strong>' . __('For more information:') . '</strong></p>' .
-	'<p>' . __('<a href="https://codex.wordpress.org/Appearance_Widgets_Screen" target="_blank">Documentation on Widgets</a>') . '</p>' .
-	'<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
+	'<p>' . __('<a href="https://codex.wordpress.org/Appearance_Widgets_Screen">Documentation on Widgets</a>') . '</p>' .
+	'<p>' . __('<a href="https://wordpress.org/support/">Support Forums</a>') . '</p>'
 );
 
 if ( ! current_theme_supports( 'widgets' ) ) {
@@ -88,7 +91,7 @@
 	if ( 'wp_inactive_widgets' == $sidebar_id )
 		continue;
 
-	if ( !isset( $wp_registered_sidebars[ $sidebar_id ] ) ) {
+	if ( ! is_registered_sidebar( $sidebar_id ) ) {
 		if ( ! empty( $widgets ) ) { // register the inactive_widgets area as sidebar
 			register_sidebar(array(
 				'name' => __( 'Inactive Sidebar (not used)' ),
@@ -151,6 +154,17 @@
 
 		$sidebar = array_diff( $sidebar, array($widget_id) );
 		$_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1');
+
+		/**
+		 * Fires immediately after a widget has been marked for deletion.
+		 *
+		 * @since 4.4.0
+		 *
+		 * @param string $widget_id  ID of the widget marked for deletion.
+		 * @param string $sidebar_id ID of the sidebar the widget was deleted from.
+		 * @param string $id_base    ID base for the widget.
+		 */
+		do_action( 'delete_widget', $widget_id, $sidebar_id, $id_base );
 	}
 
 	$_POST['widget-id'] = $sidebar;
@@ -182,6 +196,28 @@
 	exit;
 }
 
+// Remove inactive widgets without js
+if ( isset( $_POST['removeinactivewidgets'] ) ) {
+	check_admin_referer( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' );
+
+	if ( $_POST['removeinactivewidgets'] ) {
+		foreach ( $sidebars_widgets['wp_inactive_widgets'] as $key => $widget_id ) {
+			$pieces = explode( '-', $widget_id );
+			$multi_number = array_pop( $pieces );
+			$id_base = implode( '-', $pieces );
+			$widget = get_option( 'widget_' . $id_base );
+			unset( $widget[$multi_number] );
+			update_option( 'widget_' . $id_base, $widget );
+			unset( $sidebars_widgets['wp_inactive_widgets'][$key] );
+		}
+
+		wp_set_sidebars_widgets( $sidebars_widgets );
+	}
+
+	wp_redirect( admin_url( 'widgets.php?message=0' ) );
+	exit;
+}
+
 // Output the widget form without js
 if ( isset($_GET['editwidget']) && $_GET['editwidget'] ) {
 	$widget_id = $_GET['editwidget'];
@@ -230,9 +266,9 @@
 
 	require_once( ABSPATH . 'wp-admin/admin-header.php' ); ?>
 	<div class="wrap">
-	<h2><?php echo esc_html( $title ); ?></h2>
+	<h1><?php echo esc_html( $title ); ?></h1>
 	<div class="editwidget"<?php echo $width; ?>>
-	<h3><?php printf( __( 'Widget %s' ), $name ); ?></h3>
+	<h2><?php printf( __( 'Widget %s' ), $name ); ?></h2>
 
 	<form action="widgets.php" method="post">
 	<div class="widget-inside">
@@ -281,9 +317,9 @@
 	<a href="widgets.php" class="button alignleft"><?php _e('Cancel'); ?></a>
 <?php
 	} else {
-		submit_button( __( 'Delete' ), 'button alignleft', 'removewidget', false );
+		submit_button( __( 'Delete' ), 'alignleft', 'removewidget', false );
 	}
-	submit_button( __( 'Save Widget' ), 'button-primary alignright', 'savewidget', false ); ?>
+	submit_button( __( 'Save Widget' ), 'primary alignright', 'savewidget', false ); ?>
 	<input type="hidden" name="widget-id" class="widget-id" value="<?php echo esc_attr($widget_id); ?>" />
 	<input type="hidden" name="id_base" class="id_base" value="<?php echo esc_attr($id_base); ?>" />
 	<input type="hidden" name="multi_number" class="multi_number" value="<?php echo esc_attr($multi_number); ?>" />
@@ -310,24 +346,27 @@
 require_once( ABSPATH . 'wp-admin/admin-header.php' ); ?>
 
 <div class="wrap">
-<h2>
+<h1 class="wp-heading-inline"><?php
+echo esc_html( $title );
+?></h1>
+
 <?php
-	echo esc_html( $title );
-	if ( current_user_can( 'customize' ) ) {
-		printf(
-			' <a class="add-new-h2 hide-if-no-customize" href="%1$s">%2$s</a>',
-			esc_url( add_query_arg(
-				array(
-					array( 'autofocus' => array( 'panel' => 'widgets' ) ),
-					'return' => urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) )
-				),
-				admin_url( 'customize.php' )
-			) ),
-			__( 'Manage in Customizer' )
-		);
-	}
+if ( current_user_can( 'customize' ) ) {
+	printf(
+		' <a class="page-title-action hide-if-no-customize" href="%1$s">%2$s</a>',
+		esc_url( add_query_arg(
+			array(
+				array( 'autofocus' => array( 'panel' => 'widgets' ) ),
+				'return' => urlencode( remove_query_arg( wp_removable_query_args(), wp_unslash( $_SERVER['REQUEST_URI'] ) ) )
+			),
+			admin_url( 'customize.php' )
+		) ),
+		__( 'Manage with Live Preview' )
+	);
+}
 ?>
-</h2>
+
+<hr class="wp-header-end">
 
 <?php if ( isset($_GET['message']) && isset($messages[$_GET['message']]) ) { ?>
 <div id="message" class="updated notice is-dismissible"><p><?php echo $messages[$_GET['message']]; ?></p></div>
@@ -348,8 +387,11 @@
 <div id="widgets-left">
 	<div id="available-widgets" class="widgets-holder-wrap">
 		<div class="sidebar-name">
-			<div class="sidebar-name-arrow"><br /></div>
-			<h3><?php _e('Available Widgets'); ?> <span id="removing-widget"><?php _ex('Deactivate', 'removing-widget'); ?> <span></span></span></h3>
+			<button type="button" class="handlediv hide-if-no-js" aria-expanded="true">
+				<span class="screen-reader-text"><?php _e( 'Available Widgets' ); ?></span>
+				<span class="toggle-indicator" aria-hidden="true"></span>
+			</button>
+			<h2><?php _e( 'Available Widgets' ); ?> <span id="removing-widget"><?php _ex( 'Deactivate', 'removing-widget' ); ?> <span></span></span></h2>
 		</div>
 		<div class="widget-holder">
 			<div class="sidebar-description">
@@ -372,12 +414,35 @@
 		if ( !empty( $registered_sidebar['class'] ) )
 			$wrap_class .= ' ' . $registered_sidebar['class'];
 
+		$is_inactive_widgets = 'wp_inactive_widgets' == $registered_sidebar['id'];
 		?>
 		<div class="<?php echo esc_attr( $wrap_class ); ?>">
 			<div class="widget-holder inactive">
 				<?php wp_list_widget_controls( $registered_sidebar['id'], $registered_sidebar['name'] ); ?>
-				<div class="clear"></div>
+
+				<?php if ( $is_inactive_widgets ) { ?>
+				<div class="remove-inactive-widgets">
+					<form action="" method="post">
+						<p>
+							<?php
+							$attributes = array( 'id' => 'inactive-widgets-control-remove' );
+
+							if ( empty($sidebars_widgets['wp_inactive_widgets']) ) {
+								$attributes['disabled'] = '';
+							}
+
+							submit_button( __( 'Clear Inactive Widgets' ), 'delete', 'removeinactivewidgets', false, $attributes );
+							?>
+							<span class="spinner"></span>
+						</p>
+						<?php wp_nonce_field( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' ); ?>
+					</form>
+				</div>
+				<?php } ?>
 			</div>
+			<?php if ( $is_inactive_widgets ) { ?>
+			<p class="description"><?php _e( 'This will clear all items from the inactive widgets list. You will not be able to restore any customizations.' ); ?></p>
+			<?php } ?>
 		</div>
 		<?php
 
@@ -398,12 +463,12 @@
 if ( $sidebars_count > 1 ) {
 	$split = ceil( $sidebars_count / 2 );
 } else {
-	$single_sidebar_class = ' class="single-sidebar"';
+	$single_sidebar_class = ' single-sidebar';
 }
 
 ?>
 <div class="widget-liquid-right">
-<div id="widgets-right"<?php echo $single_sidebar_class; ?>>
+<div id="widgets-right" class="wp-clearfix<?php echo $single_sidebar_class; ?>">
 <div class="sidebars-column-1">
 <?php
 
@@ -443,8 +508,8 @@
 <div class="widgets-chooser">
 	<ul class="widgets-chooser-sidebars"></ul>
 	<div class="widgets-chooser-actions">
-		<button class="button-secondary"><?php _e( 'Cancel' ); ?></button>
-		<button class="button-primary"><?php _e( 'Add Widget' ); ?></button>
+		<button class="button widgets-chooser-cancel"><?php _e( 'Cancel' ); ?></button>
+		<button class="button button-primary widgets-chooser-add"><?php _e( 'Add Widget' ); ?></button>
 	</div>
 </div>