X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/9e77185fafaf4e60e2b73821e0e4b9b1a11fb85f..refs/heads/pristine:/wp-admin/themes.php diff --git a/wp-admin/themes.php b/wp-admin/themes.php index 9457fe36..6aa129d7 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?' ) . '

' . + '

' . __( 'Sorry, 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?' ) . '

' . + '

' . __( 'Sorry, 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', @@ -56,7 +89,7 @@ if ( current_user_can( 'install_themes' ) ) { if ( is_multisite() ) { $help_install = '

' . __('Installing themes on Multisite can only be done from the Network Admin section.') . '

'; } else { - $help_install = '

' . sprintf( __('If you would like to see more themes to choose from, click on the “Add New” button and you will be able to browse or search for additional themes from the WordPress.org Theme Directory. Themes in the WordPress.org Theme Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they’re free!'), 'https://wordpress.org/themes/' ) . '

'; + $help_install = '

' . sprintf( __('If you would like to see more themes to choose from, click on the “Add New” button and you will be able to browse or search for additional themes from the WordPress Theme Directory. Themes in the WordPress Theme Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they’re free!'), __( 'https://wordpress.org/themes/' ) ) . '

'; } get_current_screen()->add_help_tab( array( @@ -82,8 +115,8 @@ if ( current_user_can( 'edit_theme_options' ) && current_user_can( 'customize' ) get_current_screen()->set_help_sidebar( '

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

' . - '

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

' . - '

' . __( 'Support Forums' ) . '

' + '

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

' . + '

' . __( 'Support Forums' ) . '

' ); if ( current_user_can( 'switch_themes' ) ) { @@ -102,44 +135,49 @@ 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.' ), ), ) ); add_thickbox(); wp_enqueue_script( 'theme' ); +wp_enqueue_script( 'updates' ); wp_enqueue_script( 'customize-loader' ); require_once( ABSPATH . 'wp-admin/admin-header.php' ); ?>
-

+

- + -

+ -

+

-

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

+

-

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

-

+

+ +

errors() && ( ! is_multisite() || current_user_can( 'manage_network_themes' ) ) ) { - echo '

' . sprintf( __( 'ERROR: %s' ), $ct->errors()->get_error_message() ) . '

'; + echo '

' . __( 'ERROR:' ) . ' ' . $ct->errors()->get_error_message() . '

'; } /* @@ -157,22 +195,33 @@ if ( ! $ct->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]}"; } } } @@ -181,7 +230,7 @@ if ( ! $ct->errors() || ( 1 == count( $ct->errors()->get_error_codes() ) ?>
-
+
+ + +
+ +

Update now' ); ?>

+ +

+ +
+ +
-

+

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

-

+

@@ -216,21 +281,19 @@ foreach ( $themes as $theme ) : - + + - - +
- - -
-
-
@@ -244,22 +307,58 @@ 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(); ?>
@@ -281,43 +380,59 @@ if ( ! is_multisite() && current_user_can('edit_themes') && $broken_themes = wp_ <# } else { #>
<# } #> - -
- <# if ( data.active ) { #> -

{{{ data.name }}}

- <# } else { #> -

{{{ data.name }}}

+ <# if ( data.hasUpdate ) { #> + <# if ( data.hasPackage ) { #> +

Update now' ); ?>

+ <# } else { #> +

+ <# } #> <# } #> -
+ +
+ +
<# if ( data.active ) { #> - <# if ( data.actions.customize ) { #> - - <# } #> +

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

<# } else { #> - - - +

{{{ data.name }}}

<# } #> +
+ <# if ( data.active ) { #> + <# if ( data.actions.customize ) { #> + + <# } #> + <# } else { #> + + + + <# } #>
- - <# if ( data.hasUpdate ) { #> -
- <# } #> - wp_get_update_data(), +) ); + +require( ABSPATH . 'wp-admin/admin-footer.php' );