src/cm/media/js/lib/yui/yui3-3.15.0/build/exec-command/exec-command.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 602 e16a97fb364a
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('exec-command', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
     * Plugin for the frame module to handle execCommands for Editor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
     * @class Plugin.ExecCommand
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
     * @extends Base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
     * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
     * @module editor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
     * @submodule exec-command
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
        var ExecCommand = function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
            ExecCommand.superclass.constructor.apply(this, arguments);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
        * This method is meant to normalize IE's in ability to exec the proper command on elements with CSS styling.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
        * @method fixIETags
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
        * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
        * @param {String} cmd The command to execute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
        * @param {String} tag The tag to create
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
        * @param {String} rule The rule that we are looking for.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
        fixIETags = function(cmd, tag, rule) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
            var inst = this.getInstance(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
                doc = inst.config.doc,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
                sel = doc.selection.createRange(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
                o = doc.queryCommandValue(cmd),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
                html, reg, m, p, d, s, c;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
            if (o) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
                html = sel.htmlText;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
                reg = new RegExp(rule, 'g');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
                m = html.match(reg);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
                if (m) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
                    html = html.replace(rule + ';', '').replace(rule, '');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
                    sel.pasteHTML('<var id="yui-ie-bs">');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
                    p = doc.getElementById('yui-ie-bs');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
                    d = doc.createElement('div');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
                    s = doc.createElement(tag);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
                    d.innerHTML = html;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
                    if (p.parentNode !== inst.config.doc.body) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
                        p = p.parentNode;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
                    c = d.childNodes;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
                    p.parentNode.replaceChild(s, p);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
                    Y.each(c, function(f) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
                        s.appendChild(f);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
                    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
                    sel.collapse();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
                    if (sel.moveToElementText) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
                        sel.moveToElementText(s);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
                    sel.select();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
            this._command(cmd);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
        Y.extend(ExecCommand, Y.Base, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
            * An internal reference to the keyCode of the last key that was pressed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
            * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
            * @property _lastKey
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
            _lastKey: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
            * An internal reference to the instance of the frame plugged into.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
            * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
            * @property _inst
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
            _inst: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
            * Execute a command on the frame's document.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
            * @method command
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
            * @param {String} action The action to perform (bold, italic, fontname)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
            * @param {String} value The optional value (helvetica)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
            * @return {Node/NodeList} Should return the Node/Nodelist affected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
            command: function(action, value) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
                var fn = ExecCommand.COMMANDS[action];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
                if (fn) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
                    return fn.call(this, action, value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
                } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
                    return this._command(action, value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
            * The private version of execCommand that doesn't filter for overrides.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
            * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
            * @method _command
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
            * @param {String} action The action to perform (bold, italic, fontname)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
            * @param {String} value The optional value (helvetica)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
            _command: function(action, value) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
                var inst = this.getInstance();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
                try {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
                    try {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
                        inst.config.doc.execCommand('styleWithCSS', null, 1);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
                    } catch (e1) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
                        try {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
                            inst.config.doc.execCommand('useCSS', null, 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
                        } catch (e2) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
                    inst.config.doc.execCommand(action, null, value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
                } catch (e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
            * Get's the instance of YUI bound to the parent frame
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
            * @method getInstance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
            * @return {YUI} The YUI instance bound to the parent frame
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
            getInstance: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
                if (!this._inst) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
                    this._inst = this.get('host').getInstance();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
                return this._inst;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
            initializer: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
                Y.mix(this.get('host'), {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
                    execCommand: function(action, value) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
                        return this.exec.command(action, value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
                    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
                    _execCommand: function(action, value) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
                        return this.exec._command(action, value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
                });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
                this.get('host').on('dom:keypress', Y.bind(function(e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
                    this._lastKey = e.keyCode;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
                }, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
            _wrapContent: function(str, override) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
                var useP = (this.getInstance().host.editorPara && !override ? true : false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
                if (useP) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
                    str = '<p>' + str + '</p>';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
                } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
                    str = str + '<br>';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
                return str;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
        }, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
            * execCommand
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
            * @property NAME
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
            * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
            NAME: 'execCommand',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
            * exec
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
            * @property NS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
            * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
            NS: 'exec',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
            ATTRS: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
                host: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
                    value: false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
            * Static object literal of execCommand overrides
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
            * @class Plugin.ExecCommand.COMMANDS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
            * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
            COMMANDS: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
                * Wraps the content with a new element of type (tag)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
                * @method wrap
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
                * @param {String} cmd The command executed: wrap
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
                * @param {String} tag The tag to wrap the selection with
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
                * @return {NodeList} NodeList of the items touched by this command.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
                wrap: function(cmd, tag) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
                    var inst = this.getInstance();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
                    return (new inst.EditorSelection()).wrapContent(tag);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
                * Inserts the provided HTML at the cursor, should be a single element.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
                * @method inserthtml
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
                * @param {String} cmd The command executed: inserthtml
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
                * @param {String} html The html to insert
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
                * @return {Node} Node instance of the item touched by this command.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
                inserthtml: function(cmd, html) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
                    var inst = this.getInstance();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
                    if (inst.EditorSelection.hasCursor() || Y.UA.ie) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
                        return (new inst.EditorSelection()).insertContent(html);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
                    } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
                        this._command('inserthtml', html);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
                * Inserts the provided HTML at the cursor, and focuses the cursor afterwards.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
                * @method insertandfocus
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
                * @param {String} cmd The command executed: insertandfocus
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
                * @param {String} html The html to insert
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
                * @return {Node} Node instance of the item touched by this command.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
                insertandfocus: function(cmd, html) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
                    var inst = this.getInstance(), out, sel;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
                    if (inst.EditorSelection.hasCursor()) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
                        html += inst.EditorSelection.CURSOR;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
                        out = this.command('inserthtml', html);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
                        sel = new inst.EditorSelection();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
                        sel.focusCursor(true, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
                    } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
                        this.command('inserthtml', html);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
                    return out;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
                * Inserts a BR at the current cursor position
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
                * @method insertbr
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
                * @param {String} cmd The command executed: insertbr
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
                insertbr: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
                    var inst = this.getInstance(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
                        sel = new inst.EditorSelection(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
                        html = '<var>|</var>', last = null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
                        root = inst.EditorSelection.ROOT,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
                        q = (Y.UA.webkit) ? 'span.Apple-style-span,var' : 'var',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
                        insert = function(n) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
                            var c = inst.Node.create('<br>');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
                            n.insert(c, 'before');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
                            return c;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
                        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
                    if (sel._selection.pasteHTML) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
                        sel._selection.pasteHTML(html);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
                    } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
                        this._command('inserthtml', html);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
                    root.all(q).each(function(n) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
                        var g = true, s;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
                        if (Y.UA.webkit) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
                            g = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
                            if (n.get('innerHTML') === '|') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
                                g = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
                        if (g) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
                            last = insert(n);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
                            if ((!last.previous() || !last.previous().test('br')) && Y.UA.gecko) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
                                s = last.cloneNode();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
                                last.insert(s, 'after');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
                                last = s;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
                            n.remove();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
                    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   267
                    if (Y.UA.webkit && last) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   268
                        insert(last);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   269
                        sel.selectNode(last);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   270
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   271
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   272
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   273
                * Inserts an image at the cursor position
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   274
                * @method insertimage
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   275
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   276
                * @param {String} cmd The command executed: insertimage
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   277
                * @param {String} img The url of the image to be inserted
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   278
                * @return {Node} Node instance of the item touched by this command.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   279
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   280
                insertimage: function(cmd, img) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   281
                    return this.command('inserthtml', '<img src="' + img + '">');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   282
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   283
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   284
                * Add a class to all of the elements in the selection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   285
                * @method addclass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   286
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   287
                * @param {String} cmd The command executed: addclass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   288
                * @param {String} cls The className to add
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   289
                * @return {NodeList} NodeList of the items touched by this command.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   290
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   291
                addclass: function(cmd, cls) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   292
                    var inst = this.getInstance();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   293
                    return (new inst.EditorSelection()).getSelected().addClass(cls);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   294
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   295
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   296
                * Remove a class from all of the elements in the selection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   297
                * @method removeclass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   298
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   299
                * @param {String} cmd The command executed: removeclass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   300
                * @param {String} cls The className to remove
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   301
                * @return {NodeList} NodeList of the items touched by this command.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   302
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   303
                removeclass: function(cmd, cls) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   304
                    var inst = this.getInstance();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   305
                    return (new inst.EditorSelection()).getSelected().removeClass(cls);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   306
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   307
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   308
                * Adds a forecolor to the current selection, or creates a new element and applies it
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   309
                * @method forecolor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   310
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   311
                * @param {String} cmd The command executed: forecolor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   312
                * @param {String} val The color value to apply
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   313
                * @return {NodeList} NodeList of the items touched by this command.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   314
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   315
                forecolor: function(cmd, val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   316
                    var inst = this.getInstance(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   317
                        sel = new inst.EditorSelection(), n;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   318
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   319
                    if (!Y.UA.ie) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   320
                        this._command('useCSS', false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   321
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   322
                    if (inst.EditorSelection.hasCursor()) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   323
                        if (sel.isCollapsed) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   324
                            if (sel.anchorNode && (sel.anchorNode.get('innerHTML') === '&nbsp;')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   325
                                sel.anchorNode.setStyle('color', val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   326
                                n = sel.anchorNode;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   327
                            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   328
                                n = this.command('inserthtml', '<span style="color: ' + val + '">' + inst.EditorSelection.CURSOR + '</span>');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   329
                                sel.focusCursor(true, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   330
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   331
                            return n;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   332
                        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   333
                            return this._command(cmd, val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   334
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   335
                    } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   336
                        this._command(cmd, val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   337
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   338
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   339
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   340
                * Adds a background color to the current selection, or creates a new element and applies it
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   341
                * @method backcolor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   342
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   343
                * @param {String} cmd The command executed: backcolor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   344
                * @param {String} val The color value to apply
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   345
                * @return {NodeList} NodeList of the items touched by this command.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   346
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   347
                backcolor: function(cmd, val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   348
                    var inst = this.getInstance(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   349
                        sel = new inst.EditorSelection(), n;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   350
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   351
                    if (Y.UA.gecko || Y.UA.opera) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   352
                        cmd = 'hilitecolor';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   353
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   354
                    if (!Y.UA.ie) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   355
                        this._command('useCSS', false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   356
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   357
                    if (inst.EditorSelection.hasCursor()) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   358
                        if (sel.isCollapsed) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   359
                            if (sel.anchorNode && (sel.anchorNode.get('innerHTML') === '&nbsp;')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   360
                                sel.anchorNode.setStyle('backgroundColor', val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   361
                                n = sel.anchorNode;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   362
                            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   363
                                n = this.command('inserthtml',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   364
                                    '<span style="background-color: ' + val + '">' + inst.EditorSelection.CURSOR + '</span>');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   365
                                sel.focusCursor(true, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   366
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   367
                            return n;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   368
                        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   369
                            return this._command(cmd, val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   370
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   371
                    } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   372
                        this._command(cmd, val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   373
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   374
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   375
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   376
                * Sugar method, calles backcolor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   377
                * @method hilitecolor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   378
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   379
                * @param {String} cmd The command executed: backcolor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   380
                * @param {String} val The color value to apply
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   381
                * @return {NodeList} NodeList of the items touched by this command.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   382
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   383
                hilitecolor: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   384
                    return ExecCommand.COMMANDS.backcolor.apply(this, arguments);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   385
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   386
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   387
                * Adds a font name to the current selection, or creates a new element and applies it
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   388
                * @method fontname2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   389
                * @deprecated
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   390
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   391
                * @param {String} cmd The command executed: fontname
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   392
                * @param {String} val The font name to apply
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   393
                * @return {NodeList} NodeList of the items touched by this command.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   394
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   395
                fontname2: function(cmd, val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   396
                    this._command('fontname', val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   397
                    var inst = this.getInstance(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   398
                        sel = new inst.EditorSelection();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   399
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   400
                    if (sel.isCollapsed && (this._lastKey !== 32)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   401
                        if (sel.anchorNode.test('font')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   402
                            sel.anchorNode.set('face', val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   403
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   404
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   405
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   406
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   407
                * Adds a fontsize to the current selection, or creates a new element and applies it
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   408
                * @method fontsize2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   409
                * @deprecated
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   410
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   411
                * @param {String} cmd The command executed: fontsize
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   412
                * @param {String} val The font size to apply
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   413
                * @return {NodeList} NodeList of the items touched by this command.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   414
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   415
                fontsize2: function(cmd, val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   416
                    this._command('fontsize', val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   417
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   418
                    var inst = this.getInstance(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   419
                        sel = new inst.EditorSelection(), p;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   420
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   421
                    if (sel.isCollapsed && sel.anchorNode && (this._lastKey !== 32)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   422
                        if (Y.UA.webkit) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   423
                            if (sel.anchorNode.getStyle('lineHeight')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   424
                                sel.anchorNode.setStyle('lineHeight', '');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   425
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   426
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   427
                        if (sel.anchorNode.test('font')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   428
                            sel.anchorNode.set('size', val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   429
                        } else if (Y.UA.gecko) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   430
                            p = sel.anchorNode.ancestor(inst.EditorSelection.DEFAULT_BLOCK_TAG);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   431
                            if (p) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   432
                                p.setStyle('fontSize', '');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   433
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   434
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   435
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   436
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   437
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   438
                * Overload for list
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   439
                * @method insertorderedlist
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   440
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   441
                * @param {String} cmd The command executed: list, ul
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   442
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   443
                insertunorderedlist: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   444
                    this.command('list', 'ul');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   445
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   446
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   447
                * Overload for list
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   448
                * @method insertunorderedlist
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   449
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   450
                * @param {String} cmd The command executed: list, ol
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   451
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   452
                insertorderedlist: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   453
                    this.command('list', 'ol');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   454
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   455
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   456
                * Noramlizes lists creation/destruction for IE. All others pass through to native calls
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   457
                * @method list
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   458
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   459
                * @param {String} cmd The command executed: list (not used)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   460
                * @param {String} tag The tag to deal with
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   461
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   462
                list: function(cmd, tag) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   463
                    var inst = this.getInstance(), html, self = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   464
                        /*
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   465
                        The yui3- class name below is not a skinnable class,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   466
                        it's a utility class used internally by editor and
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   467
                        stripped when completed, calling getClassName on this
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   468
                        is a waste of resources.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   469
                        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   470
                        DIR = 'dir', cls = 'yui3-touched',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   471
                        dir, range, div, elm, n, str, s, par, list, lis,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   472
                        useP = (inst.host.editorPara ? true : false), tmp,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   473
                        sdir, hasPParent, fc,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   474
                        root = inst.EditorSelection.ROOT,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   475
                        sel = new inst.EditorSelection();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   476
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   477
                    cmd = 'insert' + ((tag === 'ul') ? 'un' : '') + 'orderedlist';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   478
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   479
                    if (Y.UA.ie && Y.UA.ie < 11 && !sel.isCollapsed) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   480
                        range = sel._selection;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   481
                        html = range.htmlText;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   482
                        div = inst.Node.create(html) || root;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   483
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   484
                        if (div.test('li') || div.one('li')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   485
                            this._command(cmd, null);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   486
                            return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   487
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   488
                        if (div.test(tag)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   489
                            elm = range.item ? range.item(0) : range.parentElement();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   490
                            n = inst.one(elm);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   491
                            lis = n.all('li');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   492
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   493
                            str = '<div>';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   494
                            lis.each(function(l) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   495
                                str = self._wrapContent(l.get('innerHTML'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   496
                            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   497
                            str += '</div>';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   498
                            s = inst.Node.create(str);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   499
                            if (n.get('parentNode').test('div')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   500
                                n = n.get('parentNode');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   501
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   502
                            if (n && n.hasAttribute(DIR)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   503
                                if (useP) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   504
                                    s.all('p').setAttribute(DIR, n.getAttribute(DIR));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   505
                                } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   506
                                    s.setAttribute(DIR, n.getAttribute(DIR));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   507
                                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   508
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   509
                            if (useP) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   510
                                n.replace(s.get('innerHTML'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   511
                            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   512
                                n.replace(s);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   513
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   514
                            if (range.moveToElementText) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   515
                                range.moveToElementText(s._node);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   516
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   517
                            range.select();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   518
                        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   519
                            par = Y.one(range.parentElement());
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   520
                            if (!par.test(inst.EditorSelection.BLOCKS)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   521
                                par = par.ancestor(inst.EditorSelection.BLOCKS);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   522
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   523
                            if (par) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   524
                                if (par.hasAttribute(DIR)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   525
                                    dir = par.getAttribute(DIR);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   526
                                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   527
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   528
                            if (html.indexOf('<br>') > -1) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   529
                                html = html.split(/<br>/i);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   530
                            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   531
                                tmp = inst.Node.create(html);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   532
                                ps = tmp ? tmp.all('p') : null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   533
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   534
                                if (ps && ps.size()) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   535
                                    html = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   536
                                    ps.each(function(n) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   537
                                        html.push(n.get('innerHTML'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   538
                                    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   539
                                } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   540
                                    html = [html];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   541
                                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   542
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   543
                            list = '<' + tag + ' id="ie-list">';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   544
                            Y.each(html, function(v) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   545
                                var a = inst.Node.create(v);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   546
                                if (a && a.test('p')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   547
                                    if (a.hasAttribute(DIR)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   548
                                        dir = a.getAttribute(DIR);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   549
                                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   550
                                    v = a.get('innerHTML');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   551
                                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   552
                                list += '<li>' + v + '</li>';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   553
                            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   554
                            list += '</' + tag + '>';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   555
                            range.pasteHTML(list);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   556
                            elm = inst.config.doc.getElementById('ie-list');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   557
                            elm.id = '';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   558
                            if (dir) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   559
                                elm.setAttribute(DIR, dir);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   560
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   561
                            if (range.moveToElementText) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   562
                                range.moveToElementText(elm);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   563
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   564
                            range.select();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   565
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   566
                    } else if (Y.UA.ie && Y.UA.ie < 11) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   567
                        par = inst.one(sel._selection.parentElement());
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   568
                        if (par.test('p')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   569
                            if (par && par.hasAttribute(DIR)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   570
                                dir = par.getAttribute(DIR);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   571
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   572
                            html = Y.EditorSelection.getText(par);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   573
                            if (html === '') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   574
                                sdir = '';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   575
                                if (dir) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   576
                                    sdir = ' dir="' + dir + '"';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   577
                                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   578
                                list = inst.Node.create(Y.Lang.sub('<{tag}{dir}><li></li></{tag}>', { tag: tag, dir: sdir }));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   579
                                par.replace(list);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   580
                                sel.selectNode(list.one('li'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   581
                            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   582
                                this._command(cmd, null);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   583
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   584
                        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   585
                            this._command(cmd, null);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   586
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   587
                    } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   588
                        root.all(tag).addClass(cls);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   589
                        if (sel.anchorNode.test(inst.EditorSelection.BLOCKS)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   590
                            par = sel.anchorNode;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   591
                        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   592
                            par = sel.anchorNode.ancestor(inst.EditorSelection.BLOCKS);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   593
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   594
                        if (!par) { //No parent, find the first block under the anchorNode
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   595
                            par = sel.anchorNode.one(inst.EditorSelection.BLOCKS);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   596
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   597
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   598
                        if (par && par.hasAttribute(DIR)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   599
                            dir = par.getAttribute(DIR);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   600
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   601
                        if (par && par.test(tag)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   602
                            hasPParent = par.ancestor('p');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   603
                            html = inst.Node.create('<div/>');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   604
                            elm = par.all('li');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   605
                            elm.each(function(h) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   606
                                html.append(self._wrapContent(h.get('innerHTML'), hasPParent));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   607
                            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   608
                            if (dir) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   609
                                if (useP) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   610
                                    html.all('p').setAttribute(DIR, dir);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   611
                                } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   612
                                    html.setAttribute(DIR, dir);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   613
                                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   614
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   615
                            if (useP) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   616
                                html = inst.Node.create(html.get('innerHTML'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   617
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   618
                            fc = html.get('firstChild');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   619
                            par.replace(html);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   620
                            sel.selectNode(fc);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   621
                        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   622
                            this._command(cmd, null);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   623
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   624
                        list = root.all(tag);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   625
                        if (dir) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   626
                            if (list.size()) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   627
                                //Changed to a List
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   628
                                list.each(function(n) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   629
                                    if (!n.hasClass(cls)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   630
                                        n.setAttribute(DIR, dir);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   631
                                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   632
                                });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   633
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   634
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   635
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   636
                        list.removeClass(cls);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   637
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   638
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   639
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   640
                * Noramlizes alignment for Webkit Browsers
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   641
                * @method justify
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   642
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   643
                * @param {String} cmd The command executed: justify (not used)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   644
                * @param {String} val The actual command from the justify{center,all,left,right} stubs
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   645
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   646
                justify: function(cmd, val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   647
                    if (Y.UA.webkit) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   648
                        var inst = this.getInstance(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   649
                            sel = new inst.EditorSelection(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   650
                            aNode = sel.anchorNode, html,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   651
                            bgColor = aNode.getStyle('backgroundColor');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   652
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   653
                            this._command(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   654
                            sel = new inst.EditorSelection();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   655
                            if (sel.anchorNode.test('div')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   656
                                html = '<span>' + sel.anchorNode.get('innerHTML') + '</span>';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   657
                                sel.anchorNode.set('innerHTML', html);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   658
                                sel.anchorNode.one('span').setStyle('backgroundColor', bgColor);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   659
                                sel.selectNode(sel.anchorNode.one('span'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   660
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   661
                    } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   662
                        this._command(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   663
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   664
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   665
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   666
                * Override method for justify
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   667
                * @method justifycenter
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   668
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   669
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   670
                justifycenter: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   671
                    this.command('justify', 'justifycenter');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   672
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   673
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   674
                * Override method for justify
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   675
                * @method justifyleft
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   676
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   677
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   678
                justifyleft: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   679
                    this.command('justify', 'justifyleft');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   680
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   681
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   682
                * Override method for justify
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   683
                * @method justifyright
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   684
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   685
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   686
                justifyright: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   687
                    this.command('justify', 'justifyright');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   688
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   689
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   690
                * Override method for justify
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   691
                * @method justifyfull
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   692
                * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   693
                */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   694
                justifyfull: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   695
                    this.command('justify', 'justifyfull');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   696
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   697
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   698
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   699
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   700
        if (Y.UA.ie && Y.UA.ie < 11) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   701
            ExecCommand.COMMANDS.bold = function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   702
                fixIETags.call(this, 'bold', 'b', 'FONT-WEIGHT: bold');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   703
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   704
            ExecCommand.COMMANDS.italic = function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   705
                fixIETags.call(this, 'italic', 'i', 'FONT-STYLE: italic');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   706
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   707
            ExecCommand.COMMANDS.underline = function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   708
                fixIETags.call(this, 'underline', 'u', 'TEXT-DECORATION: underline');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   709
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   710
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   711
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   712
        Y.namespace('Plugin');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   713
        Y.Plugin.ExecCommand = ExecCommand;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   714
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   715
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   716
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   717
}, '@VERSION@', {"requires": ["frame"]});