Commit 1db0ee1a authored by Vanessa's avatar Vanessa

upgrade KindEditor. fixed #53

parent 7df58422
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -39,6 +39,7 @@ KindEditor.lang({
strikethrough : 'Strikethrough',
removeformat : 'Remove format',
image : 'Image',
multiimage : 'Multi image',
flash : 'Flash',
media : 'Embeded media',
table : 'Table',
......@@ -53,6 +54,7 @@ KindEditor.lang({
filemanager : 'File Manager',
code : 'Insert code',
map : 'Google Maps',
baidumap : 'Baidu Maps',
lineheight : 'Line height',
clearhtml : 'Clear HTML code',
pagebreak : 'Insert Page Break',
......@@ -135,7 +137,19 @@ KindEditor.lang({
'image.leftAlign' : 'Left',
'image.rightAlign' : 'Right',
'image.imgTitle' : 'Title',
'image.upload' : 'Browse',
'image.viewServer' : 'Browse',
'multiimage.uploadDesc' : 'Allows users to upload <%=uploadLimit%> images, single image size not exceeding <%=sizeLimit%>',
'multiimage.startUpload' : 'Start upload',
'multiimage.clearAll' : 'Clear all',
'multiimage.insertAll' : 'Insert all',
'multiimage.queueLimitExceeded' : 'Queue limit exceeded.',
'multiimage.fileExceedsSizeLimit' : 'File exceeds size limit.',
'multiimage.zeroByteFile' : 'Zero byte file.',
'multiimage.invalidFiletype' : 'Invalid file type.',
'multiimage.unknownError' : 'Unknown upload error.',
'multiimage.pending' : 'Pending ...',
'multiimage.uploadError' : 'Upload error',
'filemanager.emptyFolder' : 'Blank',
'filemanager.moveup' : 'Parent folder',
'filemanager.viewType' : 'Display: ',
......@@ -177,6 +191,8 @@ KindEditor.lang({
'table.backgroundColor' : 'Background',
'map.address' : 'Address: ',
'map.search' : 'Search',
'baidumap.address' : 'Address: ',
'baidumap.search' : 'Search',
'anchor.name' : 'Anchor name',
'formatblock.formatBlock' : {
h1 : 'Heading 1',
......
......@@ -39,6 +39,7 @@ KindEditor.lang({
strikethrough : '删除线',
removeformat : '删除格式',
image : '图片',
multiimage : '批量图片上传',
flash : 'Flash',
media : '视音频',
table : '表格',
......@@ -50,9 +51,10 @@ KindEditor.lang({
fullscreen : '全屏显示(Esc)',
about : '关于',
print : '打印(Ctrl+P)',
filemanager : '浏览服务器',
filemanager : '文件空间',
code : '插入程序代码',
map : 'Google地图',
baidumap : '百度地图',
lineheight : '行距',
clearhtml : '清理HTML代码',
pagebreak : '插入分页符',
......@@ -117,17 +119,17 @@ KindEditor.lang({
'flash.width' : '宽度',
'flash.height' : '高度',
'flash.upload' : '上传',
'flash.viewServer' : '浏览',
'flash.viewServer' : '文件空间',
'media.url' : 'URL',
'media.width' : '宽度',
'media.height' : '高度',
'media.autostart' : '自动播放',
'media.upload' : '上传',
'media.viewServer' : '浏览',
'image.remoteImage' : '远程图片',
'media.viewServer' : '文件空间',
'image.remoteImage' : '网络图片',
'image.localImage' : '本地上传',
'image.remoteUrl' : '图片地址',
'image.localUrl' : '图片地址',
'image.localUrl' : '上传文件',
'image.size' : '图片大小',
'image.width' : '',
'image.height' : '',
......@@ -137,7 +139,19 @@ KindEditor.lang({
'image.leftAlign' : '左对齐',
'image.rightAlign' : '右对齐',
'image.imgTitle' : '图片说明',
'image.viewServer' : '浏览...',
'image.upload' : '浏览...',
'image.viewServer' : '图片空间',
'multiimage.uploadDesc' : '允许用户同时上传<%=uploadLimit%>张图片,单张图片容量不超过<%=sizeLimit%>',
'multiimage.startUpload' : '开始上传',
'multiimage.clearAll' : '全部清空',
'multiimage.insertAll' : '全部插入',
'multiimage.queueLimitExceeded' : '文件数量超过限制。',
'multiimage.fileExceedsSizeLimit' : '文件大小超过限制。',
'multiimage.zeroByteFile' : '无法上传空文件。',
'multiimage.invalidFiletype' : '文件类型不正确。',
'multiimage.unknownError' : '发生异常,无法上传。',
'multiimage.pending' : '等待上传',
'multiimage.uploadError' : '上传失败',
'filemanager.emptyFolder' : '空文件夹',
'filemanager.moveup' : '移到上一级文件夹',
'filemanager.viewType' : '显示方式:',
......@@ -150,7 +164,7 @@ KindEditor.lang({
'insertfile.url' : 'URL',
'insertfile.title' : '文件说明',
'insertfile.upload' : '上传',
'insertfile.viewServer' : '浏览',
'insertfile.viewServer' : '文件空间',
'table.cells' : '单元格数',
'table.rows' : '行数',
'table.cols' : '列数',
......@@ -179,6 +193,8 @@ KindEditor.lang({
'table.backgroundColor' : '背景颜色',
'map.address' : '地址: ',
'map.search' : '搜索',
'baidumap.address' : '地址: ',
'baidumap.search' : '搜索',
'anchor.name' : '锚点名称',
'formatblock.formatBlock' : {
h1 : '标题 1',
......
......@@ -10,10 +10,14 @@
KindEditor.plugin('image', function(K) {
var self = this, name = 'image',
allowImageUpload = K.undef(self.allowImageUpload, 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) {
......@@ -22,31 +26,33 @@ KindEditor.plugin('image', function(K) {
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('<input type="hidden" name="' + k + '" value="' + extraParams[k] + '" />');
}
var html = [
'<div style="padding:10px 20px;">',
'<div style="padding:20px;">',
//tabs
'<div class="tabs"></div>',
//url or file
'<div class="ke-dialog-row">',
//remote image - start
'<div class="tab1" style="display:none;">',
'<label for="keUrl" style="width:60px;">' + lang.remoteUrl + '</label>',
'<input type="text" id="keUrl" class="ke-input-text" name="url" value="" style="width:200px;" /> &nbsp;',
//url
'<div class="ke-dialog-row">',
'<label for="remoteUrl" style="width:60px;">' + lang.remoteUrl + '</label>',
'<input type="text" id="remoteUrl" class="ke-input-text" name="url" value="" style="width:200px;" /> &nbsp;',
'<span class="ke-button-common ke-button-outer">',
'<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />',
'</span>',
'</div>',
'<div class="tab2" style="display:none;">',
'<label style="width:60px;">' + lang.localUrl + '</label>',
'<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:200px;" readonly="true" /> &nbsp;',
'<input type="button" class="ke-upload-button" value="' + lang.viewServer + '" />',
'</div>',
'</div>',
//size
'<div class="ke-dialog-row">',
'<label for="keWidth" style="width:60px;">' + lang.size + '</label>',
lang.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ',
'<label for="remoteWidth" style="width:60px;">' + lang.size + '</label>',
lang.width + ' <input type="text" id="remoteWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ',
lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ',
'<img class="ke-refresh-btn" src="' + imgPath + 'refresh.png" width="16" height="16" alt="" style="cursor:pointer;" title="' + lang.resetSize + '" />',
'</div>',
......@@ -59,13 +65,29 @@ KindEditor.plugin('image', function(K) {
'</div>',
//title
'<div class="ke-dialog-row">',
'<label for="keTitle" style="width:60px;">' + lang.imgTitle + '</label>',
'<input type="text" id="keTitle" class="ke-input-text" name="title" value="" style="width:200px;" /></div>',
'<label for="remoteTitle" style="width:60px;">' + lang.imgTitle + '</label>',
'<input type="text" id="remoteTitle" class="ke-input-text" name="title" value="" style="width:200px;" />',
'</div>',
'</div>',
//remote image - end
//local upload - start
'<div class="tab2" style="display:none;">',
'<iframe name="' + target + '" style="display:none;"></iframe>',
'<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + target + '" action="' + K.addParam(uploadJson, 'dir=image') + '">',
//file
'<div class="ke-dialog-row">',
hiddenElements.join(''),
'<label style="width:60px;">' + lang.localUrl + '</label>',
'<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:200px;" readonly="true" /> &nbsp;',
'<input type="button" class="ke-upload-button" value="' + lang.upload + '" />',
'</div>',
'</form>',
'</div>',
//local upload - end
'</div>'
].join('');
var dialogWidth = allowImageUpload ? 450 : 400;
dialogHeight = allowImageUpload ? 300 : 250;
var dialogWidth = showLocal || allowFileManager ? 450 : 400,
dialogHeight = showLocal && showRemote ? 300 : 250;
var dialog = self.createDialog({
name : name,
width : dialogWidth,
......@@ -75,8 +97,12 @@ KindEditor.plugin('image', function(K) {
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 (tabs && tabs.selectedIndex === 1) {
if (showLocal && showRemote && tabs && tabs.selectedIndex === 1 || !showRemote) {
if (uploadbutton.fileBox.val() == '') {
alert(self.lang('pleaseSelectFile'));
return;
......@@ -121,60 +147,63 @@ KindEditor.plugin('image', function(K) {
widthBox.unbind();
heightBox.unbind();
refreshBtn.unbind();
//uploadbutton.remove();
}
}),
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 (allowImageUpload) {
if (showRemote && showLocal) {
tabs = K.tabs({
src : K('.tabs', div)
src : K('.tabs', div),
afterSelect : function(i) {}
});
tabs.add({
title : lang.remoteImage,
panel : K('.tab1', div)
});
/*tabs.add({
tabs.add({
title : lang.localImage,
panel : K('.tab2', div)
});*/
});
tabs.select(tabIndex);
} else {
} else if (showRemote) {
K('.tab1', div).show();
} else if (showLocal) {
K('.tab2', div).show();
}
var urlBox = K('[name="url"]', div),
localUrlBox = K('[name="localUrl"]', div),
viewServerBtn = K('[name="viewServer"]', div),
widthBox = K('[name="width"]', div),
heightBox = K('[name="height"]', div),
refreshBtn = K('.ke-refresh-btn', div),
titleBox = K('[name="title"]', div),
alignBox = K('[name="align"]');
var uploadbutton = K.uploadbutton({
button : K('.ke-upload-button', div)[0],
fieldName : 'imgFile',
fieldName : filePostName,
url : K.addParam(uploadJson, 'dir=image'),
form : K('.ke-form', div),
target : target,
width: 60,
afterUpload : function(data) {
dialog.hideLoading();
if (data.error === 0) {
var width = widthBox.val(),
height = heightBox.val(),
title = titleBox.val(),
align = '';
alignBox.each(function() {
if (this.checked) {
align = this.value;
return false;
}
});
var url = K.formatUrl(data.url, 'absolute');
clickFn.call(self, url, title, width, height, 0, align);
var url = data.url;
if (formatUploadUrl) {
url = K.formatUrl(url, 'absolute');
}
if (self.afterUpload) {
self.afterUpload.call(self, url);
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);
......@@ -197,6 +226,9 @@ KindEditor.plugin('image', function(K) {
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();
}
}
......@@ -260,6 +292,8 @@ KindEditor.plugin('image', function(K) {
imageHeight : img ? img.height() : '',
imageTitle : img ? img.attr('title') : '',
imageAlign : img ? img.attr('align') : '',
showRemote : true,
showLocal : allowImageUpload,
tabIndex: img ? 0 : imageTabIndex,
clickFn : function(url, title, width, height, border, align) {
self.exec('insertimage', url, title, width, height, border, align);
......@@ -271,7 +305,11 @@ KindEditor.plugin('image', function(K) {
});
},
'delete' : function() {
self.plugin.getSelectedImage().remove();
var target = self.plugin.getSelectedImage();
if (target.parent().name == 'a') {
target = target.parent();
}
target.remove();
}
};
self.clickToolbar(name, self.plugin.image.edit);
......
......@@ -12,20 +12,20 @@ KindEditor.plugin('link', function(K) {
self.plugin.link = {
edit : function() {
var lang = self.lang(name + '.'),
html = '<div style="padding:10px 20px;">' +
html = '<div style="padding:20px;">' +
//url
'<div class="ke-dialog-row">' +
'<label for="keUrl">' + lang.url + '</label>' +
'<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:90%;" /></div>' +
'<label for="keUrl" style="width:60px;">' + lang.url + '</label>' +
'<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:260px;" /></div>' +
//type
'<div class="ke-dialog-row"">' +
'<label for="keType">' + lang.linkType + '</label>' +
'<label for="keType" style="width:60px;">' + lang.linkType + '</label>' +
'<select id="keType" name="type"></select>' +
'</div>' +
'</div>',
dialog = self.createDialog({
name : name,
width : 400,
width : 450,
title : self.lang(name),
body : html,
yesBtn : {
......
......@@ -11,19 +11,22 @@ KindEditor.plugin('media', function(K) {
var self = this, name = 'media', lang = self.lang(name + '.'),
allowMediaUpload = K.undef(self.allowMediaUpload, true),
allowFileManager = K.undef(self.allowFileManager, false),
formatUploadUrl = K.undef(self.formatUploadUrl, true),
extraParams = K.undef(self.extraFileUploadParams, {}),
filePostName = K.undef(self.filePostName, 'imgFile'),
uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php');
self.plugin.media = {
edit : function() {
var html = [
'<div style="padding:10px 20px;">',
'<div style="padding:20px;">',
//url
'<div class="ke-dialog-row">',
'<label for="keUrl" style="width:60px;">' + lang.url + '</label>',
'<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> &nbsp;',
/*'<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> &nbsp;',
'<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> &nbsp;',
'<span class="ke-button-common ke-button-outer">',
'<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />',
'</span>',*/
'</span>',
'</div>',
//width
'<div class="ke-dialog-row">',
......@@ -89,18 +92,22 @@ KindEditor.plugin('media', function(K) {
autostartBox = K('[name="autostart"]', div);
urlBox.val('http://');
/*if (allowMediaUpload) {
if (allowMediaUpload) {
var uploadbutton = K.uploadbutton({
button : K('.ke-upload-button', div)[0],
fieldName : 'imgFile',
fieldName : filePostName,
extraParams : extraParams,
url : K.addParam(uploadJson, 'dir=media'),
afterUpload : function(data) {
dialog.hideLoading();
if (data.error === 0) {
var url = K.formatUrl(data.url, 'absolute');
var url = data.url;
if (formatUploadUrl) {
url = K.formatUrl(url, 'absolute');
}
urlBox.val(url);
if (self.afterUpload) {
self.afterUpload.call(self, url);
self.afterUpload.call(self, url, data, name);
}
alert(self.lang('uploadSuccess'));
} else {
......@@ -116,10 +123,9 @@ KindEditor.plugin('media', function(K) {
dialog.showLoading(self.lang('uploadLoading'));
uploadbutton.submit();
});
} else {*/
} else {
K('.ke-upload-button', div).hide();
urlBox.width(250);
//}
}
if (allowFileManager) {
viewServerBtn.click(function(e) {
......@@ -130,6 +136,9 @@ KindEditor.plugin('media', function(K) {
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();
}
}
......
......@@ -328,6 +328,11 @@
width: 16px;
height: 16px;
}
.ke-icon-baidumap {
background-position: 0px -976px;
width: 16px;
height: 16px;
}
.ke-icon-lineheight {
background-position: 0px -992px;
width: 16px;
......@@ -403,6 +408,11 @@
width: 16px;
height: 16px;
}
.ke-icon-multiimage {
background-position: 0px -1232px;
width: 16px;
height: 16px;
}
/* container */
.ke-container {
display: block;
......@@ -651,8 +661,8 @@
padding: 0 10px;
background: url(background.png) repeat scroll 0 0 #F0F0EE;
border-bottom: 1px solid #CFCFCF;
height: 25px;
font: 12px/25px "sans serif",tahoma,verdana,helvetica;
height: 24px;
font: 12px/24px "sans serif",tahoma,verdana,helvetica;
text-align: left;
color: #222;
cursor: move;
......@@ -671,6 +681,7 @@
font: 12px/1.5 "sans serif",tahoma,verdana,helvetica;
text-align: left;
overflow: hidden;
width: 100%;
}
.ke-dialog-body textarea {
display: block;
......@@ -745,6 +756,7 @@
text-align: right;
padding:0 0 5px 0;
background-color: #FFF;
width: 100%;
}
.ke-dialog-preview,
.ke-dialog-yes {
......@@ -825,6 +837,9 @@
zoom: 1;
*display: inline;
}
.ke-upload-button {
position: relative;
}
.ke-upload-area {
position: relative;
overflow: hidden;
......@@ -848,7 +863,7 @@
font: 12px/1 "sans serif",tahoma,verdana,helvetica;
border-bottom:1px solid #A0A0A0;
padding-left:5px;
margin-bottom:10px;
margin-bottom:20px;
}
.ke-tabs-ul {
list-style-image:none;
......@@ -879,6 +894,110 @@
background-color: #FFF;
color: #000;
}
/* progressbar */
.ke-progressbar {
position: relative;
margin: 0;
padding: 0;
}
.ke-progressbar-bar {
border: 1px solid #6FA5DB;
width: 80px;
height: 5px;
margin: 10px 10px 0 10px;
padding: 0;
}
.ke-progressbar-bar-inner {
width: 0;
height: 5px;
background-color: #6FA5DB;
overflow: hidden;
margin: 0;
padding: 0;
}
.ke-progressbar-percent {
position: absolute;
top: 0;
left: 40%;
display: none;
}
/* swfupload */
.ke-swfupload-top {
position: relative;
margin-bottom: 10px;
_width: 608px;
}
.ke-swfupload-button {
height: 23px;
line-height: 23px;
}
.ke-swfupload-desc {
padding: 0 10px;
height: 23px;
line-height: 23px;
}
.ke-swfupload-startupload {
position: absolute;
top: 0;
right: 0;
}
.ke-swfupload-body {
overflow: scroll;
background-color:#FFFFFF;
border-color: #848484 #E0E0E0 #E0E0E0 #848484;
border-style: solid;
border-width: 1px;
width: auto;
height: 370px;
padding: 5px;
}
.ke-swfupload-body .ke-item {
width: 100px;
margin: 5px;
}
.ke-swfupload-body .ke-photo {
position: relative;
border: 1px solid #DDDDDD;
background-color:#FFFFFF;
padding: 10px;
}
.ke-swfupload-body .ke-delete {
display: block;
background: url(default.png) no-repeat scroll 0px -688px;
width: 16px;
height: 16px;
position: absolute;
right: 0;
top: 0;
cursor: pointer;
}
.ke-swfupload-body .ke-status {
position: absolute;
left: 0;
bottom: 5px;
width: 100px;
height: 17px;
}
.ke-swfupload-body .ke-message {
width: 100px;
text-align: center;
overflow: hidden;
height:17px;
}
.ke-swfupload-body .ke-error {
color: red;
}
.ke-swfupload-body .ke-name {
width: 100px;
text-align: center;
overflow: hidden;
height:16px;
}
.ke-swfupload-body .ke-on {
border: 1px solid #5690D2;
background-color: #E9EFF6;
}
/* emoticons */
.ke-plugin-emoticons {
position: relative;
......@@ -962,7 +1081,7 @@
border-color: #848484 #E0E0E0 #E0E0E0 #848484;
border-style: solid;
border-width: 1px;
width: 470px;
width: auto;
height: 370px;
padding: 5px;
}
......@@ -1026,4 +1145,4 @@
}
.ke-plugin-template .ke-right {
float: right;
}
\ No newline at end of file
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment