Editor: Add CodeMirror-powered code editor with syntax highlighting, linting, and auto-completion.
* Code editor is integrated into the Theme/Plugin Editor, Additional CSS in Customizer, and Custom HTML widget. Code editor is not yet integrated into the post editor, and it may not be until accessibility concerns are addressed. * The CodeMirror component in the Custom HTML widget is integrated in a similar way to TinyMCE being integrated into the Text widget, adopting the same approach for integrating dynamic JavaScript-initialized fields. * Linting is performed for JS, CSS, HTML, and JSON via JSHint, CSSLint, HTMLHint, and JSONLint respectively. Linting is not yet supported for PHP. * When user lacks `unfiltered_html` the capability, the Custom HTML widget will report any Kses-invalid elements and attributes as errors via a custom Kses rule for HTMLHint. * When linting errors are detected, the user will be prevented from saving the code until the errors are fixed, reducing instances of broken websites. * The placeholder value is removed from Custom CSS in favor of a fleshed-out section description which now auto-expands when the CSS field is empty. See #39892. * The CodeMirror library is included as `wp.CodeMirror` to prevent conflicts with any existing `CodeMirror` global. * An `wp.codeEditor.initialize()` API in JS is provided to convert a `textarea` into CodeMirror, with a `wp_enqueue_code_editor()` function in PHP to manage enqueueing the assets and settings needed to edit a given type of code. * A user preference is added to manage whether or not "syntax highlighting" is enabled. The feature is opt-out, being enabled by default. * Allowed file extensions in the theme and plugin editors have been updated to include formats which CodeMirror has modes for: `conf`, `css`, `diff`, `patch`, `html`, `htm`, `http`, `js`, `json`, `jsx`, `less`, `md`, `php`, `phtml`, `php3`, `php4`, `php5`, `php7`, `phps`, `scss`, `sass`, `sh`, `bash`, `sql`, `svg`, `xml`, `yml`, `yaml`, `txt`. Props westonruter, georgestephanis, obenland, melchoyce, pixolin, mizejewski, michelleweber, afercia, grahamarmfield, samikeijonen, rianrietveld, iseulde. See #38707. Fixes #12423, #39892. Built from https://develop.svn.wordpress.org/trunk@41376 git-svn-id: http://core.svn.wordpress.org/trunk@41209 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
@@ -1376,7 +1376,7 @@ function validate_username( $username ) {
|
||||
* Insert a user into the database.
|
||||
*
|
||||
* Most of the `$userdata` array fields have filters associated with the values. Exceptions are
|
||||
* 'ID', 'rich_editing', 'comment_shortcuts', 'admin_color', 'use_ssl',
|
||||
* 'ID', 'rich_editing', 'syntax_highlighting', 'comment_shortcuts', 'admin_color', 'use_ssl',
|
||||
* 'user_registered', and 'role'. The filters have the prefix 'pre_user_' followed by the field
|
||||
* name. An example using 'description' would have the filter called, 'pre_user_description' that
|
||||
* can be hooked into.
|
||||
@@ -1410,6 +1410,8 @@ function validate_username( $username ) {
|
||||
* @type string $description The user's biographical description.
|
||||
* @type string|bool $rich_editing Whether to enable the rich-editor for the user.
|
||||
* False if not empty.
|
||||
* @type string|bool $syntax_highlighting Whether to enable the rich code editor for the user.
|
||||
* False if not empty.
|
||||
* @type string|bool $comment_shortcuts Whether to enable comment moderation keyboard
|
||||
* shortcuts for the user. Default false.
|
||||
* @type string $admin_color Admin color scheme for the user. Default 'fresh'.
|
||||
@@ -1623,6 +1625,8 @@ function wp_insert_user( $userdata ) {
|
||||
|
||||
$meta['rich_editing'] = empty( $userdata['rich_editing'] ) ? 'true' : $userdata['rich_editing'];
|
||||
|
||||
$meta['syntax_highlighting'] = empty( $userdata['syntax_highlighting'] ) ? 'true' : $userdata['syntax_highlighting'];
|
||||
|
||||
$meta['comment_shortcuts'] = empty( $userdata['comment_shortcuts'] ) || 'false' === $userdata['comment_shortcuts'] ? 'false' : 'true';
|
||||
|
||||
$admin_color = empty( $userdata['admin_color'] ) ? 'fresh' : $userdata['admin_color'];
|
||||
@@ -1709,6 +1713,7 @@ function wp_insert_user( $userdata ) {
|
||||
* @type string $last_name The user's last name.
|
||||
* @type string $description The user's description.
|
||||
* @type bool $rich_editing Whether to enable the rich-editor for the user. False if not empty.
|
||||
* @type bool $syntax_highlighting Whether to enable the rich code editor for the user. False if not empty.
|
||||
* @type bool $comment_shortcuts Whether to enable keyboard shortcuts for the user. Default false.
|
||||
* @type string $admin_color The color scheme for a user's admin screen. Default 'fresh'.
|
||||
* @type int|bool $use_ssl Whether to force SSL on the user's admin area. 0|false if SSL is
|
||||
@@ -2035,7 +2040,7 @@ function wp_create_user($username, $password, $email = '') {
|
||||
* @return array List of user keys to be populated in wp_update_user().
|
||||
*/
|
||||
function _get_additional_user_keys( $user ) {
|
||||
$keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front', 'locale' );
|
||||
$keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'syntax_highlighting', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front', 'locale' );
|
||||
return array_merge( $keys, array_keys( wp_get_user_contact_methods( $user ) ) );
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user