From 5aca5bd77fb635665710a67130a698a8e77432ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E4=BC=9A=E9=B9=8F?= <1571360448@qq.com> Date: Thu, 21 Dec 2017 20:22:37 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/model.js | 2 +- src/controller/ext/collector/admin.js | 73 -------------------- src/controller/ext/collector/config.js | 13 ---- src/controller/ext/collector/index.js | 60 ---------------- src/controller/ext/collector/logic/admin.js | 10 --- src/controller/ext/collector/logic/index.js | 10 --- src/controller/ext/collector/model/demo.js | 6 -- src/controller/ext/collector/service/demo.js | 13 ---- src/controller/ext/email/admin.js | 10 +++ src/controller/ext/email/config.js | 39 +++++++++++ src/controller/ext/email/service/email.js | 7 ++ src/controller/mod/demo/config.js | 36 +++++++++- view/cmswing/forms.html | 21 ++++++ view/ext/setting.html | 2 + 14 files changed, 115 insertions(+), 187 deletions(-) delete mode 100644 src/controller/ext/collector/admin.js delete mode 100644 src/controller/ext/collector/config.js delete mode 100644 src/controller/ext/collector/index.js delete mode 100644 src/controller/ext/collector/logic/admin.js delete mode 100644 src/controller/ext/collector/logic/index.js delete mode 100644 src/controller/ext/collector/model/demo.js delete mode 100644 src/controller/ext/collector/service/demo.js create mode 100644 src/controller/ext/email/admin.js create mode 100644 src/controller/ext/email/config.js create mode 100644 src/controller/ext/email/service/email.js diff --git a/src/config/model.js b/src/config/model.js index 657f8aee..9dd3afb8 100644 --- a/src/config/model.js +++ b/src/config/model.js @@ -16,7 +16,7 @@ module.exports = { mysql: { handle: mysql, // Adapter handle user: 'root', // 用户名 - password: 'root', // 密码 + password: '', // 密码 database: 'cmswing', // 数据库 host: '127.0.0.1', // host port: 3306, // 端口 diff --git a/src/controller/ext/collector/admin.js b/src/controller/ext/collector/admin.js deleted file mode 100644 index 7b80c4c8..00000000 --- a/src/controller/ext/collector/admin.js +++ /dev/null @@ -1,73 +0,0 @@ -// +---------------------------------------------------------------------- -// | CmsWing [ 网站内容管理框架 ] -// +---------------------------------------------------------------------- -// | Copyright (c) 2015-2115 http://www.cmswing.com All rights reserved. -// +---------------------------------------------------------------------- -// | Author: arterli -// +---------------------------------------------------------------------- -// 本文件不能删除 -module.exports = class extends think.cmswing.extAdmin { - /** - * index action - * 插件管理入口 - * @return {Promise} [] - */ - async indexAction() { - // 分页列表实例 - - // -- 获取插件目录名 - // this.ext.ext; - - // -- 获取当前分类 - // await this.gettype() - - // -- model调用 - // const list = await this.extModel('demo').select(); - // const list2 = await this.extModel('demo').demo(); - // const list3 = await think.extModel('demo','demo').demo(); - - // -- 分页 - // const model = this.extModel('demo'); - // const data = await model.page(this.get('page')).countSelect(); // 获取分页数据 - // console.log(data); - // const html = this.pagination(data); // 调取分页 - // this.assign('pagerData', html); // 分页展示使用 - - // -- ext service - // 无参数类的实例化 - // const Ser1 = this.extService('demo'); - // const Ser1 = think.extService('demo','demo'); - // const ser1 = Ser1.bbb('bbb'); - // console.log(ser1); - // 有参数类的实例化 - // const Ser2 = this.extService('demo','demo','aaa','bbb'); - // const Ser2 = think.extService('demo','demo','aaa','bbb'); - // const ser2 = Ser2.aaa(); - // console.log(ser2); - // 入口模版渲染 - return this.extDisplay(); - } - - /** - * 添加 - * @returns {*} - */ - async addAction() { - // d - - } - - /** - * 修改 - */ - async editAction() { - - } - - /** - * 删除 - */ - async delAction() { - - } -}; diff --git a/src/controller/ext/collector/config.js b/src/controller/ext/collector/config.js deleted file mode 100644 index e4f5e4b1..00000000 --- a/src/controller/ext/collector/config.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - ext: 'collector', // 插件目录,必须为英文 - name: '采集器', // 插件名称 - description: '采集数据入库接口', // 插件描述 - isadm: 1, // 是否有后台管理,1:有,0:没有,入口地址:'/ext/collector/admin/index' - isindex: 0, // 是否需要前台访问,1:需要,0:不需要,入口地址:'/ext/collector/index/index' - version: '1.0', // 版本号 - author: 'arterli', // 作者 - table: [], // 插件包含的 数据库表,不包含表前缀,如:cmswing_ext_table 就是 table,多个['table','table_2']没有留空数组。 - sql: '', // 插件安装的时候会找个名字的sql文件导入,默认 插件目录名.sql; - hooks: [], // 挂载的钩子,数组格式,如['hooks1', 'hooks2'],不挂载留空:[] - setting: [] -}; \ No newline at end of file diff --git a/src/controller/ext/collector/index.js b/src/controller/ext/collector/index.js deleted file mode 100644 index 82922395..00000000 --- a/src/controller/ext/collector/index.js +++ /dev/null @@ -1,60 +0,0 @@ - -// +---------------------------------------------------------------------- -// | CmsWing [ 网站内容管理框架 ] -// +---------------------------------------------------------------------- -// | Copyright (c) 2015-2115 http://www.cmswing.com All rights reserved. -// +---------------------------------------------------------------------- -// | Author: arterli -// +---------------------------------------------------------------------- -/** - * 插件前台控制器 - * 如果插件有前台展示业务,写在这个控制器里面 - * 插件如需建立表务必遵循下面格式: - * 单表:表前缀_ext_插件目录名 - * 多表:表前缀_ext_插件目录名,表前缀_ext_插件目录名_分表1,表前缀_ext_插件目录名_分表2... - */ -module.exports = class extends think.cmswing.extIndex { - /** - * index action - * - * @return {Promise} [] - */ - - async indexAction() { - // -- 获取插件目录名 - // this.ext.ext; - - // -- 获取当前分类 - // await this.gettype() - - // -- model调用 - // const list = await this.extModel('demo').select(); - // const list2 = await this.extModel('demo').demo(); - // const list3 = await think.extModel('demo','demo').demo(); - - // -- 分页 - // const model = this.extModel('demo'); - // const data = await model.page(this.get('page')).countSelect(); // 获取分页数据 - // console.log(data); - // const html = this.pagination(data); // 调取分页 - // this.assign('pagerData', html); // 分页展示使用 - - // -- ext service - // 无参数类的实例化 - // const Ser1 = this.extService('demo'); - // const Ser1 = think.extService('demo','demo'); - // const ser1 = Ser1.bbb('bbb'); - // console.log(ser1); - // 有参数类的实例化 - // const Ser2 = this.extService('demo','demo','aaa','bbb'); - // const Ser2 = think.extService('demo','demo','aaa','bbb'); - // const ser2 = Ser2.aaa(); - // console.log(ser2); - - if (this.isMobile) { - return this.extDisplay('m'); - } else { - return this.extDisplay(); - } - } -}; diff --git a/src/controller/ext/collector/logic/admin.js b/src/controller/ext/collector/logic/admin.js deleted file mode 100644 index 1a5c23b8..00000000 --- a/src/controller/ext/collector/logic/admin.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = class extends think.Logic { - // indexAction() { - // this.rules = { - // username: { - // required: true, - // method: 'GET' // 指定获取数据的方式 - // } - // }; - // } -}; diff --git a/src/controller/ext/collector/logic/index.js b/src/controller/ext/collector/logic/index.js deleted file mode 100644 index 1a5c23b8..00000000 --- a/src/controller/ext/collector/logic/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = class extends think.Logic { - // indexAction() { - // this.rules = { - // username: { - // required: true, - // method: 'GET' // 指定获取数据的方式 - // } - // }; - // } -}; diff --git a/src/controller/ext/collector/model/demo.js b/src/controller/ext/collector/model/demo.js deleted file mode 100644 index 422c1372..00000000 --- a/src/controller/ext/collector/model/demo.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = class extends think.Model { - async demo() { - const list = await this.select(); - return list; - } -}; diff --git a/src/controller/ext/collector/service/demo.js b/src/controller/ext/collector/service/demo.js deleted file mode 100644 index 7fb9b82c..00000000 --- a/src/controller/ext/collector/service/demo.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = class extends think.Service { - constructor(key, secret) { - super(); - this.key = key; - this.secret = secret; - } - aaa() { - return `key:${this.key},secret:${this.secret}`; - } - bbb(bbb) { - return bbb; - } -}; diff --git a/src/controller/ext/email/admin.js b/src/controller/ext/email/admin.js new file mode 100644 index 00000000..d4948405 --- /dev/null +++ b/src/controller/ext/email/admin.js @@ -0,0 +1,10 @@ +// +---------------------------------------------------------------------- +// | CmsWing [ 网站内容管理框架 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2015-2115 http://www.cmswing.com All rights reserved. +// +---------------------------------------------------------------------- +// | Author: arterli +// +---------------------------------------------------------------------- +module.exports = class extends think.cmswing.extAdmin { + +}; diff --git a/src/controller/ext/email/config.js b/src/controller/ext/email/config.js new file mode 100644 index 00000000..26dc27db --- /dev/null +++ b/src/controller/ext/email/config.js @@ -0,0 +1,39 @@ +module.exports = { + ext: 'email', // 插件目录,必须为英文 + name: '邮件', // 插件名称 + description: '对邮件扩展的封装,如果有需要可自行,配置hook', // 插件描述 + isadm: 0, // 是否有后台管理,1:有,0:没有,入口地址:'/ext/mail/admin/index' + isindex: 0, // 是否需要前台访问,1:需要,0:不需要,入口地址:'/ext/mail/index/index' + version: '1.0', // 版本号 + author: '孙会鹏', // 作者 + table: [], // 插件包含的 数据库表,不包含表前缀,如:cmswing_ext_table 就是 table,多个['table','table_2']没有留空数组。 + sql: '', // 插件安装的时候会找个名字的sql文件导入,默认 插件目录名.sql; + hooks: [], // 挂载的钩子,数组格式,如['hooks1', 'hooks2'],不挂载留空:[] + setting: [ + { + '邮件设置': [ + { + 'name': 'user', // 配置在表单中的键名 ,这个会是this.config('title') + 'label': '邮箱账号:', // 表单的文字 + 'type': 'text', // 表单的类型:text、radio、select + 'value': 'admin@163.com', // 表单的默认值 + 'html': '邮箱账号' + }, + { + 'name': 'pass', + 'label': '授权码:', + 'type': 'pass', + 'value': 'pass', + 'html': '邮箱的授权码' + }, + { + 'name': 'display', + 'label': '是否显示:', + 'type': 'radio', + 'options': {'1': '显示', '0': '不显示'}, + 'value': '1' + } + ] + } + ] +}; \ No newline at end of file diff --git a/src/controller/ext/email/service/email.js b/src/controller/ext/email/service/email.js new file mode 100644 index 00000000..6aef7b8c --- /dev/null +++ b/src/controller/ext/email/service/email.js @@ -0,0 +1,7 @@ +module.exports = class extends think.Service { + constructor() { + super(); + } + + async send(options) { } +}; diff --git a/src/controller/mod/demo/config.js b/src/controller/mod/demo/config.js index 89b45e5e..4fc79322 100644 --- a/src/controller/mod/demo/config.js +++ b/src/controller/mod/demo/config.js @@ -1 +1,35 @@ -module.exports = {'name': 'demo', 'title': '模型实例', 'extend': 0, 'relation': '', 'need_pk': 1, 'field_sort': null, 'field_group': '1:基础', 'attribute_list': null, 'attribute_alias': '', 'template_list': '', 'template_add': '', 'template_edit': '', 'list_grid': null, 'list_row': 10, 'search_key': '', 'search_list': '', 'create_time': 1508255784696, 'update_time': 1508256028172, 'status': 1, 'engine_type': 'InnoDB', 'key_show': 1, 'temp_show': 1, 'type_show': 1, 'priv_show': 1, 'groups_show': 1, 'priv_roleid': '', 'priv_groupid': '', 'is_approval': 1, 'hooks': null, 'version': '1.0', 'author': 'cmswing', 'table': 'demo', 'ismod': 1}; +module.exports = { + 'name': 'demo', + 'title': '模型实例', + 'extend': 0, + 'relation': '', + 'need_pk': 1, + 'field_sort': null, + 'field_group': '1:基础', + 'attribute_list': null, + 'attribute_alias': '', + 'template_list': '', + 'template_add': '', + 'template_edit': '', + 'list_grid': null, + 'list_row': 10, + 'search_key': '', + 'search_list': '', + 'create_time': 1508255784696, + 'update_time': 1508256028172, + 'status': 1, + 'engine_type': 'InnoDB', + 'key_show': 1, + 'temp_show': 1, + 'type_show': 1, + 'priv_show': 1, + 'groups_show': 1, + 'priv_roleid': '', + 'priv_groupid': '', + 'is_approval': 1, + 'hooks': null, + 'version': '1.0', + 'author': 'cmswing', + 'table': 'demo', + 'ismod': 1 +}; diff --git a/view/cmswing/forms.html b/view/cmswing/forms.html index 17bbc307..c79cb8cf 100644 --- a/view/cmswing/forms.html +++ b/view/cmswing/forms.html @@ -62,6 +62,27 @@ {% endmacro %} +{%macro pass(setting, label, name, value= '',html= '')%} +
+ +
+
+ +
+ +
+ +
+ this.config('ext.{{setting.ext}}.{{name}}') + {%if html%} + {{html|safe}} + {%endif%} +
+
+
+
+{% endmacro %} + {%macro select(setting, label, name, value= '', options={},html= '')%}
diff --git a/view/ext/setting.html b/view/ext/setting.html index b316643e..6c74d9fe 100644 --- a/view/ext/setting.html +++ b/view/ext/setting.html @@ -27,6 +27,8 @@ {%for input in amount%} {%if input.type == 'text'%} {{forms.text(setting,label= input.label, name= input.name, value=input.value, html= input.html)}} + {%elif input.type == 'pass'%} + {{forms.pass(setting,label= input.label, name= input.name, value=input.value, html= input.html)}} {%elif input.type == 'radio'%} {{forms.radio(setting,label=input.label, name=input.name, value=input.value, options=input.options,html=input.html)}} -- Gitee From 88ae04620830b55d01d06017e924adc18c259fef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E4=BC=9A=E9=B9=8F?= <1571360448@qq.com> Date: Sun, 24 Dec 2017 17:33:06 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E9=82=AE=E4=BB=B6=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controller/ext/email/admin.js | 10 ++++++- src/controller/ext/email/config.js | 21 ++++++++++----- src/controller/ext/email/service/email.js | 32 ++++++++++++++++++++--- 3 files changed, 52 insertions(+), 11 deletions(-) diff --git a/src/controller/ext/email/admin.js b/src/controller/ext/email/admin.js index d4948405..b77d72a9 100644 --- a/src/controller/ext/email/admin.js +++ b/src/controller/ext/email/admin.js @@ -6,5 +6,13 @@ // | Author: arterli // +---------------------------------------------------------------------- module.exports = class extends think.cmswing.extAdmin { - + async indexAction() { + const email = this.extService('email', 'email'); + email.send({ + to: '15617817578@163.com', // list of receivers + subject: 'this is subject', // subject line + html: 'this is HTML content' // html content + }); + return this.success(); + } }; diff --git a/src/controller/ext/email/config.js b/src/controller/ext/email/config.js index 26dc27db..977988a6 100644 --- a/src/controller/ext/email/config.js +++ b/src/controller/ext/email/config.js @@ -12,6 +12,20 @@ module.exports = { setting: [ { '邮件设置': [ + { + 'name': 'host', // 配置在表单中的键名 ,这个会是this.config('title') + 'label': '邮件服务器:', // 表单的文字 + 'type': 'text', // 表单的类型:text、radio、select + 'value': 'admin@163.com', // 表单的默认值 + 'html': '邮箱账号' + }, + { + 'name': 'port', // 配置在表单中的键名 ,这个会是this.config('title') + 'label': '端口:', // 表单的文字 + 'type': 'text', // 表单的类型:text、radio、select + 'value': '587', // 表单的默认值 + 'html': '邮箱账号' + }, { 'name': 'user', // 配置在表单中的键名 ,这个会是this.config('title') 'label': '邮箱账号:', // 表单的文字 @@ -25,13 +39,6 @@ module.exports = { 'type': 'pass', 'value': 'pass', 'html': '邮箱的授权码' - }, - { - 'name': 'display', - 'label': '是否显示:', - 'type': 'radio', - 'options': {'1': '显示', '0': '不显示'}, - 'value': '1' } ] } diff --git a/src/controller/ext/email/service/email.js b/src/controller/ext/email/service/email.js index 6aef7b8c..2f802fd0 100644 --- a/src/controller/ext/email/service/email.js +++ b/src/controller/ext/email/service/email.js @@ -1,7 +1,33 @@ module.exports = class extends think.Service { - constructor() { - super(); + // 构造函数 + constructor(...para) { + super(para); + + this.transport = { + host: think.config('ext.email.host'), + port: Number(think.config('ext.email.port')), + secure: false, + auth: { + user: think.config('ext.email.user'), + pass: think.config('ext.email.pass') + } + }; } - async send(options) { } + // 发送邮件 + async send(options) { + // 检查 + think.extend(options, { + from: think.config('ext.email.user') + }) + // 发送 + const deferred = think.defer(); + console.log('-----email', this.transport, options); + think.sendEmail(this.transport, options).then(info => { + deferred.resolve(info); + }, err => { + console.log(err); + }); + return deferred.promise; + } }; -- Gitee From 6d05d81315a0cee3ce35ebd4696af7d908195743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E4=BC=9A=E9=B9=8F?= <1571360448@qq.com> Date: Sun, 24 Dec 2017 17:50:10 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/model.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/model.js b/src/config/model.js index 9dd3afb8..657f8aee 100644 --- a/src/config/model.js +++ b/src/config/model.js @@ -16,7 +16,7 @@ module.exports = { mysql: { handle: mysql, // Adapter handle user: 'root', // 用户名 - password: '', // 密码 + password: 'root', // 密码 database: 'cmswing', // 数据库 host: '127.0.0.1', // host port: 3306, // 端口 -- Gitee