X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/wordpress.git/blobdiff_plain/d3b1ea255664edd2deef17f900a655613d20820d..bf5c68485ef07868ad0a91168ecd0092af7661ae:/wp-admin/theme-editor.php diff --git a/wp-admin/theme-editor.php b/wp-admin/theme-editor.php index db79d786..7b31745b 100644 --- a/wp-admin/theme-editor.php +++ b/wp-admin/theme-editor.php @@ -7,14 +7,42 @@ */ /** WordPress Administration Bootstrap */ -require_once('admin.php'); +require_once('./admin.php'); + +if ( is_multisite() && ! is_network_admin() ) { + wp_redirect( network_admin_url( 'theme-editor.php' ) ); + exit(); +} + +if ( !current_user_can('edit_themes') ) + wp_die('

'.__('You do not have sufficient permissions to edit templates for this site.').'

'); $title = __("Edit Themes"); $parent_file = 'themes.php'; -wp_reset_vars(array('action', 'redirect', 'profile', 'error', 'warning', 'a', 'file', 'theme')); - -wp_admin_css( 'theme-editor' ); +get_current_screen()->add_help_tab( array( +'id' => 'overview', +'title' => __('Overview'), +'content' => + '

' . __('You can use the Theme Editor to edit the individual CSS and PHP files which make up your theme.') . '

+

' . __('Begin by choosing a theme to edit from the dropdown menu and clicking Select. A list then appears of all the template files. Clicking once on any file name causes the file to appear in the large Editor box.') . '

+

' . __('For PHP files, you can use the Documentation dropdown to select from functions recognized in that file. Lookup takes you to a web page with reference material about that particular function.') . '

+

' . __('After typing in your edits, click Update File.') . '

+

' . __('Advice: think very carefully about your site crashing if you are live-editing the theme currently in use.') . '

+

' . __('Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a child theme instead.') . '

' . + ( is_network_admin() ? '

' . __('Any edits to files from this screen will be reflected on all sites in the network.') . '

' : '' ) +) ); + +get_current_screen()->set_help_sidebar( + '

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

' . + '

' . __('Documentation on Theme Development') . '

' . + '

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

' . + '

' . __('Documentation on Editing Files') . '

' . + '

' . __('Documentation on Template Tags') . '

' . + '

' . __('Support Forums') . '

' +); + +wp_reset_vars(array('action', 'redirect', 'profile', 'error', 'warning', 'a', 'file', 'theme', 'dir')); $themes = get_themes(); @@ -22,21 +50,29 @@ if (empty($theme)) { $theme = get_current_theme(); } else { $theme = stripslashes($theme); - } - +} if ( ! isset($themes[$theme]) ) wp_die(__('The requested theme does not exist.')); -$allowed_files = array_merge($themes[$theme]['Stylesheet Files'], $themes[$theme]['Template Files']); +$allowed_files = array_merge( $themes[$theme]['Stylesheet Files'], $themes[$theme]['Template Files'] ); -if (empty($file)) { - $file = $allowed_files[0]; +if ( empty( $file ) ) { + if ( false !== array_search( $themes[$theme]['Stylesheet Dir'] . '/style.css', $allowed_files ) ) + $file = $themes[$theme]['Stylesheet Dir'] . '/style.css'; + else + $file = $allowed_files[0]; +} else { + $file = stripslashes($file); + if ( 'theme' == $dir ) { + $file = dirname(dirname($themes[$theme]['Template Dir'])) . $file ; + } else if ( 'style' == $dir) { + $file = dirname(dirname($themes[$theme]['Stylesheet Dir'])) . $file ; + } } -$file = validate_file_to_edit($file, $allowed_files); -$real_file = get_real_file_to_edit($file); - +validate_file_to_edit($file, $allowed_files); +$scrollto = isset($_REQUEST['scrollto']) ? (int) $_REQUEST['scrollto'] : 0; $file_show = basename( $file ); switch($action) { @@ -45,28 +81,25 @@ case 'update': check_admin_referer('edit-theme_' . $file . $theme); - if ( !current_user_can('edit_themes') ) - wp_die('

'.__('You do not have sufficient permissions to edit templates for this blog.').'

'); - $newcontent = stripslashes($_POST['newcontent']); $theme = urlencode($theme); - if (is_writeable($real_file)) { + if (is_writeable($file)) { //is_writable() not always reliable, check return value. see comments @ http://uk.php.net/is_writable - $f = fopen($real_file, 'w+'); + $f = fopen($file, 'w+'); if ($f !== FALSE) { fwrite($f, $newcontent); fclose($f); - $location = "theme-editor.php?file=$file&theme=$theme&a=te"; + $location = "theme-editor.php?file=$file&theme=$theme&a=te&scrollto=$scrollto"; } else { - $location = "theme-editor.php?file=$file&theme=$theme"; + $location = "theme-editor.php?file=$file&theme=$theme&scrollto=$scrollto"; } } else { - $location = "theme-editor.php?file=$file&theme=$theme"; + $location = "theme-editor.php?file=$file&theme=$theme&scrollto=$scrollto"; } $location = wp_kses_no_null($location); - $strip = array('%0d', '%0a'); - $location = str_replace($strip, '', $location); + $strip = array('%0d', '%0a', '%0D', '%0A'); + $location = _deep_replace($strip, $location); header("Location: $location"); exit(); @@ -74,24 +107,19 @@ break; default: - if ( !current_user_can('edit_themes') ) - wp_die('

'.__('You do not have sufficient permissions to edit themes for this blog.').'

'); - - if ( use_codepress() ) - wp_enqueue_script( 'codepress' ); - - require_once('admin-header.php'); + require_once(ABSPATH . 'wp-admin/admin-header.php'); update_recently_edited($file); - if ( !is_file($real_file) ) + if ( !is_file($file) ) $error = 1; - if ( !$error && filesize($real_file) > 0 ) { - $f = fopen($real_file, 'r'); - $content = fread($f, filesize($real_file)); + $content = ''; + if ( !$error && filesize($file) > 0 ) { + $f = fopen($file, 'r'); + $content = fread($f, filesize($file)); - if ( '.php' == substr( $real_file, strrpos( $real_file, '.' ) ) ) { + if ( '.php' == substr( $file, strrpos( $file, '.' ) ) ) { $functions = wp_doc_link_parse( $content ); $docs_select = ''; } - $content = htmlspecialchars( $content ); - $codepress_lang = codepress_get_lang($real_file); + $content = esc_textarea( $content ); } ?> -

+

$description (%s)" : "%s"; +$desc_header = ( $description != $file_show ) ? "$description ($file_show)" : $file_show; + +$is_child_theme = $themes[$theme]['Template'] != $themes[$theme]['Stylesheet']; ?>

-
-
+ +
+
+

+
+
+ - +
-
-
- -

-
-

- -

+

+ +

+
    ($template_show)" : "$description"; - $filedesc = ( $template_file == $file ) ? "$description ($template_show)" : $filedesc; - - // If we have two files of the same name prefer the one in the Template Directory - // This means that we display the correct files for child themes which overload Templates as well as Styles - if( array_key_exists($description, $template_mapping ) ) { - if ( false !== strpos( $template_file, $template_dir ) ) { - $template_mapping[ $description ] = array( $template_file, $filedesc ); - } - } else { - $template_mapping[ $description ] = array( $template_file, $filedesc ); - } + $filedesc = ( $description != $template_file ) ? "$description
    ($template_show)" : "$description"; + $filedesc = ( $template_file == $file ) ? "$description
    ($template_show)
    " : $filedesc; + $template_mapping[ $description ] = array( _get_template_edit_filename($template_file, $template_dir), $filedesc ); } ksort( $template_mapping ); while ( list( $template_sorted_key, list( $template_file, $filedesc ) ) = each( $template_mapping ) ) : ?> -
  • &theme=">
  • +
-

+

    ($style_show)" : "$description"; - $filedesc = ( $style_file == $file ) ? "$description ($style_show)" : $filedesc; - $template_mapping[ $description ] = array( $style_file, $filedesc ); + $filedesc = ( $description != $style_file ) ? "$description
    ($style_show)" : "$description"; + $filedesc = ( $style_file == $file ) ? "$description
    ($style_show)
    " : $filedesc; + $template_mapping[ $description ] = array( _get_template_edit_filename($style_file, $stylesheet_dir), $filedesc ); } ksort( $template_mapping ); while ( list( $template_sorted_key, list( $style_file, $filedesc ) ) = each( $template_mapping ) ) : ?> -
  • &theme=">
  • +
- +
-
+
+
-
+
- +
- -

+ +

+

+ "; -?> -

- + if ( is_writeable( $file ) ) : + submit_button( __( 'Update File' ), 'primary', 'submit', true, array( 'tabindex' => '2' ) ); + else : ?>

the Codex for more information.'); ?>

-

' . __('Oops, no such file exists! Double check the name and try again, merci.') . '

'; } - ?> -
 
+?> +
+ +include(ABSPATH . "wp-admin/admin-footer.php");