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