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