]> scripts.mit.edu Git - autoinstalls/wordpress.git/blob - wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin.dev.js
Wordpress 3.3
[autoinstalls/wordpress.git] / wp-includes / js / tinymce / plugins / wpfullscreen / editor_plugin.dev.js
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 })();