]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-includes/js/tinymce/plugins/fullscreen/plugin.js
WordPress 3.9
[autoinstalls/wordpress.git] / wp-includes / js / tinymce / plugins / fullscreen / plugin.js
diff --git a/wp-includes/js/tinymce/plugins/fullscreen/plugin.js b/wp-includes/js/tinymce/plugins/fullscreen/plugin.js
new file mode 100644 (file)
index 0000000..e518701
--- /dev/null
@@ -0,0 +1,136 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('fullscreen', function(editor) {
+       var fullscreenState = false, DOM = tinymce.DOM, iframeWidth, iframeHeight, resizeHandler;
+       var containerWidth, containerHeight;
+
+       if (editor.settings.inline) {
+               return;
+       }
+
+       function getWindowSize() {
+               var w, h, win = window, doc = document;
+               var body = doc.body;
+
+               // Old IE
+               if (body.offsetWidth) {
+                       w = body.offsetWidth;
+                       h = body.offsetHeight;
+               }
+
+               // Modern browsers
+               if (win.innerWidth && win.innerHeight) {
+                       w = win.innerWidth;
+                       h = win.innerHeight;
+               }
+
+               return {w: w, h: h};
+       }
+
+       function toggleFullscreen() {
+               var body = document.body, documentElement = document.documentElement, editorContainerStyle;
+               var editorContainer, iframe, iframeStyle;
+
+               function resize() {
+                       DOM.setStyle(iframe, 'height', getWindowSize().h - (editorContainer.clientHeight - iframe.clientHeight));
+               }
+
+               fullscreenState = !fullscreenState;
+
+               editorContainer = editor.getContainer();
+               editorContainerStyle = editorContainer.style;
+               iframe = editor.getContentAreaContainer().firstChild;
+               iframeStyle = iframe.style;
+
+               if (fullscreenState) {
+                       iframeWidth = iframeStyle.width;
+                       iframeHeight = iframeStyle.height;
+                       iframeStyle.width = iframeStyle.height = '100%';
+                       containerWidth = editorContainerStyle.width;
+                       containerHeight = editorContainerStyle.height;
+                       editorContainerStyle.width = editorContainerStyle.height = '';
+
+                       DOM.addClass(body, 'mce-fullscreen');
+                       DOM.addClass(documentElement, 'mce-fullscreen');
+                       DOM.addClass(editorContainer, 'mce-fullscreen');
+
+                       DOM.bind(window, 'resize', resize);
+                       resize();
+                       resizeHandler = resize;
+               } else {
+                       iframeStyle.width = iframeWidth;
+                       iframeStyle.height = iframeHeight;
+
+                       if (containerWidth) {
+                               editorContainerStyle.width = containerWidth;
+                       }
+
+                       if (containerHeight) {
+                               editorContainerStyle.height = containerHeight;
+                       }
+
+                       DOM.removeClass(body, 'mce-fullscreen');
+                       DOM.removeClass(documentElement, 'mce-fullscreen');
+                       DOM.removeClass(editorContainer, 'mce-fullscreen');
+                       DOM.unbind(window, 'resize', resizeHandler);
+               }
+
+               editor.fire('FullscreenStateChanged', {state: fullscreenState});
+       }
+
+       editor.on('init', function() {
+               editor.addShortcut('Ctrl+Alt+F', '', toggleFullscreen);
+       });
+
+       editor.on('remove', function() {
+               if (resizeHandler) {
+                       DOM.unbind(window, 'resize', resizeHandler);
+               }
+       });
+
+       editor.addCommand('mceFullScreen', toggleFullscreen);
+
+       editor.addMenuItem('fullscreen', {
+               text: 'Fullscreen',
+               shortcut: 'Ctrl+Alt+F',
+               selectable: true,
+               onClick: toggleFullscreen,
+               onPostRender: function() {
+                       var self = this;
+
+                       editor.on('FullscreenStateChanged', function(e) {
+                               self.active(e.state);
+                       });
+               },
+               context: 'view'
+       });
+
+       editor.addButton('fullscreen', {
+               tooltip: 'Fullscreen',
+               shortcut: 'Ctrl+Alt+F',
+               onClick: toggleFullscreen,
+               onPostRender: function() {
+                       var self = this;
+
+                       editor.on('FullscreenStateChanged', function(e) {
+                               self.active(e.state);
+                       });
+               }
+       });
+
+       return {
+               isFullscreen: function() {
+                       return fullscreenState;
+               }
+       };
+});
\ No newline at end of file