Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
node_modules
dist
asp/upload
asp/upload
.vscode
5 changes: 0 additions & 5 deletions .idea/encodings.xml

This file was deleted.

5 changes: 0 additions & 5 deletions .idea/misc.xml

This file was deleted.

9 changes: 0 additions & 9 deletions .idea/modules.xml

This file was deleted.

9 changes: 0 additions & 9 deletions .idea/umeditor.iml

This file was deleted.

7 changes: 0 additions & 7 deletions .idea/vcs.xml

This file was deleted.

5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,15 @@ UMeditor,简称UM,是 [ueditor](http://ueditor.baidu.com) 的简版。是为
这里写你的初始化内容
</script>
```
* 在```<head></head>```标签最后,插入需要引用的文件和实例化编辑器的代码(注意修改引用文件的路径):
* 在```<head></head>```标签最后,插入需要引用的文件和实例化编辑器的代码(注意修改引用文件的路径),
其中:UM 依赖 jquery 和 [etpl](https://github.com/ecomfe/etpl) , 注意引入文件的顺序
```html
<!-- 样式文件 -->
<link rel="stylesheet" href="./umeditor/themes/default/css/umeditor.css">
<!-- 引用jquery -->
<script src="./umeditor/third-party/jquery.min.js"></script>
<!-- 引入 etpl -->
<script type="text/javascript" src="../third-party/template.min.js"></script>
<!-- 配置文件 -->
<script type="text/javascript" src="./umeditor/umeditor.config.js"></script>
<!-- 编辑器源码文件 -->
Expand Down
1 change: 1 addition & 0 deletions _examples/completeDemo.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="../themes/default/_css/umeditor.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../third-party/jquery.min.js"></script>
<script type="text/javascript" src="../third-party/template.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../umeditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script type="text/javascript" src="../lang/zh-cn/zh-cn.js"></script>
Expand Down
1 change: 1 addition & 0 deletions _examples/customPluginDemo.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="../themes/default/_css/umeditor.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../third-party/jquery.min.js"></script>
<script type="text/javascript" src="../third-party/template.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../umeditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script type="text/javascript" src="../lang/zh-cn/zh-cn.js"></script>
Expand Down
1 change: 1 addition & 0 deletions _examples/editor_api.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
'plugins/autosave.js',
'plugins/autoupload.js',
'plugins/formula.js',
'plugins/xssFilter.js',
'ui/widget.js',
'ui/button.js',
'ui/toolbar.js',
Expand Down
1 change: 1 addition & 0 deletions _examples/filterRuleDemo.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="../themes/default/_css/umeditor.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../third-party/jquery.min.js"></script>
<script type="text/javascript" src="../third-party/template.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../umeditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script type="text/javascript" src="../lang/zh-cn/zh-cn.js"></script>
Expand Down
1 change: 1 addition & 0 deletions _examples/formulaDemo.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="../themes/default/_css/umeditor.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../third-party/jquery.min.js"></script>
<script type="text/javascript" src="../third-party/template.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../umeditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script type="text/javascript" src="../lang/zh-cn/zh-cn.js"></script>
Expand Down
1 change: 1 addition & 0 deletions _examples/formulaView.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
<title>UMEDITOR 公式展示</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="../third-party/jquery.min.js"></script>
<script type="text/javascript" src="../third-party/template.min.js"></script>
<script src="../third-party/mathquill/mathquill.min.js"></script>
<link rel="stylesheet" href="../third-party/mathquill/mathquill.css"/>
<style type="text/css">
Expand Down
1 change: 1 addition & 0 deletions _examples/multiDemo.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="../themes/default/_css/umeditor.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../third-party/jquery.min.js"></script>
<script type="text/javascript" src="../third-party/template.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../umeditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script type="text/javascript" src="../lang/zh-cn/zh-cn.js"></script>
Expand Down
1 change: 1 addition & 0 deletions _examples/pageeditor.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="../themes/default/_css/umeditor.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../third-party/jquery.min.js"></script>
<script type="text/javascript" src="../third-party/template.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../umeditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script type="text/javascript" src="../lang/zh-cn/zh-cn.js"></script>
Expand Down
1 change: 1 addition & 0 deletions _examples/renderInTable.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="../themes/default/_css/umeditor.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../third-party/jquery.min.js"></script>
<script type="text/javascript" src="../third-party/template.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../umeditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script type="text/javascript" src="../lang/zh-cn/zh-cn.js"></script>
Expand Down
1 change: 1 addition & 0 deletions _examples/resetDemo.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="../themes/default/_css/umeditor.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../third-party/jquery.min.js"></script>
<script type="text/javascript" src="../third-party/template.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../umeditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script type="text/javascript" src="../lang/zh-cn/zh-cn.js"></script>
Expand Down
1 change: 1 addition & 0 deletions _examples/save/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

<!-- 引入UMEDITOR脚本支持文件 -->
<script type="text/javascript" src="../../third-party/jquery.min.js"></script>
<script type="text/javascript" src="../third-party/template.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../../umeditor.config.js"></script>
<!--开发版-->
<script type="text/javascript" charset="utf-8" src="js/editor_api.js"></script>
Expand Down
1 change: 1 addition & 0 deletions _examples/simpleDemo.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="../themes/default/_css/umeditor.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../third-party/jquery.min.js"></script>
<script type="text/javascript" src="../third-party/template.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../umeditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script type="text/javascript" src="../lang/zh-cn/zh-cn.js"></script>
Expand Down
1 change: 1 addition & 0 deletions _examples/submitFormDemo.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="../themes/default/_css/umeditor.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../third-party/jquery.min.js"></script>
<script type="text/javascript" src="../third-party/template.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../umeditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script type="text/javascript" src="../lang/zh-cn/zh-cn.js"></script>
Expand Down
1 change: 1 addition & 0 deletions _examples/textareaDemo.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="../themes/default/_css/umeditor.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../third-party/jquery.min.js"></script>
<script type="text/javascript" src="../third-party/template.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../umeditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script type="text/javascript" src="../lang/zh-cn/zh-cn.js"></script>
Expand Down
9 changes: 4 additions & 5 deletions _src/core/domUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -630,7 +630,9 @@ var domUtils = dom.domUtils = {
break;
case 'style':
node.style.cssText = '';
!browser.ie && node.removeAttributeNode(node.getAttributeNode('style'))
if (node.getAttributeNode('style')) {
!browser.ie && node.removeAttributeNode(node.getAttributeNode('style'))
}
}
node.removeAttribute(ci);
}
Expand Down Expand Up @@ -808,10 +810,7 @@ var domUtils = dom.domUtils = {
isBr: function (node) {
return node.nodeType == 1 && node.tagName == 'BR';
},
isFillChar: function (node, isInStart) {
return node.nodeType == 3 && !node.nodeValue.replace(new RegExp((isInStart ? '^' : '' ) + domUtils.fillChar), '').length
},


isEmptyBlock: function (node, reg) {
if (node.nodeType != 1)
return 0;
Expand Down
9 changes: 9 additions & 0 deletions _src/core/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -472,6 +472,15 @@ var utils = UM.utils = {
} else {
head.removeChild(node)
}
},
/**
* etpl 渲染函数
* @name render
* @grammar UM.utils.render(tpl, data) => string
*/
render: function (tpl, data) {
var _render = etpl.compile(tpl);
return _render(data);
}

};
Expand Down
8 changes: 5 additions & 3 deletions _src/plugins/link.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ UM.plugins['link'] = function(){

this.addOutputRule(function(root){
$.each(root.getNodesByTagName('a'),function(i,a){
var _href = utils.html(a.getAttr('_href'));
var _href = a.getAttr('_href');
if(!/^(ftp|https?|\/|file)/.test(_href)){
_href = 'http://' + _href;
}
Expand All @@ -70,21 +70,23 @@ UM.plugins['link'] = function(){
});
this.addInputRule(function(root){
$.each(root.getNodesByTagName('a'),function(i,a){
a.setAttr('_href', utils.html(a.getAttr('href')));
a.setAttr('_href', a.getAttr('href'));
})
});
me.commands['link'] = {
execCommand : function( cmdName, opt ) {

var me = this;
var rng = me.selection.getRange();
opt._href && (opt._href = utils.unhtml(opt._href, /[<">'](?:(amp|lt|quot|gt|#39|nbsp);)?/g));
opt.href && (opt.href = utils.unhtml(opt.href, /[<">'](?:(amp|lt|quot|gt|#39|nbsp);)?/g));
if(rng.collapsed){
var start = rng.startContainer;
if(start = domUtils.findParentByTagName(start,'a',true)){
$(start).attr(opt);
rng.selectNode(start).select()
}else{
rng.insertNode($('<a>' +opt.href+'</a>').attr(opt)[0]).select()
rng.insertNode($('<a>' + opt.href +'</a>').attr(opt)[0]).select()

}

Expand Down
1 change: 1 addition & 0 deletions _src/plugins/video.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ UM.plugins['video'] = function (){
var html = [],id = 'tmpVedio';
for(var i=0,vi,len = videoObjs.length;i<len;i++){
vi = videoObjs[i];
vi.url = utils.unhtml(vi.url, /[<">'](?:(amp|lt|quot|gt|#39|nbsp);)?/g);
html.push(creatInsertStr( vi.url, vi.width || 420, vi.height || 280, id + i,vi.align,false));
}
me.execCommand("inserthtml",html.join(""),true);
Expand Down
79 changes: 79 additions & 0 deletions _src/plugins/xssFilter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/**
* @file xssFilter.js
* @desc xss过滤器
* @author robbenmu
*/

UM.plugins.xssFilter = function() {

var config = UMEDITOR_CONFIG;
var whiteList = config.whiteList;

function filter(node) {

var tagName = node.tagName;
var attrs = node.attrs;

if (!whiteList.hasOwnProperty(tagName)) {
node.parentNode.removeChild(node);
return false;
}

UM.utils.each(attrs, function (val, key) {

if (UM.utils.indexOf(whiteList[tagName], key) === -1) {
node.setAttr(key);
}
});
}

// 添加inserthtml\paste等操作用的过滤规则
if (whiteList && config.xssFilterRules) {
this.options.filterRules = function () {

var result = {};

UM.utils.each(whiteList, function(val, key) {
result[key] = function (node) {
return filter(node);
};
});

return result;
}();
}

var tagList = [];

UM.utils.each(whiteList, function (val, key) {
tagList.push(key);
});

// 添加input过滤规则
//
if (whiteList && config.inputXssFilter) {
this.addInputRule(function (root) {

root.traversal(function(node) {
if (node.type !== 'element') {
return false;
}
filter(node);
});
});
}
// 添加output过滤规则
//
if (whiteList && config.outputXssFilter) {
this.addOutputRule(function (root) {

root.traversal(function(node) {
if (node.type !== 'element') {
return false;
}
filter(node);
});
});
}

};
13 changes: 7 additions & 6 deletions _src/ui/button.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
//button 类
UM.ui.define('button', {
tpl: '<<%if(!texttype){%>div class="edui-btn edui-btn-<%=icon%> <%if(name){%>edui-btn-name-<%=name%><%}%>" unselectable="on" onmousedown="return false" <%}else{%>a class="edui-text-btn"<%}%><% if(title) {%> data-original-title="<%=title%>" <%};%>> ' +
'<% if(icon) {%><div unselectable="on" class="edui-icon-<%=icon%> edui-icon"></div><% }; %><%if(text) {%><span unselectable="on" onmousedown="return false" class="edui-button-label"><%=text%></span><%}%>' +
'<%if(caret && text){%><span class="edui-button-spacing"></span><%}%>' +
'<% if(caret) {%><span unselectable="on" onmousedown="return false" class="edui-caret"></span><% };%></<%if(!texttype){%>div<%}else{%>a<%}%>>',
tpl: '<<%if : !${texttype}%>div class="edui-btn edui-btn-${icon} <%if : ${name}%>edui-btn-name-${name}<%/if%>" unselectable="on" onmousedown="return false" <%else%>a class="edui-text-btn"<%/if%><% if: ${title} %> data-original-title="${title}" <%/if%>> ' +
'<% if: ${icon} %><div unselectable="on" class="edui-icon-${icon} edui-icon"></div><%/if%><%if: ${text} %><span unselectable="on" onmousedown="return false" class="edui-button-label">${text}</span><%/if%>' +
'<%if: ${caret} && ${text}%><span class="edui-button-spacing"></span><%/if%>' +
'<% if: ${caret} %><span unselectable="on" onmousedown="return false" class="edui-caret"></span><%/if%></<%if: !${texttype}%>div<%else%>a<%/if%>>',

defaultOpt: {
text: '',
title: '',
Expand All @@ -16,8 +17,8 @@ UM.ui.define('button', {
},
init: function (options) {
var me = this;

me.root($($.parseTmpl(me.tpl, options)))
me.root($(UM.utils.render(me.tpl, options)))
.click(function (evt) {
me.wrapclick(options.click, evt)
});
Expand Down
4 changes: 2 additions & 2 deletions _src/ui/colorpicker.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ UM.ui.define('colorpicker', {
'7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806,' +
'c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,').split(',');

var html = '<div unselectable="on" onmousedown="return false" class="edui-colorpicker<%if (name){%> edui-colorpicker-<%=name%><%}%>" >' +
var html = '<div unselectable="on" onmousedown="return false" class="edui-colorpicker<%if : ${name}%> edui-colorpicker-${name}<%/if%>" >' +
'<table unselectable="on" onmousedown="return false">' +
'<tr><td colspan="10">'+opt.lang_themeColor+'</td> </tr>' +
'<tr class="edui-colorpicker-firstrow" >';
Expand All @@ -33,7 +33,7 @@ UM.ui.define('colorpicker', {
},
init: function (options) {
var me = this;
me.root($($.parseTmpl(me.supper.mergeTpl(me.tpl(options)),options)));
me.root($(UM.utils.render(me.supper.mergeTpl(me.tpl(options)),options)));

me.root().on("click",function (e) {
me.trigger('pickcolor', $(e.target).data('color'));
Expand Down
2 changes: 1 addition & 1 deletion _src/ui/colorsplitbutton.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/
UM.ui.define('colorsplitbutton',{

tpl : '<div class="edui-splitbutton <%if (name){%>edui-splitbutton-<%= name %><%}%>" unselectable="on" <%if(title){%>data-original-title="<%=title%>"<%}%>><div class="edui-btn" unselectable="on" ><%if(icon){%><div unselectable="on" class="edui-icon-<%=icon%> edui-icon"></div><%}%><div class="edui-splitbutton-color-label" <%if (color) {%>style="background: <%=color%>"<%}%>></div><%if(text){%><%=text%><%}%></div>'+
tpl : '<div class="edui-splitbutton <%if : ${name}%>edui-splitbutton-${name}<%/if%>" unselectable="on" <%if: ${title}%>data-original-title="${title}"<%/if%>><div class="edui-btn" unselectable="on" ><%if: ${icon}%><div unselectable="on" class="edui-icon-${icon} edui-icon"></div><%/if%><div class="edui-splitbutton-color-label" <%if: ${color}%>style="background: ${color}"<%/if%>></div><%if: ${text}%>${text}<%/if%></div>'+
'<div unselectable="on" class="edui-btn edui-dropdown-toggle" >'+
'<div unselectable="on" class="edui-caret"><\/div>'+
'</div>'+
Expand Down
Loading