From 7086111ad4dd997e12a3220e1ee60c9b9bcf0bb8 Mon Sep 17 00:00:00 2001 From: Charles Date: Tue, 7 Jan 2020 13:06:14 +0100 Subject: Added wordpress --- srcs/wordpress/wp-admin/theme-editor.php | 381 +++++++++++++++++++++++++++++++ 1 file changed, 381 insertions(+) create mode 100644 srcs/wordpress/wp-admin/theme-editor.php (limited to 'srcs/wordpress/wp-admin/theme-editor.php') diff --git a/srcs/wordpress/wp-admin/theme-editor.php b/srcs/wordpress/wp-admin/theme-editor.php new file mode 100644 index 0000000..c958353 --- /dev/null +++ b/srcs/wordpress/wp-admin/theme-editor.php @@ -0,0 +1,381 @@ +' . __( 'Sorry, you are not allowed to edit templates for this site.' ) . '

' ); +} + +$title = __( 'Edit Themes' ); +$parent_file = 'themes.php'; + +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 the Select button. A list then appears of the theme’s 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.' ) . '

' . + '

' . __( 'When using a keyboard to navigate:' ) . '

' . + '' . + '

' . __( '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( + /* translators: %s: Link to documentation on child themes. */ + __( 'Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a child theme instead.' ), + __( 'https://developer.wordpress.org/themes/advanced-topics/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' ) . '

' +); + +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 = array(); +$style_files = array(); +$has_templates = false; + +$file_types = wp_get_theme_file_editable_extensions( $theme ); + +foreach ( $file_types as $type ) { + switch ( $type ) { + case 'php': + $allowed_files += $theme->get_files( 'php', -1 ); + $has_templates = ! empty( $allowed_files ); + break; + case 'css': + $style_files = $theme->get_files( 'css', -1 ); + $allowed_files['style.css'] = $style_files['style.css']; + $allowed_files += $style_files; + break; + default: + $allowed_files += $theme->get_files( $type, -1 ); + break; + } +} + +// Move functions.php and style.css to the top. +if ( isset( $allowed_files['functions.php'] ) ) { + $allowed_files = array( 'functions.php' => $allowed_files['functions.php'] ) + $allowed_files; +} +if ( isset( $allowed_files['style.css'] ) ) { + $allowed_files = array( 'style.css' => $allowed_files['style.css'] ) + $allowed_files; +} + +if ( empty( $file ) ) { + $relative_file = 'style.css'; + $file = $allowed_files['style.css']; +} else { + $relative_file = wp_unslash( $file ); + $file = $theme->get_stylesheet_directory() . '/' . $relative_file; +} + +validate_file_to_edit( $file, $allowed_files ); + +// Handle fallback editing of file when JavaScript is not available. +$edit_error = null; +$posted_content = null; +if ( 'POST' === $_SERVER['REQUEST_METHOD'] ) { + $r = wp_edit_theme_plugin_file( wp_unslash( $_POST ) ); + if ( is_wp_error( $r ) ) { + $edit_error = $r; + if ( check_ajax_referer( 'edit-theme_' . $stylesheet . '_' . $relative_file, 'nonce', false ) && isset( $_POST['newcontent'] ) ) { + $posted_content = wp_unslash( $_POST['newcontent'] ); + } + } else { + wp_redirect( + add_query_arg( + array( + 'a' => 1, // This means "success" for some reason. + 'theme' => $stylesheet, + 'file' => $relative_file, + ), + admin_url( 'theme-editor.php' ) + ) + ); + exit; + } +} + + $settings = array( + 'codeEditor' => wp_enqueue_code_editor( compact( 'file' ) ), + ); + wp_enqueue_script( 'wp-theme-plugin-editor' ); + wp_add_inline_script( 'wp-theme-plugin-editor', sprintf( 'jQuery( function( $ ) { wp.themePluginEditor.init( $( "#template" ), %s ); } )', wp_json_encode( $settings ) ) ); + wp_add_inline_script( 'wp-theme-plugin-editor', 'wp.themePluginEditor.themeOrPlugin = "theme";' ); + + require_once( ABSPATH . 'wp-admin/admin-header.php' ); + + update_recently_edited( $file ); + + if ( ! is_file( $file ) ) { + $error = true; + } + + $content = ''; + if ( ! empty( $posted_content ) ) { + $content = $posted_content; + } elseif ( ! $error && filesize( $file ) > 0 ) { + $f = fopen( $file, 'r' ); + $content = fread( $f, filesize( $file ) ); + + if ( '.php' == substr( $file, strrpos( $file, '.' ) ) ) { + $functions = wp_doc_link_parse( $content ); + + $docs_select = ''; + } + + $content = esc_textarea( $content ); + } + + $file_description = get_file_description( $relative_file ); + $file_show = array_search( $file, array_filter( $allowed_files ) ); + $description = esc_html( $file_description ); + if ( $file_description != $file_show ) { + $description .= ' (' . esc_html( $file_show ) . ')'; + } + ?> +
+

+ + +
+

+
+ +
+

+
get_error_message() ? $edit_error->get_error_message() : $edit_error->get_error_code() ); ?>
+
+ + +
+

+

+ built-in CSS editor.' ), + esc_url( add_query_arg( 'autofocus[section]', 'custom_css', admin_url( 'customize.php' ) ) ) + ); + ?> +

+
+ + +
+
+

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

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

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

'; +} +?> +
+

+
    + parent() ) && $theme->parent() ) : ?> +
  • + %s', + self_admin_url( 'theme-editor.php?theme=' . urlencode( $theme->get_template() ) ), + $theme->parent()->display( 'Name' ) + ) + ); + ?> +
  • + +
  • +
      + +
    +
  • +
+
+ +

' . __( 'File does not exist! Please double check the name and try again.' ) . '

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

+ + + +

+
+ +
+ +

+ + +

+ +

+ Changing File Permissions for more information.' ), + __( 'https://wordpress.org/support/article/changing-file-permissions/' ) + ); + ?> +

+ +
+ +
+ +
+ + + +