Beispiel #1
0
 Editor.prototype.addBubble = function (id, filter, cfg) {
     var editor = this, prefixCls = editor.get('prefixCls'), bubble;
     cfg = cfg || {};
     cfg.editor = editor;
     util.mix(cfg, BUBBLE_CFG);
     cfg.elCls = util.substitute(cfg.elCls, { prefixCls: prefixCls });
     cfg.prefixCls = util.substitute(cfg.prefixCls, { prefixCls: prefixCls });
     bubble = new Overlay(cfg);
     bubble.isKeBubble = 1;
     editor.addControl(id + '/bubble', bubble);    // 借鉴google doc tip提示显示
     // 借鉴google doc tip提示显示
     editor.on('selectionChange', function (ev) {
         var elementPath = ev.path, elements = elementPath.elements, a, lastElement;
         if (elementPath && elements) {
             lastElement = elementPath.lastElement;
             if (!lastElement) {
                 return;
             }
             a = filter(lastElement);
             if (a) {
                 bubble.set('editorSelectedEl', a);    // 重新触发 bubble show 事件
                 // 重新触发 bubble show 事件
                 bubble.hide();    // 等所有 bubble hide 再show
                 // 等所有 bubble hide 再show
                 util.later(onShow, 10);
             } else {
                 onHide();
             }
         }
     });    // 代码模式下就消失
            // !TODO 耦合---
     // 代码模式下就消失
     // !TODO 耦合---
     function onHide() {
         bubble.hide();
         var editorWin = editor.get('window');    // 刚开始就配置 mode 为 sourcecode
         // 刚开始就配置 mode 为 sourcecode
         if (editorWin) {
             editorWin.detach('scroll', onScroll);
             bufferScroll.stop();
         }
     }
     editor.on('sourceMode', onHide);
     function showImmediately() {
         var xy = getXy(bubble);
         if (xy) {
             bubble.move(xy[0], xy[1]);
             var archor = getTopPosition(bubble);
             if (archor) {
                 xy[1] = archor.get('y') + archor.get('el').outerHeight();
                 bubble.move(xy[0], xy[1]);
             }
             if (!bubble.get('visible')) {
                 bubble.show();
             }
         }
     }
     var bufferScroll = util.buffer(showImmediately, 350);
     function onScroll() {
         if (!bubble.get('editorSelectedEl')) {
             return;
         }
         bubble.hide();
         bufferScroll();
     }
     function onShow() {
         var editorWin = editor.get('window');
         editorWin.on('scroll', onScroll);
         showImmediately();
     }
 };
Beispiel #2
0
    _init: function () {
        var self = this,
            editor = self.editor,
            prefixCls = editor.get('prefixCls'),
            statusbar = editor.get('statusBarEl'),
            cfg = this.config;
        cfg.limit = cfg.limit || LIMIT;
        cfg.interval = cfg.interval || INTERVAL;
        var holder = $(
                '<div class="' + prefixCls + 'editor-draft">' +
                '<span class="' + prefixCls + 'editor-draft-title">' +
                '内容正文每' +
                cfg.interval + '分钟自动保存一次。' +
                '</span>' +
                '</div>').appendTo(statusbar);
        self.timeTip = $('<span class="' + prefixCls + 'editor-draft-time"/>')
            .appendTo(holder);

        var save = $(
                util.substitute('<a href="#" ' +
                    'onclick="return false;" ' +
                    'class="{prefixCls}editor-button ' +
                    '{prefixCls}editor-draft-save-btn ks-inline-block" ' +
                    'style="' +
                    'vertical-align:middle;' +
                    'padding:1px 9px;' +
                    '">' +
                    '<span class="{prefixCls}editor-draft-save">' +
                    '</span>' +
                    '<span>立即保存</span>' +
                    '</a>', { prefixCls: prefixCls
                })).unselectable(undefined).appendTo(holder),
            versions = new MenuButton({
                render: holder,
                collapseOnClick: true,
                width: '100px',
                prefixCls: prefixCls + 'editor-',
                menu: {
                    width: '225px',
                    align: {
                        points: ['tr', 'br']
                    }
                },
                matchElWidth: false,
                content: '恢复编辑历史'
            }).render();
        self.versions = versions;
        // 点击才开始 parse
        versions.on('beforeCollapsedChange', function beforeCollapsedChange(e) {
            if (!e.newValue) {
                versions.detach('beforeCollapsedChange', beforeCollapsedChange);
                self.sync();
            }
        });
        save.on('click', function (ev) {
            self.save(false);
            //如果不阻止,部分页面在ie6下会莫名奇妙把其他input的值丢掉!
            ev.halt();
        });

        addRes.call(self, save);

        /*
         监控form提交,每次提交前保存一次,防止出错
         */
        if (editor.get('textarea')[0].form) {
            (function () {
                var textarea = editor.get('textarea'),
                    form = textarea[0].form;

                function saveF() {
                    self.save(true);
                }

                Event.on(form, 'submit', saveF);
                addRes.call(self, function () {
                    Event.remove(form, 'submit', saveF);
                });

            })();
        }

        var timer = setInterval(function () {
            self.save(true);
        }, self.config.interval * 60 * 1000);

        addRes.call(self, function () {
            clearInterval(timer);
        });

        versions.on('click', self.recover, self);
        addRes.call(self, versions);
        self.holder = holder;
        if (cfg.helpHtml) {
            var help = $('<a ' +
                'tabindex="0" ' +
                'hidefocus="hidefocus" ' +
                'class="' + prefixCls + 'editor-draft-help" ' +
                'title="点击查看帮助" ' +
                'href="javascript:void(\'点击查看帮助 \')">点击查看帮助</a>')
                .unselectable(undefined)
                .appendTo(holder);

            help.on('click', function () {
                help[0].focus();
                if (self.helpPopup && self.helpPopup.get('visible')) {
                    self.helpPopup.hide();
                } else {
                    self._prepareHelp();
                }
            });
            help.on('blur', function () {
                if (self.helpPopup) {
                    self.helpPopup.hide();
                }
            });
            self.helpBtn = help;
            addRes.call(self, help);
            Editor.Utils.lazyRun(self, '_prepareHelp', '_realHelp');
        }
        addRes.call(self, holder);
    },
