Ticket #2862: 2862_13.patch

File 2862_13.patch, 14.0 KB (added by Martin Kou, 15 years ago)
  • _source/lang/en.js

     
    574574                title : 'About CKEditor',
    575575                moreInfo : 'For licensing information please visit our web site:',
    576576                copy : 'Copyright © $1. All rights reserved.'
    577         }
     577        },
     578
     579        maximize : 'Maximize'
    578580};
  • _source/plugins/sourcearea/plugin.js

     
    2929                                                                holderElement.setStyle( 'position', 'relative' );
    3030
    3131                                                        // Create the source area <textarea>.
    32                                                         textarea = new CKEDITOR.dom.element( 'textarea' );
     32                                                        editor.textarea = textarea = new CKEDITOR.dom.element( 'textarea' );
    3333                                                        textarea.setAttributes(
    3434                                                                {
    3535                                                                        dir : 'ltr',
     
    127127
    128128                                                unload : function( holderElement )
    129129                                                {
    130                                                         textarea = null;
     130                                                        editor.textarea = textarea = null;
    131131
    132132                                                        if ( onResize )
    133133                                                                editor.removeListener( 'resize', onResize );
  • _source/plugins/maximize/plugin.js

     
     1/*
     2Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
     3For licensing, see LICENSE.html or http://ckeditor.com/license
     4*/
     5
     6(function()
     7{
     8        function protectFormStyles( formElement )
     9        {
     10                if ( !formElement || formElement.type != CKEDITOR.NODE_ELEMENT || formElement.getName() != 'form' )
     11                        return [];
     12
     13                var hijackRecord = [];
     14                var hijackNames = [ 'style', 'className' ];
     15                for ( var i = 0 ; i < hijackNames.length ; i++ )
     16                {
     17                        var name = hijackNames[i];
     18                        var $node = formElement.$.elements.namedItem( name );
     19                        if ( $node )
     20                        {
     21                                var hijackNode = new CKEDITOR.dom.element( $node );
     22                                hijackRecord.push( [ hijackNode, hijackNode.nextSibling ] );
     23                                hijackNode.remove();
     24                        }
     25                }
     26
     27                return hijackRecord;
     28        }
     29
     30        function restoreFormStyles( formElement, hijackRecord )
     31        {
     32                if ( !formElement || formElement.type != CKEDITOR.NODE_ELEMENT || formElement.getName() != 'form' )
     33                        return;
     34
     35                if ( hijackRecord.length > 0 )
     36                {
     37                        for ( var i = hijackRecord.length - 1 ; i >= 0 ; i-- )
     38                        {
     39                                var node = hijackRecord[i][0];
     40                                var sibling = hijackRecord[i][1];
     41                                if ( sibling )
     42                                        node.insertBefore( sibling );
     43                                else
     44                                        node.appendTo( formElement );
     45                        }
     46                }
     47        }
     48
     49        function saveStyles( element, isInsideEditor )
     50        {
     51                var data = protectFormStyles( element );
     52                var retval = {};
     53
     54                var $element = element.$;
     55
     56                if ( !isInsideEditor )
     57                {
     58                        retval[ 'class' ] = $element.className || '';
     59                        $element.className = '';
     60                }
     61
     62                retval.inline = $element.style.cssText || '';
     63                if ( !isInsideEditor )          // Reset any external styles that might interfere. (#2474)
     64                        $element.style.cssText = 'position: static; overflow: visible';
     65
     66                restoreFormStyles( data );
     67                return retval;
     68        }
     69
     70        function restoreStyles( element, savedStyles )
     71        {
     72                var data = protectFormStyles( element );
     73                var $element = element.$;
     74                if ( 'class' in savedStyles )
     75                        $element.className = savedStyles[ 'class' ];
     76                if ( 'inline' in savedStyles )
     77                        $element.style.cssText = savedStyles.inline;
     78                restoreFormStyles( data );
     79        }
     80
     81        function getResizeHandler( mainWindow, editor )
     82        {
     83                return function()
     84                {
     85                        var viewPaneSize = mainWindow.getViewPaneSize();
     86                        editor.resize( viewPaneSize.width, viewPaneSize.height );
     87                };
     88        }
     89
     90        CKEDITOR.plugins.add( 'maximize',
     91        {
     92                init : function( editor )
     93                {
     94                        var lang = editor.lang;
     95                        var mainDocument = CKEDITOR.document;
     96                        var mainWindow = mainDocument.getWindow();
     97
     98                        // Saved selection and scroll position for the editing area.
     99                        var savedSelection;
     100                        var savedScroll;
     101
     102                        // Saved scroll position for the outer window.
     103                        var outerScroll;
     104
     105                        // Saved resize handler function.
     106                        var resizeHandler = getResizeHandler( mainWindow, editor );
     107
     108                        editor.addCommand( 'maximize',
     109                                {
     110                                        modes : { wysiwyg : 1, source : 1 },
     111
     112                                        exec : function()
     113                                        {
     114                                                var container = editor.container.getChild( [ 0, 0 ] );
     115                                                var contents = mainDocument.getById( 'cke_contents_' + editor.name );
     116
     117                                                // Save current selection and scroll position in editing area.
     118                                                if ( editor.mode == 'wysiwyg' )
     119                                                {
     120                                                        savedSelection = editor.getSelection().getRanges();
     121                                                        savedScroll = editor.window.getScrollPosition();
     122                                                }
     123                                                else
     124                                                {
     125                                                        var $textarea = editor.textarea.$;
     126                                                        savedSelection = !CKEDITOR.env.ie && [ $textarea.selectionStart, $textarea.selectionEnd ];
     127                                                        savedScroll = [ $textarea.scrollLeft, $textarea.scrollTop ];
     128                                                }
     129                                               
     130                                                if ( this.state == CKEDITOR.TRISTATE_OFF )              // Go fullscreen if the state is off.
     131                                                {
     132                                                        // Add event handler for resizing.
     133                                                        mainWindow.on( 'resize', resizeHandler );
     134                                                       
     135                                                        // Save the scroll bar position.
     136                                                        outerScroll = mainWindow.getScrollPosition();
     137
     138                                                        // Save and reset the styles for the entire node tree.
     139                                                        var currentNode = editor.container;
     140                                                        while ( ( currentNode = currentNode.getParent() ) )
     141                                                        {
     142                                                                currentNode.setCustomData( 'maximize_saved_styles', saveStyles( currentNode ) );
     143                                                                currentNode.setStyle( 'z-index', editor.config.baseFloatZIndex - 1 );
     144                                                        }
     145                                                        contents.setCustomData( 'maximize_saved_styles', saveStyles( contents, true ) );
     146                                                        container.setCustomData( 'maximize_saved_styles', saveStyles( container, true ) );
     147
     148                                                        // Hide scroll bars.
     149                                                        if ( CKEDITOR.env.ie )
     150                                                        {
     151                                                                mainDocument.$.documentElement.style.overflow =
     152                                                                        mainDocument.getBody().$.style.overflow = 'hidden';
     153                                                        }
     154                                                        else
     155                                                        {
     156                                                                mainDocument.getBody().setStyles(
     157                                                                        {
     158                                                                                overflow : 'hidden',
     159                                                                                width : '0px',
     160                                                                                height : '0px'
     161                                                                        } );
     162                                                        }
     163
     164                                                        // Scroll to the top left.
     165                                                        mainWindow.$.scrollTo( 0, 0 );
     166
     167                                                        // Resize and move to top left.
     168                                                        var viewPaneSize = mainWindow.getViewPaneSize();
     169                                                        container.setStyle( 'position', 'absolute' );
     170                                                        container.$.offsetLeft;                 // SAFARI BUG: See #2066.
     171                                                        container.setStyles(
     172                                                                {
     173                                                                        'z-index' : editor.config.baseFloatZIndex - 1,
     174                                                                        left : '0px',
     175                                                                        top : '0px'
     176                                                                } );
     177                                                        editor.resize( viewPaneSize.width, viewPaneSize.height );
     178
     179                                                        // Still not top left? Fix it. (Bug #174)
     180                                                        var offset = container.getDocumentPosition();
     181                                                        container.setStyles(
     182                                                                {
     183                                                                        left : ( -1 * offset.x ) + 'px',
     184                                                                        top : ( -1 * offset.y ) + 'px'
     185                                                                } );
     186                                                }
     187                                                else if ( this.state == CKEDITOR.TRISTATE_ON )  // Restore from fullscreen if the state is on.
     188                                                {
     189                                                        // Remove event handler for resizing.
     190                                                        mainWindow.removeListener( 'resize', resizeHandler );
     191
     192                                                        // Restore CSS styles for the entire node tree.
     193                                                        var editorElements = [ contents, container ];
     194                                                        for ( var i = 0 ; i < editorElements.length ; i++ )
     195                                                        {
     196                                                                restoreStyles( editorElements[i], editorElements[i].getCustomData( 'maximize_saved_styles' ) );
     197                                                                editorElements[i].removeCustomData( 'maximize_saved_styles' );
     198                                                        }
     199                                                        var currentNode = editor.container;
     200                                                        while ( ( currentNode = currentNode.getParent() ) )
     201                                                        {
     202                                                                restoreStyles( currentNode, currentNode.getCustomData( 'maximize_saved_styles' ) );
     203                                                                currentNode.removeCustomData( 'maximize_saved_styles' );
     204                                                        }
     205
     206                                                        // Restore the window scroll position.
     207                                                        mainWindow.$.scrollTo( outerScroll.x, outerScroll.y );
     208
     209                                                        // Emit a resize event, because this time the size is modified in
     210                                                        // restoreStyles.
     211                                                        editor.fire( 'resize' );
     212                                                }
     213
     214                                                this.toggleState();
     215
     216                                                // Restore selection and scroll position in editing area.
     217                                                if ( editor.mode == 'wysiwyg' )
     218                                                {
     219                                                        editor.getSelection().selectRanges( savedSelection );
     220                                                        editor.window.$.scrollTo( savedScroll.x, savedScroll.y );
     221                                                }
     222                                                else
     223                                                {
     224                                                        if ( savedSelection )
     225                                                        {
     226                                                                $textarea.selectionStart = savedSelection[0];
     227                                                                $textarea.selectionEnd = savedSelection[1];
     228                                                        }
     229                                                        $textarea.scrollLeft = savedScroll[0];
     230                                                        $textarea.scrollTop = savedScroll[1];
     231                                                }
     232
     233                                                savedSelection = savedScroll = null;
     234                                        }
     235                                } );
     236
     237                        editor.ui.addButton( 'Maximize',
     238                                {
     239                                        label : lang.maximize,
     240                                        command : 'maximize'
     241                                } );
     242                }
     243        } );
     244})();
  • _source/plugins/toolbar/plugin.js

     
    4646                }
    4747        };
    4848
    49         var collapserFn = CKEDITOR.tools.addFunction(
    50                 function( collapser )
    51                 {
    52                         var toolbox = collapser.getPrevious();
    53 
    54                         if ( toolbox.isVisible() )
    55                         {
    56                                 toolbox.hide();
    57                                 collapser.addClass( 'cke_toolbox_collapser_min' );
    58                         }
    59                         else
    60                         {
    61                                 toolbox.show();
    62                                 collapser.removeClass( 'cke_toolbox_collapser_min' );
    63                         }
    64                 });
    65 
    6649        CKEDITOR.plugins.add( 'toolbar',
    6750        {
    6851                init : function( editor )
    6952                {
     53                        var collapserFn = CKEDITOR.tools.addFunction(
     54                                function( collapser )
     55                                {
     56                                        var toolbox = collapser.getPrevious();
     57                                        var contents = CKEDITOR.document.getById( 'cke_contents_' + editor.name );
     58                                        var topArea = CKEDITOR.document.getById( 'cke_top_' + editor.name );
     59                                        var contentHeight = parseInt( contents.$.style.height, 10 );
     60                                        var previousHeight = topArea.$.offsetHeight;
     61
     62                                        if ( toolbox.isVisible() )
     63                                        {
     64                                                toolbox.hide();
     65                                                collapser.addClass( 'cke_toolbox_collapser_min' );
     66                                        }
     67                                        else
     68                                        {
     69                                                toolbox.show();
     70                                                collapser.removeClass( 'cke_toolbox_collapser_min' );
     71                                        }
     72
     73                                        var dy = topArea.$.offsetHeight - previousHeight;
     74                                        contents.setStyle( 'height', ( contentHeight - dy ) + 'px' );
     75                                } );
     76
    7077                        var itemKeystroke = function( item, keystroke )
    7178                        {
    7279                                switch ( keystroke )
     
    276283        '/',
    277284        ['Styles','Format','Font','FontSize'],
    278285        ['TextColor','BGColor'],
    279         ['ShowBlocks','-','About']
     286        ['Maximize', 'ShowBlocks','-','About']
    280287];
    281288
    282289/**
  • _source/themes/default/theme.js

     
    163163                ( this._[ spacePrefix ] = CKEDITOR.document.getById( spacePrefix + '_' + this.name ) );
    164164        return space;
    165165};
     166
     167CKEDITOR.editor.prototype.resize = function( width, height, isContentHeight )
     168{
     169        var numberRegex = /^\d+$/;
     170        if ( numberRegex.test( width ) )
     171                width += 'px';
     172
     173        var contents = CKEDITOR.document.getById( 'cke_contents_' + this.name );
     174        var outer = contents.getAscendant( 'table' );
     175
     176        // Resize the width first.
     177        outer.setStyle( 'width', width );
     178
     179        // Get the height delta between the outer table and the content area.
     180        // If we're setting the content area's height, then we don't need the delta.
     181        var delta = isContentHeight ? 0 : ( outer.$.offsetHeight || 0 ) - ( contents.$.clientHeight || 0 );
     182       
     183        // Resize the height.
     184        contents.setStyle( 'height', ( height - delta ) + 'px' );
     185
     186        // Emit a resize event.
     187        this.fire( 'resize' );
     188};
  • _source/skins/office2003/icons.css

     
    301301{
    302302        background-position: 0 -736px;
    303303}
     304
     305.cke_skin_office2003 .cke_button_maximize .cke_icon
     306{
     307        background-position: 0 -1040px;
     308}
  • _source/skins/v2/icons.css

     
    301301{
    302302        background-position: 0 -736px;
    303303}
     304
     305.cke_skin_v2 .cke_button_maximize .cke_icon
     306{
     307        background-position: 0 -1040px;
     308}
  • _source/skins/v2/mainui.css

     
    1111        display: inline-table;
    1212}
    1313
     14.cke_skin_v2 .cke_browser_opera .cke_editor
     15{
     16        display: table;
     17}
     18
    1419.cke_skin_v2 .cke_top, .cke_skin_v2 .cke_bottom
    1520{
    1621        background-color: #efefde;
  • _source/core/config.js

     
    150150         * config.plugins = 'basicstyles,button,htmldataprocessor,toolbar,wysiwygarea';
    151151         */
    152152
    153         plugins : 'about,basicstyles,blockquote,button,clipboard,colorbutton,contextmenu,elementspath,enterkey,entities,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,newpage,pagebreak,pastefromword,pastetext,preview,print,removeformat,save,smiley,showblocks,sourcearea,stylescombo,table,tabletools,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc',
     153        plugins : 'about,basicstyles,blockquote,button,clipboard,colorbutton,contextmenu,elementspath,enterkey,entities,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,maximize,newpage,pagebreak,pastefromword,pastetext,preview,print,removeformat,save,smiley,showblocks,sourcearea,stylescombo,table,tabletools,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc',
    154154
    155155        /**
    156156         * The editor tabindex value.
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy