home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Blogs / wordpress2.6.exe / wordpress2.6 / wp-admin / js / editor.js < prev    next >
Encoding:
Text File  |  2008-07-11  |  7.4 KB  |  181 lines

  1. wpEditorInit = function() {
  2.     // Activate tinyMCE if it's the user's default editor
  3.     if ( ( 'undefined' == typeof wpTinyMCEConfig ) || 'tinymce' == wpTinyMCEConfig.defaultEditor ) {
  4.         document.getElementById('editorcontainer').style.padding = '0px';
  5.         tinyMCE.execCommand("mceAddControl", false, "content");
  6.     } else {
  7.         var H;
  8.         if ( H = tinymce.util.Cookie.getHash("TinyMCE_content_size") )
  9.             document.getElementById('content').style.height = H.ch - 30 + 'px';
  10.     }
  11. };
  12.  
  13. switchEditors = {
  14.  
  15.     saveCallback : function(el, content, body) {
  16.  
  17.         document.getElementById(el).style.color = '#fff';
  18.         if ( tinyMCE.activeEditor.isHidden() ) 
  19.             content = document.getElementById(el).value;
  20.         else
  21.             content = this.pre_wpautop(content);
  22.  
  23.         return content;
  24.     },
  25.  
  26.     pre_wpautop : function(content) {
  27.         // We have a TON of cleanup to do. Line breaks are already stripped.
  28.  
  29.         // Protect pre|script tags
  30.         content = content.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function(a) {
  31.             a = a.replace(/<br ?\/?>[\r\n]*/g, '<wp_temp>');
  32.             return a.replace(/<\/?p( [^>]*)?>[\r\n]*/g, '<wp_temp>');
  33.         });
  34.  
  35.         // Pretty it up for the source editor
  36.         var blocklist1 = 'blockquote|ul|ol|li|table|thead|tbody|tr|th|td|div|h[1-6]|p';
  37.         content = content.replace(new RegExp('\\s*</('+blocklist1+')>\\s*', 'mg'), '</$1>\n');
  38.         content = content.replace(new RegExp('\\s*<(('+blocklist1+')[^>]*)>', 'mg'), '\n<$1>');
  39.  
  40.         // Mark </p> if it has any attributes.
  41.         content = content.replace(new RegExp('(<p [^>]+>.*?)</p>', 'mg'), '$1</p#>');
  42.  
  43.         // Sepatate <div> containing <p>
  44.         content = content.replace(new RegExp('<div([^>]*)>\\s*<p>', 'mgi'), '<div$1>\n\n');
  45.  
  46.         // Remove <p> and <br />
  47.         content = content.replace(new RegExp('\\s*<p>', 'mgi'), '');
  48.         content = content.replace(new RegExp('\\s*</p>\\s*', 'mgi'), '\n\n');
  49.         content = content.replace(new RegExp('\\n\\s*\\n', 'mgi'), '\n\n');
  50.         content = content.replace(new RegExp('\\s*<br ?/?>\\s*', 'gi'), '\n');
  51.  
  52.         // Fix some block element newline issues
  53.         content = content.replace(new RegExp('\\s*<div', 'mg'), '\n<div');
  54.         content = content.replace(new RegExp('</div>\\s*', 'mg'), '</div>\n');
  55.         content = content.replace(new RegExp('\\s*\\[caption([^\\[]+)\\[/caption\\]\\s*', 'gi'), '\n\n[caption$1[/caption]\n\n');
  56.         content = content.replace(new RegExp('caption\\]\\n\\n+\\[caption', 'g'), 'caption]\n\n[caption');
  57.  
  58.         var blocklist2 = 'blockquote|ul|ol|li|table|thead|tr|th|td|h[1-6]|pre';
  59.         content = content.replace(new RegExp('\\s*<(('+blocklist2+') ?[^>]*)\\s*>', 'mg'), '\n<$1>');
  60.         content = content.replace(new RegExp('\\s*</('+blocklist2+')>\\s*', 'mg'), '</$1>\n');
  61.         content = content.replace(new RegExp('<li([^>]*)>', 'g'), '\t<li$1>');
  62.  
  63.         if ( content.indexOf('<object') != -1 ) {
  64.             content = content.replace(new RegExp('\\s*<param([^>]*)>\\s*', 'mg'), "<param$1>");
  65.             content = content.replace(new RegExp('\\s*</embed>\\s*', 'mg'), '</embed>');
  66.         }
  67.  
  68.         // Unmark special paragraph closing tags
  69.         content = content.replace(new RegExp('</p#>', 'g'), '</p>\n');
  70.         content = content.replace(new RegExp('\\s*(<p [^>]+>.*</p>)', 'mg'), '\n$1');
  71.  
  72.         // Trim whitespace
  73.         content = content.replace(new RegExp('^\\s*', ''), '');
  74.         content = content.replace(new RegExp('[\\s\\u00a0]*$', ''), '');
  75.  
  76.         // put back the line breaks in pre|script
  77.         content = content.replace(/<wp_temp>/g, '\n');
  78.  
  79.         // Hope.
  80.         return content;
  81.     },
  82.  
  83.     go : function(id) {
  84.         var ed = tinyMCE.get(id);
  85.         var qt = document.getElementById('quicktags');
  86.         var H = document.getElementById('edButtonHTML');
  87.         var P = document.getElementById('edButtonPreview');
  88.         var ta = document.getElementById(id);
  89.         var ec = document.getElementById('editorcontainer');
  90.  
  91.         if ( ! ed || ed.isHidden() ) {
  92.             ta.style.color = '#fff';
  93.  
  94.             this.edToggle(P, H);
  95.             edCloseAllTags(); // :-(
  96.  
  97.             qt.style.display = 'none';
  98.             ec.style.padding = '0px';
  99.             ta.style.padding = '0px';
  100.  
  101.             ta.value = this.wpautop(ta.value);
  102.  
  103.             if ( ed ) ed.show();
  104.             else tinyMCE.execCommand("mceAddControl", false, id);
  105.  
  106.             this.wpSetDefaultEditor('tinymce');
  107.         } else {
  108.             this.edToggle(H, P);
  109.             ta.style.height = ed.getContentAreaContainer().offsetHeight + 6 + 'px';
  110.  
  111.             ed.hide();
  112.             qt.style.display = 'block';
  113.  
  114.             if ( tinymce.isIE6 ) {
  115.                 ta.style.width = '98%';
  116.                 ec.style.padding = '0px';
  117.                 ta.style.padding = '6px';
  118.             } else {
  119.                 ta.style.width = '100%';
  120.                 ec.style.padding = '6px';
  121.             }
  122.  
  123.             ta.style.color = '';
  124.             this.wpSetDefaultEditor('html');
  125.         }
  126.     },
  127.  
  128.     edToggle : function(A, B) {
  129.         A.className = 'active';
  130.         B.className = '';
  131.  
  132.         B.onclick = A.onclick;
  133.         A.onclick = null;
  134.     },
  135.  
  136.     wpSetDefaultEditor : function(editor) {
  137.         try {
  138.             editor = escape( editor.toString() );
  139.         } catch(err) {
  140.             editor = 'tinymce';
  141.         }
  142.  
  143.         var userID = document.getElementById('user-id');
  144.         var date = new Date();
  145.         date.setTime(date.getTime()+(10*365*24*60*60*1000));
  146.         document.cookie = "wordpress_editor_" + userID.value + "=" + editor + "; expires=" + date.toGMTString();
  147.     },
  148.  
  149.     wpautop : function(pee) {
  150.         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]';
  151.  
  152.         pee = pee + "\n\n";
  153.         pee = pee.replace(new RegExp('<br />\\s*<br />', 'gi'), "\n\n");
  154.         pee = pee.replace(new RegExp('(<(?:'+blocklist+')[^>]*>)', 'gi'), "\n$1");
  155.         pee = pee.replace(new RegExp('(</(?:'+blocklist+')>)', 'gi'), "$1\n\n");
  156.         pee = pee.replace(new RegExp("\\r\\n|\\r", 'g'), "\n");
  157.         pee = pee.replace(new RegExp("\\n\\s*\\n+", 'g'), "\n\n");
  158.         pee = pee.replace(new RegExp('([\\s\\S]+?)\\n\\n', 'mg'), "<p>$1</p>\n");
  159.         pee = pee.replace(new RegExp('<p>\\s*?</p>', 'gi'), '');
  160.         pee = pee.replace(new RegExp('<p>\\s*(</?(?:'+blocklist+')[^>]*>)\\s*</p>', 'gi'), "$1");
  161.         pee = pee.replace(new RegExp("<p>(<li.+?)</p>", 'gi'), "$1");
  162.         pee = pee.replace(new RegExp('<p>\\s*<blockquote([^>]*)>', 'gi'), "<blockquote$1><p>");
  163.         pee = pee.replace(new RegExp('</blockquote>\\s*</p>', 'gi'), '</p></blockquote>');
  164.         pee = pee.replace(new RegExp('<p>\\s*(</?(?:'+blocklist+')[^>]*>)', 'gi'), "$1");
  165.         pee = pee.replace(new RegExp('(</?(?:'+blocklist+')[^>]*>)\\s*</p>', 'gi'), "$1");
  166.         pee = pee.replace(new RegExp('\\s*\\n', 'gi'), "<br />\n");
  167.         pee = pee.replace(new RegExp('(</?(?:'+blocklist+')[^>]*>)\\s*<br />', 'gi'), "$1");
  168.         pee = pee.replace(new RegExp('<br />(\\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)', 'gi'), '$1');
  169.         pee = pee.replace(new RegExp('(?:<p>|<br ?/?>)*\\s*\\[caption([^\\[]+)\\[/caption\\]\\s*(?:</p>|<br ?/?>)*', 'gi'), '[caption$1[/caption]');
  170.         // pee = pee.replace(new RegExp('^((?: )*)\\s', 'mg'), '$1 ');
  171.  
  172.         // Fix the pre|script tags       
  173.         pee = pee.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function(a) {
  174.             a = a.replace(/<br ?\/?>[\r\n]*/g, '\n');
  175.             return a.replace(/<\/?p( [^>]*)?>[\r\n]*/g, '\n');
  176.         });
  177.  
  178.         return pee;
  179.     }
  180. }
  181.