KISSY.add('kg/editor-plugins/1.1.0/bubble',["util","ua","overlay","editor"],function(S ,require, exports, module) {function e(e,t,i){return i>=e&&t>=i}function t(t,i){var r=t.get("y"),o=r+t.get("el").outerHeight(),n=i.get("y"),l=n+i.get("el").outerHeight();return e(r,o,l)||e(r,o,n)}function i(e){var i=null,r=e.get("editor"),n=r.getControls();return o.each(n,function(r){r.isKeBubble&&r!==e&&r.get("visible")&&t(e,r)&&(i?i.get("y")<r.get("y")&&(i=r):i=r)}),i}function r(e){var t=e.get("editorSelectedEl");if(!t)return void 0;var i=e.get("editor"),r=i.get("window"),o=i.get("iframe").offset(),l=o.top,f=o.left,d=f+r.width(),s=l+r.height(),a=t.offset();a=u.Utils.getXY(a,i);var g,c,v=a.top,b=a.left,h=b+t.width(),C=v+t.height();return n.ie&&"img"===t[0].nodeName.toLowerCase()&&C>s?void 0:(C>s&&s>v?c=s-30:C>l&&s>C&&(c=C),h>f&&f>b?g=f:b>f&&d>b&&(g=b),void 0!==g&&void 0!==c?[g,c]:void 0)}var o=require("util"),n=require("ua"),l=require("overlay"),u=require("editor"),f={zIndex:u.baseZIndex(u.ZIndexManager.BUBBLE_VIEW),elCls:"{prefixCls}editor-bubble",prefixCls:"{prefixCls}editor-",effect:{effect:"fade",duration:.3}};u.prototype.addBubble=function(e,t,n){function u(){g.hide();var e=c.get("window");e&&(e.detach("scroll",s),b.stop())}function d(){var e=r(g);if(e){g.move(e[0],e[1]);var t=i(g);t&&(e[1]=t.get("y")+t.get("el").outerHeight(),g.move(e[0],e[1])),g.get("visible")||g.show()}}function s(){g.get("editorSelectedEl")&&(g.hide(),b())}function a(){var e=c.get("window");e.on("scroll",s),d()}var g,c=this,v=c.get("prefixCls");n=n||{},n.editor=c,o.mix(n,f),n.elCls=o.substitute(n.elCls,{prefixCls:v}),n.prefixCls=o.substitute(n.prefixCls,{prefixCls:v}),g=new l(n),g.isKeBubble=1,c.addControl(e+"/bubble",g),c.on("selectionChange",function(e){var i,r,n=e.path,l=n.elements;if(n&&l){if(r=n.lastElement,!r)return;i=t(r),i?(g.set("editorSelectedEl",i),g.hide(),o.later(a,10)):u()}}),c.on("sourceMode",u);var b=o.buffer(d,350)};});
 function replacePrefix(str, prefix) {
     return util.substitute(str, {
         prefixCls: prefix
     });
 }
