From dc0945efd80bd46c8f537f0735e82b70757ac516 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Wed, 5 Nov 2014 07:44:46 +0000 Subject: [PATCH] * finish task #2124. --- www/js/kindeditor/plugins/image/image.js | 656 +++++++++++------------ 1 file changed, 328 insertions(+), 328 deletions(-) mode change 100755 => 100644 www/js/kindeditor/plugins/image/image.js diff --git a/www/js/kindeditor/plugins/image/image.js b/www/js/kindeditor/plugins/image/image.js old mode 100755 new mode 100644 index 011687bf8c..88ab7eb6f4 --- a/www/js/kindeditor/plugins/image/image.js +++ b/www/js/kindeditor/plugins/image/image.js @@ -1,328 +1,328 @@ -/******************************************************************************* -* KindEditor - WYSIWYG HTML Editor for Internet -* Copyright (C) 2006-2011 kindsoft.net -* -* @author Roddy -* @site http://www.kindsoft.net/ -* @licence http://www.kindsoft.net/license.php -*******************************************************************************/ - -KindEditor.plugin('image', function(K) { - var self = this, name = 'image', - allowImageUpload = K.undef(self.allowImageUpload, true), - allowImageRemote = K.undef(self.allowImageRemote, true), - formatUploadUrl = K.undef(self.formatUploadUrl, true), - allowFileManager = K.undef(self.allowFileManager, false), - uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), - imageTabIndex = K.undef(self.imageTabIndex, 0), - imgPath = self.pluginsPath + 'image/images/', - extraParams = K.undef(self.extraFileUploadParams, {}), - filePostName = K.undef(self.filePostName, 'imgFile'), - fillDescAfterUploadImage = K.undef(self.fillDescAfterUploadImage, false), - lang = self.lang(name + '.'); - - self.plugin.imageDialog = function(options) { - var imageUrl = options.imageUrl, - imageWidth = K.undef(options.imageWidth, ''), - imageHeight = K.undef(options.imageHeight, ''), - imageTitle = K.undef(options.imageTitle, ''), - imageAlign = K.undef(options.imageAlign, ''), - showRemote = K.undef(options.showRemote, true), - showLocal = K.undef(options.showLocal, true), - tabIndex = K.undef(options.tabIndex, 0), - clickFn = options.clickFn; - var target = 'kindeditor_upload_iframe_' + new Date().getTime(); - var hiddenElements = []; - for(var k in extraParams){ - hiddenElements.push(''); - } - var html = [ - '
', - //tabs - '
', - //local upload - start - '', - //local upload - end - //remote image - start - '', - //remote image - end - '
' - ].join(''); - var dialogWidth = showLocal || allowFileManager ? 450 : 400, - dialogHeight = showLocal && showRemote ? 300 : 250; - var dialog = self.createDialog({ - name : name, - width : dialogWidth, - height : dialogHeight, - title : self.lang(name), - body : html, - yesBtn : { - name : self.lang('yes'), - click : function(e) { - // Bugfix: http://code.google.com/p/kindeditor/issues/detail?id=319 - if (dialog.isLoading) { - return; - } - // insert local image - if (showLocal && showRemote && tabs && tabs.selectedIndex === 0 || !showRemote) { - if (uploadbutton.fileBox.val() == '') { - alert(self.lang('pleaseSelectFile')); - return; - } - dialog.showLoading(self.lang('uploadLoading')); - uploadbutton.submit(); - localUrlBox.val(''); - return; - } - // insert remote image - var url = K.trim(urlBox.val()), - width = widthBox.val(), - height = heightBox.val(), - title = titleBox.val(), - align = ''; - alignBox.each(function() { - if (this.checked) { - align = this.value; - return false; - } - }); - if (url == 'http://' || K.invalidUrl(url)) { - alert(self.lang('invalidUrl')); - urlBox[0].focus(); - return; - } - if (!/^\d*$/.test(width)) { - alert(self.lang('invalidWidth')); - widthBox[0].focus(); - return; - } - if (!/^\d*$/.test(height)) { - alert(self.lang('invalidHeight')); - heightBox[0].focus(); - return; - } - clickFn.call(self, url, title, width, height, 0, align); - } - }, - beforeRemove : function() { - viewServerBtn.unbind(); - widthBox.unbind(); - heightBox.unbind(); - refreshBtn.unbind(); - } - }), - div = dialog.div; - - var urlBox = K('[name="url"]', div), - localUrlBox = K('[name="localUrl"]', div), - viewServerBtn = K('[name="viewServer"]', div), - widthBox = K('.tab1 [name="width"]', div), - heightBox = K('.tab1 [name="height"]', div), - refreshBtn = K('.ke-refresh-btn', div), - titleBox = K('.tab1 [name="title"]', div), - alignBox = K('.tab1 [name="align"]', div); - - var tabs; - if (showRemote && showLocal) { - tabs = K.tabs({ - src : K('.tabs', div), - afterSelect : function(i) {} - }); - tabs.add({ - title : lang.localImage, - panel : K('.tab1', div) - }); - tabs.add({ - title : lang.remoteImage, - panel : K('.tab2', div) - }); - tabs.select(tabIndex); - } else if (showLocal) { - K('.tab1', div).show(); - } else if (showRemote) { - K('.tab2', div).show(); - } - - var uploadbutton = K.uploadbutton({ - button : K('.ke-upload-button', div)[0], - fieldName : filePostName, - form : K('.ke-form', div), - target : target, - width: 60, - afterUpload : function(data) { - dialog.hideLoading(); - if (data.error === 0) { - var url = data.url; - if (formatUploadUrl) { - url = K.formatUrl(url, 'absolute'); - } - if (self.afterUpload) { - self.afterUpload.call(self, url, data, name); - } - if (!fillDescAfterUploadImage) { - clickFn.call(self, url, data.title, data.width, data.height, data.border, data.align); - } else { - K(".ke-dialog-row #remoteUrl", div).val(url); - K(".ke-tabs-li", div)[0].click(); - K(".ke-refresh-btn", div).click(); - } - } else { - alert(data.message); - } - }, - afterError : function(html) { - dialog.hideLoading(); - self.errorDialog(html); - } - }); - uploadbutton.fileBox.change(function(e) { - localUrlBox.val(uploadbutton.fileBox.val()); - }); - if (allowFileManager) { - viewServerBtn.click(function(e) { - self.loadPlugin('filemanager', function() { - self.plugin.filemanagerDialog({ - viewType : 'VIEW', - dirName : 'image', - clickFn : function(url, title) { - if (self.dialogs.length > 1) { - K('[name="url"]', div).val(url); - if (self.afterSelectFile) { - self.afterSelectFile.call(self, url); - } - self.hideDialog(); - } - } - }); - }); - }); - } else { - viewServerBtn.hide(); - } - var originalWidth = 0, originalHeight = 0; - function setSize(width, height) { - widthBox.val(width); - heightBox.val(height); - originalWidth = width; - originalHeight = height; - } - refreshBtn.click(function(e) { - var tempImg = K('', document).css({ - position : 'absolute', - visibility : 'hidden', - top : 0, - left : '-1000px' - }); - tempImg.bind('load', function() { - setSize(tempImg.width(), tempImg.height()); - tempImg.remove(); - }); - K(document.body).append(tempImg); - }); - widthBox.change(function(e) { - if (originalWidth > 0) { - heightBox.val(Math.round(originalHeight / originalWidth * parseInt(this.value, 10))); - } - }); - heightBox.change(function(e) { - if (originalHeight > 0) { - widthBox.val(Math.round(originalWidth / originalHeight * parseInt(this.value, 10))); - } - }); - urlBox.val(options.imageUrl); - setSize(options.imageWidth, options.imageHeight); - titleBox.val(options.imageTitle); - alignBox.each(function() { - if (this.value === options.imageAlign) { - this.checked = true; - return false; - } - }); - if (showRemote && tabIndex === 0) { - urlBox[0].focus(); - urlBox[0].select(); - } - return dialog; - }; - self.plugin.image = { - edit : function() { - var img = self.plugin.getSelectedImage(); - self.plugin.imageDialog({ - imageUrl : img ? img.attr('data-ke-src') : 'http://', - imageWidth : img ? img.width() : '', - imageHeight : img ? img.height() : '', - imageTitle : img ? img.attr('title') : '', - imageAlign : img ? img.attr('align') : '', - showRemote : allowImageRemote, - showLocal : allowImageUpload, - tabIndex: img ? 0 : imageTabIndex, - clickFn : function(url, title, width, height, border, align) { - if (img) { - img.attr('src', url); - img.attr('data-ke-src', url); - img.attr('width', width); - img.attr('height', height); - img.attr('title', title); - img.attr('align', align); - img.attr('alt', title); - } else { - self.exec('insertimage', url, title, width, height, border, align); - } - // Bugfix: [Firefox] 上传图片后,总是出现正在加载的样式,需要延迟执行hideDialog - setTimeout(function() { - self.hideDialog().focus(); - }, 0); - } - }); - }, - 'delete' : function() { - var target = self.plugin.getSelectedImage(); - if (target.parent().name == 'a') { - target = target.parent(); - } - target.remove(); - // [IE] 删除图片后立即点击图片按钮出错 - self.addBookmark(); - } - }; - self.clickToolbar(name, self.plugin.image.edit); -}); +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('image', function(K) { + var self = this, name = 'image', + allowImageUpload = K.undef(self.allowImageUpload, true), + allowImageRemote = K.undef(self.allowImageRemote, true), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + allowFileManager = K.undef(self.allowFileManager, false), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + imageTabIndex = K.undef(self.imageTabIndex, 1), + imgPath = self.pluginsPath + 'image/images/', + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + fillDescAfterUploadImage = K.undef(self.fillDescAfterUploadImage, false), + lang = self.lang(name + '.'); + + self.plugin.imageDialog = function(options) { + var imageUrl = options.imageUrl, + imageWidth = K.undef(options.imageWidth, ''), + imageHeight = K.undef(options.imageHeight, ''), + imageTitle = K.undef(options.imageTitle, ''), + imageAlign = K.undef(options.imageAlign, ''), + showRemote = K.undef(options.showRemote, true), + showLocal = K.undef(options.showLocal, true), + tabIndex = K.undef(options.tabIndex, 0), + clickFn = options.clickFn; + var target = 'kindeditor_upload_iframe_' + new Date().getTime(); + var hiddenElements = []; + for(var k in extraParams){ + hiddenElements.push(''); + } + var html = [ + '
', + //tabs + '
', + //remote image - start + '', + //remote image - end + //local upload - start + '', + //local upload - end + '
' + ].join(''); + var dialogWidth = showLocal || allowFileManager ? 450 : 400, + dialogHeight = showLocal && showRemote ? 300 : 250; + var dialog = self.createDialog({ + name : name, + width : dialogWidth, + height : dialogHeight, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + // Bugfix: http://code.google.com/p/kindeditor/issues/detail?id=319 + if (dialog.isLoading) { + return; + } + // insert local image + if (showLocal && showRemote && tabs && tabs.selectedIndex === 1 || !showRemote) { + if (uploadbutton.fileBox.val() == '') { + alert(self.lang('pleaseSelectFile')); + return; + } + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + localUrlBox.val(''); + return; + } + // insert remote image + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(), + title = titleBox.val(), + align = ''; + alignBox.each(function() { + if (this.checked) { + align = this.value; + return false; + } + }); + if (url == 'http://' || K.invalidUrl(url)) { + alert(self.lang('invalidUrl')); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + alert(self.lang('invalidWidth')); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + alert(self.lang('invalidHeight')); + heightBox[0].focus(); + return; + } + clickFn.call(self, url, title, width, height, 0, align); + } + }, + beforeRemove : function() { + viewServerBtn.unbind(); + widthBox.unbind(); + heightBox.unbind(); + refreshBtn.unbind(); + } + }), + div = dialog.div; + + var urlBox = K('[name="url"]', div), + localUrlBox = K('[name="localUrl"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('.tab1 [name="width"]', div), + heightBox = K('.tab1 [name="height"]', div), + refreshBtn = K('.ke-refresh-btn', div), + titleBox = K('.tab1 [name="title"]', div), + alignBox = K('.tab1 [name="align"]', div); + + var tabs; + if (showRemote && showLocal) { + tabs = K.tabs({ + src : K('.tabs', div), + afterSelect : function(i) {} + }); + tabs.add({ + title : lang.remoteImage, + panel : K('.tab1', div) + }); + tabs.add({ + title : lang.localImage, + panel : K('.tab2', div) + }); + tabs.select(tabIndex); + } else if (showRemote) { + K('.tab1', div).show(); + } else if (showLocal) { + K('.tab2', div).show(); + } + + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + form : K('.ke-form', div), + target : target, + width: 60, + afterUpload : function(data) { + dialog.hideLoading(); + if (data.error === 0) { + var url = data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + if (!fillDescAfterUploadImage) { + clickFn.call(self, url, data.title, data.width, data.height, data.border, data.align); + } else { + K(".ke-dialog-row #remoteUrl", div).val(url); + K(".ke-tabs-li", div)[0].click(); + K(".ke-refresh-btn", div).click(); + } + } else { + alert(data.message); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + localUrlBox.val(uploadbutton.fileBox.val()); + }); + if (allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + viewType : 'VIEW', + dirName : 'image', + clickFn : function(url, title) { + if (self.dialogs.length > 1) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + self.hideDialog(); + } + } + }); + }); + }); + } else { + viewServerBtn.hide(); + } + var originalWidth = 0, originalHeight = 0; + function setSize(width, height) { + widthBox.val(width); + heightBox.val(height); + originalWidth = width; + originalHeight = height; + } + refreshBtn.click(function(e) { + var tempImg = K('', document).css({ + position : 'absolute', + visibility : 'hidden', + top : 0, + left : '-1000px' + }); + tempImg.bind('load', function() { + setSize(tempImg.width(), tempImg.height()); + tempImg.remove(); + }); + K(document.body).append(tempImg); + }); + widthBox.change(function(e) { + if (originalWidth > 0) { + heightBox.val(Math.round(originalHeight / originalWidth * parseInt(this.value, 10))); + } + }); + heightBox.change(function(e) { + if (originalHeight > 0) { + widthBox.val(Math.round(originalWidth / originalHeight * parseInt(this.value, 10))); + } + }); + urlBox.val(options.imageUrl); + setSize(options.imageWidth, options.imageHeight); + titleBox.val(options.imageTitle); + alignBox.each(function() { + if (this.value === options.imageAlign) { + this.checked = true; + return false; + } + }); + if (showRemote && tabIndex === 0) { + urlBox[0].focus(); + urlBox[0].select(); + } + return dialog; + }; + self.plugin.image = { + edit : function() { + var img = self.plugin.getSelectedImage(); + self.plugin.imageDialog({ + imageUrl : img ? img.attr('data-ke-src') : 'http://', + imageWidth : img ? img.width() : '', + imageHeight : img ? img.height() : '', + imageTitle : img ? img.attr('title') : '', + imageAlign : img ? img.attr('align') : '', + showRemote : allowImageRemote, + showLocal : allowImageUpload, + tabIndex: img ? 0 : imageTabIndex, + clickFn : function(url, title, width, height, border, align) { + if (img) { + img.attr('src', url); + img.attr('data-ke-src', url); + img.attr('width', width); + img.attr('height', height); + img.attr('title', title); + img.attr('align', align); + img.attr('alt', title); + } else { + self.exec('insertimage', url, title, width, height, border, align); + } + // Bugfix: [Firefox] 上传图片后,总是出现正在加载的样式,需要延迟执行hideDialog + setTimeout(function() { + self.hideDialog().focus(); + }, 0); + } + }); + }, + 'delete' : function() { + var target = self.plugin.getSelectedImage(); + if (target.parent().name == 'a') { + target = target.parent(); + } + target.remove(); + // [IE] 删除图片后立即点击图片按钮出错 + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.image.edit); +});