Ticket #5735: fullscreen.diff

File fullscreen.diff, 9.9 kB (added by andy, 7 months ago)
  • wp-includes/js/tinymce/plugins/fullscreen/editor_plugin.js

    old new  
     1/** 
     2 * $Id: editor_plugin_src.js 544 2008-01-17 13:07:00Z spocke $ 
     3 * 
     4 * @author Moxiecode 
     5 * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved. 
     6 */ 
     7 
     8(function() { 
     9        var DOM = tinymce.DOM; 
     10 
     11        tinymce.create('tinymce.plugins.FullScreenPlugin', { 
     12                init : function(ed, url) { 
     13                        var t = this, s = {}, vp; 
     14 
     15                        t.editor = ed; 
     16 
     17                        // Register commands 
     18                        ed.addCommand('mceFullScreen', function() { 
     19                                var win, de = document.documentElement; 
     20 
     21                                if (ed.getParam('fullscreen_is_enabled')) { 
     22                                        if (ed.getParam('fullscreen_new_window')) 
     23                                                closeFullscreen(); // Call to close in new window 
     24                                        else { 
     25                                                window.setTimeout(function() { 
     26                                                        tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent({format : 'raw'}), {format : 'raw'}); 
     27                                                        tinyMCE.remove(ed); 
     28                                                        DOM.remove('mce_fullscreen_container'); 
     29                                                        de.style.overflow = ed.getParam('fullscreen_html_overflow'); 
     30                                                        DOM.setStyle(document.body, 'overflow', ed.getParam('fullscreen_overflow')); 
     31                                                        window.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly')); 
     32                                                }, 10); 
     33                                        } 
     34 
     35                                        return; 
     36                                } 
     37 
     38                                if (ed.getParam('fullscreen_new_window')) { 
     39                                        win = window.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=no,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight); 
     40                                        try { 
     41                                                win.resizeTo(screen.availWidth, screen.availHeight); 
     42                                        } catch (e) { 
     43                                                // Ignore 
     44                                        } 
     45                                } else { 
     46                                        s.fullscreen_overflow = DOM.getStyle(document.body, 'overflow', 1) || 'auto'; 
     47                                        s.fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1); 
     48                                        vp = DOM.getViewPort(); 
     49                                        s.fullscreen_scrollx = vp.x; 
     50                                        s.fullscreen_scrolly = vp.y; 
     51 
     52                                        // Fixes an Opera bug where the scrollbars doesn't reappear 
     53                                        if (tinymce.isOpera && s.fullscreen_overflow == 'visible') 
     54                                                s.fullscreen_overflow = 'auto'; 
     55 
     56                                        // Fixes an IE bug where horizontal scrollbars would appear 
     57                                        if (tinymce.isIE && s.fullscreen_overflow == 'scroll') 
     58                                                s.fullscreen_overflow = 'auto'; 
     59 
     60                                        if (s.fullscreen_overflow == '0px') 
     61                                                s.fullscreen_overflow = ''; 
     62 
     63                                        DOM.setStyle(document.body, 'overflow', 'hidden'); 
     64                                        de.style.overflow = 'hidden'; //Fix for IE6/7 
     65                                        vp = DOM.getViewPort(); 
     66                                        window.scrollTo(0, 0); 
     67 
     68                                        if (tinymce.isIE) 
     69                                                vp.h -= 1; 
     70 
     71                                        n = DOM.add(document.body, 'div', {id : 'mce_fullscreen_container', style : 'position:absolute;top:0;left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:150;'}); 
     72                                        DOM.add(n, 'div', {id : 'mce_fullscreen'}); 
     73 
     74                                        tinymce.each(ed.settings, function(v, n) { 
     75                                                s[n] = v; 
     76                                        }); 
     77 
     78                                        s.id = 'mce_fullscreen'; 
     79                                        s.width = n.clientWidth; 
     80                                        s.height = n.clientHeight - 15; 
     81                                        s.fullscreen_is_enabled = true; 
     82                                        s.fullscreen_editor_id = ed.id; 
     83                                        s.theme_advanced_resizing = false; 
     84 
     85                                        tinymce.each(ed.getParam('fullscreen_settings'), function(v, k) { 
     86                                                s[k] = v; 
     87                                        }); 
     88 
     89                                        if (s.theme_advanced_toolbar_location === 'external') 
     90                                                s.theme_advanced_toolbar_location = 'top'; 
     91 
     92                                        t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s); 
     93                                        t.fullscreenEditor.onInit.add(function() { 
     94                                                t.fullscreenEditor.setContent(ed.getContent({format : 'raw', no_events : 1}), {format : 'raw', no_events : 1}); 
     95                                        }); 
     96 
     97                                        t.fullscreenEditor.render(); 
     98                                        tinyMCE.add(t.fullscreenEditor); 
     99 
     100                                        t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container'); 
     101                                        t.fullscreenElement.update(); 
     102                                        //document.body.overflow = 'hidden'; 
     103                                } 
     104                        }); 
     105 
     106                        // Register buttons 
     107                        ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'mceFullScreen'}); 
     108 
     109                        ed.onNodeChange.add(function(ed, cm) { 
     110                                cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled')); 
     111                        }); 
     112                }, 
     113 
     114                getInfo : function() { 
     115                        return { 
     116                                longname : 'Fullscreen', 
     117                                author : 'Moxiecode Systems AB', 
     118                                authorurl : 'http://tinymce.moxiecode.com', 
     119                                infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen', 
     120                                version : tinymce.majorVersion + "." + tinymce.minorVersion 
     121                        }; 
     122                } 
     123        }); 
     124 
     125        // Register plugin 
     126        tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin); 
     127})(); 
  • wp-includes/js/tinymce/plugins/fullscreen/fullscreen.htm

    old new  
     1<html xmlns="http://www.w3.org/1999/xhtml"> 
     2<head> 
     3        <title>{$lang_fullscreen_title}</title> 
     4        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
     5        <script type="text/javascript" src="../../tiny_mce.js"></script> 
     6        <script type="text/javascript"> 
     7                function patchCallback(settings, key) { 
     8                        if (settings[key]) 
     9                                settings[key] = "window.opener." + settings[key]; 
     10                } 
     11 
     12                var settings = {}, paSe = window.opener.tinyMCE.activeEditor.settings; 
     13 
     14                // Clone array 
     15                for (var n in paSe) 
     16                        settings[n] = paSe[n]; 
     17 
     18                // Override options for fullscreen 
     19                for (var n in paSe.fullscreen_settings) 
     20                        settings[n] = paSe.fullscreen_settings[n]; 
     21 
     22                // Patch callbacks, make them point to window.opener 
     23                patchCallback(settings, 'urlconverter_callback'); 
     24                patchCallback(settings, 'insertlink_callback'); 
     25                patchCallback(settings, 'insertimage_callback'); 
     26                patchCallback(settings, 'setupcontent_callback'); 
     27                patchCallback(settings, 'save_callback'); 
     28                patchCallback(settings, 'onchange_callback'); 
     29                patchCallback(settings, 'init_instance_callback'); 
     30                patchCallback(settings, 'file_browser_callback'); 
     31                patchCallback(settings, 'cleanup_callback'); 
     32                patchCallback(settings, 'execcommand_callback'); 
     33                patchCallback(settings, 'oninit'); 
     34 
     35                // Set options 
     36                delete settings.id; 
     37                settings['mode'] = 'exact'; 
     38                settings['elements'] = 'fullscreenarea'; 
     39                settings['add_unload_trigger'] = false; 
     40                settings['ask'] = false; 
     41                settings['document_base_url'] = window.opener.tinyMCE.activeEditor.documentBaseURI.getURI(); 
     42                settings['fullscreen_is_enabled'] = true; 
     43                settings['fullscreen_editor_id'] = window.opener.tinyMCE.activeEditor.id; 
     44                settings['theme_advanced_resizing'] = false; 
     45 
     46                function unloadHandler(e) { 
     47                        moveContent(); 
     48                } 
     49 
     50                function moveContent() { 
     51                        window.opener.tinyMCE.activeEditor.setContent(tinyMCE.activeEditor.getContent({format : 'raw'})); 
     52                } 
     53 
     54                function closeFullscreen() { 
     55                        moveContent(); 
     56                        window.close(); 
     57                } 
     58 
     59                // Add onunload 
     60                tinymce.dom.Event.add(window, "beforeunload", unloadHandler); 
     61 
     62                function doParentSubmit() { 
     63                        moveContent(); 
     64 
     65                        if (window.opener.tinyMCE.selectedInstance.formElement.form) 
     66                                window.opener.tinyMCE.selectedInstance.formElement.form.submit(); 
     67 
     68                        window.close(); 
     69 
     70                        return false; 
     71                } 
     72 
     73                function init() { 
     74                        var e = document.getElementById('fullscreenarea'); 
     75                        e.value = window.opener.tinyMCE.activeEditor.getContent({format : 'raw'}); 
     76                        settings['width'] = e.clientWidth; 
     77                        settings['height'] = e.clientHeight; 
     78                        tinyMCE.init(settings); 
     79                } 
     80        </script> 
     81        <base target="_self" /> 
     82</head> 
     83<body onload="init();" style="margin:0; overflow:hidden; height:100%;" scrolling="no" scroll="no"> 
     84<form onsubmit="doParentSubmit();" style="height: 100%"> 
     85<textarea id="fullscreenarea" style="width:100%; height:100%"></textarea> 
     86</form> 
     87</body> 
     88</html> 
  • wp-includes/js/tinymce/tiny_mce_config.php

    old new  
    2727         
    2828        $invalid_elements = apply_filters('mce_invalid_elements', ''); 
    2929 
    30         $plugins = array( 'safari', 'inlinepopups', 'autosave', 'spellchecker', 'paste', 'wordpress', 'wphelp', 'media' ); 
     30        $plugins = array( 'safari', 'inlinepopups', 'autosave', 'spellchecker', 'paste', 'wordpress', 'wphelp', 'media', 'fullscreen' ); 
    3131        $plugins = apply_filters('mce_plugins', $plugins); 
    3232        $plugins = implode($plugins, ','); 
    3333 
    3434        $mce_buttons = apply_filters('mce_buttons', array('bold', 'italic', 'strikethrough', 'separator', 'bullist', 'numlist', 'outdent', 'indent', 'separator', 'justifyleft', 'justifycenter', 'justifyright', 'separator', 'link', 'unlink', 'image', 'wp_more', 'separator', 'spellchecker', 'separator', 'wp_help', 'wp_adv', 'wp_adv_start', 'wp_adv_end')); 
    3535        $mce_buttons = implode($mce_buttons, ','); 
    3636 
    37         $mce_buttons_2 = apply_filters('mce_buttons_2', array('formatselect', 'underline', 'justifyfull', 'forecolor', 'media', 'separator', 'pastetext', 'pasteword', 'separator', 'removeformat', 'cleanup', 'separator', 'charmap', 'separator', 'undo', 'redo')); 
     37        $mce_buttons_2 = apply_filters('mce_buttons_2', array('formatselect', 'underline', 'justifyfull', 'forecolor', 'media', 'separator', 'pastetext', 'pasteword', 'separator', 'removeformat', 'cleanup', 'separator', 'charmap', 'separator', 'undo', 'redo', 'fullscreen')); 
    3838        $mce_buttons_2 = implode($mce_buttons_2, ','); 
    3939 
    4040        $mce_buttons_3 = apply_filters('mce_buttons_3', array());