From ce4fb5e0157fbce77b092cb34081d232d720e6ef Mon Sep 17 00:00:00 2001 From: ryan Date: Sat, 9 Feb 2008 13:08:28 +0000 Subject: [PATCH] Move editor js to editor.js. fixes #5799 git-svn-id: http://svn.automattic.com/wordpress/trunk@6770 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/js/editor.js | 151 +++++++++++++++++++++++++++++++++ wp-admin/js/post.js | 154 +--------------------------------- wp-admin/page-new.php | 1 + wp-admin/page.php | 1 + wp-admin/post-new.php | 1 + wp-admin/post.php | 1 + wp-includes/script-loader.php | 5 +- 7 files changed, 159 insertions(+), 155 deletions(-) create mode 100644 wp-admin/js/editor.js diff --git a/wp-admin/js/editor.js b/wp-admin/js/editor.js new file mode 100644 index 000000000..019b4f7a2 --- /dev/null +++ b/wp-admin/js/editor.js @@ -0,0 +1,151 @@ +wpEditorInit = function() { + // Activate tinyMCE if it's the user's default editor + if ( ( 'undefined' == typeof wpTinyMCEConfig ) || 'tinymce' == wpTinyMCEConfig.defaultEditor ) { + document.getElementById('editorcontainer').style.padding = '0px'; + tinyMCE.execCommand("mceAddControl", true, "content"); + } else { + var H; + if ( H = tinymce.util.Cookie.getHash("TinyMCE_content_size") ) + document.getElementById('content').style.height = H.ch - 30 + 'px'; + } +}; + +switchEditors = { + + saveCallback : function(el, content, body) { + + document.getElementById(el).style.color = '#fff'; + if ( tinyMCE.activeEditor.isHidden() ) + content = document.getElementById(el).value; + else + content = this.pre_wpautop(content); + + return content; + }, + + pre_wpautop : function(content) { + // We have a TON of cleanup to do. + + // content = content.replace(/\n|\r/g, ' '); + // Remove anonymous, empty paragraphs. + content = content.replace(new RegExp('

(\\s| |
)*

', 'mg'), ''); + + // Mark

