Ticket #2820: 2820_2.patch

File 2820_2.patch, 51.2 KB (added by Artur Formella, 11 years ago)
  • _source/plugins/forms/dialogs/button.js

     
    44*/
    55CKEDITOR.dialog.add( 'button', function( editor )
    66{
    7         var addChange = function( name, input ){
    8                 var dialog = input.getDialog();
    9                 if ( input.isChanged() || ( dialog.editMode == false && input.getValue() != '' ))
    10                 {
    11                         dialog.changedAttibutes[ name ] = input.getValue();
    12                         return true;
    13                 }
    14                 return false;
    15         };
    16 
    17         // Function called in onShow to load selected element.
    18         var loadSelection = function( editor, selection, ranges, element ){
    19                 // Read attributes.
    20                 var type = element.getAttribute( 'type' );
    21                 var name = element.getAttribute( 'name' );
    22                 var value = element.getAttribute( 'value' );
    23 
    24                 // Fill out all fields.
    25                 this.setValueOf( 'info', 'txtName', name );
    26                 this.setValueOf( 'info', 'txtValue', value );
    27                 this.setValueOf( 'info', 'txtType', type );
    28 
    29                 this.saveSelection();
    30                 this.editMode = true;
    31                 this.editObj = element;
    32 
    33                 return false;
    34         };
    35 
    367        return {
    378                title : editor.lang.button.title,
    38                 resizable : CKEDITOR.DIALOG_RESIZE_NONE,
    399                minWidth : 400,
    4010                minHeight : 230,
    4111                onShow : function()
    4212                {
    43                         // Default: create a new element.
    44                         this.editMode = false;
    45 
    46                         // IE BUG: Selection must be in the editor for getSelection() to work.
     13                        // IE BUG: Selection must be in the editor for getSelectedElement()
     14                        // to work.
    4715                        this.restoreSelection();
    4816
    49                         var editor = this.getParentEditor(),
    50                                 selection = editor.getSelection(),
    51                                 ranges = selection.getRanges();
    52 
    53                         // Check selection. Fill in all the relevant fields if there's already one link selected.
    54                         if ( ranges.length == 1 )
     17                        var element = this.getParentEditor().getSelection().getSelectedElement();
     18                        if ( element && element.getName() == "input" )
    5519                        {
    56                                 ranges[0].enlarge( CKEDITOR.ENLARGE_ELEMENT );
    57 
    58                                 var rangeRoot = ranges[0].getCommonAncestor( true );
    59                                 var element = rangeRoot.getAscendant( 'input', true );
    60                                 if ( element && element.getAttribute( 'type' ) )
     20                                var type = element.getAttribute( 'type' );
     21                                if ( type == "button" || type == "reset" || type == "submit" )
    6122                                {
    62                                         var type = element.getAttribute( 'type' );
    63                                         if ( type == "button" || type == "reset" || type == "submit" )
    64                                         {
    65                                                 loadSelection.apply( this, [ editor, selection, ranges, element ] );
    66                                                 selection.selectElement( element );
    67                                         }
     23                                        this._element = element;
     24                                        this.setupContent( element );
    6825                                }
    6926                        }
    70 
    71                         if ( this.editMode == false )   //New object.
    72                                 this.editObj = editor.document.createElement( 'input' );
    73                         this.getContentElement( 'info', 'txtName' ).focus();
    74 
    75                         this.changedAttibutes = new Array();
    7627                },
    7728                onOk : function()
    7829                {
    79                         this.editObj.setAttributes( this.changedAttibutes );
     30                        var editor,
     31                                element = this._element,
     32                                isInsertMode = !element;
    8033
    81                         if ( this.editMode == false )
     34                        if ( isInsertMode )
    8235                        {
     36                                editor = this.getParentEditor();
     37                                element = editor.document.createElement( 'input' );
     38                        }
     39                        this.commitContent( element );
     40
     41                        if ( isInsertMode )
     42                        {
    8343                                this.restoreSelection();
    8444                                this.clearSavedSelection();
    85                                 editor.insertElement( this.editObj );
     45                                editor.insertElement( element );
    8646                        }
    87                         return true;
    8847                },
    8948                contents : [
    9049                        {
     
    9857                                                type : 'text',
    9958                                                label : editor.lang.common.name,
    10059                                                'default' : '',
    101                                                 validate: function()
     60                                                setup : function( element )
    10261                                                {
    103                                                         addChange( 'name', this );
    104                                                         return true;
     62                                                        this.setValue( element.getAttribute( 'name' ) );
     63                                                        this.focus();
     64                                                },
     65                                                commit : function( element )
     66                                                {
     67                                                        if ( this.getValue() != '' || this.isChanged() )
     68                                                                element.setAttribute( 'name', this.getValue() );
    10569                                                }
    10670                                        },
    10771                                        {
     
    11074                                                label : editor.lang.button.text,
    11175                                                accessKey : 'V',
    11276                                                'default' : '',
    113                                                 validate: function()
     77                                                setup : function( element )
    11478                                                {
    115                                                         addChange( 'value', this );
    116                                                         return true;
     79                                                        this.setValue( element.getAttribute( 'value' ) );
     80                                                },
     81                                                commit : function( element )
     82                                                {
     83                                                        if ( this.getValue() != '' || this.isChanged() )
     84                                                                element.setAttribute( 'value', this.getValue() );
    11785                                                }
    11886                                        },
    11987                                        {
     
    12896                                                        [ editor.lang.button.typeSbm, 'submit' ],
    12997                                                        [ editor.lang.button.typeRst, 'reset' ]
    13098                                                ],
    131                                                 validate: function()
     99                                                setup : function( element )
    132100                                                {
    133                                                         addChange( 'type', this );
    134                                                         return true;
     101                                                        this.setValue( element.getAttribute( 'type' ) );
     102                                                },
     103                                                commit : function( element )
     104                                                {
     105                                                        element.setAttribute( 'type', this.getValue() );
    135106                                                }
    136107                                        }
    137108                                ]
  • _source/plugins/forms/dialogs/checkbox.js

     
    6161                                                setup : function( element )
    6262                                                {
    6363                                                        this.setValue( element.getAttribute( 'name' ) );
     64                                                        this.focus();
    6465                                                },
    6566                                                commit : function( element )
    6667                                                {
    67                                                         element.setAttribute( 'name', this.getValue() );
     68                                                        if ( this.getValue() != '' || this.isChanged() )
     69                                                                element.setAttribute( 'name', this.getValue() );
    6870                                                }
    6971                                        },
    7072                                        {
     
    7981                                                },
    8082                                                commit : function( element )
    8183                                                {
    82                                                         element.setAttribute( 'value', this.getValue() );
     84                                                        if ( this.getValue() != '' || this.isChanged() )
     85                                                                element.setAttribute( 'value', this.getValue() );
    8386                                                }
    8487                                        },
    8588                                        {
     
    9598                                                },
    9699                                                commit : function( element )
    97100                                                {
    98                                                         element.setAttribute( 'checked', this.getValue() );
     101                                                        if ( this.getValue() == true || this.isChanged() )
     102                                                                element.setAttribute( 'checked', this.getValue() );
    99103                                                }
    100104                                        }
    101105                                ]
  • _source/plugins/forms/dialogs/form.js

     
    44*/
    55CKEDITOR.dialog.add( 'form', function( editor )
    66{
    7         var addChange = function( name, input ){
    8                 var dialog = input.getDialog();
    9                 if ( input.isChanged() || ( dialog.editMode == false && input.getValue() != '' ))
    10                 {
    11                         dialog.changedAttibutes[ name ] = input.getValue();
    12                         return true;
    13                 }
    14                 return false;
    15         };
    16 
    17         // Function called in onShow to load selected element.
    18         var loadSelection = function( editor, selection, ranges, element )
    19         {
    20                 this.saveSelection();
    21                 this.editObj = element;
    22                 this.editMode = true;
    23 
    24                 // Fill out all fields.
    25                 readAttribute.apply( this, [ this.editObj, 'info', 'name', 'txtName', true ] );
    26                 readAttribute.apply( this, [ this.editObj, 'info', 'action', 'txtAction', true ] );
    27                 readAttribute.apply( this, [ this.editObj, 'info', 'method', 'cmbMethod', true ] );
    28                 readAttribute.apply( this, [ this.editObj, 'info', 'encoding', 'cmbEncoding', true ] );
    29                 readAttribute.apply( this, [ this.editObj, 'info', 'target', 'cmbTarget', true ] );
    30                 readAttribute.apply( this, [ this.editObj, 'info', 'id', 'txtId', true ] );
    31 
    32                 return false;
    33         };
    34 
    35         var readAttribute = function( object, page, attribute, input, setIfNull )
    36         {
    37                 var attributeValue = object.getAttribute( attribute );
    38                 if ( attributeValue == null )
    39                         if ( setIfNull )
    40                                 this.setValueOf( page, input, "" );
    41                 else
    42                         this.setValueOf( page, input, attributeValue );
    43                 return attributeValue;
    44         }
    45 
    467        return {
    478                title : editor.lang.form.title,
    48                 resizable : CKEDITOR.DIALOG_RESIZE_NONE,
    499                minWidth : 400,
    5010                minHeight : 270,
    51                 onOk : function()
     11                onShow : function()
    5212                {
    53                         this.editObj.setAttributes( this.changedAttibutes );
     13                        // IE BUG: Selection must be in the editor for getSelectedElement()
     14                        // to work.
     15                        this.restoreSelection();
    5416
    55                         if ( this.editMode == false )
     17                        var element = this.getParentEditor().getSelection().getSelectedElement();
     18                        if ( element && element.getName() == "form" )
    5619                        {
    57                                 this.restoreSelection();
    58                                 this.clearSavedSelection();
    59                                 editor.insertElement( this.editObj );
     20                                this._element = element;
     21                                this.setupContent( element );
    6022                        }
    61                         return true;
     23
     24                        this.getContentElement( 'info', 'txtName' ).focus();
    6225                },
    63                 onShow : function()
     26                onOk : function()
    6427                {
    65                         // Default: create a new element.
    66                         this.editMode = false;
    67                         this.changedAttibutes = new Array();
     28                        var editor,
     29                                element = this._element,
     30                                isInsertMode = !element;
    6831
    69                         // IE BUG: Selection must be in the editor for getSelection() to work.
    70                         this.restoreSelection();
    71 
    72                         var editor = this.getParentEditor(),
    73                                 selection = editor.getSelection(),
    74                                 ranges = selection.getRanges();
    75 
    76                         // Check selection. Fill in all the relevant fields if there's already one link selected.
    77                         if ( ranges.length == 1 )
     32                        if ( isInsertMode )
    7833                        {
    79                                 ranges[0].enlarge( CKEDITOR.ENLARGE_ELEMENT );
    80 
    81                                 var rangeRoot = ranges[0].getCommonAncestor( true );
    82                                 var element = rangeRoot.getAscendant( 'form', true );
    83                                 if ( element )
    84                                 {
    85                                         loadSelection.apply( this, [ editor, selection, ranges, element ] );
    86                                         selection.selectElement( element );
    87                                 }
     34                                editor = this.getParentEditor();
     35                                element = editor.document.createElement( 'form' );
    8836                        }
     37                        this.commitContent( element );
    8938
    90                         if( this.editMode == false )
    91                                 this.editObj = editor.document.createElement( 'form' );
    92 
    93                         this.getContentElement( 'info', 'txtName' ).focus();
     39                        if ( isInsertMode )
     40                        {
     41                                this.restoreSelection();
     42                                this.clearSavedSelection();
     43                                editor.insertElement( element );
     44                        }
    9445                },
    9546                contents : [
    9647                        {
     
    10556                                                label : editor.lang.common.name,
    10657                                                'default' : '',
    10758                                                accessKey : 'N',
    108                                                 validate: function()
     59                                                setup : function( element )
    10960                                                {
    110                                                         addChange( 'name', this );
    111                                                         return true;
     61                                                        this.setValue( element.getAttribute( 'name' ) );
     62                                                        this.focus();
     63                                                },
     64                                                commit : function( element )
     65                                                {
     66                                                        if ( this.getValue() != '' || this.isChanged() )
     67                                                                element.setAttribute( 'name', this.getValue() );
    11268                                                }
    11369                                        },
    11470                                        {
     
    11773                                                label : editor.lang.form.action,
    11874                                                'default' : editor.config.forms.defaultValues.formAction,
    11975                                                accessKey : 'A',
    120                                                 validate: function()
     76                                                setup : function( element )
    12177                                                {
    122                                                         addChange( 'action', this );
    123                                                         return true;
     78                                                        this.setValue( element.getAttribute( 'action' ) );
     79                                                },
     80                                                commit : function( element )
     81                                                {
     82                                                        if ( this.getValue() != '' || this.isChanged() )
     83                                                                element.setAttribute( 'action', this.getValue() );
    12484                                                }
    12585                                        },
    12686                                        {
     
    13494                                                                label : editor.lang.common.id,
    13595                                                                'default' : '',
    13696                                                                accessKey : 'I',
    137                                                                 validate: function()
     97                                                                setup : function( element )
    13898                                                                {
    139                                                                         addChange( 'id', this );
    140                                                                         return true;
     99                                                                        this.setValue( element.getAttribute( 'id' ) );
     100                                                                },
     101                                                                commit : function( element )
     102                                                                {
     103                                                                        if ( this.getValue() != '' || this.isChanged() )
     104                                                                                element.setAttribute( 'id', this.getValue() );
    141105                                                                }
    142106                                                        },
    143107                                                        {
     
    153117                                                                        [ 'multipart/form-data' ],
    154118                                                                        [ 'application/x-www-form-urlencoded' ]
    155119                                                                ],
    156                                                                 validate: function()
     120                                                                setup : function( element )
    157121                                                                {
    158                                                                         addChange( 'encoding', this );
    159                                                                         return true;
     122                                                                        this.setValue( element.getAttribute( 'encoding' ) );
     123                                                                },
     124                                                                commit : function( element )
     125                                                                {
     126                                                                        element.setAttribute( 'encoding', this.getValue() );
    160127                                                                }
    161128                                                        }
    162129                                                ]
     
    181148                                                                        [ editor.lang.form.targetSelf, '_self' ],
    182149                                                                        [ editor.lang.form.targetParent, '_parent' ]
    183150                                                                ],
    184                                                                 validate: function()
     151                                                                setup : function( element )
    185152                                                                {
    186                                                                         addChange( 'target', this );
    187                                                                         return true;
     153                                                                        this.setValue( element.getAttribute( 'target' ) );
     154                                                                },
     155                                                                commit : function( element )
     156                                                                {
     157                                                                        element.setAttribute( 'target', this.getValue() );
    188158                                                                }
    189159                                                        },
    190160                                                        {
     
    198168                                                                        [ 'GET', 'get' ],
    199169                                                                        [ 'POST', 'post' ]
    200170                                                                ],
    201                                                                 validate: function()
     171                                                                setup : function( element )
    202172                                                                {
    203                                                                         addChange( 'method', this );
    204                                                                         return true;
     173                                                                        this.setValue( element.getAttribute( 'method' ) );
     174                                                                },
     175                                                                commit : function( element )
     176                                                                {
     177                                                                        element.setAttribute( 'method', this.getValue() );
    205178                                                                }
    206179                                                        }
    207180                                                ]
  • _source/plugins/forms/dialogs/hiddenfield.js

     
    44*/
    55CKEDITOR.dialog.add( 'hiddenfield', function( editor )
    66{
    7         var addChange = function( name, input ){
    8                 var dialog = input.getDialog();
    9                 if ( input.isChanged() || ( dialog.editMode == false && input.getValue() != '' ))
    10                 {
    11                         dialog.changedAttibutes[ name ] = input.getValue();
    12                         return true;
    13                 }
    14                 return false;
    15         };
    16 
    17         // Function called in onShow to load selected element.
    18         var loadSelection = function( editor, selection, ranges, element )
    19         {
    20                 this.saveSelection();
    21                 this.editObj = element;
    22                 this.editMode = true;
    23 
    24                 // Fill out all fields.
    25                 var name = element.getAttribute( 'name' );
    26                 var value = element.getAttribute( 'value' );
    27 
    28                 this.setValueOf( 'info', 'txtName', name );
    29                 this.setValueOf( 'info', 'txtValue', value );
    30 
    31                 return false;
    32         };
    337        return {
    348                title : editor.lang.hidden.title,
    35                 resizable : CKEDITOR.DIALOG_RESIZE_NONE,
    369                minWidth : 400,
    3710                minHeight : 200,
    3811                onShow : function()
    3912                {
    40                         // Default: create a new element.
    41                         this.editMode = false;
    42                         this.changedAttibutes = new Array();
    43 
    44                         // IE BUG: Selection must be in the editor for getSelection() to work.
     13                        // IE BUG: Selection must be in the editor for getSelectedElement()
     14                        // to work.
    4515                        this.restoreSelection();
    4616
    47                         var editor = this.getParentEditor(),
    48                                 selection = editor.getSelection(),
    49                                 ranges = selection.getRanges();
    50 
    51                         // Check selection. Fill in all the relevant fields if there's already one link selected.
    52                         if ( ranges.length == 1 )
     17                        var element = this.getParentEditor().getSelection().getSelectedElement();
     18                        if ( element && element.getName() == "input" && element.getAttribute( 'type' ) == "checkbox" )
    5319                        {
    54                                 ranges[0].enlarge( CKEDITOR.ENLARGE_ELEMENT );
    55 
    56                                 var rangeRoot = ranges[0].getCommonAncestor( true );
    57                                 var element = rangeRoot.getAscendant( 'input', true );
    58                                 if ( element && element.getAttribute( 'type' ) == "hidden" )
    59                                 {
    60                                         loadSelection.apply( this, [ editor, selection, ranges, element ] );
    61                                         selection.selectElement( element );
    62                                 }
     20                                this._element = element;
     21                                this.setupContent( element );
    6322                        }
    64 
    65                         if( this.editMode == false )    //New object.
    66                                 this.editObj = editor.document.createElement( 'input' );
    67 
    68                         this.getContentElement( 'info', 'txtName' ).focus();
    6923                },
    7024                onOk : function()
    7125                {
    72                         this.changedAttibutes[ 'type' ] = 'hidden';
    73                         this.editObj.setAttributes( this.changedAttibutes );
     26                        var editor,
     27                                element = this._element,
     28                                isInsertMode = !element;
    7429
    75                         if ( this.editMode == false )
     30                        if ( isInsertMode )
    7631                        {
     32                                editor = this.getParentEditor();
     33                                element = editor.document.createElement( 'input' );
     34                                element.setAttribute( 'type', 'hidden' );
     35                        }
     36                        this.commitContent( element );
     37
     38                        if ( isInsertMode )
     39                        {
    7740                                this.restoreSelection();
    7841                                this.clearSavedSelection();
    79                                 editor.insertElement( this.editObj );
     42                                editor.insertElement( element );
    8043                        }
    81                         return true;
    8244                },
    8345                contents : [
    8446                        {
     
    9355                                                label : editor.lang.hidden.name,
    9456                                                'default' : '',
    9557                                                accessKey : 'N',
    96                                                 validate: function()
     58                                                setup : function( element )
    9759                                                {
    98                                                         addChange( 'name', this );
    99                                                         return true;
     60                                                        this.setValue( element.getAttribute( 'name' ) );
     61                                                        this.focus();
     62                                                },
     63                                                commit : function( element )
     64                                                {
     65                                                        if ( this.getValue() != '' || this.isChanged() )
     66                                                                element.setAttribute( 'name', this.getValue() );
    10067                                                }
    10168                                        },
    10269                                        {
     
    10572                                                label : editor.lang.hidden.value,
    10673                                                'default' : '',
    10774                                                accessKey : 'V',
    108                                                 validate: function()
     75                                                setup : function( element )
    10976                                                {
    110                                                         addChange( 'value', this );
    111                                                         return true;
     77                                                        this.setValue( element.getAttribute( 'value' ) );
     78                                                },
     79                                                commit : function( element )
     80                                                {
     81                                                        if ( this.getValue() != '' || this.isChanged() )
     82                                                                element.setAttribute( 'value', this.getValue() );
    11283                                                }
    11384                                        }
    11485                                ]
  • _source/plugins/forms/dialogs/radio.js

     
    44*/
    55CKEDITOR.dialog.add( 'radio', function( editor )
    66{
    7         var addChange = function( name, input ){
    8                 var dialog = input.getDialog();
    9                 if ( input.isChanged() || ( dialog.editMode == false && input.getValue() != '' ))
    10                 {
    11                         dialog.changedAttibutes[ name ] = input.getValue();
    12                         return true;
    13                 }
    14                 return false;
    15         };
    16 
    17         // Function called in onShow to load selected element.
    18         var loadSelection = function( editor, selection, ranges, element )
    19         {
    20                 this.saveSelection();
    21                 this.editObj = element;
    22                 this.editMode = true;
    23 
    24                 // Read attributes.
    25                 var checked = element.getAttribute( 'checked' );
    26                 var name = element.getAttribute( 'name' );
    27                 var value = element.getAttribute( 'value' );
    28 
    29                 // Fill out all fields.
    30                 this.setValueOf( 'info', 'txtName', name );
    31                 this.setValueOf( 'info', 'txtValue', value );
    32                 this.setValueOf( 'info', 'cmbSelected', checked );
    33 
    34                 return false;
    35         };
    367        return {
    378                title : editor.lang.checkboxAndRadio.radioTitle,
    38                 resizable : CKEDITOR.DIALOG_RESIZE_NONE,
    399                minWidth : 400,
    4010                minHeight : 200,
    4111                onShow : function()
    4212                {
    43                         // Default: create a new element.
    44                         this.editMode = false;
    45                         this.changedAttibutes = new Array();
    46 
    47                         // IE BUG: Selection must be in the editor for getSelection() to work.
     13                        // IE BUG: Selection must be in the editor for getSelectedElement()
     14                        // to work.
    4815                        this.restoreSelection();
    4916
    50                         var editor = this.getParentEditor(),
    51                                 selection = editor.getSelection(),
    52                                 ranges = selection.getRanges();
    53 
    54                         // Check selection. Fill in all the relevant fields if there's already one link selected.
    55                         if ( ranges.length == 1 )
     17                        var element = this.getParentEditor().getSelection().getSelectedElement();
     18                        if ( element && element.getName() == "input" && element.getAttribute( 'type' ) == "radio" )
    5619                        {
    57                                 ranges[0].enlarge( CKEDITOR.ENLARGE_ELEMENT );
    58 
    59                                 var rangeRoot = ranges[0].getCommonAncestor( true );
    60                                 var element = rangeRoot.getAscendant( 'input', true );
    61                                 if ( element && element.getAttribute( 'type' ) == "radio" )
    62                                 {
    63                                         loadSelection.apply( this, [ editor, selection, ranges, element ] );
    64                                         selection.selectElement( element );
    65                                 }
     20                                this._element = element;
     21                                this.setupContent( element );
    6622                        }
    67 
    68                         if( this.editMode == false )    //New object.
    69                                 this.editObj = editor.document.createElement( 'input' );
    70 
    71                         this.getContentElement( 'info', 'txtName' ).focus();
    7223                },
    7324                onOk : function()
    7425                {
    75                         this.changedAttibutes[ 'type' ] = 'radio';
     26                        var editor,
     27                                element = this._element,
     28                                isInsertMode = !element;
    7629
    77                         this.editObj.setAttributes( this.changedAttibutes );
     30                        if ( isInsertMode )
     31                        {
     32                                editor = this.getParentEditor();
     33                                element = editor.document.createElement( 'input' );
     34                                element.setAttribute( 'type', 'radio' );
     35                        }
     36                        this.commitContent( element );
    7837
    79                         if ( this.editMode == false )
     38                        if ( isInsertMode )
    8039                        {
    81                                 // It doesn't work with IE.
    8240                                this.restoreSelection();
    8341                                this.clearSavedSelection();
    84                                 editor.insertElement( this.editObj );
     42                                editor.insertElement( element );
    8543                        }
    86                         return true;
    8744                },
    8845                contents : [
    8946                        {
     
    9855                                                label : editor.lang.common.name,
    9956                                                'default' : '',
    10057                                                accessKey : 'N',
    101                                                 validate: function()
     58                                                setup : function( element )
    10259                                                {
    103                                                         addChange( 'name', this );
    104                                                         return true;
     60                                                        this.setValue( element.getAttribute( 'name' ) );
     61                                                        this.focus();
     62                                                },
     63                                                commit : function( element )
     64                                                {
     65                                                        if ( this.getValue() != '' || this.isChanged() )
     66                                                                element.setAttribute( 'name', this.getValue() );
    10567                                                }
    10668                                        },
    10769                                        {
     
    11072                                                label : editor.lang.checkboxAndRadio.value,
    11173                                                'default' : '',
    11274                                                accessKey : 'V',
    113                                                 validate: function()
     75                                                setup : function( element )
    11476                                                {
    115                                                         addChange( 'value', this );
    116                                                         return true;
     77                                                        this.setValue( element.getAttribute( 'value' ) );
     78                                                },
     79                                                commit : function( element )
     80                                                {
     81                                                        if ( this.getValue() != '' || this.isChanged() )
     82                                                                element.setAttribute( 'value', this.getValue() );
    11783                                                }
    11884                                        },
    11985                                        {
     
    12389                                                'default' : '',
    12490                                                accessKey : 'S',
    12591                                                value : "checked",
    126                                                 validate: function()
     92                                                setup : function( element )
    12793                                                {
    128                                                         addChange( 'checked', this );
    129                                                         return true;
    130                                                 }
     94                                                        this.setValue( element.getAttribute( 'checked' ) );
     95                                                },
     96                                                commit : function( element )
     97                                                {
     98                                                        if ( this.getValue() == true || this.isChanged() )
     99                                                                element.setAttribute( 'checked', this.getValue() );
     100                                                }
    131101                                        }
    132102                                ]
    133103                        }
  • _source/plugins/forms/dialogs/select.js

     
    55CKEDITOR.dialog.add( 'select', function( editor )
    66{
    77        var plugin = CKEDITOR.plugins.forms.select;
    8         var addChange = function( name, input ){
    9                 var dialog = input.getDialog();
    10                 if ( input.isChanged() || ( dialog.editMode == false && input.getValue() != '' ))
    11                 {
    12                         dialog.changedAttibutes[ name ] = input.getValue();
    13                         return true;
    14                 }
    15                 return false;
    16         };
    17 
    18         var resetDialog = function( dialog ){
    19                 var names = dialog.getContentElement( 'info', 'cmbName' );
    20                 var values = dialog.getContentElement( 'info', 'cmbValue' );
    21                 var namesOptions = plugin.getOptions( names );
    22                 var valuesOptions = plugin.getOptions( values );
    23 
    24                 // Reset dialog.
    25                 for ( var i = namesOptions.length-1 ; i >= 0 ; i-- )
    26                 {
    27                         namesOptions[i].parentNode.removeChild( namesOptions[i] );
    28                         valuesOptions[i].parentNode.removeChild( valuesOptions[i] );
    29                 }
    30                 dialog.getContentElement( 'info', 'txtOptName' ).setValue( '' );
    31                 dialog.getContentElement( 'info', 'txtOptValue' ).setValue( '' );
    32         };
    33 
    34         // Function called in onShow to load selected element.
    35         var loadSelection = function( editor, selection, ranges, element )
    36         {
    37                 var dialog = this;
    38 
    39                 //Reset (after checking selection)
    40                 resetDialog( dialog );
    41 
    42                 var names = dialog.getContentElement( 'info', 'cmbName' );
    43                 var values = dialog.getContentElement( 'info', 'cmbValue' );
    44 
    45                 dialog.editObj = element;
    46                 dialog.editMode = true;
    47                 dialog.saveSelection();
    48 
    49                 dialog.getContentElement( 'info', 'txtName' ).setValue( dialog.editObj.getAttribute( "name" ) );
    50                 dialog.getContentElement( 'info', 'txtSize' ).setValue( dialog.editObj.getAttribute( "size" ) );
    51                 dialog.getContentElement( 'info', 'chkMulti' ).setValue( dialog.editObj.getAttribute( "multiple" ) );
    52 
    53                 var objOptions = plugin.getOptions( dialog.editObj );
    54 
    55                 //Load Options into dialog.
    56                 for ( var i = 0 ; i < objOptions.length ; i++ )
    57                 {
    58                         var oText       = objOptions[i].innerHTML;
    59                         var oValue      = objOptions[i].value;
    60                         if ( objOptions[i].getAttribute( 'selected' ) == 'selected' )
    61                                 dialog.getContentElement( 'info', 'txtValue' ).setValue( objOptions[i].value );
    62                         var oTOption = plugin.addOption( names, oText, oText, editor.document );
    63                         var oVOption = plugin.addOption( values, oValue, oValue, editor.document );
    64                 }
    65         }
    66 
    678        return {
    689                title : editor.lang.select.title,
    69                 resizable : CKEDITOR.DIALOG_RESIZE_NONE,
    7010                minWidth : 400,
    7111                minHeight : 370,
    7212                onShow : function()
    7313                {
    74                         this.editMode = false;
    75                         this.changedAttibutes = new Array();
    76 
    77                         // IE BUG: Selection must be in the editor for getSelection() to work.
     14                        // IE BUG: Selection must be in the editor for getSelectedElement()
     15                        // to work.
    7816                        this.restoreSelection();
    7917
    80                         var editor = this.getParentEditor(),
    81                                 selection = editor.getSelection(),
    82                                 ranges = selection.getRanges();
    83 
    84                         // Check selection. Fill in all the relevant fields if there's already one link selected.
    85                         if ( ranges.length == 1 )
     18                        this.setupContent( 'clear' );
     19                        var element = this.getParentEditor().getSelection().getSelectedElement();
     20                        if ( element && element.getName() == "select" )
    8621                        {
    87                                 ranges[0].enlarge( CKEDITOR.ENLARGE_ELEMENT );
    88                                 rangeRoot = ranges[0].getCommonAncestor( true );
    89                                 var element = rangeRoot.getAscendant( 'select', true );
    90                                 if ( element )
     22                                this._element = element;
     23                                this.setupContent( element.getName(), element );
     24
     25                                //Load Options into dialog.
     26                                var objOptions = plugin.getOptions( element );
     27                                for ( var i = 0 ; i < objOptions.length ; i++ )
    9128                                {
    92                                         loadSelection.apply( this, [ editor, selection, ranges, element ] );
    93                                         selection.selectElement( element );
    94                                         this.saveSelection();
     29                                        this.setupContent( objOptions[i].getName(), objOptions[i] );
    9530                                }
    9631                        }
    97 
    98                         if ( this.editMode == false )           //New object.
    99                         {
    100                                 resetDialog( this );    //Reset (after checking selection)
    101                                 this.editObj = this.getParentEditor().document.createElement( 'select' );
    102                         }
    103 
    104                         this.pushDefault();
    105                         this.getContentElement( 'info', 'txtName' ).focus();
    10632                },
    10733                onOk : function()
    10834                {
    109                         var objOptions = plugin.getOptions( this.editObj );
     35                        var editor = this.getParentEditor(),
     36                                element = this._element,
     37                                isInsertMode = !element;
    11038
    111                         // Remove all options.
    112                         for ( var i = objOptions.length-1 ; i >= 0 ; i-- ){
    113                                 objOptions[0].parentNode.removeChild( objOptions[0] );
    114                         }
     39                        if ( isInsertMode )
     40                                element = editor.document.createElement( 'select' );
     41                        this.commitContent( element );
    11542
    116                         var selectValue = this.getContentElement( 'info', 'txtValue' ).getValue();
    117                         var optionsNames = plugin.getOptions( this.getContentElement( 'info', 'cmbName' ) );
    118                         var optionsValues = plugin.getOptions( this.getContentElement( 'info', 'cmbValue' ) );
    119 
    120                         //Set added/changed attributes
    121                         this.editObj.setAttributes( this.changedAttibutes );
    122 
    123                         var parentEditor = this.getParentEditor();
    124 
    125                         // Add all available options.
    126                         for ( var i = 0 ; i < optionsNames.length ; i++ )
     43                        if ( isInsertMode )
    12744                        {
    128                                 var sText       = optionsNames[i].value;
    129                                 var sValue      = optionsValues[i].value;
    130                                 if ( sValue.length == 0 ) sValue = sText;
    131 
    132                                 var oOption = plugin.addOption( this.editObj, sText, sValue, parentEditor.document );
    133                                 if ( sValue == selectValue )
    134                                 {
    135                                         oOption.setAttribute( 'selected', 'selected' );
    136                                         oOption.selected = true;
    137                                 }
    138                         }
    139 
    140                         if ( this.editMode == false )
    141                         {
    14245                                this.restoreSelection();
    143                                 parentEditor.insertElement( this.editObj );
     46                                this.clearSavedSelection();
     47                                editor.insertElement( element );
    14448                        }
    145                         return true;
    14649                },
    14750                contents : [
    14851                        {
     
    15962                                                label : editor.lang.common.name,
    16063                                                'default' : '',
    16164                                                accessKey : 'N',
    162                                                 align:'center',
     65                                                align : 'center',
    16366                                                style : 'width:350px',
    164                                                 validate: function()
     67                                                setup : function( name, element )
    16568                                                {
    166                                                         addChange( 'name', this );
    167                                                         return true;
     69                                                        if ( name == 'select' )
     70                                                        {
     71                                                                this.setValue( element.getAttribute( 'name' ) );
     72                                                                this.focus();
     73                                                        }
     74                                                },
     75                                                commit : function( element )
     76                                                {
     77                                                        if ( this.getValue() != '' || this.isChanged() )
     78                                                                element.setAttribute( 'name', this.getValue() );
    16879                                                }
    16980                                        },
    17081                                        {
     
    195106                                                                style : 'width:175px',
    196107                                                                validate: function()
    197108                                                                {
    198                                                                         if ( this.getValue() != '' )
    199                                                                         {
    200                                                                                 var selectSize = parseInt( this.getValue(), 10 );
    201                                                                                 if ( isNaN( selectSize ) )
    202                                                                                 {
    203                                                                                         this.select();
    204                                                                                         return false;
    205                                                                                 }
    206                                                                                 addChange( 'size', this );
    207                                                                         }
    208                                                                         return true;
     109                                                                        var func = CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed );
     110                                                                        return ( ( this.getValue() == '' ) || func.apply( this ) );
     111                                                                },
     112                                                                setup : function( name, element )
     113                                                                {
     114                                                                        if ( name == 'select' )
     115                                                                                this.setValue( element.getAttribute( 'size' ) );
     116                                                                },
     117                                                                commit : function( element )
     118                                                                {
     119                                                                        if ( this.getValue() != '' || this.isChanged() )
     120                                                                                element.setAttribute( 'size', this.getValue() );
    209121                                                                }
    210122                                                        },
    211123                                                        {
     
    236148                                                                                label : editor.lang.select.opText,
    237149                                                                                style : 'width:100%;margin-bottom:10px'
    238150                                                                        },
    239 
    240151                                                                        {
    241152                                                                                type : 'select',
    242153                                                                                id : 'cmbName',
     
    248159                                                                                items : [],
    249160                                                                                onChange : function()
    250161                                                                                {
    251                                                                                         var dialog = this.getDialog();
    252                                                                                         var names = dialog.getContentElement( 'info', 'cmbName' );
    253                                                                                         var values = dialog.getContentElement( 'info', 'cmbValue' );
     162                                                                                        var dialog = this.getDialog(),
     163                                                                                                values = dialog.getContentElement( 'info', 'cmbValue' ),
     164                                                                                                name = dialog.getContentElement( 'info', 'txtOptName' ),
     165                                                                                                value = dialog.getContentElement( 'info', 'txtOptValue' ),
     166                                                                                                iIndex = plugin.getSelectedIndex( this );
    254167
    255                                                                                         var name = dialog.getContentElement( 'info', 'txtOptName' );
    256                                                                                         var value = dialog.getContentElement( 'info', 'txtOptValue' );
    257 
    258                                                                                         var iIndex = plugin.getSelectedIndex( names );
    259168                                                                                        plugin.setSelectedIndex( values, iIndex );
    260 
    261                                                                                         name.setValue( names.getValue() );
     169                                                                                        name.setValue( this.getValue() );
    262170                                                                                        value.setValue( values.getValue() );
     171                                                                                },
     172                                                                                setup : function( name, element )
     173                                                                                {
     174                                                                                        if ( name == 'clear' )
     175                                                                                                plugin.removeAllOptions( this );
     176                                                                                        else if ( name == 'option' )
     177                                                                                                plugin.addOption( this, element.innerHTML, element.innerHTML,
     178                                                                                                        this.getDialog.getParentEditor().document );
     179                                                                                },
     180                                                                                commit : function( element )
     181                                                                                {
     182                                                                                        var dialog = this.getDialog(),
     183                                                                                                optionsNames = plugin.getOptions( this ),
     184                                                                                                optionsValues = plugin.getOptions(
     185                                                                                                        dialog.getContentElement( 'info', 'cmbValue' ) ),
     186                                                                                                selectValue = dialog.getContentElement( 'info', 'txtValue' );
     187
     188                                                                                        plugin.removeAllOptions( element );
     189
     190                                                                                        for ( var i = 0 ; i < optionsNames.length ; i++ )
     191                                                                                        {
     192                                                                                                var oOption = plugin.addOption( element, optionsNames[i].value,
     193                                                                                                        optionsValues[i].value, dialog.getParentEditor().document );   
     194                                                                                                if ( optionsValues == selectValue )
     195                                                                                                {
     196                                                                                                        oOption.setAttribute( 'selected', 'selected' );
     197                                                                                                        oOption.selected = true;
     198                                                                                                }       
     199                                                                                        }
    263200                                                                                }
    264201                                                                        }
    265202                                                                ]
     
    285222                                                                                items : [],
    286223                                                                                onChange : function()
    287224                                                                                {
    288                                                                                         var dialog = this.getDialog();
    289                                                                                         var names = dialog.getContentElement( 'info', 'cmbName' );
    290                                                                                         var values = dialog.getContentElement( 'info', 'cmbValue' );
    291 
    292                                                                                         var name = dialog.getContentElement( 'info', 'txtOptName' );
    293                                                                                         var value = dialog.getContentElement( 'info', 'txtOptValue' );
    294 
    295                                                                                         var iIndex = plugin.getSelectedIndex( values );
     225                                                                                        var dialog = this.getDialog(),
     226                                                                                                names = dialog.getContentElement( 'info', 'cmbName' ),
     227                                                                                                name = dialog.getContentElement( 'info', 'txtOptName' ),
     228                                                                                                value = dialog.getContentElement( 'info', 'txtOptValue' ),
     229                                                                                                iIndex = plugin.getSelectedIndex( this );
     230                                                                                               
    296231                                                                                        plugin.setSelectedIndex( names, iIndex );
    297 
    298232                                                                                        name.setValue( names.getValue() );
    299                                                                                         value.setValue( values.getValue() );
     233                                                                                        value.setValue( this.getValue() );
     234                                                                                },
     235                                                                                setup : function( name, element )
     236                                                                                {
     237                                                                                        if ( name == 'clear' )
     238                                                                                                plugin.removeAllOptions( this );
     239                                                                                        else if ( name == 'option' )
     240                                                                                        {
     241                                                                                                var oValue      = element.value;
     242                                                                                                plugin.addOption( this, oValue, oValue,
     243                                                                                                        this.getDialog.getParentEditor().document );
     244                                                                                                if ( element.getAttribute( 'selected' ) == 'selected' )
     245                                                                                                        this.getDialog().getContentElement( 'info', 'txtValue' ).setValue( oValue );
     246                                                                                        }
    300247                                                                                }
    301248                                                                        },
    302249                                                                ]
     
    315262                                                                                {
    316263                                                                                        //Add new option.
    317264                                                                                        var dialog = this.getDialog();
    318                                                                                         var parentEditor = dialog.getParentEditor();
    319                                                                                         var name = dialog.getContentElement( 'info', 'txtOptName' );
    320                                                                                         var value = dialog.getContentElement( 'info', 'txtOptValue' );
     265                                                                                                parentEditor = dialog.getParentEditor(),
     266                                                                                                name = dialog.getContentElement( 'info', 'txtOptName' ),
     267                                                                                                value = dialog.getContentElement( 'info', 'txtOptValue' ),
     268                                                                                                names = dialog.getContentElement( 'info', 'cmbName' ),
     269                                                                                                values = dialog.getContentElement( 'info', 'cmbValue' );
    321270
    322                                                                                         var names = dialog.getContentElement( 'info', 'cmbName' );
    323                                                                                         var values = dialog.getContentElement( 'info', 'cmbValue' );
    324 
    325271                                                                                        plugin.addOption(names, name.getValue(), name.getValue() );
    326272                                                                                        plugin.addOption(values, value.getValue(), value.getValue() );
    327273
     
    338284                                                                                {
    339285                                                                                        //Modify selected option.
    340286                                                                                        var dialog = this.getDialog();
    341                                                                                         var name = dialog.getContentElement( 'info', 'txtOptName' );
    342                                                                                         var value = dialog.getContentElement( 'info', 'txtOptValue' );
     287                                                                                                name = dialog.getContentElement( 'info', 'txtOptName' ),
     288                                                                                                value = dialog.getContentElement( 'info', 'txtOptValue' ),
     289                                                                                                names = dialog.getContentElement( 'info', 'cmbName' ),
     290                                                                                                values = dialog.getContentElement( 'info', 'cmbValue' ),
     291                                                                                                iIndex = plugin.getSelectedIndex( names );
    343292
    344                                                                                         var names = dialog.getContentElement( 'info', 'cmbName' );
    345                                                                                         var values = dialog.getContentElement( 'info', 'cmbValue' );
    346 
    347                                                                                         var iIndex = plugin.getSelectedIndex( names );
    348293                                                                                        if ( iIndex >= 0 )
    349294                                                                                        {
    350295                                                                                                plugin.modifyOption( names, iIndex, name.getValue(), name.getValue() );
     
    360305                                                                                onClick : function()
    361306                                                                                {
    362307                                                                                        //Move up.
    363                                                                                         var dialog = this.getDialog();
    364                                                                                         var names = dialog.getContentElement( 'info', 'cmbName' );
    365                                                                                         var values = dialog.getContentElement( 'info', 'cmbValue' );
     308                                                                                        var dialog = this.getDialog(),
     309                                                                                                names = dialog.getContentElement( 'info', 'cmbName' ),
     310                                                                                                values = dialog.getContentElement( 'info', 'cmbValue' );
    366311
    367312                                                                                        plugin.changeOptionPosition( names, -1 );
    368313                                                                                        plugin.changeOptionPosition( values, -1 );
     
    376321                                                                                onClick : function()
    377322                                                                                {
    378323                                                                                        //Move down.
    379                                                                                         var dialog = this.getDialog();
    380                                                                                         var names = dialog.getContentElement( 'info', 'cmbName' );
    381                                                                                         var values = dialog.getContentElement( 'info', 'cmbValue' );
     324                                                                                        var dialog = this.getDialog(),
     325                                                                                        names = dialog.getContentElement( 'info', 'cmbName' ),
     326                                                                                        values = dialog.getContentElement( 'info', 'cmbValue' );
    382327
    383328                                                                                        plugin.changeOptionPosition( names, 1 );
    384329                                                                                        plugin.changeOptionPosition( values, 1 );
     
    400345                                                                onClick : function()
    401346                                                                {
    402347                                                                        //Set as default value.
    403                                                                         var dialog = this.getDialog();
    404                                                                         var values = dialog.getContentElement( 'info', 'cmbValue' );
    405                                                                         var txtValue = dialog.getContentElement( 'info', 'txtValue' );
     348                                                                        var dialog = this.getDialog(),
     349                                                                                values = dialog.getContentElement( 'info', 'cmbValue' ),
     350                                                                                txtValue = dialog.getContentElement( 'info', 'txtValue' );
    406351                                                                        txtValue.setValue( values.getValue() );
    407352                                                                }
    408353                                                        },
     
    413358                                                                onClick : function()
    414359                                                                {
    415360                                                                        // Delete option.
    416                                                                         var dialog = this.getDialog();
    417                                                                         var names = dialog.getContentElement( 'info', 'cmbName' );
    418                                                                         var values = dialog.getContentElement( 'info', 'cmbValue' );
    419 
     361                                                                        var dialog = this.getDialog(),
     362                                                                                names = dialog.getContentElement( 'info', 'cmbName' ),
     363                                                                                values = dialog.getContentElement( 'info', 'cmbValue' ),
     364                                                                                name = dialog.getContentElement( 'info', 'txtOptName' ),
     365                                                                                value = dialog.getContentElement( 'info', 'txtOptValue' ),
     366                                                                       
    420367                                                                        plugin.removeSelectedOptions( names );
    421368                                                                        plugin.removeSelectedOptions( values );
    422369
    423                                                                         var name = dialog.getContentElement( 'info', 'txtOptName' );
    424                                                                         var value = dialog.getContentElement( 'info', 'txtOptValue' );
    425370                                                                        name.setValue( "" );
    426371                                                                        value.setValue( "" );
    427372                                                                }
     
    432377                                                                label : editor.lang.select.chkMulti,
    433378                                                                'default' : 'url',
    434379                                                                accessKey : 'M',
    435                                                                 validate: function()
     380                                                                value : "checked",
     381                                                                setup : function( name, element )
    436382                                                                {
    437                                                                         // Multiselect checkbox.
    438                                                                         addChange( 'multiple', this );
    439                                                                         return true;
     383                                                                        if ( name == 'select' )
     384                                                                                this.setValue( element.getAttribute( 'multiple' ) );
     385                                                                },
     386                                                                commit : function( element )
     387                                                                {
     388                                                                        if ( this.getValue() == true || this.isChanged() )
     389                                                                                element.setAttribute( 'multiple', this.getValue() );
    440390                                                                }
    441391                                                        }
    442392                                                ]
  • _source/plugins/forms/dialogs/textarea.js

     
    44*/
    55CKEDITOR.dialog.add( 'textarea', function( editor )
    66{
    7         var addChange = function( name, input ){
    8                 var dialog = input.getDialog();
    9                 if ( input.isChanged() || ( dialog.editMode == false && input.getValue() != '' ))
    10                 {
    11                         dialog.changedAttibutes[ name ] = input.getValue();
    12                         return true;
    13                 }
    14                 return false;
    15         };
    16 
    17         // Function called in onShow to load selected element.
    18         var loadSelection = function( editor, selection, ranges, element )
    19         {
    20                 this.saveSelection();
    21                 this.editObj = element;
    22                 this.editMode = true;
    23 
    24                 // Fill out all fields.
    25                 readAttribute.apply( this, [ 'info', 'name', 'txtName' ] );
    26                 readAttribute.apply( this, [ 'info', 'cols', 'txtColumns' ] );
    27                 readAttribute.apply( this, [ 'info', 'rows', 'txtRows' ] );
    28 
    29                 return false;
    30         };
    31 
    32         var readAttribute = function( page, attribute, input )
    33         {
    34                 var attributeValue = this.editObj.getAttribute( attribute );
    35                 this.setValueOf( page, input, attributeValue );
    36 
    37                 return attributeValue;
    38         }
    39 
    407        return {
    418                title : editor.lang.textarea.title,
    42                 resizable : CKEDITOR.DIALOG_RESIZE_NONE,
    439                minWidth : 400,
    4410                minHeight : 230,
    4511                onShow : function()
    4612                {
    47                         // Default: create a new element.
    48                         this.editMode = false;
    49 
    50                         // IE BUG: Selection must be in the editor for getSelection() to work.
     13                        // IE BUG: Selection must be in the editor for getSelectedElement()
     14                        // to work.
    5115                        this.restoreSelection();
    5216
    53                         var editor = this.getParentEditor(),
    54                                 selection = editor.getSelection(),
    55                                 ranges = selection.getRanges();
    56 
    57                         // Check selection. Fill in all the relevant fields if there's already one link selected.
    58                         if ( ranges.length == 1 )
     17                        var element = this.getParentEditor().getSelection().getSelectedElement();
     18                        if ( element && element.getName() == "textarea" )
    5919                        {
    60                                 ranges[0].enlarge( CKEDITOR.ENLARGE_ELEMENT );
    61 
    62                                 var rangeRoot = ranges[0].getCommonAncestor( true );
    63                                 var element = rangeRoot.getAscendant( 'textarea', true );
    64                                 if ( element )
    65                                 {
    66                                         loadSelection.apply( this, [ editor, selection, ranges, element ] );
    67                                         selection.selectElement( element );
    68                                 }
     20                                this._element = element;
     21                                this.setupContent( element );
    6922                        }
    7023
    71                         if ( this.editMode == false )   //New object.
    72                                 this.editObj = editor.document.createElement( 'textarea' );
    73 
    7424                        this.getContentElement( 'info', 'txtName' ).focus();
    75                         this.changedAttibutes = new Array();
    7625                },
    7726                onOk : function()
    7827                {
    79                         this.editObj.setAttributes( this.changedAttibutes );
     28                        var editor,
     29                                element = this._element,
     30                                isInsertMode = !element;
    8031
    81                         if ( this.editMode == false )
     32                        if ( isInsertMode )
    8233                        {
     34                                editor = this.getParentEditor();
     35                                element = editor.document.createElement( 'textarea' );
     36                        }
     37                        this.commitContent( element );
     38
     39                        if ( isInsertMode )
     40                        {
    8341                                this.restoreSelection();
    8442                                this.clearSavedSelection();
    85                                 editor.insertElement( this.editObj );
     43                                editor.insertElement( element );
    8644                        }
    87                         return true;
    8845                },
    8946                contents : [
    9047                        {
     
    9956                                                label : editor.lang.common.name,
    10057                                                'default' : '',
    10158                                                accessKey : 'N',
    102                                                 validate: function()
     59                                                setup : function( element )
    10360                                                {
    104                                                         addChange( 'name', this );
    105                                                         return true;
     61                                                        this.setValue( element.getAttribute( 'name' ) );
     62                                                        this.focus();
     63                                                },
     64                                                commit : function( element )
     65                                                {
     66                                                        if ( this.getValue() != '' || this.isChanged() )
     67                                                                element.setAttribute( 'name', this.getValue() );
    10668                                                }
    10769                                        },
    10870                                        {
     
    11577                                                validate: function()
    11678                                                {
    11779                                                        var func = CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed );
    118                                                         var isValid = func.apply( this );
    119                                                         if ( isValid )
    120                                                                 addChange( 'cols', this );
    121                                                         return isValid;
     80                                                        return func.apply( this );
     81                                                },
     82                                                setup : function( element )
     83                                                {
     84                                                        this.setValue( element.getAttribute( 'cols' ) );
     85                                                },
     86                                                commit : function( element )
     87                                                {
     88                                                        if ( this.getValue() != '' || this.isChanged() )
     89                                                                element.setAttribute( 'cols', this.getValue() );
    12290                                                }
    12391                                        },
    12492                                        {
     
    13199                                                validate: function()
    132100                                                {
    133101                                                        var func = CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed );
    134                                                         var isValid = func.apply( this );
    135                                                         if ( isValid )
    136                                                                 addChange( 'rows', this );
    137                                                         return isValid;
     102                                                        return func.apply( this );
     103                                                },
     104                                                setup : function( element )
     105                                                {
     106                                                        this.setValue( element.getAttribute( 'rows' ) );
     107                                                },
     108                                                commit : function( element )
     109                                                {
     110                                                        if ( this.getValue() != '' || this.isChanged() )
     111                                                                element.setAttribute( 'rows', this.getValue() );
    138112                                                }
    139113                                        }
    140114                                ]
  • _source/plugins/forms/dialogs/textfield.js

     
    44*/
    55CKEDITOR.dialog.add( 'textfield', function( editor )
    66{
    7         var addChange = function( name, input ){
    8                 var dialog = input.getDialog();
    9                 if ( input.isChanged() || ( dialog.editMode == false && input.getValue() != '' ))
    10                 {
    11                         dialog.changedAttibutes[ name ] = input.getValue();
    12                         return true;
    13                 }
    14                 return false;
    15         };
    16 
    17         // Function called in onShow to load selected element.
    18         var loadSelection = function( editor, selection, ranges, element )
    19         {
    20                 this.saveSelection();
    21                 this.editObj = element;
    22                 this.editMode = true;
    23 
    24                 // Fill out all fields.
    25                 readAttribute.apply( this, [ 'info', 'name', 'txtName' ] );
    26                 readAttribute.apply( this, [ 'info', 'value', 'txtValue' ] );
    27                 readAttribute.apply( this, [ 'info', 'type', 'cmbType' ] );
    28                 readAttribute.apply( this, [ 'info', 'width', 'txtTextCharWidth' ] );
    29                 readAttribute.apply( this, [ 'info', 'maxlength', 'txtMaxChars' ] );
    30 
    31                 return false;
    32         };
    33 
    34         var readAttribute = function( page, attribute, input )
    35         {
    36                 var attributeValue = this.editObj.getAttribute( attribute );
    37                 this.setValueOf( page, input, attributeValue );
    38 
    39                 return attributeValue;
    40         }
    417        return {
    428                title : editor.lang.textfield.title,
    43                 resizable : CKEDITOR.DIALOG_RESIZE_NONE,
    449                minWidth : 400,
    4510                minHeight : 230,
    46 
    4711                onShow : function()
    4812                {
    49                         // Default: create a new element.
    50                         this.editMode = false;
    51 
    52                         // IE BUG: Selection must be in the editor for getSelection() to work.
     13                        // IE BUG: Selection must be in the editor for getSelectedElement()
     14                        // to work.
    5315                        this.restoreSelection();
    5416
    55                         var editor = this.getParentEditor(),
    56                                 selection = editor.getSelection(),
    57                                 ranges = selection.getRanges();
    58 
    59                         // Check selection. Fill in all the relevant fields if there's already one link selected.
    60                         if ( ranges.length == 1 )
     17                        var element = this.getParentEditor().getSelection().getSelectedElement();
     18                        if ( element && element.getName() == "input" && ( element.getAttribute( 'type' ) == "text" && !element.getAttribute( 'type' ) ) )
    6119                        {
    62                                 ranges[0].enlarge( CKEDITOR.ENLARGE_ELEMENT );
    63 
    64                                 var rangeRoot = ranges[0].getCommonAncestor( true );
    65                                 var element = rangeRoot.getAscendant( 'input', true );
    66                                 if ( element )
    67                                 {
    68                                         var type = element.getAttribute( 'type' );
    69                                         if ( type == "text" || type == null )
    70                                         {
    71                                                 loadSelection.apply( this, [ editor, selection, ranges, element ] );
    72                                                 selection.selectElement( element );
    73                                         }
    74                                 }
     20                                this._element = element;
     21                                this.setupContent( element );
    7522                        }
    76 
    77                         if ( this.editMode == false )   //New object.
    78                                 this.editObj = editor.document.createElement( 'input' );
    79 
    80                         this.getContentElement( 'info', 'txtName' ).focus();
    81                         this.changedAttibutes = new Array();
    8223                },
    8324                onOk : function()
    8425                {
    85                         this.editObj.setAttributes( this.changedAttibutes );
     26                        var editor,
     27                                element = this._element,
     28                                isInsertMode = !element;
    8629
    87                         if ( this.editMode == false )
     30                        if ( isInsertMode )
    8831                        {
     32                                editor = this.getParentEditor();
     33                                element = editor.document.createElement( 'input' );
     34                                element.setAttribute( 'type', 'text' );
     35                        }
     36                        this.commitContent( element );
     37
     38                        if ( isInsertMode )
     39                        {
    8940                                this.restoreSelection();
    9041                                this.clearSavedSelection();
    91                                 editor.insertElement( this.editObj );
     42                                editor.insertElement( element );
    9243                        }
    93                         return true;
    9444                },
    9545                contents : [
    9646                        {
     
    11060                                                                label : editor.lang.textfield.name,
    11161                                                                'default' : '',
    11262                                                                accessKey : 'N',
    113                                                                 validate: function()
     63                                                                setup : function( element )
    11464                                                                {
    115                                                                         addChange( 'name', this );
    116                                                                         return true;
     65                                                                        this.setValue( element.getAttribute( 'name' ) );
     66                                                                        this.focus();
     67                                                                },
     68                                                                commit : function( element )
     69                                                                {
     70                                                                        if ( this.getValue() != '' || this.isChanged() )
     71                                                                                element.setAttribute( 'name', this.getValue() );
    11772                                                                }
    11873                                                        },
    11974                                                        {
     
    12277                                                                label : editor.lang.textfield.value,
    12378                                                                'default' : '',
    12479                                                                accessKey : 'V',
    125                                                                 validate: function()
     80                                                                setup : function( element )
    12681                                                                {
    127                                                                         addChange( 'value', this );
    128                                                                         return true;
     82                                                                        this.setValue( element.getAttribute( 'value' ) );
     83                                                                },
     84                                                                commit : function( element )
     85                                                                {
     86                                                                        if ( this.getValue() != '' || this.isChanged() )
     87                                                                                element.setAttribute( 'value', this.getValue() );
    12988                                                                }
    13089                                                        }
    13190                                                ]
     
    145104                                                                validate: function()
    146105                                                                {
    147106                                                                        var func = CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed );
    148                                                                         var isValid = func.apply( this );
    149                                                                         if ( isValid )
    150                                                                                 addChange( 'width', this );
    151                                                                         return isValid;
     107                                                                        return isValid = func.apply( this );
     108                                                                },
     109                                                                setup : function( element )
     110                                                                {
     111                                                                        this.setValue( element.getAttribute( 'widtg' ) );
     112                                                                },
     113                                                                commit : function( element )
     114                                                                {
     115                                                                        if ( this.getValue() != '' || this.isChanged() )
     116                                                                                element.setAttribute( 'width', this.getValue() );
    152117                                                                }
    153118                                                        },
    154119                                                        {
     
    161126                                                                validate: function()
    162127                                                                {
    163128                                                                        var func = CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed );
    164                                                                         var isValid = func.apply( this );
    165                                                                         if ( isValid )
    166                                                                                 addChange( 'maxlength', this );
    167                                                                         return isValid;
     129                                                                        return isValid = func.apply( this );
     130                                                                },
     131                                                                setup : function( element )
     132                                                                {
     133                                                                        this.setValue( element.getAttribute( 'maxlength' ) );
     134                                                                },
     135                                                                commit : function( element )
     136                                                                {
     137                                                                        if ( this.getValue() != '' || this.isChanged() )
     138                                                                                element.setAttribute( 'maxlength', this.getValue() );
    168139                                                                }
    169140                                                        }
    170141                                                ]
     
    180151                                                        [ editor.lang.textfield.typeText, 'text' ],
    181152                                                        [ editor.lang.textfield.typePass, 'pass' ],
    182153                                                ],
    183                                                 validate: function()
     154                                                setup : function( element )
    184155                                                {
    185                                                         addChange( 'type', this );
    186                                                         return true;
     156                                                        this.setValue( element.getAttribute( 'type' ) );
     157                                                },
     158                                                commit : function( element )
     159                                                {
     160                                                        element.setAttribute( 'type', this.getValue() );
    187161                                                }
    188162                                        }
    189163                                ]
  • _source/plugins/forms/plugin.js

     
    143143                        combo.options[ index ].innerHTML        = CKEDITOR.tools.htmlEncode( title ) ;
    144144                        combo.options[ index ].value            = CKEDITOR.tools.htmlEncode( value ) ;
    145145                },
     146                removeAllOptions : function( combo )
     147                {
     148                        combo = this._getObject( combo, true );
     149                        while( combo.options.length )
     150                        {
     151                                combo.options[0].parentNode.removeChild( combo.options[0] );
     152                        }
     153                },
    146154
    147155                // Moves the selected option by a number of steps (also negative).
    148156                changeOptionPosition : function ( combo, steps )
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy