Ticket #2988: 2988_ref.patch

File 2988_ref.patch, 25.9 KB (added by Sa'ar Zac Elias, 9 years ago)

INCOMPLETE implementation of the plugin

  • _source/lang/en.js

     
    749749        {
    750750                ltr : 'Text direction from left to right',
    751751                rtl : 'Text direction from right to left'
     752        },
     753
     754        docprops :
     755        {
     756                label : 'Document Properties',
     757                title : 'Document Properties',
     758                background : 'Background',
     759                colors : 'Colors',
     760                meta : 'Meta Tags',
     761                chooseColor : 'Choose',
     762                other : 'Other...',
     763                docTitle :      'Page Title',
     764                charset :       'Character Set Encoding',
     765                charsetOther : 'Other Character Set Encoding',
     766                charsetASCII : 'ASCII',
     767                charsetCE : 'Central European',
     768                charsetCT : 'Chinese Traditional (Big5)',
     769                charsetCR : 'Cyrillic',
     770                charsetGR : 'Greek',
     771                charsetJP : 'Japanese',
     772                charsetKR : 'Korean',
     773                charsetTR : 'Turkish',
     774                charsetUN : 'Unicode (UTF-8)',
     775                charsetWE : 'Westren European',
     776                docType : 'Document Type Heading',
     777                docTypeOther : 'Other Document Type Heading',
     778                xhtmlDec : 'Include XHTML Declarations',
     779                bgColor : 'Background Color',
     780                bgImage : 'Background Image URL',
     781                bgFixed : 'Nonscrolling (Fixed) Background',
     782                txtColor : 'Text Color',
     783                linkColor : 'Link Color',
     784                hLinkColor : 'Hover Link Color',
     785                vLinkColor : 'Visited Link Color',
     786                aLinkColor : 'Active Link Color',
     787                margin : 'Page Margins',
     788                marginTop : 'Top',
     789                marginLeft : 'Left',
     790                marginRight : 'Right',
     791                marginBottom : 'Bottom',
     792                metaKeywords : 'Document Indexing Keywords (comma separated)',
     793                metaDescription : 'Document Description',
     794                metaAuthor : 'Author',
     795                metaCopyright : 'Copyright',
     796                previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'
    752797        }
    753798};
  • _source/plugins/dialogui/plugin.js

     
    618618                                        for ( var i = 0, item ; i < elementDefinition.items.length && ( item = elementDefinition.items[i] ) ; i++ )
    619619                                        {
    620620                                                innerHTML.push( '<option value="',
    621                                                         CKEDITOR.tools.htmlEncode( item[1] !== undefined ? item[1] : item[0] ), '" /> ',
     621                                                        CKEDITOR.tools.htmlEncode( item[1] !== undefined ? item[1] : item[0] ).replace( /"/g, '&quot;' ), '" /> ',
    622622                                                        CKEDITOR.tools.htmlEncode( item[0] ) );
    623623                                        }
    624624
  • _source/plugins/docprops/dialogs/docprops.js

     
     1/*
     2Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
     3For licensing, see LICENSE.html or http://ckeditor.com/license
     4*/
     5
     6CKEDITOR.dialog.add( 'docProps', function( editor )
     7{
     8        var lang = editor.lang.docprops,
     9                langCommon = editor.lang.common;
     10
     11        function getDialogValue( dialogName, callback )
     12        {
     13                var onOk = function()
     14                {
     15                        releaseHandlers( this );
     16                        callback( this, this._.parentDialog );
     17                };
     18                var releaseHandlers = function( dialog )
     19                {
     20                        dialog.removeListener( 'ok', onOk );
     21                        dialog.removeListener( 'cancel', releaseHandlers );
     22                };
     23                var bindToDialog = function( dialog )
     24                {
     25                        dialog.on( 'ok', onOk );
     26                        dialog.on( 'cancel', releaseHandlers );
     27                };
     28                editor.execCommand( dialogName );
     29                if ( editor._.storedDialogs.colordialog )
     30                        bindToDialog( editor._.storedDialogs.colordialog );
     31                else
     32                {
     33                        CKEDITOR.on( 'dialogDefinition', function( e )
     34                        {
     35                                if ( e.data.name != dialogName )
     36                                        return;
     37
     38                                var definition = e.data.definition;
     39
     40                                e.removeListener();
     41                                definition.onLoad = CKEDITOR.tools.override( definition.onLoad, function( orginal )
     42                                {
     43                                        return function()
     44                                        {
     45                                                bindToDialog( this );
     46                                                definition.onLoad = orginal;
     47                                                if ( typeof orginal == 'function' )
     48                                                        orginal.call( this );
     49                                        };
     50                                });
     51                        });
     52                }
     53        }
     54        function handleOther()
     55        {
     56                var dialog = this.getDialog(),
     57                        other = dialog.getContentElement( 'general', this.id + 'Other' );
     58                if ( !other )
     59                        return;
     60                if ( this.getValue() == 'other' )
     61                {
     62                        other.getInputElement().removeAttribute( 'readOnly' );
     63                        other.focus();
     64                        other.getElement().removeClass( 'cke_disabled' );
     65                }
     66                else
     67                {
     68                        other.getInputElement().setAttribute( 'readOnly', true );
     69                        other.getElement().addClass( 'cke_disabled' );
     70                }
     71        }
     72        function commitMeta( name, isHttp, value )
     73        {
     74                return function( doc, html, head )
     75                {
     76                        var hash = this.getDialog().metaHash,
     77                                val = typeof value != 'undefined' ? value : this.getValue();
     78                        if ( !val && ( name in hash ) )
     79                                hash[ name ].remove();
     80                        else if ( val && ( name in hash ) )
     81                                hash[ name ].setAttribute( 'content', val );
     82                        else if ( val )
     83                        {
     84                                var meta = new CKEDITOR.dom.element( 'meta', editor.document );
     85                                meta.setAttribute( isHttp ? 'http-equiv' : 'name', name );
     86                                meta.setAttribute( 'content', val );
     87                                head.append( meta );
     88                        }
     89                };
     90        }
     91        function setupMeta( name, ret )
     92        {
     93                return function()
     94                {
     95                        var hash = this.getDialog().metaHash,
     96                                result = ( name in hash ) ? hash[ name ].getAttribute( 'content' ) || '' : '';
     97                        if ( ret )
     98                                return result;
     99                        this.setValue( result );
     100                };
     101        }
     102        function commitMargin( name )
     103        {
     104                return function( doc, html, head, body )
     105                {
     106                        body.removeAttribute( 'margin' + name );
     107                        var val = this.getValue();
     108                        if ( val !== '' )
     109                                body.setStyle( 'margin-' + name, CKEDITOR.tools.cssLength( val ) );
     110                        else
     111                                body.removeStyle( 'margin-' + name );
     112                };
     113        }
     114
     115        function createMetaHash( doc )
     116        {
     117                var hash = {},
     118                        metas = doc.getElementsByTag( 'meta' ),
     119                        count = metas.count();
     120
     121                for ( var i = 0; i < count; i++ )
     122                {
     123                        var meta = metas.getItem( i );
     124                        hash[ meta.getAttribute( meta.hasAttribute( 'http-equiv' ) ? 'http-equiv' : 'name' ).toLowerCase() ] = meta;
     125                }
     126                return hash;
     127        }
     128        // We cannot just remove the style from the element, as it might be affected from non-inline stylesheets.
     129        // To get the proper result, we should manually set the inline style to its default value.
     130        function resetStyle( element, prop, resetVal )
     131        {
     132                element.removeStyle( prop );
     133                if ( element.getComputedStyle( prop ) != resetVal )
     134                        element.setStyle( prop, resetVal );
     135        }
     136
     137        // Utilty to shorten the creation of color fields in the dialog.
     138        var colorField = function( id, label, fieldProps, btnProps )
     139        {
     140                return {
     141                        type : 'hbox',
     142                        padding : 0,
     143                        widths : [ '60%', '40%' ],
     144                        children : [
     145                                CKEDITOR.tools.extend( {
     146                                        type : 'text',
     147                                        id : id,
     148                                        label : lang[ label ]
     149                                }, fieldProps || {}, 1 ),
     150                                CKEDITOR.tools.extend( {
     151                                        type : 'button',
     152                                        id : id + 'Choose',
     153                                        label : lang.chooseColor,
     154                                        className : 'colorChooser',
     155                                        onClick : function()
     156                                        {
     157                                                var self = this;
     158                                                getDialogValue( 'colordialog', function( colorDialog )
     159                                                {
     160                                                        var dialog = self.getDialog();
     161                                                        dialog.getContentElement( dialog._.currentTabId, id ).setValue(
     162                                                                colorDialog.getContentElement( 'picker', 'selectedColor' ).getValue()
     163                                                        );
     164                                                });
     165                                        }
     166                                }, btnProps || {}, 1 )
     167                        ]
     168                };
     169        };
     170        var previewSrc = 'javascript:' +
     171                'void((function(){' +
     172                        encodeURIComponent(
     173                                'document.open();' +
     174                                ( CKEDITOR.env.isCustomDomain() ? 'document.domain=\'' + document.domain + '\';' : '' ) +
     175                                'document.write( \'<html style="background-color: #ffffff"><head></head><body style="width: 100%; height: 100%; margin: 0px">' +
     176                                                        lang.previewHtml + '</body></html>\' );' +
     177                                'document.close();'
     178                        ) +
     179                '})())';
     180
     181        return {
     182                title : lang.title,
     183                minHeight: 330,
     184                minWidth: 500,
     185                onShow : function()
     186                {
     187                        var doc = editor.document,
     188                                html = doc.getElementsByTag( 'html' ).getItem( 0 ),
     189                                head = doc.getHead(),
     190                                body = doc.getBody();
     191                        this.metaHash = createMetaHash( doc );
     192                        this.setupContent( doc, html, head, body );
     193                },
     194                onHide : function()
     195                {
     196                        this.metaHash = {};
     197                },
     198                onOk : function()
     199                {
     200                        var doc = editor.document,
     201                                html = doc.getElementsByTag( 'html' ).getItem( 0 ),
     202                                head = doc.getHead(),
     203                                body = doc.getBody();
     204                        this.commitContent( doc, html, head, body );
     205                },
     206                contents : [
     207                        {
     208                                id : 'general',
     209                                label : langCommon.generalTab,
     210                                elements : [
     211                                        {
     212                                                type : 'text',
     213                                                id : 'title',
     214                                                label : lang.docTitle,
     215                                                setup : function( doc )
     216                                                {
     217                                                        this.setValue( doc.getElementsByTag( 'title' ).getItem( 0 ).data( 'cke-title' ) );
     218                                                },
     219                                                commit : function( doc, html, head, body, isPreview )
     220                                                {
     221                                                        if ( isPreview )
     222                                                                return;
     223                                                        doc.getElementsByTag( 'title' ).getItem( 0 ).data( 'cke-title', this.getValue() );
     224                                                }
     225                                        },
     226                                        {
     227                                                type : 'hbox',
     228                                                children : [
     229                                                        {
     230                                                                type : 'select',
     231                                                                id : 'dir',
     232                                                                label : langCommon.langDir,
     233                                                                style : 'width: 100%',
     234                                                                items : [
     235                                                                        [ langCommon.notSet , '' ],
     236                                                                        [ langCommon.langDirLtr, 'ltr' ],
     237                                                                        [ langCommon.langDirRtl, 'rtl' ]
     238                                                                ],
     239                                                                setup : function( doc, html, head, body )
     240                                                                {
     241                                                                        this.setValue( body.getDirection() || '' );
     242                                                                },
     243                                                                commit : function( doc, html, head, body )
     244                                                                {
     245                                                                        var val = this.getValue();
     246                                                                        if ( val )
     247                                                                                body.setAttribute( 'dir', val );
     248                                                                        else
     249                                                                                body.removeAttribute( 'dir' );
     250                                                                        body.removeStyle( 'direction' );
     251                                                                }
     252                                                        },
     253                                                        {
     254                                                                type : 'text',
     255                                                                id : 'langCode',
     256                                                                label : langCommon.langCode,
     257                                                                setup : function( doc, html )
     258                                                                {
     259                                                                        this.setValue( html.getAttribute( 'xml:lang' ) || html.getAttribute( 'lang' ) || '' );
     260                                                                },
     261                                                                commit : function( doc, html, head, body, isPreview )
     262                                                                {
     263                                                                        if ( isPreview )
     264                                                                                return;
     265                                                                        var val = this.getValue();
     266                                                                        if ( val )
     267                                                                                html.setAttributes( { 'xml:lang' : val, lang : val } );
     268                                                                        else
     269                                                                                html.removeAttributes( { 'xml:lang' : 1, lang : 1 } );
     270                                                                }
     271                                                        }
     272                                                ]
     273                                        },
     274                                        {
     275                                                type : 'hbox',
     276                                                children : [
     277                                                        {
     278                                                                type : 'select',
     279                                                                id : 'charset',
     280                                                                label : lang.charset,
     281                                                                style : 'width: 100%',
     282                                                                items : [
     283                                                                        [ langCommon.notSet, '' ],
     284                                                                        [ lang.charsetASCII, 'us-ascii' ],
     285                                                                        [ lang.charsetCE, 'iso-8859-2' ],
     286                                                                        [ lang.charsetCT, 'big5' ],
     287                                                                        [ lang.charsetCR, 'iso-8859-5' ],
     288                                                                        [ lang.charsetGR, 'iso-8859-7' ],
     289                                                                        [ lang.charsetJP, 'iso-2022-jp' ],
     290                                                                        [ lang.charsetKR, 'iso-2022-kr' ],
     291                                                                        [ lang.charsetTR, 'iso-8859-9' ],
     292                                                                        [ lang.charsetUN, 'utf-8' ],
     293                                                                        [ lang.charsetWE, 'iso-8859-1' ],
     294                                                                        [ lang.other, 'other' ]
     295                                                                ],
     296                                                                'default' : '',
     297                                                                onChange : function()
     298                                                                {
     299                                                                        this.getDialog().selectedCharset = this.getValue() != 'other' ? this.getValue() : '';
     300                                                                        handleOther.call( this );
     301                                                                },
     302                                                                setup : function()
     303                                                                {
     304                                                                        var func = setupMeta( 'content-type', 1, 1 ),
     305                                                                                val = func.call( this ),
     306                                                                                match = val.match( /charset=[^=]+$/ );
     307                                                                        if ( match )
     308                                                                        {
     309                                                                                val = val.substring( val.indexOf( '=' ) + 1 );
     310                                                                                this.setValue( val.toLowerCase() );
     311                                                                                if ( !this.getValue() )
     312                                                                                {
     313                                                                                        this.setValue( 'other' );
     314                                                                                        var other = this.getDialog().getContentElement( 'general', 'charsetOther' );
     315                                                                                        other && other.setValue( val );
     316                                                                                }
     317                                                                                this.getDialog().selectedCharset = val;
     318                                                                        }
     319                                                                        handleOther.call( this );
     320                                                                },
     321                                                                commit : function( doc, html, head, body, isPreview )
     322                                                                {
     323                                                                        if ( isPreview )
     324                                                                                return;
     325                                                                        var value = this.getValue(),
     326                                                                                other = this.getDialog().getContentElement( 'general', 'charsetOther' );
     327                                                                        var func = commitMeta( 'content-type', 1, 'text/html; charset=' + ( value == 'other' ? ( other ? other.getValue() : '' ) : value ) );
     328                                                                        func.call( this, doc, html, head );
     329                                                                }
     330                                                        },
     331                                                        {
     332                                                                type : 'text',
     333                                                                id : 'charsetOther',
     334                                                                label : lang.charsetOther,
     335                                                                onChange : function(){ this.getDialog().selectedCharset = this.getValue(); }
     336                                                        }
     337                                                ]
     338                                        },
     339                                        {
     340                                                type : 'hbox',
     341                                                children : [
     342                                                        {
     343                                                                type : 'select',
     344                                                                id : 'docType',
     345                                                                label : lang.docType,
     346                                                                style : 'width: 100%',
     347                                                                items : [
     348                                                                        [ langCommon.notSet , '' ],
     349                                                                        [ 'XHTML 1.1', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">' ],
     350                                                                        [ 'XHTML 1.0 Transitional', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' ],
     351                                                                        [ 'XHTML 1.0 Strict', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' ],
     352                                                                        [ 'XHTML 1.0 Frameset', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">' ],
     353                                                                        [ 'HTML 5', '<!DOCTYPE html>' ],
     354                                                                        [ 'HTML 4.01 Transitional', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' ],
     355                                                                        [ 'HTML 4.01 Strict', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">' ],
     356                                                                        [ 'HTML 4.01 Frameset', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">' ],
     357                                                                        [ 'HTML 3.2', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">' ],
     358                                                                        [ 'HTML 2.0', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">' ],
     359                                                                        [ lang.other, 'other' ]
     360                                                                ],
     361                                                                onChange : handleOther,
     362                                                                setup : function()
     363                                                                {
     364                                                                        if ( editor.docType )
     365                                                                        {
     366                                                                                this.setValue( editor.docType );
     367                                                                                if ( !this.getValue() )
     368                                                                                {
     369                                                                                        this.setValue( 'other' );
     370                                                                                        var other = this.getDialog().getContentElement( 'general', 'docTypeOther' );
     371                                                                                        other && other.setValue( editor.docType );
     372                                                                                }
     373                                                                        }
     374                                                                        handleOther.call( this );
     375                                                                },
     376                                                                commit : function( doc, html, head, body, isPreview )
     377                                                                {
     378                                                                        if ( isPreview )
     379                                                                                return;
     380                                                                        var value = this.getValue(),
     381                                                                                other = this.getDialog().getContentElement( 'general', 'docTypeOther' );
     382                                                                        editor.docType = value == 'other' ? ( other ? other.getValue() : '' ) : value;
     383                                                                }
     384                                                        },
     385                                                        {
     386                                                                type : 'text',
     387                                                                id : 'docTypeOther',
     388                                                                label : lang.docTypeOther
     389                                                        }
     390                                                ]
     391                                        },
     392                                        {
     393                                                type : 'checkbox',
     394                                                id : 'xhtmlDec',
     395                                                label : lang.xhtmlDec,
     396                                                setup : function()
     397                                                {
     398                                                        this.setValue( !!editor.xmlDeclaration );
     399                                                },
     400                                                commit : function( doc, html, head, body, isPreview )
     401                                                {
     402                                                        if ( isPreview )
     403                                                                return;
     404                                                        if ( this.getValue() )
     405                                                        {
     406                                                                editor.xmlDeclaration = '<?xml version="1.0" encoding="' + ( this.getDialog().selectedCharset || 'utf-8' )+ '"?>' ;
     407                                                                html.setAttribute( 'xmlns', 'http://www.w3.org/1999/xhtml' );
     408                                                        }
     409                                                        else
     410                                                        {
     411                                                                editor.xmlDeclaration = '';
     412                                                                html.removeAttribute( 'xmlns' );
     413                                                        }
     414                                                }
     415                                        }
     416                                ]
     417                        },
     418                        {
     419                                id : 'bg',
     420                                label : lang.background,
     421                                elements : [
     422                                        colorField( 'bgColor', 'bgColor', {
     423                                                setup : function( doc, html, head, body )
     424                                                {
     425                                                        var val = body.getComputedStyle( 'background-color' ) || '';
     426                                                        this.setValue( val == 'transparent' ? '' : val );
     427                                                },
     428                                                commit : function( doc, html, head, body )
     429                                                {
     430                                                        body.removeAttribute( 'bgcolor' );
     431                                                        var val = this.getValue();
     432                                                        if ( val )
     433                                                                body.setStyle( 'background-color', val );
     434                                                        else
     435                                                                resetStyle( body, 'background-color', 'transparent' );
     436                                                }
     437                                        }),
     438                                        {
     439                                                type : 'hbox',
     440                                                widths : [ '60%', '40%' ],
     441                                                children : [
     442                                                        {
     443                                                                type : 'text',
     444                                                                id : 'bgImage',
     445                                                                label : lang.bgImage,
     446                                                                setup : function( doc, html, head, body )
     447                                                                {
     448                                                                        var val = body.getComputedStyle( 'background-image' ) || '';
     449                                                                        if ( val == 'none' )
     450                                                                                val = '';
     451                                                                        else
     452                                                                        {
     453                                                                                val = val.replace( /url\(\s*(["']?)\s*([^\)]*)\s*\1\s*\)/i, function( match, quote, url )
     454                                                                                {
     455                                                                                        return url;
     456                                                                                });
     457                                                                        }
     458                                                                        this.setValue( val );
     459                                                                },
     460                                                                commit : function( doc, html, head, body )
     461                                                                {
     462                                                                        body.removeAttribute( 'background' );
     463                                                                        var val = this.getValue();
     464                                                                        if ( val )
     465                                                                                body.setStyle( 'background-image', 'url(' + val + ')' );
     466                                                                        else
     467                                                                                resetStyle( body, 'background-image', 'none' );
     468                                                                }
     469                                                        },
     470                                                        {
     471                                                                type : 'button',
     472                                                                id : 'bgImageChoose',
     473                                                                label : langCommon.browseServer,
     474                                                                style : 'display:inline-block;margin-top:10px;',
     475                                                                hidden : true,
     476                                                                filebrowser : 'bg:bgImage'
     477                                                        }
     478                                                ]
     479                                        },
     480                                        {
     481                                                type : 'checkbox',
     482                                                id : 'bgFixed',
     483                                                label : lang.bgFixed,
     484                                                setup : function( doc, html, head, body )
     485                                                {
     486                                                        this.setValue( body.getComputedStyle( 'background-attachment' ) == 'fixed' );
     487                                                },
     488                                                commit : function( doc, html, head, body )
     489                                                {
     490                                                        if ( this.getValue() )
     491                                                                body.setStyle( 'background-attachment', 'fixed' );
     492                                                        else
     493                                                                resetStyle( body, 'background-attachment', 'scroll' );
     494                                                }
     495                                        }
     496                                ]
     497                        },
     498                        {
     499                                id : 'colors',
     500                                label : lang.colors,
     501                                elements : [
     502                                        {
     503                                                type : 'hbox',
     504                                                widths : [ '60%', '40%' ],
     505                                                children : [
     506                                                        {
     507                                                                type : 'vbox',
     508                                                                children : [
     509                                                                        colorField( 'txtColor', 'txtColor' ),
     510                                                                        colorField( 'linkColor', 'linkColor' ),
     511                                                                        colorField( 'hoverLinkColor', 'hLinkColor' ),
     512                                                                        colorField( 'visitedLinkColor', 'vLinkColor' ),
     513                                                                        colorField( 'activeLinkColor', 'aLinkColor' )
     514                                                                ]
     515                                                        },
     516                                                        {
     517                                                                type : 'vbox',
     518                                                                children : [
     519                                                                        {
     520                                                                                type : 'html',
     521                                                                                id : 'marginTitle',
     522                                                                                html : '<div style="text-align: center; margin: 0px auto; font-weight: bold">' + lang.margin + '</div>'
     523                                                                        },
     524                                                                        {
     525                                                                                type : 'text',
     526                                                                                id : 'marginTop',
     527                                                                                label : lang.marginTop,
     528                                                                                style : 'width: 80px; text-align: center; margin: 0px auto',
     529                                                                                setup : function( doc, html, head, body )
     530                                                                                {
     531                                                                                        this.setValue( body.getStyle( 'margin-top' ) || body.getAttribute( 'margintop' ) || '' );
     532                                                                                },
     533                                                                                commit : commitMargin( 'top' )
     534                                                                        },
     535                                                                        {
     536                                                                                type : 'hbox',
     537                                                                                children : [
     538                                                                                        {
     539                                                                                                type : 'text',
     540                                                                                                id : 'marginLeft',
     541                                                                                                label : lang.marginLeft,
     542                                                                                                style : 'width: 80px; text-align: center; margin: 0px auto',
     543                                                                                                setup : function( doc, html, head, body )
     544                                                                                                {
     545                                                                                                        this.setValue( body.getStyle( 'margin-left' ) || body.getAttribute( 'marginleft' ) || '' );
     546                                                                                                },
     547                                                                                                commit : commitMargin( 'left' )
     548                                                                                        },
     549                                                                                        {
     550                                                                                                type : 'text',
     551                                                                                                id : 'marginRight',
     552                                                                                                label : lang.marginRight,
     553                                                                                                style : 'width: 80px; text-align: center; margin: 0px auto',
     554                                                                                                setup : function( doc, html, head, body )
     555                                                                                                {
     556                                                                                                        this.setValue( body.getStyle( 'margin-right' ) || body.getAttribute( 'marginright' ) || '' );
     557                                                                                                },
     558                                                                                                commit : commitMargin( 'right' )
     559                                                                                        }
     560                                                                                ]
     561                                                                        },
     562                                                                        {
     563                                                                                type : 'text',
     564                                                                                id : 'marginBottom',
     565                                                                                label : lang.marginBottom,
     566                                                                                style : 'width: 80px; text-align: center; margin: 0px auto',
     567                                                                                setup : function( doc, html, head, body )
     568                                                                                {
     569                                                                                        this.setValue( body.getStyle( 'margin-bottom' ) || body.getAttribute( 'marginbottom' ) || '' );
     570                                                                                },
     571                                                                                commit : commitMargin( 'bottom' )
     572                                                                        }
     573                                                                ]
     574                                                        }
     575                                                ]
     576                                        }
     577                                ]
     578                        },
     579                        {
     580                                id : 'meta',
     581                                label : lang.meta,
     582                                elements : [
     583                                        {
     584                                                type : 'textarea',
     585                                                id : 'metaKeywords',
     586                                                label : lang.metaKeywords,
     587                                                setup : setupMeta( 'keywords' ),
     588                                                commit : commitMeta( 'keywords' )
     589                                        },
     590                                        {
     591                                                type : 'textarea',
     592                                                id : 'metaDescription',
     593                                                label : lang.metaDescription,
     594                                                setup : setupMeta( 'description' ),
     595                                                commit : commitMeta( 'description' )
     596                                        },
     597                                        {
     598                                                type : 'text',
     599                                                id : 'metaAuthor',
     600                                                label : lang.metaAuthor,
     601                                                setup : setupMeta( 'author' ),
     602                                                commit : commitMeta( 'author' )
     603                                        },
     604                                        {
     605                                                type : 'text',
     606                                                id : 'metaCopyright',
     607                                                label : lang.metaCopyright,
     608                                                setup : setupMeta( 'copyright' ),
     609                                                commit : commitMeta( 'copyright' )
     610                                        }
     611                                ]
     612                        },
     613                        {
     614                                id : 'preview',
     615                                label : langCommon.preview,
     616                                elements : [
     617                                        {
     618                                                type : 'html',
     619                                                id : 'previewHtml',
     620                                                html : '<iframe src="' + previewSrc + '" style="width: 100%; height: 310px" hidefocus="true" frameborder="0" ' +
     621                                                                'id="cke_docProps_preview_iframe"></iframe>',
     622                                                onLoad : function()
     623                                                {
     624                                                        this.getDialog().on( 'selectPage', function( ev )
     625                                                        {
     626                                                                if ( ev.data.page == 'preview' )
     627                                                                {
     628                                                                        var self = this;
     629                                                                        setTimeout( function()
     630                                                                        {
     631                                                                                var doc = CKEDITOR.document.getById( 'cke_docProps_preview_iframe' ).getFrameDocument(),
     632                                                                                        html = doc.getElementsByTag( 'html' ).getItem( 0 ),
     633                                                                                        head = doc.getHead(),
     634                                                                                        body = doc.getBody();
     635                                                                                self.commitContent( doc, html, head, body, 1 );
     636                                                                        }, 0 );
     637                                                                }
     638                                                        });
     639                                                }
     640                                        }
     641                                ]
     642                        }
     643                ]
     644        };
     645} );
     646 No newline at end of file
  • _source/plugins/docprops/plugin.js

     
     1/*
     2Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
     3For licensing, see LICENSE.html or http://ckeditor.com/license
     4*/
     5
     6CKEDITOR.plugins.add( 'docprops',
     7{
     8        init : function( editor )
     9        {
     10                var cmd = new CKEDITOR.dialogCommand( 'docProps' );
     11                // Only applicable on full page mode.
     12                cmd.modes = { wysiwyg : editor.config.fullPage };
     13                editor.addCommand( 'docProps', cmd );
     14                CKEDITOR.dialog.add( 'docProps', this.path + 'dialogs/docprops.js' );
     15
     16                editor.ui.addButton( 'DocProps',
     17                {
     18                        label : editor.lang.docprops.label,
     19                        command : 'docProps'
     20                } );
     21        }
     22} );
     23 No newline at end of file
  • _source/plugins/toolbar/plugin.js

     
    446446 */
    447447CKEDITOR.config.toolbar_Full =
    448448[
    449         ['Source','-','Save','NewPage','Preview','-','Templates'],
     449        ['Source','-','Save','DocProps','NewPage','Preview','-','Templates'],
    450450        ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
    451451        ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
    452452        ['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'],
  • _source/plugins/wysiwygarea/plugin.js

     
    958958                                                                                {
    959959                                                                                        editor.docType = docType = match;
    960960                                                                                        return '';
     961                                                                                }).replace( /<\?xml\s[^\?]*\?>/i, function( match )
     962                                                                                {
     963                                                                                        editor.xmlDeclaration = match;
     964                                                                                        return '';
    961965                                                                                });
    962966                                                                }
    963967
     
    10301034                                                                var config = editor.config,
    10311035                                                                        fullPage = config.fullPage,
    10321036                                                                        docType = fullPage && editor.docType,
     1037                                                                        xmlDeclaration = fullPage && editor.xmlDeclaration,
    10331038                                                                        doc = iframe.getFrameDocument();
    10341039
    10351040                                                                var data = fullPage
     
    10471052                                                                if ( config.ignoreEmptyParagraph )
    10481053                                                                        data = data.replace( emptyParagraphRegexp, function( match, lookback ) { return lookback; } );
    10491054
     1055                                                                if ( xmlDeclaration )
     1056                                                                        data = xmlDeclaration + '\n' + data;
    10501057                                                                if ( docType )
    10511058                                                                        data = docType + '\n' + data;
    10521059
  • _source/skins/kama/icons.css

     
    88        background-position: 0 0;
    99}
    1010
     11.cke_skin_kama .cke_button_docProps .cke_icon
     12{
     13        background-position: 0 -16px;
     14}
     15
    1116.cke_skin_kama .cke_button_newpage .cke_icon
    1217{
    1318        background-position: 0 -48px;
  • config.js

     
    88        // Define changes to default configuration here. For example:
    99        // config.language = 'fr';
    1010        // config.uiColor = '#AADC6E';
     11        config.language = 'en';
     12        config.extraPlugins = 'docprops';
    1113};
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy