| [ Index ] |
PHP Cross Reference of WordPress |
[Summary view] [Print] [Text view]
1 /** 2 * WP Fullscreen TinyMCE plugin 3 * 4 * Contains code from Moxiecode Systems AB released under LGPL License http://tinymce.moxiecode.com/license 5 */ 6 7 (function() { 8 tinymce.create('tinymce.plugins.wpFullscreenPlugin', { 9 10 init : function(ed, url) { 11 var t = this, oldHeight = 0, s = {}, DOM = tinymce.DOM, resized = false; 12 13 // Register commands 14 ed.addCommand('wpFullScreenClose', function() { 15 // this removes the editor, content has to be saved first with tinyMCE.execCommand('wpFullScreenSave'); 16 if ( ed.getParam('wp_fullscreen_is_enabled') ) { 17 DOM.win.setTimeout(function() { 18 tinyMCE.remove(ed); 19 DOM.remove('wp_mce_fullscreen_parent'); 20 tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings 21 }, 10); 22 } 23 }); 24 25 ed.addCommand('wpFullScreenSave', function() { 26 var ed = tinyMCE.get('wp_mce_fullscreen'), edd; 27 28 ed.focus(); 29 edd = tinyMCE.get( ed.getParam('wp_fullscreen_editor_id') ); 30 31 edd.setContent( ed.getContent({format : 'raw'}), {format : 'raw'} ); 32 }); 33 34 ed.addCommand('wpFullScreenInit', function() { 35 var d, b, fsed; 36 37 ed = tinymce.get('content'); 38 d = ed.getDoc(); 39 b = d.body; 40 41 tinyMCE.oldSettings = tinyMCE.settings; // Store old settings 42 43 tinymce.each(ed.settings, function(v, n) { 44 s[n] = v; 45 }); 46 47 s.id = 'wp_mce_fullscreen'; 48 s.wp_fullscreen_is_enabled = true; 49 s.wp_fullscreen_editor_id = ed.id; 50 s.theme_advanced_resizing = false; 51 s.theme_advanced_statusbar_location = 'none'; 52 s.content_css = s.content_css ? s.content_css + ',' + s.wp_fullscreen_content_css : s.wp_fullscreen_content_css; 53 s.height = tinymce.isIE ? b.scrollHeight : b.offsetHeight; 54 55 tinymce.each(ed.getParam('wp_fullscreen_settings'), function(v, k) { 56 s[k] = v; 57 }); 58 59 fsed = new tinymce.Editor('wp_mce_fullscreen', s); 60 fsed.onInit.add(function(edd) { 61 var DOM = tinymce.DOM, buttons = DOM.select('a.mceButton', DOM.get('wp-fullscreen-buttons')); 62 63 if ( !ed.isHidden() ) 64 edd.setContent( ed.getContent() ); 65 else 66 edd.setContent( switchEditors.wpautop( edd.getElement().value ) ); 67 68 setTimeout(function(){ // add last 69 edd.onNodeChange.add(function(ed, cm, e){ 70 tinymce.each(buttons, function(c) { 71 var btn, cls; 72 73 if ( btn = DOM.get( 'wp_mce_fullscreen_' + c.id.substr(6) ) ) { 74 cls = btn.className; 75 76 if ( cls ) 77 c.className = cls; 78 } 79 }); 80 }); 81 }, 1000); 82 83 edd.dom.addClass(edd.getBody(), 'wp-fullscreen-editor'); 84 edd.focus(); 85 }); 86 87 fsed.render(); 88 89 if ( 'undefined' != fullscreen ) { 90 fsed.dom.bind( fsed.dom.doc, 'mousemove', function(e){ 91 fullscreen.bounder( 'showToolbar', 'hideToolbar', 2000, e ); 92 }); 93 } 94 }); 95 96 // Register buttons 97 if ( 'undefined' != fullscreen ) { 98 ed.addButton('wp_fullscreen', { 99 title : 'fullscreen.desc', 100 onclick : function(){ fullscreen.on(); } 101 }); 102 } 103 104 // END fullscreen 105 //---------------------------------------------------------------- 106 // START autoresize 107 108 if ( ed.getParam('fullscreen_is_enabled') || !ed.getParam('wp_fullscreen_is_enabled') ) 109 return; 110 111 /** 112 * This method gets executed each time the editor needs to resize. 113 */ 114 function resize() { 115 if ( resized ) 116 return; 117 118 var d = ed.getDoc(), DOM = tinymce.DOM, resizeHeight, myHeight; 119 120 // Get height differently depending on the browser used 121 if ( tinymce.isIE ) 122 myHeight = d.body.scrollHeight; 123 else 124 myHeight = d.documentElement.offsetHeight; 125 126 // Don't make it smaller than 300px 127 resizeHeight = (myHeight > 300) ? myHeight : 300; 128 129 // Resize content element 130 if ( oldHeight != resizeHeight ) { 131 oldHeight = resizeHeight; 132 resized = true; 133 setTimeout(function(){ resized = false; }, 100); 134 135 DOM.setStyle(DOM.get(ed.id + '_ifr'), 'height', resizeHeight + 'px'); 136 } 137 }; 138 139 // Add appropriate listeners for resizing content area 140 ed.onInit.add(function(ed, l) { 141 ed.onChange.add(resize); 142 ed.onSetContent.add(resize); 143 ed.onPaste.add(resize); 144 ed.onKeyUp.add(resize); 145 ed.onPostRender.add(resize); 146 147 ed.getBody().style.overflowY = "hidden"; 148 }); 149 150 if (ed.getParam('autoresize_on_init', true)) { 151 ed.onLoadContent.add(function(ed, l) { 152 // Because the content area resizes when its content CSS loads, 153 // and we can't easily add a listener to its onload event, 154 // we'll just trigger a resize after a short loading period 155 setTimeout(function() { 156 resize(); 157 }, 1200); 158 }); 159 } 160 161 // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample'); 162 ed.addCommand('wpAutoResize', resize); 163 }, 164 165 getInfo : function() { 166 return { 167 longname : 'WP Fullscreen', 168 author : 'WordPress', 169 authorurl : 'http://wordpress.org', 170 infourl : '', 171 version : '1.0' 172 }; 173 } 174 }); 175 176 // Register plugin 177 tinymce.PluginManager.add('wpfullscreen', tinymce.plugins.wpFullscreenPlugin); 178 })();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Sat Feb 18 03:55:58 2012 | Hosted by follow the white rabbit. |