vesh-cli
Version:
码农村nodejs版本VESH框架脚手架搭建器
402 lines (401 loc) • 19.5 kB
JavaScript
(function(V, W, $) {
window.UEDITOR_HOME_URL = '/part/ref/';
V.registScript("/part/ref/ueditor.config.js;/part/ref/ueditor.all.js;/part/ref/lang/zh-cn/zh-cn.js", function(path, vm) {
var _ = this,
__ = {}; {
V.inherit.apply(_, [W.Control, [path || '<script type="text/plain"></script>', V.merge({
data: {
toolbars: {
'fullscreen': false,
'source': false,
'undo': true,
'redo': true,
'bold': true,
'italic': true,
'underline': true,
'fontborder': true,
'strike': true,
'sup': true,
'sub': true,
'removeformat': true,
'formatmatch': true,
'autotypeset': true,
'blockquote': false,
'pasteplain': true,
'forecolor': true,
'backcolor': true,
'insertorderedlist': true,
'insertunorderedlist': true,
'selectall': false,
'cleardoc': false,
'rowspacingtop': true,
'rowspacingbottom': true,
'lineheight': true,
'fontfamily': true,
'fontsize': true,
'directionalityltr': false,
'directionalityrtl': false,
'indent': true,
'customstyle': true,
'paragraph': true,
'left': true,
'center': true,
'right': true,
'justify': true,
'touppercase': true,
'tolowercase': true,
'link': true,
'unlink': true,
'anchor': true,
'imagenone': false,
'imageleft': false,
'imageright': false,
'imagecenter': false,
'simpleupload': false,
'image': true,
'emotion': false,
'scrawl': false,
'insertvideo': false,
'music': false,
'attachment': true,
'map': false,
'gmap': false,
'insertframe': false,
'insertcode': false,
'webapp': false,
'pagebreak': false,
'template': false,
'background': true,
'hr': true,
'date': false,
'time': false,
'spechars': true,
'snapscreen': true,
'wordimage': true,
'inserttable': true,
'deletetable': true,
'insertparagraphbeforetable': true,
'insertrow': true,
'deleterow': true,
'insertcol': true,
'deletecol': true,
'mergecells': true,
'mergeright': true,
'mergedown': true,
'splittocells': true,
'splittorows': true,
'splittocols': true,
'charts': true,
'print': true,
'preview': true,
'searchreplace': true,
'drafts': true,
'help': false,
'textbox': true,
'checkbox': true,
'radiobox': true,
'select': true
},
width: '100%',
height: '300',
language: 'zh-cn', //lang
icon: 'default', //theme
value: '',
uploadimage: '', //执行上传图片或截图的action名称
uploadscrawl: '', //执行上传涂鸦的action名称 todo
uploadvideo: '', //执行上传视频的action名称 todo
uploadfile: '', //controller里,执行上传视频的action名称 todo
catchimage: '', //执行抓取远程图片的action名称 todo
listimage: '', //执行列出图片的action名称 todo
listfile: '',
imageAllowFiles: [".png", ".jpg", ".jpeg", ".gif", ".bmp", ".PNG", ".JPG", ".JPEG", ".GIF", ".BMP"],
videoAllowFiles: ['.mp4', ".webm", ".ogg", ".MP4", ".WEBM", ".OGG"],
videoMaxSize: 40960000
}
}, vm)]]);
__.onLoad = _.onLoad;
__.render = _.render;
__.dispose = _.dispose;
_.addDesc('texteditor 对象');
_.addDesc('非必填属性:');
_.addDesc('\twidth 类型300px,100%');
_.addDesc('\theight 类型300px,不支持百分比');
_.addDesc("\ttoolbars'fullscreen':false,'source':false,'undo':true,'redo':true,'bold':true,'italic':true,'underline':true,'fontborder':true,'strike':true,'sup':true,'sub':true,'removeformat':true,'formatmatch':true,'autotypeset':true,'blockquote':true,'pasteplain':true,'forecolor':true,'backcolor':true,'insertorderedlist':true,'insertunorderedlist':true,'selectall':false,'cleardoc':false,'rowspacingtop':true,'rowspacingbottom':true,'lineheight':true,'customstyle':true,'paragraph':true,'fontfamily':true,'fontsize':true,'directionalityltr':false,'directionalityrtl':false,'indent':true,'left':true,'center':true,'right':true,'justify':true,'touppercase':true,'tolowercase':true,'link':true,'unlink':true,'anchor':true,'imagenone':true,'imageleft':true,'imageright':true,'imagecenter':true,'simpleupload':false,'image':true,'emotion':false,'scrawl':false,'insertvideo':false,'music':false,'attachment':true,'map':false,'gmap':false,'insertframe':false,'insertcode':false,'webapp':false,'pagebreak':false,'template':false,'background':true,'hr':true,'date':false,'time':false,'spechars':true,'snapscreen':true,'wordimage':true,'inserttable':true,'deletetable':true,'insertparagraphbeforetable':true,'insertrow':true,'deleterow':true,'insertcol':true,'deletecol':true,'mergecells':true,'mergeright':true,'mergedown':true,'splittocells':true,'splittorows':true,'splittocols':true,'charts':true,'print':true,'preview':true,'searchreplace':true,'drafts':true,'help':false,commands:[{icon:'new.gif',tooltip:'添加新控件',command:function(){initControl();}}]");
_.addDesc('\t说明 commands表示要添加新的icon控件,支持N个,{新加的控件(icon:图标地址,tooltip:图标显示名称,command:要执行的函数)}');
_.addDesc('\tlanguage 语言 类型 en zh-cn');
_.addDesc('\tvalue 内容会被V.decHtml 同时获取的内容会被自动encHtml 另更新value时请至少等待100ms以防止渲染出现问题');
_.addDesc("\t定义:editor:{path:'ueditor.config.js;ueditor.all.min.js;lang/zh-cn/zh-cn.js;../Scripts/module/part/texteditor.js',params:['',{data:{debug:true,image:'../../Scripts/ref/images/'}}]}");
//_.addDesc('\tinit 新加的控件(icon:图标地址,tooltip:图标显示名称,command:要执行的函数)');
}
_.onLoad = function(node) {
V.forC(_.events, function(k, v) {
switch (k.toLowerCase()) {
case 'click':
case 'onchange':
break;
default:
_.bindEvent(_.node, k, v);
break;
}
}, function() {
__.id = node.attr('id');
UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
UE.Editor.prototype.getActionUrl = function(action) {
if (!_.vm.data[action]) console.log('ueditor', '未找到Action:' + action + '对应的URL');
return _.vm.data[action] || UE.Editor.prototype._bkGetActionUrl(action);
};
__.onLoad(node);
});
};
_.dispose = function() {
if (_.editor) {
_.editor.destroy();
_.node.hide();
}
__.dispose();
};
_.transform = function(data) {
var ret = V.merge({
toolbar: [],
serverUrl: '',
lang: data.language,
theme: data.icon,
imageActionName: 'uploadimage',
videoActionName: 'uploadvideo',
"imagePathFormat": "",
"imageUrlPrefix": "",
}, data);
V.forC(data.toolbars, function(k, v) {
switch (k.toLowerCase()) {
case 'fullscreen':
case 'source':
if (v) {
ret.toolbar[0] = ret.toolbar[0] ? ret.toolbar[0] : [];
ret.toolbar[0].push(k);
}
break;
case 'cut':
case 'copy':
case 'paste':
break;
case 'undo':
case 'redo':
if (v) {
ret.toolbar[1] = ret.toolbar[1] ? ret.toolbar[1] : [];
ret.toolbar[1].push(k);
}
break;
case 'bold':
case 'italic':
case 'underline':
case 'fontborder':
case 'fontfamily':
case 'forecolor':
case 'backcolor':
case 'fontsize':
case 'lineheight':
case 'touppercase':
case 'tolowercase':
if (v) {
ret.toolbar[2] = ret.toolbar[2] ? ret.toolbar[2] : [];
ret.toolbar[2].push(k);
}
break;
case 'strike':
case 'sup':
case 'sub':
if (v) {
ret.toolbar[2] = ret.toolbar[2] ? ret.toolbar[2] : [];
ret.toolbar[2].push(k + k == 'strike' ? 'through' : 'script');
}
break;
case 'link':
case 'unlink':
case 'anchor':
case 'imagenone':
case 'imageleft':
case 'imageright':
case 'imagecenter':
case 'image':
case 'emotion':
case 'scrawl':
case 'insertvideo':
case 'music':
case 'attachment':
case 'map':
case 'gmap':
case 'insertframe':
case 'insertcode':
case 'webapp':
case 'pagebreak':
case 'template':
case 'date':
case 'time':
case 'snapascreen':
case 'wordimage':
case 'snapscreen':
case 'spechars':
if (v) {
ret.toolbar[3] = ret.toolbar[3] ? ret.toolbar[3] : [];
ret.toolbar[3].push(k == 'image' ? 'insertimage' : k);
}
break;
case 'justify':
case 'left':
case 'center':
case 'right':
if (v) {
ret.toolbar[4] = ret.toolbar[4] ? ret.toolbar[4] : [];
ret.toolbar[4].push('justify' + k);
}
break;
case 'paragraph':
case 'insertorderedlist':
case 'insertunorderedlist':
case 'rowspacingtop':
case 'rowspacingbottom':
case 'customstyle':
case 'directionalityltr':
case 'directionalityrtl':
case 'indent':
if (v) {
ret.toolbar[4] = ret.toolbar[4] ? ret.toolbar[4] : [];
ret.toolbar[4].push(k);
}
break;
case 'removeformat':
case 'formatmatch':
case 'autotypeset':
case 'blockquote':
case 'pasteplain':
case 'hr':
case 'background':
case 'selectall':
case 'cleardoc':
if (v) {
ret.toolbar[5] = ret.toolbar[5] ? ret.toolbar[5] : [];
ret.toolbar[5].push(k == 'hr' ? 'horizontal' : k);
}
break;
case 'inserttable':
case 'deletetable':
case 'insertparagraphbeforetable':
case 'insertrow':
case 'deleterow':
case 'insertcol':
case 'deletecol':
case 'mergecells':
case 'mergeright':
case 'mergedown':
case 'splittocells':
case 'splittorows':
case 'splittocols':
case 'charts':
if (v) {
ret.toolbar[6] = ret.toolbar[6] ? ret.toolbar[6] : [];
ret.toolbar[6].push(k);
}
break;
case 'commands':
if (V.isArray(v)) {
ret.toolbar[6] = ret.toolbar[6] ? ret.toolbar[6] : [];
for (var i = 0; i < v.length; i++) {
if (v[i] && v[i].icon) {
ret.toolbar[6].push(v[i]);
}
}
}
break;
case 'print':
case 'preview':
case 'searchreplace':
case 'drafts':
case 'help':
if (v) {
ret.toolbar[7] = ret.toolbar[7] ? ret.toolbar[7] : [];
ret.toolbar[7].push(k);
}
break;
default:
console.log(k);
break;
}
}, function() {
var tools = ret.toolbar,
toolbars = [];
ret.toolbars = [];
delete ret.toolbar;
for (var i = 0; i < tools.length; i++) {
if (tools[i] && tools[i].length > 0) {
toolbars.push("|");
toolbars = toolbars.concat(tools[i]);
}
if ((i + 1) % 16 == 0 || i == tools.length - 1) {
toolbars.push("|");
ret.toolbars.push(toolbars);
toolbars = [];
}
}
}, true);
console.log(ret);
return ret;
};
_.fill = function() { return { value: _.editor ? V.encHtml(_.editor.getContent().replace(/</g, '<').replace(/>/g, '>')) : "", html: _.editor ? _.editor.getContent() : "" } };
_.render = function(data) {
data = __.render(data);
var ret = V.merge({}, data); //处理空数据
var func = function(ret) {
V.forC(ret, function(k, v) {
switch (k.toLowerCase()) {
case 'visible':
if (v)
_.editor.setShow();
else
_.editor.setHide();
break;
case 'enable':
if (v)
_.editor.setEnabled();
else
_.editor.setDisabled('fullscreen');
break;
case 'height':
_.editor.setHeight(v);
_.node.find('iframe').height(v);
break;
case 'value':
if (!v) break;
var val = V.decHtml(v).replace(/</g, '<').replace(/>/g, '>').replace(/<script/g, '<script').replace(/script>/g, 'script>');
_.editor.setContent(val);
break;
case 'addvalue':
if (!v) break;
var val = V.decHtml(v).replace(/</g, '<').replace(/>/g, '>').replace(/<script/g, '<script').replace(/script>/g, 'script>');
_.editor.setContent(val, true);
break;
}
}, function() {
delete data.value;
//data = __.render(data);
});
};
V.forC(ret, function(k, v) {
switch (k.toLowerCase()) {
case 'width':
_.node.width(v);
break;
}
}, function() {
var render = _.editor ? false : true;
if (render) {
editor = UE.getEditor(__.id, _.transform(ret));
editor.ready(function() {
_.editor = editor;
func(ret);
});
} else func(ret);
}, true);
return data;
}
});
})(VJ, VJ.view, jQuery);