X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/9e77185fafaf4e60e2b73821e0e4b9b1a11fb85f..refs/tags/wordpress-4.4.1:/wp-admin/themes.php diff --git a/wp-admin/themes.php b/wp-admin/themes.php index 9457fe36..bf65884f 100644 --- a/wp-admin/themes.php +++ b/wp-admin/themes.php @@ -9,25 +9,57 @@ /** WordPress Administration Bootstrap */ require_once( dirname( __FILE__ ) . '/admin.php' ); -if ( !current_user_can('switch_themes') && !current_user_can('edit_theme_options') ) - wp_die( __( 'Cheatin’ uh?' ) ); +if ( ! current_user_can( 'switch_themes' ) && ! current_user_can( 'edit_theme_options' ) ) { + wp_die( + '

' . __( 'Cheatin’ uh?' ) . '

' . + '

' . __( 'You are not allowed to edit theme options on this site.' ) . '

', + 403 + ); +} if ( current_user_can( 'switch_themes' ) && isset($_GET['action'] ) ) { if ( 'activate' == $_GET['action'] ) { check_admin_referer('switch-theme_' . $_GET['stylesheet']); $theme = wp_get_theme( $_GET['stylesheet'] ); - if ( ! $theme->exists() || ! $theme->is_allowed() ) - wp_die( __( 'Cheatin’ uh?' ) ); + + if ( ! $theme->exists() || ! $theme->is_allowed() ) { + wp_die( + '

' . __( 'Cheatin’ uh?' ) . '

' . + '

' . __( 'The requested theme does not exist.' ) . '

', + 403 + ); + } + switch_theme( $theme->get_stylesheet() ); wp_redirect( admin_url('themes.php?activated=true') ); exit; } elseif ( 'delete' == $_GET['action'] ) { check_admin_referer('delete-theme_' . $_GET['stylesheet']); $theme = wp_get_theme( $_GET['stylesheet'] ); - if ( !current_user_can('delete_themes') || ! $theme->exists() ) - wp_die( __( 'Cheatin’ uh?' ) ); - delete_theme($_GET['stylesheet']); - wp_redirect( admin_url('themes.php?deleted=true') ); + + if ( ! current_user_can( 'delete_themes' ) ) { + wp_die( + '

' . __( 'Cheatin’ uh?' ) . '

' . + '

' . __( 'You are not allowed to delete this item.' ) . '

', + 403 + ); + } + + if ( ! $theme->exists() ) { + wp_die( + '

' . __( 'Cheatin’ uh?' ) . '

' . + '

' . __( 'The requested theme does not exist.' ) . '

', + 403 + ); + } + + $active = wp_get_theme(); + if ( $active->get( 'Template' ) == $_GET['stylesheet'] ) { + wp_redirect( admin_url( 'themes.php?delete-active-child=true' ) ); + } else { + delete_theme( $_GET['stylesheet'] ); + wp_redirect( admin_url( 'themes.php?deleted=true' ) ); + } exit; } } @@ -42,7 +74,8 @@ if ( current_user_can( 'switch_themes' ) ) { '' . - '

' . __( 'The current theme is displayed highlighted as the first theme.' ) . '

'; + '

' . __( 'The current theme is displayed highlighted as the first theme.' ) . '

' . + '

' . __( 'The search for installed themes will search for terms in their name, description, author, or tag.' ) . ' ' . __( 'The search results will be updated as you type.' ) . '

'; get_current_screen()->add_help_tab( array( 'id' => 'overview', @@ -82,7 +115,7 @@ if ( current_user_can( 'edit_theme_options' ) && current_user_can( 'customize' ) get_current_screen()->set_help_sidebar( '

' . __( 'For more information:' ) . '

' . - '

' . __( 'Documentation on Using Themes' ) . '

' . + '

' . __( 'Documentation on Using Themes' ) . '

' . '

' . __( 'Support Forums' ) . '

' ); @@ -102,9 +135,11 @@ wp_localize_script( 'theme', '_wpThemeSettings', array( 'adminUrl' => parse_url( admin_url(), PHP_URL_PATH ), ), 'l10n' => array( - 'addNew' => __( 'Add New Theme' ), - 'search' => __( 'Search Installed Themes' ), + 'addNew' => __( 'Add New Theme' ), + 'search' => __( 'Search Installed Themes' ), 'searchPlaceholder' => __( 'Search installed themes...' ), // placeholder (no ellipsis) + 'themesFound' => __( 'Number of Themes found: %d' ), + 'noThemesFound' => __( 'No themes found. Try a different search.' ), ), ) ); @@ -116,23 +151,25 @@ require_once( ABSPATH . 'wp-admin/admin-header.php' ); ?>
-

+

- + -

+ -

+

-

Visit site' ), home_url( '/' ) ); ?>

+

Visit site' ), home_url( '/' ) ); ?>

-

Visit site' ), home_url( '/' ) ); ?>

Visit site' ), home_url( '/' ) ); ?>

-

+

+ +

errors() || ( 1 == count( $ct->errors()->get_error_codes() ) continue; // 0 = name, 1 = capability, 2 = file if ( ( strcmp($self, $item[2]) == 0 && empty($parent_file)) || ($parent_file && ($item[2] == $parent_file)) ) - $class = ' class="current"'; + $class = ' current'; if ( !empty($submenu[$item[2]]) ) { $submenu[$item[2]] = array_values($submenu[$item[2]]); // Re-index. $menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]); if ( file_exists(WP_PLUGIN_DIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook)) - $current_theme_actions[] = "{$item[0]}"; + $current_theme_actions[] = "{$item[0]}"; else - $current_theme_actions[] = "{$item[0]}"; - } else if ( current_user_can($item[1]) ) { + $current_theme_actions[] = "{$item[0]}"; + } elseif ( ! empty( $item[2] ) && current_user_can( $item[1] ) ) { $menu_file = $item[2]; - if ( false !== ( $pos = strpos( $menu_file, '?' ) ) ) + + if ( current_user_can( 'customize' ) ) { + if ( 'custom-header' === $menu_file ) { + $current_theme_actions[] = "{$item[0]}"; + } elseif ( 'custom-background' === $menu_file ) { + $current_theme_actions[] = "{$item[0]}"; + } + } + + if ( false !== ( $pos = strpos( $menu_file, '?' ) ) ) { $menu_file = substr( $menu_file, 0, $pos ); + } + if ( file_exists( ABSPATH . "wp-admin/$menu_file" ) ) { - $current_theme_actions[] = "{$item[0]}"; + $current_theme_actions[] = "{$item[0]}"; } else { - $current_theme_actions[] = "{$item[0]}"; + $current_theme_actions[] = "{$item[0]}"; } } } @@ -204,9 +252,14 @@ foreach ( $themes as $theme ) :
-

+

+ Active: %s' ), $theme['name'] ); + ?> +

-

+

@@ -216,10 +269,9 @@ foreach ( $themes as $theme ) : - + - - + @@ -246,20 +298,56 @@ if ( ! is_multisite() && current_user_can('edit_themes') && $broken_themes = wp_

+ + + + + + + - - - - "; - } -?> + + + get_stylesheet(); + $delete_url = add_query_arg( array( + 'action' => 'delete', + 'stylesheet' => urlencode( $stylesheet ), + ), admin_url( 'themes.php' ) ); + $delete_url = wp_nonce_url( $delete_url, 'delete-theme_' . $stylesheet ); + ?> + + errors()->get_error_code() ) { + $parent_theme_name = $broken_theme->get( 'Template' ); + $parent_theme = themes_api( 'theme_information', array( 'slug' => urlencode( $parent_theme_name ) ) ); + + if ( ! is_wp_error( $parent_theme ) ) { + $install_url = add_query_arg( array( + 'action' => 'install-theme', + 'theme' => urlencode( $parent_theme_name ), + ), admin_url( 'update.php' ) ); + $install_url = wp_nonce_url( $install_url, 'install-theme_' . $parent_theme_name ); + ?> + + + +
" . ( $broken_theme->get( 'Name' ) ? $broken_theme->get( 'Name' ) : $broken_theme->get_stylesheet() ) . "" . $broken_theme->errors()->get_error_message() . "
get( 'Name' ) ? $broken_theme->display( 'Name' ) : $broken_theme->get_stylesheet(); ?>errors()->get_error_message(); ?>
@@ -285,21 +373,25 @@ if ( ! is_multisite() && current_user_can('edit_themes') && $broken_themes = wp_
<# if ( data.active ) { #> -

{{{ data.name }}}

+

+ Active: %s' ), '{{{ data.name }}}' ); + ?> +

<# } else { #> -

{{{ data.name }}}

+

{{{ data.name }}}

<# } #>
<# if ( data.active ) { #> <# if ( data.actions.customize ) { #> - + <# } #> <# } else { #> - - - + + <# } #>
@@ -315,7 +407,7 @@ if ( ! is_multisite() && current_user_can('edit_themes') && $broken_themes = wp_
- +
@@ -330,12 +422,12 @@ if ( ! is_multisite() && current_user_can('edit_themes') && $broken_themes = wp_ <# if ( data.active ) { #> <# } #> -

{{{ data.name }}}

-

+

{{{ data.name }}}

+

<# if ( data.hasUpdate ) { #> -
-

+
+

{{{ data.update }}}
<# } #> @@ -358,10 +450,9 @@ if ( ! is_multisite() && current_user_can('edit_themes') && $broken_themes = wp_
<# if ( data.actions.activate ) { #> - + <# } #> - - +
<# if ( ! data.active && data.actions['delete'] ) { #>