KISSY.add('kg/editor-plugins/1.1.0/code/dialog',["util","editor","menubutton","dom","../dialog","node","ua"],function(S ,require, exports, module) {function e(e){this.editor=e}var t=require("util"),i=require("editor"),o=require("menubutton"),r=i.XHTML_DTD,a=require("dom").NodeType,l=i.Walker.whitespaces(!0),s=require("../dialog"),n=require("node"),d=require("ua"),c=[["ActionScript3","as3"],["Bash/Shell","bash"],["C/C++","cpp"],["Css","css"],["CodeFunction","cf"],["C#","c#"],["Delphi","delphi"],["Diff","diff"],["Erlang","erlang"],["Groovy","groovy"],["HTML","html"],["Java","java"],["JavaFx","jfx"],["Javascript","js"],["Perl","pl"],["Php","php"],["Plain Text","plain"],["PowerShell","ps"],["Python","python"],["Ruby","ruby"],["Scala","scala"],["Sql","sql"],["Vb","vb"],["Xml","xml"]],p='<div class="{prefixCls}code-wrap"><table class="{prefixCls}code-table"><tr><td class="{prefixCls}code-label"><label for="ks-editor-code-type">类型:</label></td><td class="{prefixCls}code-content"><select id="ks-editor-code-type"  class="{prefixCls}code-type">'+t.map(c,function(e){return'<option value="'+e[1]+'">'+e[0]+"</option>"})+'</select></td></tr><tr><td><label for="ks-editor-code-textarea">代码:</label></td><td><textarea id="ks-editor-code-textarea"  class="{prefixCls}code-textarea {prefixCls}input"></textarea></td></tr></table></div>',u='<div class="{prefixCls}code-table-action"><a href="javascript:void(\'插入\')" class="{prefixCls}code-insert {prefixCls}button">插入</a><a href="javascript:void(\'取消\')" class="{prefixCls}code-cancel {prefixCls}button">取消</a></td></div>',f='<pre class="prettyprint ks-editor-code brush:{type};toolbar:false;">{code}</pre>';t.augment(e,{initDialog:function(){var e,i,r=this,a=r.editor.get("prefixCls")+"editor-";i=r.dialog=new s({width:500,mask:!0,headerContent:"插入代码",bodyContent:t.substitute(p,{prefixCls:a}),footerContent:t.substitute(u,{prefixCls:a})}).render(),e=i.get("el"),r.insert=e.one("."+a+"code-insert"),r.cancel=e.one("."+a+"code-cancel"),r.type=o.Select.decorate(e.one("."+a+"code-type"),{prefixCls:a+"big-",width:150,menuCfg:{prefixCls:a,height:320,render:i.get("contentEl")}}),r.code=e.one("."+a+"code-textarea"),r.insert.on("click",r._insert,r),r.cancel.on("click",r.hide,r)},hide:function(){this.dialog.hide()},_insert:function(){var e,i=this,o=i.editor,s=i.code;if(!t.trim(e=s.val()))return void alert("请输入代码!");var c=n(t.substitute(f,{type:i.type.get("value"),code:t.escapeHtml(e)}),o.get("document")[0]);i.dialog.hide(),o.insertElement(c);var p=o.getSelection().getRanges()[0],u=c.next(l,1),h=u&&u[0].nodeType===a.ELEMENT_NODE&&u.nodeName();h&&r.$block[h]&&r[h]["#text"]||(u=n("<p></p>",o.get("document")[0]),d.ie||u._4eAppendBogus(),c.after(u)),p.moveToElementEditablePosition(u),o.getSelection().selectRanges([p])},show:function(){this.dialog||this.initDialog(),this.dialog.show()}}),module.exports=e;});
    _listSearch: function (data) {
        var self = this,
            i,
            editor = self.editor,
            prefixCls = editor.get('prefixCls'),
            re = data.results,
            html = '';
        // xiami 返回结果自动trim了
        if (data.key === util.trim(self._xiamiInput.val())) {
            self._xiamiSubmit.removeClass(prefixCls + 'editor-button-disabled', undefined);
            if (re && re.length) {
                html = '<ul>';
                for (i = 0; i < re.length; i++) {
                    var r = re[i], d = getDisplayName(r);
                    html += '<li ' +
                        'title="' + d + '">' +
                        '<span class="' + prefixCls + 'editor-xiami-song">' + limit(d, 35) +
                        '</span>' +
                        '' +
                        '' +
                        //album_id_song_id
                        '<a href="#" ' +
                        'title="' + d + '" ' +
                        'class="' + prefixCls + 'editor-xiami-add" data-value="' +
                        (
                            /*jshint camelcase:false*/
                            r.album_id + '_' + r.song_id
                            ) + '">添加</a>' + '</li>';
                }
                html += '</ul>';

                var page = data.page,
                    totalPage = Math.floor(data.total / 8),
                    start = page - 1,
                    end = page + 1;

                if (totalPage > 1) {
                    html += '<p class="' + prefixCls + 'editor-xiami-paging">';
                    if (start <= 2) {
                        end = Math.min(2 - start + end, totalPage - 1);
                        start = 2;
                    }
                    end = Math.min(end, totalPage - 1);
                    if (end === totalPage - 1) {
                        start = Math.max(2, end - 3);
                    }
                    if (page !== 1) {
                        html += getXiamiPaging(page, page - 1, '上一页');
                    }
                    html += getXiamiPaging(page, 1, '1');
                    if (start !== 2) {
                        html += '<span class="' + prefixCls + 'editor-xiami-page-more">...</span>';
                    }
                    for (i = start; i <= end; i++) {
                        html += getXiamiPaging(page, i, undefined);
                    }
                    if (end !== totalPage) {
                        if (end !== totalPage - 1) {
                            html += '<span class="' + prefixCls + 'editor-xiami-page-more">...</span>';
                        }
                        html += getXiamiPaging(page, totalPage, totalPage);
                    }
                    if (page !== totalPage) {
                        html += getXiamiPaging(page, page + 1, '下一页');
                    }
                    html += '</p>';
                }

            } else {
                html = '<p style="text-align:center;margin:10px 0;">' +
                    '不好意思,没有找到结果!' +
                    '</p>';
            }
            self._xiamiaList.html(util.substitute(html, {
                prefixCls: prefixCls
            }));
        }
    },
