diff --git a/_server/editor_file.js b/_server/editor_file.js
index 413a1bfa..545867b2 100644
--- a/_server/editor_file.js
+++ b/_server/editor_file.js
@@ -850,6 +850,65 @@ editor_file = function (editor, callback) {
////////////////////////////////////////////////////////////////////
+ var plmap = {};
+ var pljson = JSON.stringify(plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1, function (k, v) {
+ if (v instanceof Function) {
+ var id_ = editor.guid();
+ plmap[id_] = v.toString();
+ return id_;
+ } else if(v===null){
+ var id_ = editor.guid();
+ plmap[id_] = 'null';
+ return id_;
+ } return v
+ }, 4);
+ var plobj = JSON.parse(pljson);
+ editor_file.pluginsMap = plmap;
+ editor_file.pluginsObj = plobj;
+ var buildpllocobj = function (locObj) {
+ for (var key in locObj) {
+ if (typeof(locObj[key]) !== typeof('')) buildpllocobj(locObj[key]);
+ else locObj[key] = plmap[locObj[key]];
+ }
+ };
+
+ editor_file.editPlugins = function (actionList, callback) {
+ /*actionList:[
+ ["change","['test']","function(x,y){console.log(x,y)}"],
+ ]
+ 为[]时只查询不修改
+ */
+ if (!isset(callback)) {
+ printe('未设置callback');
+ throw('未设置callback')
+ }
+ ;
+ if (isset(actionList) && actionList.length > 0) {
+ saveSetting('plugins', actionList, function (err) {
+ callback([
+ (function () {
+ var locObj = JSON.parse(JSON.stringify(plobj));
+ buildpllocobj(locObj);
+ return locObj;
+ })(),
+ editor_file.pluginsComment,
+ err]);
+ });
+ } else {
+ callback([
+ (function () {
+ var locObj = JSON.parse(JSON.stringify(plobj));
+ buildpllocobj(locObj);
+ return locObj;
+ })(),
+ editor_file.pluginsComment,
+ null]);
+ }
+ }
+ //callback([obj,commentObj,err:String])
+
+ ////////////////////////////////////////////////////////////////////
+
var isset = function (val) {
if (val == undefined || val == null) {
return false;
@@ -1026,6 +1085,25 @@ editor_file = function (editor, callback) {
});
return;
}
+ if (file == 'plugins') {
+ actionList.forEach(function (value) {
+ if(value[0]==='add'){
+ eval("plobj" + value[1] + '=' + JSON.stringify(value[2]));
+ } else {
+ eval("plmap[plobj" + value[1] + ']=' + JSON.stringify(value[2]));
+ }
+ });
+ var plraw = JSON.stringify(plobj,null,4);
+ for (var id_ in plmap) {
+ plraw = plraw.replace('"' + id_ + '"', plmap[id_])
+ }
+ var datastr = 'var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = \n';
+ datastr += plraw;
+ fs.writeFile('project/plugins.js', encode(datastr), 'base64', function (err, data) {
+ callback(err);
+ });
+ return;
+ }
callback('出错了,要设置的文件名不识别');
}
diff --git a/_server/editor_mode.js b/_server/editor_mode.js
index cbb63f17..2c95a8e9 100644
--- a/_server/editor_mode.js
+++ b/_server/editor_mode.js
@@ -13,6 +13,7 @@ editor_mode = function (editor) {
'appendpic': 'left1',
'commonevent': 'left9',
+ 'plugins': 'left10',
}
this._ids = {}
this.dom = {}
@@ -385,6 +386,9 @@ editor_mode = function (editor) {
case 'commonevent':
editor.file.editCommonEvent(actionList, cb);
break;
+ case 'plugins':
+ editor.file.editPlugins(actionList, cb);
+ break;
default:
break;
}
@@ -394,7 +398,7 @@ editor_mode = function (editor) {
if (editor_mode.mode != mode) {
if (mode === 'save') editor_mode.doActionList(editor_mode.mode, editor_mode.actionList);
if (editor_mode.mode === 'nextChange' && mode) editor_mode.showMode(mode);
- editor_mode.mode = mode;
+ if (mode !== 'save') editor_mode.mode = mode;
editor_mode.actionList = [];
}
}
@@ -526,6 +530,19 @@ editor_mode = function (editor) {
tableinfo.listen(tableinfo.guids);
if (Boolean(callback)) callback();
}
+
+ editor_mode.prototype.plugins = function (callback) {
+ var objs = [];
+ editor.file.editPlugins([], function (objs_) {
+ objs = objs_;
+ //console.log(objs_)
+ });
+ //只查询不修改时,内部实现不是异步的,所以可以这么写
+ var tableinfo = editor_mode.objToTable_(objs[0], objs[1]);
+ document.getElementById('table_e2c034ec_47c6_48ae_8db8_4f8f32fea2d6').innerHTML = tableinfo.HTML;
+ tableinfo.listen(tableinfo.guids);
+ if (Boolean(callback)) callback();
+ }
/////////////////////////////////////////////////////////////////////////////
diff --git a/_server/plugins.comment.js b/_server/plugins.comment.js
index d556f4d6..20a3f361 100644
--- a/_server/plugins.comment.js
+++ b/_server/plugins.comment.js
@@ -6,13 +6,13 @@ var plugins_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
"test": {
"_leaf": true,
"_type": "textarea",
- "_range": "thiseval instanceof Array",
+ "_range": "typeof(thiseval)=='string'",
"_data": "插件函数执行测试, 这个函数在导入后被直接执行(因此不允许删除)"
},
"drawLight": {
"_leaf": true,
"_type": "textarea",
- "_range": "thiseval instanceof Array || thiseval==null",
+ "_range": "typeof(thiseval)=='string' || thiseval==null",
"_data": "绘制灯光/漆黑层效果"
},
}
@@ -20,7 +20,7 @@ var plugins_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
return {
"_leaf": true,
"_type": "textarea",
- "_range": "thiseval instanceof Array || thiseval==null",
+ "_range": "typeof(thiseval)=='string' || thiseval==null",
"_data": "自定义插件"
}
}
diff --git a/editor-mobile.html b/editor-mobile.html
index 681feb8f..4b82dfc4 100644
--- a/editor-mobile.html
+++ b/editor-mobile.html
@@ -260,6 +260,23 @@
+
@@ -329,6 +346,7 @@
+
+
@@ -296,6 +313,7 @@
+
diff --git a/project/plugins.js b/project/plugins.js
index a014ba64..23cbb414 100644
--- a/project/plugins.js
+++ b/project/plugins.js
@@ -1,9 +1,9 @@
var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
{
- "test": function(){
+ "test": function(){
console.log("插件函数执行测试");
},
- "drawLight" : function (name, color, lights, lightDec) {
+ "drawLight": function (name, color, lights, lightDec) {
// 绘制灯光/漆黑层效果。调用方式 core.plugin.drawLight(...)
// 【参数说明】
// name:必填,要绘制到的画布名;可以是一个系统画布,或者是个自定义画布;如果不存在则创建