X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/ff81ee6e8304a1982a3ec4f5b134764a29d502cf..53a5df18dd17a11c18781e78349feb3e139096b4:/wp-admin/theme-editor.php?ds=sidebyside diff --git a/wp-admin/theme-editor.php b/wp-admin/theme-editor.php index 8ed51079..7d1c6189 100644 --- a/wp-admin/theme-editor.php +++ b/wp-admin/theme-editor.php @@ -1,158 +1,246 @@ '.__('You do not have sufficient permissions to edit templates for this site.').'

'); $title = __("Edit Themes"); $parent_file = 'themes.php'; -$wpvarstoreset = array('action','redirect','profile','error','warning','a','file', 'theme'); -for ($i=0; $iadd_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. Look Up takes you to a web page with reference material about that particular function.') . '

+

' . __('In the editing area the Tab key enters a tab character. To move below this area by pressing Tab, press the Esc key followed by the Tab key.') . '

+

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

+

' . sprintf( __('Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a child theme instead.'), __('http://codex.wordpress.org/Child_Themes') ) . '

' . + ( 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', 'error', 'file', 'theme' ) ); + +if ( $theme ) + $stylesheet = $theme; +else + $stylesheet = get_stylesheet(); + +$theme = wp_get_theme( $stylesheet ); + +if ( ! $theme->exists() ) + wp_die( __( 'The requested theme does not exist.' ) ); + +if ( $theme->errors() && 'theme_no_stylesheet' == $theme->errors()->get_error_code() ) + wp_die( __( 'The requested theme does not exist.' ) . ' ' . $theme->errors()->get_error_message() ); + +$allowed_files = $theme->get_files( 'php', 1 ); +$has_templates = ! empty( $allowed_files ); +$style_files = $theme->get_files( 'css' ); +$allowed_files['style.css'] = $style_files['style.css']; +$allowed_files += $style_files; + +if ( empty( $file ) ) { + $relative_file = 'style.css'; + $file = $allowed_files['style.css']; } else { - $theme = stripslashes($theme); - } - - -if ( ! isset($themes[$theme]) ) - die(__('The requested theme does not exist.')); + $relative_file = $file; + $file = $theme->get_stylesheet_directory() . '/' . $relative_file; +} -$allowed_files = array_merge($themes[$theme]['Stylesheet Files'], $themes[$theme]['Template Files']); +validate_file_to_edit( $file, $allowed_files ); +$scrollto = isset( $_REQUEST['scrollto'] ) ? (int) $_REQUEST['scrollto'] : 0; -if (empty($file)) { - $file = $allowed_files[0]; -} +switch( $action ) { +case 'update': + check_admin_referer( 'edit-theme_' . $file . $stylesheet ); + $newcontent = wp_unslash( $_POST['newcontent'] ); + $location = 'theme-editor.php?file=' . urlencode( $relative_file ) . '&theme=' . urlencode( $stylesheet ) . '&scrollto=' . $scrollto; + if ( is_writeable( $file ) ) { + //is_writable() not always reliable, check return value. see comments @ http://uk.php.net/is_writable + $f = fopen( $file, 'w+' ); + if ( $f !== false ) { + fwrite( $f, $newcontent ); + fclose( $f ); + $location .= '&updated=true'; + $theme->cache_delete(); + } + } + wp_redirect( $location ); + exit; +break; -$file = validate_file_to_edit($file, $allowed_files); -$real_file = get_real_file_to_edit($file); +default: -$file_show = basename( $file ); + require_once( ABSPATH . 'wp-admin/admin-header.php' ); -switch($action) { + update_recently_edited( $file ); -case 'update': + if ( ! is_file( $file ) ) + $error = true; - if ( !current_user_can('edit_themes') ) - die('

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

'); - - $newcontent = stripslashes($_POST['newcontent']); - $theme = urlencode($theme); - if (is_writeable($real_file)) { - $f = fopen($real_file, 'w+'); - fwrite($f, $newcontent); - fclose($f); - header("Location: theme-editor.php?file=$file&theme=$theme&a=te"); - } else { - header("Location: theme-editor.php?file=$file&theme=$theme"); - } + $content = ''; + if ( ! $error && filesize( $file ) > 0 ) { + $f = fopen($file, 'r'); + $content = fread($f, filesize($file)); - exit(); + if ( '.php' == substr( $file, strrpos( $file, '.' ) ) ) { + $functions = wp_doc_link_parse( $content ); -break; + $docs_select = ''; + } -default: - - require_once('admin-header.php'); - if ( !current_user_can('edit_themes') ) - die('

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

'); - - update_recently_edited($file); - - if (!is_file($real_file)) - $error = 1; - - if (!$error && filesize($real_file) > 0) { - $f = fopen($real_file, 'r'); - $content = fread($f, filesize($real_file)); - $content = htmlspecialchars($content); + $content = esc_textarea( $content ); } ?> - -

- -
-
- + +

+(' . $file_show . ')'; +?> +
+ +

+ +
+
+

display('Name'); if ( $description ) echo ': ' . $description; ?>

+
+
+ + + + +
+
+
+errors() ) + echo '

' . __( 'This theme is broken.' ) . ' ' . $theme->errors()->get_error_message() . '

'; ?> - - - -
- -
- ' . sprintf(__('Editing %s'), $file_show) . ''; - } else { - echo '

' . sprintf(__('Browsing %s'), $file_show) . '

'; - } - ?>
-

'%s' theme files"), $theme) ?>

+parent() ) : +?> +

+ parent() ) : ?> +

get_template() ) ) . '">' . $theme->parent()->display('Name') . '' ); ?>

+ +
    + $absolute_filename ) : + if ( 'style.css' == $filename ) + echo "\t
\n\t

" . _x( 'Styles', 'Theme stylesheets in theme editor' ) . "

\n\t
    \n"; + + $file_description = get_file_description( $absolute_filename ); + if ( $file_description != basename( $filename ) ) + $file_description .= '
    (' . $filename . ')'; + + if ( $absolute_filename == $file ) + $file_description = '' . $file_description . ''; +?> +
  • - +
-
- -
-
- - - -
- -

+

+

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

'; +else : ?> + + +
+ + + + +
+ +
+ + + +
+ + +
+ get_stylesheet() == get_template() ) : ?> +

+

+ "; -?> -

- -

+ if ( is_writeable( $file ) ) : + submit_button( __( 'Update File' ), 'primary', 'submit', true ); + 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' );