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