define('kg/easydialog/2.5.0/common',["util","node","overlay","dd"],function(require, exports, module) {var e=require("util"),t=require("node"),n=require("overlay"),i=require("dd"),o={},r=t.all,s=document.domain,a={title:s+" 网页提示",isNeedDrag:!0,theme:"gallery/easydialog/1.1/theme/theme-tb.css",width:350,height:110,zIndex:9999,closable:!0,prefixCls:"ks-easydialog-",closeAction:"destroy",mask:!0,effect:{},align:{points:["cc","cc"]}};e.mix(o,{parseData:function(t,n){var i,o;return e.isPlainObject(t)?i=e.mix(a,t):e.isFunction(t)?(i=a,n=t):(o=n,i=a),e.isFunction(n)&&(o=n),this.loadCss(i.theme),{config:i,callback:o}},getDialog:function(e){return new n.Dialog(e)},setDragAble:function(e){var t,n=r(e.get("el")),i=n.one(".J_KsEasyDialogPromptTxt"),o=this;t=o._initDD(n),i&&(n.on("mousedown",function(){t||(t=o._initDD(n))}),i.on("mousedown",function(){t&&t.destroy(),t=null}))},_initDD:function(e){return new i.Draggable({node:e,cursor:"move",move:!0})},loadCss:function(t){return t&&e.isString(t)&&require(t),this},setContent:function(t,n,i){return t.set("bodyContent",e.substitute(n,i)),this}}),module.exports=o;});
KISSY.add('editor-plugins/lib/flash/dialog',["util","editor","../flash-common/utils","../dialog","../menubutton"],function(S ,require, exports, module) {function t(t,e){var l=this;l.editor=t,l.config=e||{},i.Utils.lazyRun(l,"_prepareShow","_realShow"),l._config()}var e=require("util"),i=require("editor"),l=require("../flash-common/utils"),a=require("../dialog"),r=require("../menubutton"),s="ke_flash",n="flash",d="请输入如 http://www.xxx.com/xxx.swf",o='<div style="padding:20px 20px 0 20px"><p><label>网址: <input  data-verify="^https?://[^\\s]+$"  data-warning="网址格式为:http://" class="{prefixCls}editor-flash-url {prefixCls}editor-input" style="width:300px;" /></label></p><table style="margin:10px 0 5px  40px;width:300px;"><tr><td><label>宽度: <input  data-verify="^(?!0$)\\d+$"  data-warning="宽度请输入正整数" class="{prefixCls}editor-flash-width {prefixCls}editor-input" style="width:60px;" /> 像素 </label></td><td><label>高度: <input  data-verify="^(?!0$)\\d+$"  data-warning="高度请输入正整数" class="{prefixCls}editor-flash-height {prefixCls}editor-input" style="width:60px;" /> 像素 </label></td></tr><tr><td><label>对齐: </label><select class="{prefixCls}editor-flash-align" title="对齐"><option value="none">无</option><option value="left">左对齐</option><option value="right">右对齐</option></select></td><td><label>间距: </label><input  data-verify="^\\d+$"  data-warning="间距请输入非负整数" class="{prefixCls}editor-flash-margin {prefixCls}editor-input" style="width:60px;" value="5"/> 像素</td></tr></table></div>',h='<div style="padding:10px 0 35px 20px;"><a class="{prefixCls}editor-flash-ok {prefixCls}editor-button ks-inline-block" style="margin-left:40px;margin-right:20px;">确定</a> <a class="{prefixCls}editor-flash-cancel {prefixCls}editor-button ks-inline-block">取消</a></div>';e.augment(t,{addRes:i.Utils.addRes,destroyRes:i.Utils.destroyRes,_config:function(){var t=this,i=t.editor,l=i.get("prefixCls");t._urlTip=d,t._type=n,t._cls=s,t._configDWidth="400px",t._title="Flash",t._bodyHTML=e.substitute(o,{prefixCls:l}),t._footHTML=e.substitute(h,{prefixCls:l})},_prepareShow:function(){var t=this;t.dialog=new a({headerContent:t._title,bodyContent:t._bodyHTML,footerContent:t._footHTML,width:t._configDWidth||"500px",mask:!0}).render(),t.addRes(t.dialog),t._initD()},_realShow:function(){this._updateD(),this.dialog.show()},_getFlashUrl:function(t){return l.getUrl(t)},_updateD:function(){var t=this,e=t.editor,l=t.config,a=t.selectedFlash;if(a){var r=e.restoreRealElement(a);if(!r)return;a.css("width")&&t.dWidth.val(parseInt(a.css("width"),10)),a.css("height")&&t.dHeight.val(parseInt(a.css("height"),10)),t.dAlign.set("value",a.css("float")),i.Utils.valInput(t.dUrl,t._getFlashUrl(r)),t.dMargin.val(parseInt(r.style("margin"),10)||0)}else i.Utils.resetInput(t.dUrl),t.dWidth.val(l.defaultWidth||""),t.dHeight.val(l.defaultHeight||""),t.dAlign.set("value","none"),t.dMargin.val("5")},show:function(t){var e=this;e.selectedFlash=t,e._prepareShow()},_initD:function(){var t=this,e=t.dialog,l=t.editor,a=l.get("prefixCls"),s=e.get("el");t.dHeight=s.one("."+a+"editor-flash-height"),t.dWidth=s.one("."+a+"editor-flash-width"),t.dUrl=s.one("."+a+"editor-flash-url"),t.dAlign=r.Select.decorate(s.one("."+a+"editor-flash-align"),{prefixCls:a+"editor-big-",width:80,menuCfg:{prefixCls:a+"editor-",render:s}}),t.dMargin=s.one("."+a+"editor-flash-margin");var n=s.one("."+a+"editor-flash-ok"),d=s.one("."+a+"editor-flash-cancel");n.on("click",t._gen,t),d.on("click",function(t){e.hide(),t.halt()}),i.Utils.placeholder(t.dUrl,t._urlTip),t.addRes(t.dAlign)},_getDInfo:function(){var t=this;return{url:t.dUrl.val(),attrs:{width:t.dWidth.val(),height:t.dHeight.val(),style:"margin:"+(parseInt(t.dMargin.val(),10)||0)+"px;float:"+t.dAlign.get("value")+";"}}},_gen:function(t){t&&t.halt();var a=this,r=a.editor,s=a._getDInfo(),n=s&&e.trim(s.url),d=s&&s.attrs;if(s){var o=i.Utils.verifyInputs(a.dialog.get("el").all("input"));if(o){a.dialog.hide();var h=l.insertFlash(r,n,d,a._cls,a._type);a.selectedFlash&&r.getSelection().selectElement(h),r.notifySelectionChange()}}},destroy:function(){this.destroyRes()}}),module.exports=t;});
Beispiel #9
0
 _prepare: function () {
     var self = this;
     var editor = self.editor, prefixCls = editor.get('prefixCls') + 'editor-';
     self.dialog = self.d = new Dialog4E({
         width: 500,
         headerContent: '\u56FE\u7247',
         bodyContent: new XTemplate(bodyXTpl).render({ prefixCls: prefixCls }),
         footerContent: util.substitute(IMAGE_DIALOG_FOOT_HTML, { prefixCls: prefixCls }),
         mask: true
     }).render();
     var content = self.d.get('el'), cancel = content.one('.' + prefixCls + 'img-cancel'), ok = content.one('.' + prefixCls + 'img-insert'), verifyInputs = Editor.Utils.verifyInputs, commonSettingTable = content.one('.' + prefixCls + 'img-setting');
     self.uploadForm = content.one('.' + prefixCls + 'img-upload-form');
     self.imgLocalUrl = content.one('.' + prefixCls + 'img-local-url');
     self.tab = new Tabs({
         'srcNode': self.d.get('body').one('.' + prefixCls + 'img-tabs'),
         prefixCls: prefixCls + 'img-'
     }).render();
     self.imgLocalUrl.val(warning);
     self.imgUrl = content.one('.' + prefixCls + 'img-url');
     self.imgHeight = content.one('.' + prefixCls + 'img-height');
     self.imgWidth = content.one('.' + prefixCls + 'img-width');
     self.imgRatio = content.one('.' + prefixCls + 'img-ratio');
     self.imgAlign = MenuButton.Select.decorate(content.one('.' + prefixCls + 'img-align'), {
         prefixCls: prefixCls + 'big-',
         width: 80,
         menuCfg: {
             prefixCls: prefixCls + '',
             render: content
         }
     });
     self.imgMargin = content.one('.' + prefixCls + 'img-margin');
     self.imgLink = content.one('.' + prefixCls + 'img-link');
     self.imgLinkBlank = content.one('.' + prefixCls + 'img-link-blank');
     var placeholder = Editor.Utils.placeholder;
     placeholder(self.imgUrl, HTTP_TIP);
     placeholder(self.imgHeight, AUTOMATIC_TIP);
     placeholder(self.imgWidth, AUTOMATIC_TIP);
     placeholder(self.imgLink, 'http://');
     self.imgHeight.on('keyup', function () {
         var v = parseInt(valInput(self.imgHeight), 10);
         if (!v || !self.imgRatio[0].checked || self.imgRatio[0].disabled || !self.imgRatioValue) {
             return;
         }
         valInput(self.imgWidth, Math.floor(v * self.imgRatioValue));
     });
     self.imgWidth.on('keyup', function () {
         var v = parseInt(valInput(self.imgWidth), 10);
         if (!v || !self.imgRatio[0].checked || self.imgRatio[0].disabled || !self.imgRatioValue) {
             return;
         }
         valInput(self.imgHeight, Math.floor(v / self.imgRatioValue));
     });
     cancel.on('click', function (ev) {
         self.d.hide();
         ev.halt();
     });
     var loadingCancel = $('<a class="' + prefixCls + 'button ks-inline-block" ' + 'style="position:absolute;' + 'z-index:' + Editor.baseZIndex(Editor.ZIndexManager.LOADING_CANCEL) + ';' + 'left:-9999px;' + 'top:-9999px;' + '">\u53D6\u6D88\u4E0A\u4F20</a>').appendTo(document.body, undefined);
     self.loadingCancel = loadingCancel;
     function getFileSize(file) {
         if (file.files) {
             return file.files[0].size;
         }    //ie 会安全警告
              //                    try {
              //                        var fso = new window.ActiveXObject('Scripting.FileSystemObject'),
              //                            file2 = fso.GetFile(file.value);
              //                        return file2.size;
              //                    } catch (e) {
              //                    }
         //ie 会安全警告
         //                    try {
         //                        var fso = new window.ActiveXObject('Scripting.FileSystemObject'),
         //                            file2 = fso.GetFile(file.value);
         //                        return file2.size;
         //                    } catch (e) {
         //                    }
         return 0;
     }
     ok.on('click', function (ev) {
         ev.halt();
         if ((self.imageCfg.remote === false || util.indexOf(self.tab.getSelectedTab(), self.tab.getTabs()) === 1) && self.cfg) {
             if (!verifyInputs(commonSettingTable.all('input'))) {
                 return;
             }
             if (self.imgLocalUrl.val() === warning) {
                 alert('\u8BF7\u5148\u9009\u62E9\u6587\u4EF6!');
                 return;
             }
             if (!self.suffixReg.test(self.imgLocalUrl.val())) {
                 alert(self.suffixWarning);    // 清除已选文件 ie 不能使用 val('')
                 // 清除已选文件 ie 不能使用 val('')
                 self.uploadForm[0].reset();
                 self.imgLocalUrl.val(warning);
                 return;
             }
             var size = getFileSize(self.fileInput[0]);
             if (sizeLimit && sizeLimit < size / 1000) {
                 alert('\u4E0A\u4F20\u56FE\u7247\u6700\u5927\uFF1A' + sizeLimit / 1000 + 'M');
                 return;
             }
             self.d.loading();    // 取消当前iframe的上传
             // 取消当前iframe的上传
             loadingCancel.on('click', function (ev) {
                 ev.halt();
                 uploadIO.abort();
             });
             var serverParams = Editor.Utils.normParams(self.cfg.serverParams) || {};    // 后端返回设置 domain 的 script,每次都传,防止 domain 中途变化
             // 后端返回设置 domain 的 script,每次都传,防止 domain 中途变化
             serverParams['document-domain'] = document.domain;
             var uploadIO = IO({
                     data: serverParams,
                     url: self.cfg.serverUrl,
                     form: self.uploadForm[0],
                     dataType: 'json',
                     type: 'post',
                     complete: function (data, status) {
                         loadingCancel.css({
                             left: -9999,
                             top: -9999
                         });
                         self.d.unloading();
                         if (status === 'abort') {
                             return;
                         }
                         if (!data) {
                             data = { error: '\u670D\u52A1\u5668\u51FA\u9519\uFF0C\u8BF7\u91CD\u8BD5' };
                         }
                         if (data.error) {
                             alert(data.error);
                             return;
                         }
                         valInput(self.imgUrl, data.imgUrl);    // chrome 中空 iframe 的 img 请求 header 中没有 refer
                                                                // 在主页面先请求一次,带入 header
                         // chrome 中空 iframe 的 img 请求 header 中没有 refer
                         // 在主页面先请求一次,带入 header
                         new Image().src = data.imgUrl;
                         self._insert();
                     }
                 });
             var loadingMaskEl = self.d.get('el'), offset = loadingMaskEl.offset(), width = loadingMaskEl[0].offsetWidth, height = loadingMaskEl[0].offsetHeight;
             loadingCancel.css({
                 left: offset.left + width / 2.5,
                 top: offset.top + height / 1.5
             });
         } else {
             if (!verifyInputs(content.all('input'))) {
                 return;
             }
             self._insert();
         }
     });
     if (self.cfg) {
         if (self.cfg.extraHTML) {
             content.one('.' + prefixCls + 'img-up-extraHTML').html(self.cfg.extraHTML);
         }
         var imageUp = content.one('.' + prefixCls + 'image-up'), sizeLimit = self.cfg && self.cfg.sizeLimit;
         self.fileInput = $('<input ' + 'type="file" ' + 'style="position:absolute;' + 'cursor:pointer;' + 'left:' + (UA.ie ? '360' : UA.chrome ? '319' : '369') + 'px;' + 'z-index:2;' + 'top:0px;' + 'height:26px;" ' + 'size="1" ' + 'name="' + (self.cfg.fileInput || 'Filedata') + '"/>').insertAfter(self.imgLocalUrl);
         if (sizeLimit) {
             warning = '\u5355\u5F20\u56FE\u7247\u5BB9\u91CF\u4E0D\u8D85\u8FC7 ' + sizeLimit / 1000 + ' M';
         }
         self.imgLocalUrl.val(warning);
         self.fileInput.css('opacity', 0);
         self.fileInput.on('mouseenter', function () {
             imageUp.addClass('' + prefixCls + 'button-hover');
         });
         self.fileInput.on('mouseleave', function () {
             imageUp.removeClass('' + prefixCls + 'button-hover');
         });
         self.fileInput.on('change', function () {
             var file = self.fileInput.val();    //去除路径
             //去除路径
             self.imgLocalUrl.val(file.replace(/.+[\/\\]/, ''));
         });
         if (self.imageCfg.remote === false) {
             self.tab.removeItemAt(0, 1);
         }
     } else {
         self.tab.removeItemAt(1, 1);
     }
     self._prepare = util.noop;
 },
    _init: function () {
        var self = this,
            editor = self.editor,
            prefixCls = editor.get('prefixCls');

        self.dialog = new Dialog4E({
            mask: true,
            headerContent: '颜色拾取器',
            bodyContent: util.substitute(panelHTML, {
                prefixCls: prefixCls
            }),
            footerContent: util.substitute(footHTML, {
                prefixCls: prefixCls
            }),
            width: '550px'
        }).render();
        var win = self.dialog,
            body = win.get('body'),
            foot = win.get('footer'),
            indicator = body.one('.' + prefixCls + 'editor-color-advanced-indicator'),
            indicatorValue = body.one('.' + prefixCls + 'editor-color-advanced-value'),
            left = body.one('.' + prefixCls + 'editor-color-advanced-picker-left'),
            ok = foot.one('.' + prefixCls + 'editor-color-advanced-ok'),
            cancel = foot.one('.' + prefixCls + 'editor-color-advanced-cancel');

        ok.on('click', function (ev) {
            var v = util.trim(indicatorValue.val()),
                colorButtonArrow = self.colorButtonArrow;
            if (!/^#([a-f0-9]{1,2}){3,3}$/i.test(v)) {
                /*global alert*/
                alert('请输入正确的颜色代码');
                return;
            }
            //先隐藏窗口,使得编辑器恢复焦点,恢复原先range
            self.hide();
            colorButtonArrow.fire('selectColor', {
                color: indicatorValue.val()
            });
            ev.halt();
        });


        indicatorValue.on('change', function () {
            var v = util.trim(indicatorValue.val());
            if (!/^#([a-f0-9]{1,2}){3,3}$/i.test(v)) {
                alert('请输入正确的颜色代码');
                return;
            }
            indicator.css('background-color', v);
        });


        cancel.on('click', function (ev) {
            self.hide();
            ev.halt();
        });
        body.on('click', function (ev) {
            ev.halt();
            var t = $(ev.target);
            if (t.nodeName() === 'a') {
                var c = hex(t.css('background-color'));
                if (left.contains(t)) {
                    self._detailColor(c);
                }
                indicatorValue.val(c);
                indicator.css('background-color', c);
            }
        });
        addRes.call(self, ok, indicatorValue, cancel, body, self.dialog);

        var defaultColor = '#FF9900';
        self._detailColor(defaultColor);
        indicatorValue.val(defaultColor);
        indicator.css('background-color', defaultColor);
    },