if it has any attributes. + content = content.replace(new RegExp('(]+>.*?)

', 'mg'), '$1'); + + // Get it ready for wpautop. + content = content.replace(new RegExp('\\s*

', 'mgi'), ''); + content = content.replace(new RegExp('\\s*

\\s*', 'mgi'), '\n\n'); + content = content.replace(new RegExp('\\n\\s*\\n', 'mgi'), '\n\n'); + content = content.replace(new RegExp('\\s*
\\s*', 'gi'), '\n'); + + // Fix some block element newline issues + var blocklist = 'blockquote|ul|ol|li|table|thead|tr|th|td|div|h\\d|pre'; + content = content.replace(new RegExp('\\s*<(('+blocklist+') ?[^>]*)\\s*>', 'mg'), '\n<$1>'); + content = content.replace(new RegExp('\\s*\\s*', 'mg'), '\n'); + content = content.replace(new RegExp('
  • ', 'g'), '\t
  • '); + + if ( content.indexOf(']*)>\\s*', 'g'), ""); // no pee inside object/embed + content = content.replace(new RegExp('\\s*\\s*', 'g'), ''); + } + + // Unmark special paragraph closing tags + content = content.replace(new RegExp('', 'g'), '

    \n'); + content = content.replace(new RegExp('\\s*(]+>.*

    )', 'mg'), '\n$1'); + + // Trim trailing whitespace + content = content.replace(new RegExp('\\s*$', ''), ''); + + // Hope. + return content; + }, + + go : function(id) { + var ed = tinyMCE.get(id); + var qt = document.getElementById('quicktags'); + var H = document.getElementById('edButtonHTML'); + var P = document.getElementById('edButtonPreview'); + var ta = document.getElementById(id); + var ec = document.getElementById('editorcontainer'); + + if ( ! ed || ed.isHidden() ) { + ta.style.color = '#fff'; + + this.edToggle(P, H); + edCloseAllTags(); // :-( + + qt.style.display = 'none'; + ec.style.padding = '0px'; + + ta.value = this.wpautop(ta.value); + + if ( ed ) ed.show(); + else tinyMCE.execCommand("mceAddControl", false, id); + + this.wpSetDefaultEditor( 'tinymce' ); + } else { + this.edToggle(H, P); + tinyMCE.triggerSave(); + ta.style.height = tinyMCE.activeEditor.contentAreaContainer.offsetHeight + 6 + 'px'; + + if ( tinymce.isIE6 ) + ta.style.width = tinyMCE.activeEditor.contentAreaContainer.offsetWidth - 12 + 'px'; + + ed.hide(); + ta.value = this.pre_wpautop(ta.value); + + qt.style.display = 'block'; + ec.style.padding = '6px'; + ta.style.color = ''; + + this.wpSetDefaultEditor( 'html' ); + } + }, + + edToggle : function(A, B) { + A.className = 'active'; + B.className = ''; + + B.onclick = A.onclick; + A.onclick = null; + }, + + wpSetDefaultEditor : function( editor ) { + try { + editor = escape( editor.toString() ); + } catch(err) { + editor = 'tinymce'; + } + + var userID = document.getElementById('user-id'); + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); + document.cookie = "wordpress_editor_" + userID.value + "=" + editor + "; expires=" + date.toGMTString(); + }, + + wpautop : function(pee) { + var blocklist = 'table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6]'; + + pee = pee + "\n\n"; + pee = pee.replace(new RegExp('
    \\s*
    ', 'gi'), "\n\n"); + pee = pee.replace(new RegExp('(<(?:'+blocklist+')[^>]*>)', 'gi'), "\n$1"); + pee = pee.replace(new RegExp('()', 'gi'), "$1\n\n"); + pee = pee.replace(new RegExp("\\r\\n|\\r", 'g'), "\n"); + pee = pee.replace(new RegExp("\\n\\s*\\n+", 'g'), "\n\n"); + pee = pee.replace(new RegExp('([\\s\\S]+?)\\n\\n', 'mg'), "

    $1

    \n"); + pee = pee.replace(new RegExp('

    \\s*?

    ', 'gi'), ''); + pee = pee.replace(new RegExp('

    \\s*(]*>)\\s*

    ', 'gi'), "$1"); + pee = pee.replace(new RegExp("

    (", 'gi'), "$1"); + pee = pee.replace(new RegExp('

    ]*)>', 'gi'), "

    "); + pee = pee.replace(new RegExp('

    ', 'gi'), '

    '); + pee = pee.replace(new RegExp('

    \\s*(]*>)', 'gi'), "$1"); + pee = pee.replace(new RegExp('(]*>)\\s*

    ', 'gi'), "$1"); + pee = pee.replace(new RegExp('\\s*\\n', 'gi'), "
    \n"); + pee = pee.replace(new RegExp('(]*>)\\s*
    ', 'gi'), "$1"); + pee = pee.replace(new RegExp('
    (\\s*)', 'gi'), '$1'); + pee = pee.replace(new RegExp('^((?: )*)\\s', 'mg'), '$1 '); + //pee = pee.replace(new RegExp('()(.*?)!ise', " stripslashes('$1') . stripslashes(clean_pre('$2')) . '' "); // Hmm... + return pee; + } +} diff --git a/wp-admin/js/post.js b/wp-admin/js/post.js index 81d4ff221..6e0cbe360 100644 --- a/wp-admin/js/post.js +++ b/wp-admin/js/post.js @@ -131,156 +131,4 @@ addLoadEvent( function() { return false; } ); jQuery('.categorychecklist :checkbox').change( syncChecks ).filter( ':checked' ).change(); -}); - -wpEditorInit = function() { - // Activate tinyMCE if it's the user's default editor - if ( ( 'undefined' == typeof wpTinyMCEConfig ) || 'tinymce' == wpTinyMCEConfig.defaultEditor ) { - document.getElementById('editorcontainer').style.padding = '0px'; - tinyMCE.execCommand("mceAddControl", true, "content"); - } else { - var H; - if ( H = tinymce.util.Cookie.getHash("TinyMCE_content_size") ) - document.getElementById('content').style.height = H.ch - 30 + 'px'; - } -}; - -switchEditors = { - - saveCallback : function(el, content, body) { - - document.getElementById(el).style.color = '#fff'; - if ( tinyMCE.activeEditor.isHidden() ) - content = document.getElementById(el).value; - else - content = this.pre_wpautop(content); - - return content; - }, - - pre_wpautop : function(content) { - // We have a TON of cleanup to do. - - // content = content.replace(/\n|\r/g, ' '); - // Remove anonymous, empty paragraphs. - content = content.replace(new RegExp('

    (\\s| |
    )*

    ', 'mg'), ''); - - // Mark

    if it has any attributes. - content = content.replace(new RegExp('(]+>.*?)

    ', 'mg'), '$1'); - - // Get it ready for wpautop. - content = content.replace(new RegExp('\\s*

    ', 'mgi'), ''); - content = content.replace(new RegExp('\\s*

    \\s*', 'mgi'), '\n\n'); - content = content.replace(new RegExp('\\n\\s*\\n', 'mgi'), '\n\n'); - content = content.replace(new RegExp('\\s*
    \\s*', 'gi'), '\n'); - - // Fix some block element newline issues - var blocklist = 'blockquote|ul|ol|li|table|thead|tr|th|td|div|h\\d|pre'; - content = content.replace(new RegExp('\\s*<(('+blocklist+') ?[^>]*)\\s*>', 'mg'), '\n<$1>'); - content = content.replace(new RegExp('\\s*\\s*', 'mg'), '\n'); - content = content.replace(new RegExp('
  • ', 'g'), '\t
  • '); - - if ( content.indexOf(']*)>\\s*', 'g'), ""); // no pee inside object/embed - content = content.replace(new RegExp('\\s*\\s*', 'g'), ''); - } - - // Unmark special paragraph closing tags - content = content.replace(new RegExp('', 'g'), '

    \n'); - content = content.replace(new RegExp('\\s*(]+>.*

    )', 'mg'), '\n$1'); - - // Trim trailing whitespace - content = content.replace(new RegExp('\\s*$', ''), ''); - - // Hope. - return content; - }, - - go : function(id) { - var ed = tinyMCE.get(id); - var qt = document.getElementById('quicktags'); - var H = document.getElementById('edButtonHTML'); - var P = document.getElementById('edButtonPreview'); - var ta = document.getElementById(id); - var ec = document.getElementById('editorcontainer'); - - if ( ! ed || ed.isHidden() ) { - ta.style.color = '#fff'; - - this.edToggle(P, H); - edCloseAllTags(); // :-( - - qt.style.display = 'none'; - ec.style.padding = '0px'; - - ta.value = this.wpautop(ta.value); - - if ( ed ) ed.show(); - else tinyMCE.execCommand("mceAddControl", false, id); - - this.wpSetDefaultEditor( 'tinymce' ); - } else { - this.edToggle(H, P); - tinyMCE.triggerSave(); - ta.style.height = tinyMCE.activeEditor.contentAreaContainer.offsetHeight + 6 + 'px'; - - if ( tinymce.isIE6 ) - ta.style.width = tinyMCE.activeEditor.contentAreaContainer.offsetWidth - 12 + 'px'; - - ed.hide(); - ta.value = this.pre_wpautop(ta.value); - - qt.style.display = 'block'; - ec.style.padding = '6px'; - ta.style.color = ''; - - this.wpSetDefaultEditor( 'html' ); - } - }, - - edToggle : function(A, B) { - A.className = 'active'; - B.className = ''; - - B.onclick = A.onclick; - A.onclick = null; - }, - - wpSetDefaultEditor : function( editor ) { - try { - editor = escape( editor.toString() ); - } catch(err) { - editor = 'tinymce'; - } - - var userID = document.getElementById('user-id'); - var date = new Date(); - date.setTime(date.getTime()+(10*365*24*60*60*1000)); - document.cookie = "wordpress_editor_" + userID.value + "=" + editor + "; expires=" + date.toGMTString(); - }, - - wpautop : function(pee) { - var blocklist = 'table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6]'; - - pee = pee + "\n\n"; - pee = pee.replace(new RegExp('
    \\s*
    ', 'gi'), "\n\n"); - pee = pee.replace(new RegExp('(<(?:'+blocklist+')[^>]*>)', 'gi'), "\n$1"); - pee = pee.replace(new RegExp('()', 'gi'), "$1\n\n"); - pee = pee.replace(new RegExp("\\r\\n|\\r", 'g'), "\n"); - pee = pee.replace(new RegExp("\\n\\s*\\n+", 'g'), "\n\n"); - pee = pee.replace(new RegExp('([\\s\\S]+?)\\n\\n', 'mg'), "

    $1

    \n"); - pee = pee.replace(new RegExp('

    \\s*?

    ', 'gi'), ''); - pee = pee.replace(new RegExp('

    \\s*(]*>)\\s*

    ', 'gi'), "$1"); - pee = pee.replace(new RegExp("

    (", 'gi'), "$1"); - pee = pee.replace(new RegExp('

    ]*)>', 'gi'), "

    "); - pee = pee.replace(new RegExp('

    ', 'gi'), '

    '); - pee = pee.replace(new RegExp('

    \\s*(]*>)', 'gi'), "$1"); - pee = pee.replace(new RegExp('(]*>)\\s*

    ', 'gi'), "$1"); - pee = pee.replace(new RegExp('\\s*\\n', 'gi'), "
    \n"); - pee = pee.replace(new RegExp('(]*>)\\s*
    ', 'gi'), "$1"); - pee = pee.replace(new RegExp('
    (\\s*)', 'gi'), '$1'); - pee = pee.replace(new RegExp('^((?: )*)\\s', 'mg'), '$1 '); - //pee = pee.replace(new RegExp('()(.*?)!ise', " stripslashes('$1') . stripslashes(clean_pre('$2')) . '' "); // Hmm... - return pee; - } -} +}); \ No newline at end of file diff --git a/wp-admin/page-new.php b/wp-admin/page-new.php index cb14c5a6b..f062435c9 100644 --- a/wp-admin/page-new.php +++ b/wp-admin/page-new.php @@ -5,6 +5,7 @@ $parent_file = 'post-new.php'; $editing = true; wp_enqueue_script('autosave'); wp_enqueue_script('page'); +wp_enqueue_script('editor'); wp_enqueue_script('thickbox'); wp_enqueue_script('media-upload'); diff --git a/wp-admin/page.php b/wp-admin/page.php index 0cd697970..b3ff22cc7 100644 --- a/wp-admin/page.php +++ b/wp-admin/page.php @@ -53,6 +53,7 @@ case 'edit': } wp_enqueue_script('page'); + wp_enqueue_script('editor'); wp_enqueue_script('thickbox'); wp_enqueue_script('media-upload'); diff --git a/wp-admin/post-new.php b/wp-admin/post-new.php index dc65dbe29..0f4ea001c 100644 --- a/wp-admin/post-new.php +++ b/wp-admin/post-new.php @@ -5,6 +5,7 @@ $parent_file = 'post-new.php'; $editing = true; wp_enqueue_script('autosave'); wp_enqueue_script('post'); +wp_enqueue_script('editor'); wp_enqueue_script('thickbox'); wp_enqueue_script('media-upload'); diff --git a/wp-admin/post.php b/wp-admin/post.php index 1010e9fd8..ea58b0a46 100644 --- a/wp-admin/post.php +++ b/wp-admin/post.php @@ -62,6 +62,7 @@ case 'edit': } wp_enqueue_script('post'); + wp_enqueue_script('editor'); wp_enqueue_script('thickbox'); wp_enqueue_script('media-upload'); diff --git a/wp-includes/script-loader.php b/wp-includes/script-loader.php index 6d44e7d4b..cfcc482f9 100644 --- a/wp-includes/script-loader.php +++ b/wp-includes/script-loader.php @@ -33,8 +33,8 @@ class WP_Scripts { $this->add( 'tiny_mce', '/wp-includes/js/tinymce/tiny_mce_gzip.php', false, '20080208' ); $mce_config = apply_filters('tiny_mce_config_url', '/wp-includes/js/tinymce/tiny_mce_config.php'); - $this->add( 'wp_tiny_mce', $mce_config, array('tiny_mce'), '20080129' ); - + $this->add( 'wp_tiny_mce', $mce_config, array('tiny_mce'), '20080208' ); + $this->add( 'prototype', '/wp-includes/js/prototype.js', false, '1.6'); $this->add( 'autosave', '/wp-includes/js/autosave.js', array('jquery', 'schedule'), '20080206'); @@ -179,6 +179,7 @@ class WP_Scripts { 'edit' => __('Edit'), 'cancel' => __('Cancel'), )); + $this->add( 'editor', '/wp-admin/js/editor.js', array('tiny_mce'), '20080208' ); } }