2014-04-21 10:18:24  浏览:2404

CKEditor Link 插件修改

CKEditor Link插件,支持超链接地址,页面锚点和电子邮箱类型

链接地址又包括http://,https://,ftp://,news://,其他

但是有一个问题,这里的URL 地址都需要手动输入

为了数据的完整性,如果只允许用户选择一个列表,那么就需要稍微改动一下。

效果如下

修改效果

下面来修改ckeditorpluginslinkdialogslink.js 

修改之前,请先备份一下


/*
 Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.dialog.add("link", 
function(n) {
    var p,
    q;
    function r(a) {
        return a.replace(/'/g, "\$&")
    }
    function t(a) {
        var g,
        c = p,
        d,
        e;
        g = [q, "("];
        for (var b = 0; b < c.length; b++) d = c[b].toLowerCase(),
        e = a[d],
        0 < b && g.push(","),
        g.push("'", e ? r(encodeURIComponent(a[d])) : "", "'");
        g.push(")");
        return g.join("")
    }
    function u(a) {
        for (var g, c = a.length, d = [], e = 0; e < c; e++) g = a.charCodeAt(e),
        d.push(g);
        return "String.fromCharCode(" + d.join(",") + ")"
    }
    function v(a) {
        return (a = a.getAttribute("class")) ? a.replace(/s*(?:cke_anchor_empty|cke_anchor)(?:s*$)?/g, 
        "") : ""
    }
    var w = CKEDITOR.plugins.link,
    s = function() {
        var a = this.getDialog(),
        g = a.getContentElement("target", "popupFeatures"),
        a = a.getContentElement("target", "linkTargetName"),
        c = this.getValue();
        if (g && a) switch (g = g.getElement(), g.hide(), a.setValue(""), c) {
        case "frame":
            a.setLabel(n.lang.link.targetFrameName);
            a.getElement().show();
            break;
        case "popup":
            g.show();
            a.setLabel(n.lang.link.targetPopupName);
            a.getElement().show();
            break;
        default:
            a.setValue(c),
            a.getElement().hide()
        }
    },
    x = /^javascript:/,
    y = /^mailto:([^?]+)(?:?(.+))?$/,
    z = /subject=([^;?:@&=$,/]*)/,
    A = /body=([^;?:@&=$,/]*)/,
    B = /^#(.*)$/,
    C = /^((?:http|https|ftp|news)://)?(.*)$/,
    D = /^(_(?:self|top|parent|blank))$/,
    E = /^javascript:void(location.href='mailto:'+String.fromCharCode(([^)]+))(?:+'(.*)')?)$/,
    F = /^javascript:([^(]+)(([^)]+))$/,
    G = /s*window.open(s*this.hrefs*,s*(?:'([^']*)'|null)s*,s*'([^']*)'s*)s*;s*returns*false;*s*/,
    H = /(?:^|,)([^=]+)=(d+|yes|no)/gi,
    I = function(a, g) {
        var c = g && (g.data("cke-saved-href") || g.getAttribute("href")) || "",
        d,
        e,
        b = 
        {};
        c.match(x) && ("encode" == o ? c = c.replace(E, 
        function(a, c, b) {
            return "mailto:" + String.fromCharCode.apply(String, c.split(",")) + (b && b.replace(/\'/g, "'"))
        }) : o && c.replace(F, 
        function(a, c, d) {
            if (c == q) {
                b.type = "email";
                for (var a = b.email = {},
                c = /(^')|('$)/g, d = d.match(/[^,s]+/g), e = d.length, g, f, h = 0; h < e; h++) g = decodeURIComponent,
                f = d[h].replace(c, "").replace(/\'/g, "'"),
                f = g(f),
                g = p[h].toLowerCase(),
                a[g] = f;
                a.address = [a.name, a.domain].join("@")
            }
        }));
        if (!b.type) if (d = c.match(B)) b.type = "anchor",
        b.anchor = {},
        b.anchor.name = b.anchor.id = 
        d[1];
        else if (d = c.match(y)) {
            e = c.match(z);
            c = c.match(A);
            b.type = "email";
            var f = b.email = {};
            f.address = d[1];
            e && (f.subject = decodeURIComponent(e[1]));
            c && (f.body = decodeURIComponent(c[1]))
        } else c && (e = c.match(C)) ? (b.type = "url", b.url = {},
        b.url.protocol = e[1], b.url.url = e[2]) : b.type = "url";
        if (g) {
            d = g.getAttribute("target");
            b.target = {};
            b.adv = {};
            if (d) d.match(D) ? b.target.type = b.target.name = d: (b.target.type = "frame", b.target.name = d);
            else if (d = (d = g.data("cke-pa-onclick") || g.getAttribute("onclick")) && d.match(G)) {
                b.target.type = 
                "popup";
                for (b.target.name = d[1]; c = H.exec(d[2]);)("yes" == c[2] || "1" == c[2]) && !(c[1] in {
                    height: 1,
                    width: 1,
                    top: 1,
                    left: 1
                }) ? b.target[c[1]] = !0: isFinite(c[2]) && (b.target[c[1]] = c[2])
            }
            d = function(a, c) {
                var d = g.getAttribute(c);
                null !== d && (b.adv[a] = d || "")
            };
            d("advId", "id");
            d("advLangDir", "dir");
            d("advAccessKey", "accessKey");
            b.adv.advName = g.data("cke-saved-name") || g.getAttribute("name") || "";
            d("advLangCode", "lang");
            d("advTabIndex", "tabindex");
            d("advTitle", "title");
            d("advContentType", "type");
            CKEDITOR.plugins.link.synAnchorSelector ? 
            b.adv.advCSSClasses = v(g) : d("advCSSClasses", "class");
            d("advCharset", "charset");
            d("advStyles", "style");
            d("advRel", "rel")
        }
        d = b.anchors = [];
        var h;
        if (CKEDITOR.plugins.link.emptyAnchorFix) {
            f = a.document.getElementsByTag("a");
            c = 0;
            for (e = f.count(); c < e; c++) if (h = f.getItem(c), h.data("cke-saved-name") || h.hasAttribute("name")) d.push({
                name: h.data("cke-saved-name") || h.getAttribute("name"),
                id: h.getAttribute("id")
            })
        } else {
            f = new CKEDITOR.dom.nodeList(a.document.$.anchors);
            c = 0;
            for (e = f.count(); c < e; c++) h = f.getItem(c),
            d[c] = 
            {
                name: h.getAttribute("name"),
                id: h.getAttribute("id")
            }
        }
        if (CKEDITOR.plugins.link.fakeAnchor) {
            f = a.document.getElementsByTag("img");
            c = 0;
            for (e = f.count(); c < e; c++)(h = CKEDITOR.plugins.link.tryRestoreFakeAnchor(a, f.getItem(c))) && d.push({
                name: h.getAttribute("name"),
                id: h.getAttribute("id")
            })
        }
        this._.selectedElement = g;
        return b
    },
    j = function(a) {
        a.target && this.setValue(a.target[this.id] || "")
    },
    k = function(a) {
        a.adv && this.setValue(a.adv[this.id] || "")
    },
    l = function(a) {
        a.target || (a.target = {});
        a.target[this.id] = this.getValue() || 
        ""
    },
    m = function(a) {
        a.adv || (a.adv = {});
        a.adv[this.id] = this.getValue() || ""
    },
    o = n.config.emailProtection || "";
    o && "encode" != o && (q = p = void 0, o.replace(/^([^(]+)(([^)]+))$/, 
    function(a, b, c) {
        q = b;
        p = [];
        c.replace(/[^,s]+/g, 
        function(a) {
            p.push(a)
        })
    }));
    var i = n.lang.common,
    b = n.lang.link;
    return {
        title: b.title,
        minWidth: 350,
        minHeight: 230,
        contents: [{
            id: "info",
            label: b.info,
            title: b.info,
            elements: [{
                id: "linkType",
                type: "select",
                label: b.type,
                "default": "url",
                items: [[b.toUrl, "url"], [b.toAnchor, "anchor"], [b.toEmail, "email"]],
                onChange: function() {
                    var a = 
                    this.getDialog(),
                    b = ["urlOptions", "anchorOptions", "emailOptions"],
                    c = this.getValue(),
                    d = a.definition.getContents("upload"),
                    d = d && d.hidden;
                    if (c == "url") {
                        n.config.linkShowTargetTab && a.showPage("target");
                        d || a.showPage("upload")
                    } else {
                        a.hidePage("target");
                        d || a.hidePage("upload")
                    }
                    for (d = 0; d < b.length; d++) {
                        var e = a.getContentElement("info", b[d]);
                        if (e) {
                            e = e.getElement().getParent().getParent();
                            b[d] == c + "Options" ? e.show() : e.hide()
                        }
                    }
                    a.layout()
                },
                setup: function(a) {
                    a.type && this.setValue(a.type)
                },
                commit: function(a) {
                    a.type = 
                    this.getValue()
                }
            },
            {
                type: "vbox",
                id: "urlOptions",
                children: [{
                    type: "hbox",
                    widths: ["25%", "75%"],
                    children: [{
                        id: "protocol",
                        type: "select",
                        label: i.protocol,
                        "default": "http://",
                        items: [["http://‎", "http://"], ["https://‎", "https://"], ["ftp://‎", "ftp://"], ["news://‎", "news://"], ["本地文件", ""]],
                        setup: function(a) {
                            a.url && this.setValue(a.url.protocol || "");
                            var d = this.getDialog();
                            var e = d.getContentElement("info", "qlistbtn");
                        	var i = d.getContentElement("info", "url");
                            if(this.getValue()==""){
                            	  e.getElement().show();
                        		  i.getElement().hide();
                        		  e.getElement().$.children[1].children[0].children[0].value=a.url.url;
                        	}else{
                        		i.getElement().show();
                        		e.getElement().hide();
                        	}
                        },
                        onChange:function(a){
                        	var d = this.getDialog();
                        	//如果是空字符串,则显示按钮,否则隐藏
                        	var e = d.getContentElement("info", "qlistbtn");
                        	var i = d.getContentElement("info", "url");
                        	if(a.data.value==""){
                        		// i.setValue("ttt");
                        		var localfiles = getHtmlList();
                        		  e.getElement().show();
                        		  var el=e.getElement();
                        		  //获取本地文件
                        		  if(localfiles.length>0){
                        			  var first=i.getValue();
                        			  el.$.children[1].children[0].children[0].innerHTML="";
                        			  for(var j=0;j<localfiles.length;j++){
                        				  var fnode=document.createElement("option");
                        				  if(first.length<1){
                        					  first=localfiles[j];
                        				  }
                        				  if(first==localfiles[j]){
                        					  fnode.selected="selected";
                        				  }
                        				  fnode.value=localfiles[j];
                        				  fnode.text=localfiles[j];
                        				  el.$.children[1].children[0].children[0].appendChild(fnode);
                        			  }
                        			  i.setValue(first);
                        		  }
                        		 // el.$.children[1].children[0].children[0].children[1].selected="selected";
                        		  i.getElement().hide();
                        	}else{
                        		i.getElement().show();
                        		e.getElement().hide();
                        	}
                        	
                        },
                        commit: function(a) {
                            if (!a.url) a.url = {};
                            a.url.protocol = this.getValue()
                        }
                    },
                    {
                    	 type: "fieldset",
                         id: "qlinkpanel",
                         label: "",
                         style:"padding:0px;border:0px;",
                         setup: function(a) {
                            // a.anchors.length > 0 ? this.getElement().show() : this.getElement().hide()
                         },
                         children: [
                                    {
		                        type: "text",
		                        id: "url",
		                        label: i.url,
		                        required: !0,
		                        onLoad: function() {
		                            this.allowOnChange = true
		                        },
		                        onKeyUp: function() {
		                            this.allowOnChange = 
		                            false;
		                            var a = this.getDialog().getContentElement("info", "protocol"),
		                            b = this.getValue(),
		                            c = /^((javascript:)|[#/.?])/i,
		                            d = /^(http|https|ftp|news)://(?=.)/i.exec(b);
		                            if (d) {
		                                this.setValue(b.substr(d[0].length));
		                                a.setValue(d[0].toLowerCase())
		                            } else c.test(b) && a.setValue("");
		                            this.allowOnChange = true
		                        },
		                        onChange: function() {
		                            if (this.allowOnChange) this.onKeyUp()
		                        },
		                        validate: function() {
		                            var a = this.getDialog();
		                            if (a.getContentElement("info", "linkType") && a.getValueOf("info", "linkType") != "url") return true;
		                            if (/javascript:/.test(this.getValue())) {
		                                alert(i.invalidValue);
		                                return false
		                            }
		                            return this.getDialog().fakeObj ? true: CKEDITOR.dialog.validate.notEmpty(b.noUrl).apply(this)
		                        },
		                        setup: function(a) {
		                            this.allowOnChange = false;
		                            a.url && this.setValue(a.url.url);
		                            this.allowOnChange = true
		                        },
		                        commit: function(a) {
		                            this.onChange();
		                            if (!a.url) a.url = {};
		                            a.url.url = this.getValue();
		                            this.allowOnChange = false
		                        }
		                    },{
		                    	 type: "select",
		                         id: "qlistbtn",
		                         //style:"margin-top: 5px;",
		                         label:"请选择本地文件",
		                         title: '请选择文件',
		                         items: [["暂无文件‎", ""]],
		                         setup: function(a) {
		                         },
		                         onClick: function() {
		                            // alert( 'Clicked: ' + this.id );
		                         },onChange:function(){
		                        	 var d = this.getDialog();
		                        	 var i = d.getContentElement("info", "url");
		                        	 i.setValue(this.getValue());
		                         }
		                    }]
                    } ],
                    setup: function() {
                        this.getDialog().getContentElement("info", "linkType") || this.getElement().show()
                    }
                },
                {
                    type: "button",
                    id: "browse",
                    hidden: "true",
                    filebrowser: "info:url",
                    label: i.browseServer
                }]
            },
            {
                type: "vbox",
                id: "anchorOptions",
                width: 260,
                align: "center",
                padding: 0,
                children: [{
                    type: "fieldset",
                    id: "selectAnchorText",
                    label: b.selectAnchor,
                    setup: function(a) {
                        a.anchors.length > 0 ? this.getElement().show() : this.getElement().hide()
                    },
                    children: [{
                        type: "hbox",
                        id: "selectAnchor",
                        children: [{
                            type: "select",
                            id: "anchorName",
                            "default": "",
                            label: b.anchorName,
                            style: "width: 100%;",
                            items: [[""]],
                            setup: function(a) {
                                this.clear();
                                this.add("");
                                for (var b = 0; b < a.anchors.length; b++) a.anchors[b].name && this.add(a.anchors[b].name);
                                a.anchor && 
                                this.setValue(a.anchor.name); (a = this.getDialog().getContentElement("info", "linkType")) && a.getValue() == "email" && this.focus()
                            },
                            commit: function(a) {
                                if (!a.anchor) a.anchor = {};
                                a.anchor.name = this.getValue()
                            }
                        },
                        {
                            type: "select",
                            id: "anchorId",
                            "default": "",
                            label: b.anchorId,
                            style: "width: 100%;",
                            items: [[""]],
                            setup: function(a) {
                                this.clear();
                                this.add("");
                                for (var b = 0; b < a.anchors.length; b++) a.anchors[b].id && this.add(a.anchors[b].id);
                                a.anchor && this.setValue(a.anchor.id)
                            },
                            commit: function(a) {
                                if (!a.anchor) a.anchor = {};
                                a.anchor.id = 
                                this.getValue()
                            }
                        }],
                        setup: function(a) {
                            a.anchors.length > 0 ? this.getElement().show() : this.getElement().hide()
                        }
                    }]
                },
                {
                    type: "html",
                    id: "noAnchors",
                    style: "text-align: center;",
                    html: '<div role="note" tabIndex="-1">' + CKEDITOR.tools.htmlEncode(b.noAnchors) + "</div>",
                    focus: !0,
                    setup: function(a) {
                        a.anchors.length < 1 ? this.getElement().show() : this.getElement().hide()
                    }
                }],
                setup: function() {
                    this.getDialog().getContentElement("info", "linkType") || this.getElement().hide()
                }
            },
            {
                type: "vbox",
                id: "emailOptions",
                padding: 1,
                children: [{
                    type: "text",
                    id: "emailAddress",
                    label: b.emailAddress,
                    required: !0,
                    validate: function() {
                        var a = this.getDialog();
                        return ! a.getContentElement("info", "linkType") || a.getValueOf("info", "linkType") != "email" ? true: CKEDITOR.dialog.validate.notEmpty(b.noEmail).apply(this)
                    },
                    setup: function(a) {
                        a.email && this.setValue(a.email.address); (a = this.getDialog().getContentElement("info", "linkType")) && a.getValue() == "email" && this.select()
                    },
                    commit: function(a) {
                        if (!a.email) a.email = {};
                        a.email.address = this.getValue()
                    }
                },
                {
                    type: "text",
                    id: "emailSubject",
                    label: b.emailSubject,
                    setup: function(a) {
                        a.email && this.setValue(a.email.subject)
                    },
                    commit: function(a) {
                        if (!a.email) a.email = {};
                        a.email.subject = this.getValue()
                    }
                },
                {
                    type: "textarea",
                    id: "emailBody",
                    label: b.emailBody,
                    rows: 3,
                    "default": "",
                    setup: function(a) {
                        a.email && this.setValue(a.email.body)
                    },
                    commit: function(a) {
                        if (!a.email) a.email = {};
                        a.email.body = this.getValue()
                    }
                }],
                setup: function() {
                    this.getDialog().getContentElement("info", "linkType") || this.getElement().hide()
                }
            }]
        },
        {
            id: "target",
            requiredContent: "a[target]",
            label: b.target,
            title: b.target,
            elements: [{
                type: "hbox",
                widths: ["50%", "50%"],
                children: [{
                    type: "select",
                    id: "linkTargetType",
                    label: i.target,
                    "default": "notSet",
                    style: "width : 100%;",
                    items: [[i.notSet, "notSet"], [b.targetFrame, "frame"], [b.targetPopup, "popup"], [i.targetNew, "_blank"], [i.targetTop, "_top"], [i.targetSelf, "_self"], [i.targetParent, "_parent"]],
                    onChange: s,
                    setup: function(a) {
                        a.target && this.setValue(a.target.type || "notSet");
                        s.call(this)
                    },
                    commit: function(a) {
                        if (!a.target) a.target = {};
                        a.target.type = this.getValue()
                    }
                },
                {
                    type: "text",
                    id: "linkTargetName",
                    label: b.targetFrameName,
                    "default": "",
                    setup: function(a) {
                        a.target && this.setValue(a.target.name)
                    },
                    commit: function(a) {
                        if (!a.target) a.target = {};
                        a.target.name = this.getValue().replace(/W/gi, "")
                    }
                }]
            },
            {
                type: "vbox",
                width: "100%",
                align: "center",
                padding: 2,
                id: "popupFeatures",
                children: [{
                    type: "fieldset",
                    label: b.popupFeatures,
                    children: [{
                        type: "hbox",
                        children: [{
                            type: "checkbox",
                            id: "resizable",
                            label: b.popupResizable,
                            setup: j,
                            commit: l
                        },
                        {
                            type: "checkbox",
                            id: "status",
                            label: b.popupStatusBar,
                            setup: j,
                            commit: l
                        }]
                    },
                    {
                        type: "hbox",
                        children: [{
                            type: "checkbox",
                            id: "location",
                            label: b.popupLocationBar,
                            setup: j,
                            commit: l
                        },
                        {
                            type: "checkbox",
                            id: "toolbar",
                            label: b.popupToolbar,
                            setup: j,
                            commit: l
                        }]
                    },
                    {
                        type: "hbox",
                        children: [{
                            type: "checkbox",
                            id: "menubar",
                            label: b.popupMenuBar,
                            setup: j,
                            commit: l
                        },
                        {
                            type: "checkbox",
                            id: "fullscreen",
                            label: b.popupFullScreen,
                            setup: j,
                            commit: l
                        }]
                    },
                    {
                        type: "hbox",
                        children: [{
                            type: "checkbox",
                            id: "scrollbars",
                            label: b.popupScrollBars,
                            setup: j,
                            commit: l
                        },
                        {
                            type: "checkbox",
                            id: "dependent",
                            label: b.popupDependent,
                            setup: j,
                            commit: l
                        }]
                    },
                    {
                        type: "hbox",
                        children: [{
                            type: "text",
                            widths: ["50%", "50%"],
                            labelLayout: "horizontal",
                            label: i.width,
                            id: "width",
                            setup: j,
                            commit: l
                        },
                        {
                            type: "text",
                            labelLayout: "horizontal",
                            widths: ["50%", "50%"],
                            label: b.popupLeft,
                            id: "left",
                            setup: j,
                            commit: l
                        }]
                    },
                    {
                        type: "hbox",
                        children: [{
                            type: "text",
                            labelLayout: "horizontal",
                            widths: ["50%", "50%"],
                            label: i.height,
                            id: "height",
                            setup: j,
                            commit: l
                        },
                        {
                            type: "text",
                            labelLayout: "horizontal",
                            label: b.popupTop,
                            widths: ["50%", "50%"],
                            id: "top",
                            setup: j,
                            commit: l
                        }]
                    }]
                }]
            }]
        },
        {
            id: "upload",
            label: b.upload,
            title: b.upload,
            hidden: !0,
            filebrowser: "uploadButton",
            elements: [{
                type: "file",
                id: "upload",
                label: i.upload,
                style: "height:40px",
                size: 29
            },
            {
                type: "fileButton",
                id: "uploadButton",
                label: i.uploadSubmit,
                filebrowser: "info:url",
                "for": ["upload", "upload"]
            }]
        },
        {
            id: "advanced",
            label: b.advanced,
            title: b.advanced,
            elements: [{
                type: "vbox",
                padding: 1,
                children: [{
                    type: "hbox",
                    widths: ["45%", "35%", "20%"],
                    children: [{
                        type: "text",
                        id: "advId",
                        requiredContent: "a[id]",
                        label: b.id,
                        setup: k,
                        commit: m
                    },
                    {
                        type: "select",
                        id: "advLangDir",
                        requiredContent: "a[dir]",
                        label: b.langDir,
                        "default": "",
                        style: "width:110px",
                        items: [[i.notSet, ""], [b.langDirLTR, "ltr"], [b.langDirRTL, "rtl"]],
                        setup: k,
                        commit: m
                    },
                    {
                        type: "text",
                        id: "advAccessKey",
                        requiredContent: "a[accesskey]",
                        width: "80px",
                        label: b.acccessKey,
                        maxLength: 1,
                        setup: k,
                        commit: m
                    }]
                },
                {
                    type: "hbox",
                    widths: ["45%", "35%", "20%"],
                    children: [{
                        type: "text",
                        label: b.name,
                        id: "advName",
                        requiredContent: "a[name]",
                        setup: k,
                        commit: m
                    },
                    {
                        type: "text",
                        label: b.langCode,
                        id: "advLangCode",
                        requiredContent: "a[lang]",
                        width: "110px",
                        "default": "",
                        setup: k,
                        commit: m
                    },
                    {
                        type: "text",
                        label: b.tabIndex,
                        id: "advTabIndex",
                        requiredContent: "a[tabindex]",
                        width: "80px",
                        maxLength: 5,
                        setup: k,
                        commit: m
                    }]
                }]
            },
            {
                type: "vbox",
                padding: 1,
                children: [{
                    type: "hbox",
                    widths: ["45%", "55%"],
                    children: [{
                        type: "text",
                        label: b.advisoryTitle,
                        requiredContent: "a[title]",
                        "default": "",
                        id: "advTitle",
                        setup: k,
                        commit: m
                    },
                    {
                        type: "text",
                        label: b.advisoryContentType,
                        requiredContent: "a[type]",
                        "default": "",
                        id: "advContentType",
                        setup: k,
                        commit: m
                    }]
                },
                {
                    type: "hbox",
                    widths: ["45%", "55%"],
                    children: [{
                        type: "text",
                        label: b.cssClasses,
                        requiredContent: "a(cke-xyz)",
                        "default": "",
                        id: "advCSSClasses",
                        setup: k,
                        commit: m
                    },
                    {
                        type: "text",
                        label: b.charset,
                        requiredContent: "a[charset]",
                        "default": "",
                        id: "advCharset",
                        setup: k,
                        commit: m
                    }]
                },
                {
                    type: "hbox",
                    widths: ["45%", "55%"],
                    children: [{
                        type: "text",
                        label: b.rel,
                        requiredContent: "a[rel]",
                        "default": "",
                        id: "advRel",
                        setup: k,
                        commit: m
                    },
                    {
                        type: "text",
                        label: b.styles,
                        requiredContent: "a{cke-xyz}",
                        "default": "",
                        id: "advStyles",
                        validate: CKEDITOR.dialog.validate.inlineStyle(n.lang.common.invalidInlineStyle),
                        setup: k,
                        commit: m
                    }]
                }]
            }]
        }],
        onShow: function() {
            var a = this.getParentEditor(),
            b = a.getSelection(),
            c = null; (c = w.getSelectedLink(a)) && c.hasAttribute("href") ? b.selectElement(c) : c = null;
            this.setupContent(I.apply(this, [a, c]))
        },
        onOk: function() {
            var a = {},
            b = [],
            c = {},
            d = this.getParentEditor();
            this.commitContent(c);
            switch (c.type || "url") {
            case "url":
                var e = c.url && c.url.protocol != void 0 ? c.url.protocol: "http://",
                i = c.url && CKEDITOR.tools.trim(c.url.url) || "";
                a["data-cke-saved-href"] = i.indexOf("/") === 0 ? i: e + i;
                break;
            case "anchor":
                e = c.anchor && c.anchor.id;
                a["data-cke-saved-href"] = "#" + (c.anchor && c.anchor.name || e || "");
                break;
            case "email":
                var f = c.email,
                e = f.address;
                switch (o) {
                case "":
                case "encode":
                    var i = encodeURIComponent(f.subject || ""),
                    h = encodeURIComponent(f.body || ""),
                    f = [];
                    i && f.push("subject=" + i);
                    h && f.push("body=" + h);
                    f = f.length ? "?" + f.join("&") : "";
                    if (o == "encode") {
                        e = ["javascript:void(location.href='mailto:'+", u(e)];
                        f && e.push("+'", r(f), "'");
                        e.push(")")
                    } else e = ["mailto:", e, f];
                    break;
                default:
                    e = e.split("@", 2);
                    f.name = e[0];
                    f.domain = e[1];
                    e = ["javascript:", t(f)]
                }
                a["data-cke-saved-href"] = 
                e.join("")
            }
            if (c.target) if (c.target.type == "popup") {
                for (var e = ["window.open(this.href, '", c.target.name || "", "', '"], j = ["resizable", "status", "location", "toolbar", "menubar", "fullscreen", "scrollbars", "dependent"], i = j.length, f = function(a) {
                    c.target[a] && j.push(a + "=" + c.target[a])
                },
                h = 0; h < i; h++) j[h] = j[h] + (c.target[j[h]] ? "=yes": "=no");
                f("width");
                f("left");
                f("height");
                f("top");
                e.push(j.join(","), "'); return false;");
                a["data-cke-pa-onclick"] = e.join("");
                b.push("target")
            } else {
                c.target.type != "notSet" && c.target.name ? 
                a.target = c.target.name: b.push("target");
                b.push("data-cke-pa-onclick", "onclick")
            }
            if (c.adv) {
                e = function(d, e) {
                    var f = c.adv[d];
                    f ? a[e] = f: b.push(e)
                };
                e("advId", "id");
                e("advLangDir", "dir");
                e("advAccessKey", "accessKey");
                c.adv.advName ? a.name = a["data-cke-saved-name"] = c.adv.advName: b = b.concat(["data-cke-saved-name", "name"]);
                e("advLangCode", "lang");
                e("advTabIndex", "tabindex");
                e("advTitle", "title");
                e("advContentType", "type");
                e("advCSSClasses", "class");
                e("advCharset", "charset");
                e("advStyles", "style");
                e("advRel", "rel")
            }
            e = 
            d.getSelection();
            a.href = a["data-cke-saved-href"];
            if (this._.selectedElement) {
                d = this._.selectedElement;
                i = d.data("cke-saved-href");
                f = d.getHtml();
                d.setAttributes(a);
                d.removeAttributes(b);
                c.adv && (c.adv.advName && CKEDITOR.plugins.link.synAnchorSelector) && d.addClass(d.getChildCount() ? "cke_anchor": "cke_anchor_empty");
                if (i == f || c.type == "email" && f.indexOf("@") != -1) d.setHtml(c.type == "email" ? c.email.address: a["data-cke-saved-href"]);
                e.selectElement(d);
                delete this._.selectedElement
            } else {
                e = e.getRanges(1)[0];
                if (e.collapsed) {
                    d = 
                    new CKEDITOR.dom.text(c.type == "email" ? c.email.address: a["data-cke-saved-href"], d.document);
                    e.insertNode(d);
                    e.selectNodeContents(d)
                }
                d = new CKEDITOR.style({
                    element: "a",
                    attributes: a
                });
                d.type = CKEDITOR.STYLE_INLINE;
                d.applyToRange(e);
                e.select()
            }
        },
        onLoad: function() {
            n.config.linkShowAdvancedTab || this.hidePage("advanced");
            n.config.linkShowTargetTab || this.hidePage("target")
        },
        onFocus: function() {
            var a = this.getContentElement("info", "linkType");
            if (a && a.getValue() == "url") {
                a = this.getContentElement("info", "url");
                a.select()
            }
        }
    }
});

/**获取所有文件**/
function getHtmlList(){
 try{
 //var fnames =   HtmlTools.allNames();
 var fnames="1.html,2.html,3.html,4.html,5.html,6.html";
 qt_file_list= fnames.split(",");
 for(var i=11700;i<11720;i++){
 qt_file_list.push(i+".html");
 }
           return qt_file_list;
     }catch(e) {
    	 alert(e);
    }
    return new Array();
}


注意getHtmlList 方法,这个是构造下拉列表内容的方法,可以借助其他平台来获取本地文件,例如:QT,Ajax 等

返回首页