Beispiel #11
0
KISSY.add('editor-plugins/lib/xiami-music/dialog',["util","editor","../flash/dialog","../menubutton","dom","node"],function(S ,require, exports, module) {function i(i,t){return i.length>t&&(i=i.substring(0,t)+"..."),i}function t(){t.superclass.constructor.apply(this,arguments)}function e(i,t,e){return'<a class="{prefixCls}editor-xiami-page-item {prefixCls}editor-button ks-inline-block'+(i===t?" {prefixCls}editor-xiami-curpage":"")+'" data-value="'+t+'" href="#">'+(e||t)+"</a>"}function a(i){return r.urlDecode(i.song_name)+" - "+r.urlDecode(i.artist_name)}var r=require("util"),l=require("editor"),s=require("../flash/dialog"),o=require("../menubutton"),n=require("dom"),d=require("node"),p=l.Utils,m=p.debugUrl("theme/tao-loading.gif"),x="http://www.xiami.com/app/nineteen/search/key/{key}/page/{page}",u="ke_xiami",c="xiami-music",g="搜 索",f="输入歌曲名、专辑名、艺人名",h=0,v='<div style="padding:40px 0 70px 0;"><form action="#" class="{prefixCls}editor-xiami-form" style="margin:0 20px;"><p class="{prefixCls}editor-xiami-title"></p><p class="{prefixCls}editor-xiami-url-wrap"><input class="{prefixCls}editor-xiami-url {prefixCls}editor-input" style="width:370px;"/> &nbsp;  <a class="{prefixCls}editor-xiami-submit {prefixCls}editor-button ks-inline-block">'+g+'</a></p><p style="margin:10px 0"><label>对 齐: <select class="{prefixCls}editor-xiami-align" title="对齐"><option value="none">无</option><option value="left">左对齐</option><option value="right">右对齐</option></select></label><label style="margin-left:70px;">间距:  <input  data-verify="^\\d+$"  data-warning="间距请输入非负整数" class="{prefixCls}editor-xiami-margin {prefixCls}editor-input" style="width:60px;" value="'+h+'"/> 像素</label></p></form><div class="{prefixCls}editor-xiami-list"></div></div>',_='<div style="padding:5px 20px 20px;"><a class="{prefixCls}editor-xiami-ok {prefixCls}editor-button ks-inline-block" style="margin-right:20px;">确&nbsp;定</a><a class="{prefixCls}editor-xiami-cancel {prefixCls}editor-button ks-inline-block">取&nbsp;消</a></div>';r.extend(t,s,{_config:function(){var i=this,t=i.editor,e=t.get("prefixCls");i._cls=u,i._type=c,i._title="虾米音乐",i._bodyHTML=r.substitute(v,{prefixCls:e}),i._footHTML=r.substitute(_,{prefixCls:e})},_initD:function(){function i(i){var e=c.val();if(e.replace(/[^\x00-\xff]/g,"@@").length>30)return void window.alert("长度上限30个字符(1个汉字=2个字符)");if(!r.trim(e)||e===f)return void window.alert("不能为空!");t._xiamiSubmit.addClass(a+"editor-button-disabled",void 0);var l=r.substitute(x,{key:encodeURIComponent(c.val()),page:i});t._xiamiaList.html('<img style="display:block;width:32px;height:32px;margin:5px auto 0 auto;" src="'+m+'"/><p style="width: 130px; margin: 15px auto 0; color: rgb(150, 150, 150);">正在搜索,请稍候......</p>'),t._xiamiaList.show(),require(["io"],function(e){e({cache:!1,url:l,dataType:"jsonp",success:function(e){e.page=i,t._listSearch(e)},error:function(){t._xiamiSubmit.removeClass(a+"editor-button-disabled",void 0);var i='<p style="text-align:center;margin:10px 0;">不好意思,超时了,请重试!</p>';t._xiamiaList.html(i)}})})}var t=this,e=t.editor,a=e.get("prefixCls"),s=t.dialog,p=s.get("el"),u=s.get("footer"),c=p.one("."+a+"editor-xiami-url");t.dAlign=o.Select.decorate(p.one("."+a+"editor-xiami-align"),{prefixCls:"ks-editor-big-",width:80,menuCfg:{prefixCls:"ks-editor-",render:p}}),t.addRes(t.dAlign),t._xiamiInput=c,l.Utils.placeholder(c,f),t.addRes(c),t._xiamiaList=p.one("."+a+"editor-xiami-list"),t._xiamiSubmit=p.one("."+a+"editor-xiami-submit"),t._xiamiSubmit.on("click",function(e){t._xiamiSubmit.hasClass("ks-editor-button-disabled",void 0)||i(1),e.halt()}),t.addRes(t._xiamiSubmit),c.on("keydown",function(t){13===t.keyCode&&i(1)}),t.dMargin=p.one("."+a+"editor-xiami-margin"),t._xiamiUrlWrap=p.one("."+a+"editor-xiami-url-wrap"),t._xiamiTitle=p.one("."+a+"editor-xiami-title");var g=u.one("."+a+"editor-xiami-ok");u.one("."+a+"editor-xiami-cancel").on("click",function(i){s.hide(),i.halt()}),t.addRes(u),g.on("click",function(i){var a=t.selectedFlash,r=e.restoreRealElement(a);t._dinfo={url:t._getFlashUrl(r),attrs:{title:a.attr("title"),style:"margin:"+(parseInt(t.dMargin.val(),10)||0)+"px;float:"+t.dAlign.get("value")+";"}},t._gen(),i.halt()},t),t.addRes(g),t._xiamiaList.on("click",function(e){e.preventDefault();var r=d(e.target),l=r.closest(function(i){return t._xiamiaList.contains(i)&&n.hasClass(i,a+"editor-xiami-add")},void 0),s=r.closest(function(i){return t._xiamiaList.contains(i)&&n.hasClass(i,a+"editor-xiami-page-item")},void 0);l?(t._dinfo={url:"http://www.xiami.com/widget/"+l.attr("data-value")+"/singlePlayer.swf",attrs:{title:l.attr("title"),style:"margin:"+(parseInt(t.dMargin.val(),10)||0)+"px;float:"+t.dAlign.get("value")+";"}},t._gen()):s&&i(parseInt(s.attr("data-value"),10)),e.halt()}),t.addRes(t._xiamiaList)},_listSearch:function(t){var l,s=this,o=s.editor,n=o.get("prefixCls"),d=t.results,p="";if(t.key===r.trim(s._xiamiInput.val())){if(s._xiamiSubmit.removeClass(n+"editor-button-disabled",void 0),d&&d.length){for(p="<ul>",l=0;l<d.length;l++){var m=d[l],x=a(m);p+='<li title="'+x+'"><span class="'+n+'editor-xiami-song">'+i(x,35)+'</span><a href="#" title="'+x+'" class="'+n+'editor-xiami-add" data-value="'+(m.album_id+"_"+m.song_id)+'">添加</a></li>'}p+="</ul>";var u=t.page,c=Math.floor(t.total/8),g=u-1,f=u+1;if(c>1){for(p+='<p class="'+n+'editor-xiami-paging">',2>=g&&(f=Math.min(2-g+f,c-1),g=2),f=Math.min(f,c-1),f===c-1&&(g=Math.max(2,f-3)),1!==u&&(p+=e(u,u-1,"上一页")),p+=e(u,1,"1"),2!==g&&(p+='<span class="'+n+'editor-xiami-page-more">...</span>'),l=g;f>=l;l++)p+=e(u,l,void 0);f!==c&&(f!==c-1&&(p+='<span class="'+n+'editor-xiami-page-more">...</span>'),p+=e(u,c,c)),u!==c&&(p+=e(u,u+1,"下一页")),p+="</p>"}}else p='<p style="text-align:center;margin:10px 0;">不好意思,没有找到结果!</p>';s._xiamiaList.html(r.substitute(p,{prefixCls:n}))}},_updateD:function(){var i=this,t=i.editor,e=t.get("prefixCls"),a=i.selectedFlash;a?(i._xiamiInput.val(a.attr("title")),i._xiamiTitle.html(a.attr("title")),i.dAlign.set("value",a.css("float")),i.dMargin.val(parseInt(a.style("margin"),10)||0),i._xiamiUrlWrap.hide(),i.dialog.get("footer").show(),i._xiamiTitle.show()):(l.Utils.resetInput(i._xiamiInput),i.dAlign.set("value","none"),i.dMargin.val(h),i._xiamiUrlWrap.show(),i.dialog.get("footer").hide(),i._xiamiTitle.hide(),i._xiamiSubmit.removeClass(e+"editor-button-disabled",void 0)),i._xiamiaList.hide(),i._xiamiaList.html("")},_getDInfo:function(){var i=this;return r.mix(i._dinfo.attrs,{width:257,height:33}),i._dinfo}}),module.exports=t;});
KISSY.add('editor-plugins/lib/progressbar',["base","util","node"],function(S ,require, exports, module) {var e=require("base"),r=require("util"),s=require("node");module.exports=e.extend({destroy:function(){var e=this;e.detach(),e.el.remove()},initializer:function(){var e=this,i=e.get("height"),t=e.get("prefixCls"),n=s(r.substitute('<div class="{prefixCls}editor-progressbar"  style="width:'+e.get("width")+";height:"+i+';"></div>',{prefixCls:t})),a=e.get("container"),o=s(r.substitute('<div style="overflow:hidden;"><div class="{prefixCls}editor-progressbar-inner" style="height:'+(parseInt(i,10)-4)+'px"><div class="{prefixCls}editor-progressbar-inner-bg"></div></div></div>',{prefixCls:t})).appendTo(n),p=s('<span class="'+t+'editor-progressbar-title"></span>').appendTo(n);a&&n.appendTo(a),e.el=n,e._title=p,e._p=o,e.on("afterProgressChange",e._progressChange,e),e._progressChange({newVal:e.get("progress")})},_progressChange:function(e){var r=this,s=e.newVal;r._p.css("width",s+"%"),r._title.html(s+"%")}},{ATTRS:{container:{},width:{},height:{},progress:{value:0},prefixCls:{value:"ks-"}}});});