You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
4.6 KiB
155 lines
4.6 KiB
/**
|
|
* Created by JetBrains PhpStorm.
|
|
* User: taoqili
|
|
* Date: 12-1-30
|
|
* Time: 下午12:50
|
|
* To change this template use File | Settings | File Templates.
|
|
*/
|
|
|
|
var wordImage = {};
|
|
//(function(){
|
|
var g = baidu.g,
|
|
flashObj, flashContainer;
|
|
|
|
wordImage.init = function (opt, callbacks) {
|
|
showLocalPath("localPath");
|
|
//createCopyButton("clipboard","localPath");
|
|
createFlashUploader(opt, callbacks);
|
|
addUploadListener();
|
|
addOkListener();
|
|
};
|
|
|
|
function hideFlash() {
|
|
flashObj = null;
|
|
flashContainer.innerHTML = "";
|
|
}
|
|
function addOkListener() {
|
|
dialog.onok = function () {
|
|
if (!imageUrls.length) return;
|
|
var urlPrefix = editor.getOpt('imageUrlPrefix'),
|
|
images = domUtils.getElementsByTagName(editor.document, "img");
|
|
editor.fireEvent('saveScene');
|
|
for (var i = 0, img; img = images[i++];) {
|
|
var src = img.getAttribute("word_img");
|
|
if (!src) continue;
|
|
for (var j = 0, url; url = imageUrls[j++];) {
|
|
if (src.indexOf(url.original.replace(" ", "")) != -1) {
|
|
img.src = urlPrefix + url.url;
|
|
img.setAttribute("_src", urlPrefix + url.url); //同时修改"_src"属性
|
|
img.setAttribute("title", url.title);
|
|
domUtils.removeAttributes(img, ["word_img", "style", "width", "height"]);
|
|
editor.fireEvent("selectionchange");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
editor.fireEvent('saveScene');
|
|
hideFlash();
|
|
};
|
|
dialog.oncancel = function () {
|
|
hideFlash();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 绑定开始上传事件
|
|
*/
|
|
function addUploadListener() {
|
|
g("upload").onclick = function () {
|
|
flashObj.upload();
|
|
this.style.display = "none";
|
|
};
|
|
}
|
|
|
|
function showLocalPath(id) {
|
|
//单张编辑
|
|
var img = editor.selection.getRange().getClosedNode();
|
|
var images = editor.execCommand('wordimage');
|
|
if (images.length == 1 || img && img.tagName == 'IMG') {
|
|
g(id).value = images[0];
|
|
return;
|
|
}
|
|
var path = images[0];
|
|
var leftSlashIndex = path.lastIndexOf("/") || 0, //不同版本的doc和浏览器都可能影响到这个符号,故直接判断两种
|
|
rightSlashIndex = path.lastIndexOf("\\") || 0,
|
|
separater = leftSlashIndex > rightSlashIndex ? "/" : "\\";
|
|
|
|
path = path.substring(0, path.lastIndexOf(separater) + 1);
|
|
g(id).value = path;
|
|
}
|
|
|
|
function createFlashUploader(opt, callbacks) {
|
|
//由于lang.flashI18n是静态属性,不可以直接进行修改,否则会影响到后续内容
|
|
var i18n = utils.extend({}, lang.flashI18n);
|
|
//处理图片资源地址的编码,补全等问题
|
|
for (var i in i18n) {
|
|
if (!(i in { "lang": 1, "uploadingTF": 1, "imageTF": 1, "textEncoding": 1 }) && i18n[i]) {
|
|
i18n[i] = encodeURIComponent(editor.options.langPath + editor.options.lang + "/images/" + i18n[i]);
|
|
}
|
|
}
|
|
opt = utils.extend(opt, i18n, false);
|
|
var option = {
|
|
createOptions: {
|
|
id: 'flash',
|
|
url: opt.flashUrl,
|
|
width: opt.width,
|
|
height: opt.height,
|
|
errorMessage: lang.flashError,
|
|
wmode: browser.safari ? 'transparent' : 'window',
|
|
ver: '10.0.0',
|
|
vars: opt,
|
|
container: opt.container
|
|
}
|
|
};
|
|
|
|
option = extendProperty(callbacks, option);
|
|
flashObj = new baidu.flash.imageUploader(option);
|
|
flashContainer = $G(opt.container);
|
|
}
|
|
|
|
function extendProperty(fromObj, toObj) {
|
|
for (var i in fromObj) {
|
|
if (!toObj[i]) {
|
|
toObj[i] = fromObj[i];
|
|
}
|
|
}
|
|
return toObj;
|
|
}
|
|
|
|
//})();
|
|
|
|
function getPasteData(id) {
|
|
baidu.g("msg").innerHTML = lang.copySuccess + "</br>";
|
|
setTimeout(function () {
|
|
baidu.g("msg").innerHTML = "";
|
|
}, 5000);
|
|
return baidu.g(id).value;
|
|
}
|
|
|
|
function createCopyButton(id, dataFrom) {
|
|
baidu.swf.create({
|
|
id: "copyFlash",
|
|
url: "fClipboard_ueditor.swf",
|
|
width: "58",
|
|
height: "25",
|
|
errorMessage: "",
|
|
bgColor: "#CBCBCB",
|
|
wmode: "transparent",
|
|
ver: "10.0.0",
|
|
vars: {
|
|
tid: dataFrom
|
|
}
|
|
}, id
|
|
);
|
|
|
|
var clipboard = baidu.swf.getMovie("copyFlash");
|
|
var clipinterval = setInterval(function () {
|
|
if (clipboard && clipboard.flashInit) {
|
|
clearInterval(clipinterval);
|
|
clipboard.setHandCursor(true);
|
|
clipboard.setContentFuncName("getPasteData");
|
|
//clipboard.setMEFuncName("mouseEventHandler");
|
|
}
|
|
}, 500);
|
|
}
|
|
createCopyButton("clipboard", "localPath");
|