src/cm/media/js/lib/yui/yui3-3.15.0/build/createlink-base/createlink-base.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('createlink-base', 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
     * Adds prompt style link creation. Adds an override for the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
     * <a href="Plugin.ExecCommand.html#method_COMMANDS.createlink">createlink execCommand</a>.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
     * @class Plugin.CreateLinkBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
     * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
     * @submodule createlink-base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
     * @module editor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
    var CreateLinkBase = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
    * Strings used by the plugin
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
    * @property STRINGS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
    * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
    CreateLinkBase.STRINGS = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
            * String used for the Prompt
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
            * @property PROMPT
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
            * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
            PROMPT: 'Please enter the URL for the link to point to:',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
            * String used as the default value of the Prompt
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
            * @property DEFAULT
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
            * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
            DEFAULT: 'http://'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
    Y.namespace('Plugin');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
    Y.Plugin.CreateLinkBase = CreateLinkBase;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
    Y.mix(Y.Plugin.ExecCommand.COMMANDS, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
        * Override for the createlink method from the <a href="Plugin.CreateLinkBase.html">CreateLinkBase</a> plugin.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
        * @for Plugin.ExecCommand.COMMANDS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
        * @method createlink
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
        * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
        * @param {String} cmd The command executed: createlink
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
        * @return {Node} Node instance of the item touched by this command.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
        createlink: function(cmd) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
            var inst = this.get('host').getInstance(), out, a, sel, holder,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
                url = prompt(CreateLinkBase.STRINGS.PROMPT, CreateLinkBase.STRINGS.DEFAULT);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
            if (url) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
                holder = inst.config.doc.createElement('div');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
                url = url.replace(/"/g, '').replace(/'/g, ''); //Remove single & double quotes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
                url = inst.config.doc.createTextNode(url);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
                holder.appendChild(url);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
                url = holder.innerHTML;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
                this.get('host')._execCommand(cmd, url);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
                sel = new inst.EditorSelection();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
                out = sel.getSelected();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
                if (!sel.isCollapsed && out.size()) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
                    //We have a selection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
                    a = out.item(0).one('a');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
                    if (a) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
                        out.item(0).replace(a);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
                    if (Y.UA.gecko) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
                        if (a.get('parentNode').test('span')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
                            if (a.get('parentNode').one('br.yui-cursor')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
                                a.get('parentNode').insert(a, 'before');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
                } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
                    //No selection, insert a new node..
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
                    this.get('host').execCommand('inserthtml', '<a href="' + url + '">' + url + '</a>');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
            return a;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
}, '@VERSION@', {"requires": ["editor-base"]});