| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445 | (function () {    var utils = UM.utils,        browser = UM.browser,        Base = {        checkURL: function (url) {            if(!url)    return false;            url = utils.trim(url);            if (url.length <= 0) {                return false;            }            if (url.search(/http:\/\/|https:\/\//) !== 0) {                url += 'http://';            }            url=url.replace(/\?[\s\S]*$/,"");            if (!/(.gif|.jpg|.jpeg|.png)$/i.test(url)) {                return false;            }            return url;        },        getAllPic: function (sel, $w, editor) {            var me = this,                arr = [],                $imgs = $(sel, $w);            $.each($imgs, function (index, node) {                $(node).removeAttr("width").removeAttr("height");//                if (node.width > editor.options.initialFrameWidth) {//                    me.scale(node, editor.options.initialFrameWidth -//                        parseInt($(editor.body).css("padding-left"))  -//                        parseInt($(editor.body).css("padding-right")));//                }                return arr.push({                    _src: node.src,                    src: node.src                });            });            return arr;        },        scale: function (img, max, oWidth, oHeight) {            var width = 0, height = 0, percent, ow = img.width || oWidth, oh = img.height || oHeight;            if (ow > max || oh > max) {                if (ow >= oh) {                    if (width = ow - max) {                        percent = (width / ow).toFixed(2);                        img.height = oh - oh * percent;                        img.width = max;                    }                } else {                    if (height = oh - max) {                        percent = (height / oh).toFixed(2);                        img.width = ow - ow * percent;                        img.height = max;                    }                }            }            return this;        },        close: function ($img) {            $img.css({                top: ($img.parent().height() - $img.height()) / 2,                left: ($img.parent().width()-$img.width())/2            }).prev().on("click",function () {                if ( $(this).parent().remove().hasClass("edui-image-upload-item") ) {                    //显示图片计数-1                    Upload.showCount--;                    Upload.updateView();                }            });            return this;        },        createImgBase64: function (img, file, $w) {            if (browser.webkit) {                //Chrome8+                img.src = window.webkitURL.createObjectURL(file);            } else if (browser.gecko) {                //FF4+                img.src = window.URL.createObjectURL(file);            } else {                //实例化file reader对象                var reader = new FileReader();                reader.onload = function (e) {                    img.src = this.result;                    $w.append(img);                };                reader.readAsDataURL(file);            }        },        callback: function (editor, $w, url, state) {            if (state == "SUCCESS") {                //显示图片计数+1                Upload.showCount++;                var $img = $("<img src='" + editor.options.imagePath + url + "' class='edui-image-pic' />"),                    $item = $("<div class='edui-image-item edui-image-upload-item'><div class='edui-image-close'></div></div>").append($img);                if ($(".edui-image-upload2", $w).length < 1) {                    $(".edui-image-content", $w).append($item);                    Upload.render(".edui-image-content", 2)                        .config(".edui-image-upload2");                } else {                    $(".edui-image-upload2", $w).before($item).show();                }                $img.on("load", function () {                    Base.scale(this, 120);                    Base.close($(this));                    $(".edui-image-content", $w).focus();                });            } else {                currentDialog.showTip( state );                window.setTimeout( function () {                    currentDialog.hideTip();                }, 3000 );            }            Upload.toggleMask();        }    };    /*     * 本地上传     * */    var Upload = {        showCount: 0,        uploadTpl: '<div class="edui-image-upload%%">' +            '<span class="edui-image-icon"></span>' +            '<form class="edui-image-form" method="post" enctype="multipart/form-data" target="up">' +            '<input style=\"filter: alpha(opacity=0);\" class="edui-image-file" type="file" hidefocus name="upfile" accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp"/>' +            '</form>' +            '</div>',        init: function (editor, $w) {            var me = this;            me.editor = editor;            me.dialog = $w;            me.render(".edui-image-local", 1);            me.config(".edui-image-upload1");            me.submit();            me.drag();            $(".edui-image-upload1").hover(function () {                $(".edui-image-icon", this).toggleClass("hover");            });            if (!(UM.browser.ie && UM.browser.version <= 9)) {                $(".edui-image-dragTip", me.dialog).css("display", "block");            }            return me;        },        render: function (sel, t) {            var me = this;            $(sel, me.dialog).append($(me.uploadTpl.replace(/%%/g, t)));            return me;        },        config: function (sel) {            var me = this,                url=me.editor.options.imageUrl;            url=url + (url.indexOf("?") == -1 ? "?" : "&") + "editorid="+me.editor.id;//初始form提交地址;            $("form", $(sel, me.dialog)).attr("action", url);            return me;        },        uploadComplete: function(r){            var me = this;            try{                var json = eval('('+r+')');                Base.callback(me.editor, me.dialog, json.url, json.state);            }catch (e){                var lang = me.editor.getLang('image');                Base.callback(me.editor, me.dialog, '', (lang && lang.uploadError) || 'Error!');            }        },        submit: function (callback) {            var me = this,                input = $( '<input style="filter: alpha(opacity=0);" class="edui-image-file" type="file" hidefocus="" name="upfile" accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp">'),                input = input[0];            $(me.dialog).delegate( ".edui-image-file", "change", function ( e ) {                if ( !this.parentNode ) {                    return;                }                $('<iframe name="up"  style="display: none"></iframe>').insertBefore(me.dialog).on('load', function(){                    var r = this.contentWindow.document.body.innerHTML;                    if(r == '')return;                    me.uploadComplete(r);                    $(this).unbind('load');                    $(this).remove();                });                $(this).parent()[0].submit();                Upload.updateInput( input );                me.toggleMask("Loading....");                callback && callback();            });            return me;        },        //更新input        updateInput: function ( inputField ) {            $( ".edui-image-file", this.dialog ).each( function ( index, ele ) {                ele.parentNode.replaceChild( inputField.cloneNode( true ), ele );            } );        },        //更新上传框        updateView: function () {            if ( Upload.showCount !== 0 ) {                return;            }            $(".edui-image-upload2", this.dialog).hide();            $(".edui-image-dragTip", this.dialog).show();            $(".edui-image-upload1", this.dialog).show();        },        drag: function () {            var me = this;            //做拽上传的支持            if (!UM.browser.ie9below) {                me.dialog.find('.edui-image-content').on('drop',function (e) {                    //获取文件列表                    var fileList = e.originalEvent.dataTransfer.files;                    var img = document.createElement('img');                    var hasImg = false;                    $.each(fileList, function (i, f) {                        if (/^image/.test(f.type)) {                            //创建图片的base64                            Base.createImgBase64(img, f, me.dialog);                            var xhr = new XMLHttpRequest();                            xhr.open("post", me.editor.getOpt('imageUrl') + "?type=ajax", true);                            xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");                            //模拟数据                            var fd = new FormData();                            fd.append(me.editor.getOpt('imageFieldName'), f);                            xhr.send(fd);                            xhr.addEventListener('load', function (e) {                                var r = e.target.response, json;                                me.uploadComplete(r);                                if (i == fileList.length - 1) {                                    $(img).remove()                                }                            });                            hasImg = true;                        }                    });                    if (hasImg) {                        e.preventDefault();                        me.toggleMask("Loading....");                    }                }).on('dragover', function (e) {                        e.preventDefault();                    });            }        },        toggleMask: function (html) {            var me = this;            var $mask = $(".edui-image-mask", me.dialog);            if (html) {                if (!(UM.browser.ie && UM.browser.version <= 9)) {                    $(".edui-image-dragTip", me.dialog).css( "display", "none" );                }                $(".edui-image-upload1", me.dialog).css( "display", "none" );                $mask.addClass("edui-active").html(html);            } else {                $mask.removeClass("edui-active").html();                if ( Upload.showCount > 0 ) {                    return me;                }                if (!(UM.browser.ie && UM.browser.version <= 9) ){                    $(".edui-image-dragTip", me.dialog).css("display", "block");                }                $(".edui-image-upload1", me.dialog).css( "display", "block" );            }            return me;        }    };    /*     * 网络图片     * */    var NetWork = {        init: function (editor, $w) {            var me = this;            me.editor = editor;            me.dialog = $w;            me.initEvt();        },        initEvt: function () {            var me = this,                url,                $ele = $(".edui-image-searchTxt", me.dialog);            $(".edui-image-searchAdd", me.dialog).on("click", function () {                url = Base.checkURL($ele.val());                if (url) {                    $("<img src='" + url + "' class='edui-image-pic' />").on("load", function () {                        var $item = $("<div class='edui-image-item'><div class='edui-image-close'></div></div>").append(this);                        $(".edui-image-searchRes", me.dialog).append($item);                        Base.scale(this, 120);                        $item.width($(this).width());                        Base.close($(this));                        $ele.val("");                    });                }            })                .hover(function () {                    $(this).toggleClass("hover");                });        }    };    var $tab = null,        currentDialog = null;    UM.registerWidget('image', {        tpl: "<link rel=\"stylesheet\" type=\"text/css\" href=\"<%=image_url%>image.css\">" +            "<div class=\"edui-image-wrapper\">" +            "<ul class=\"edui-tab-nav\">" +            "<li class=\"edui-tab-item edui-active\"><a data-context=\".edui-image-local\" class=\"edui-tab-text\"><%=lang_tab_local%></a></li>" +            "<li  class=\"edui-tab-item\"><a data-context=\".edui-image-JimgSearch\" class=\"edui-tab-text\"><%=lang_tab_imgSearch%></a></li>" +            "</ul>" +            "<div class=\"edui-tab-content\">" +            "<div class=\"edui-image-local edui-tab-pane edui-active\">" +            "<div class=\"edui-image-content\"></div>" +            "<div class=\"edui-image-mask\"></div>" +            "<div class=\"edui-image-dragTip\"><%=lang_input_dragTip%></div>" +            "</div>" +            "<div class=\"edui-image-JimgSearch edui-tab-pane\">" +            "<div class=\"edui-image-searchBar\">" +            "<table><tr><td><input class=\"edui-image-searchTxt\" type=\"text\"></td>" +            "<td><div class=\"edui-image-searchAdd\"><%=lang_btn_add%></div></td></tr></table>" +            "</div>" +            "<div class=\"edui-image-searchRes\"></div>" +            "</div>" +            "</div>" +            "</div>",        initContent: function (editor, $dialog) {            var lang = editor.getLang('image')["static"],                opt = $.extend({}, lang, {                    image_url: UMEDITOR_CONFIG.UMEDITOR_HOME_URL + 'dialogs/image/'                });            Upload.showCount = 0;            if (lang) {                var html = $.parseTmpl(this.tpl, opt);            }            currentDialog = $dialog.edui();            this.root().html(html);        },        initEvent: function (editor, $w) {            $tab = $.eduitab({selector: ".edui-image-wrapper"})                .edui().on("beforeshow", function (e) {                    e.stopPropagation();                });            Upload.init(editor, $w);            NetWork.init(editor, $w);        },        buttons: {            'ok': {                exec: function (editor, $w) {                    var sel = "",                        index = $tab.activate();                    if (index == 0) {                        sel = ".edui-image-content .edui-image-pic";                    } else if (index == 1) {                        sel = ".edui-image-searchRes .edui-image-pic";                    }                    var list = Base.getAllPic(sel, $w, editor);                    if (index != -1) {                        editor.execCommand('insertimage', list);                    }                }            },            'cancel': {}        },        width: 700,        height: 408    }, function (editor, $w, url, state) {        Base.callback(editor, $w, url, state)    })})();
 |