From d511e2b8352af110a573db5381c65315f797675c Mon Sep 17 00:00:00 2001 From: jamen Date: Tue, 21 Nov 2017 20:23:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E5=8D=9A=E5=AE=A2?= =?UTF-8?q?=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/slife.sql | 37 +- dec/9.jpg | Bin 0 -> 184435 bytes .../controller/BlogContentController.java | 30 +- .../java/com/slife/entity/BlogContent.java | 3 +- .../main/resources/templates/blog/detail.ftl | 166 +- .../main/resources/templates/blog/list.ftl | 6 + .../config/sitemesh/WebSiteMeshFilter.java | 2 +- .../plugins/summernote/font/summernote.woff | Bin 0 -> 10196 bytes .../plugins/summernote/summernote-0.8.8.css | 1 + .../summernote/summernote-zh-CN.min.js | 3 + .../js/plugins/summernote/summernote.js | 7987 +++++++++++++++++ .../resources/static/js/slife/slifeform.js | 2 +- .../resources/templates/layouts/default.ftl | 2 +- 13 files changed, 8184 insertions(+), 55 deletions(-) create mode 100644 dec/9.jpg create mode 100644 slife-web/src/main/resources/static/css/plugins/summernote/font/summernote.woff create mode 100644 slife-web/src/main/resources/static/css/plugins/summernote/summernote-0.8.8.css create mode 100644 slife-web/src/main/resources/static/js/plugins/summernote/summernote-zh-CN.min.js create mode 100644 slife-web/src/main/resources/static/js/plugins/summernote/summernote.js diff --git a/db/slife.sql b/db/slife.sql index 057aa15..4b92311 100644 --- a/db/slife.sql +++ b/db/slife.sql @@ -10,7 +10,7 @@ Target Server Type : MYSQL Target Server Version : 50625 File Encoding : 65001 -Date: 2017-11-21 11:20:41 +Date: 2017-11-21 20:21:25 */ SET FOREIGN_KEY_CHECKS=0; @@ -680,12 +680,17 @@ CREATE TABLE `blog_content` ( `allow_comment` int(1) DEFAULT '0' COMMENT '开启评论', `status` int(1) DEFAULT NULL COMMENT '状态', `author` varchar(100) DEFAULT NULL COMMENT '作者', + `del_flag` char(1) DEFAULT NULL, + `remark` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章内容'; +) ENGINE=InnoDB AUTO_INCREMENT=932945048711651331 DEFAULT CHARSET=utf8 COMMENT='文章内容'; -- ---------------------------- -- Records of blog_content -- ---------------------------- +INSERT INTO `blog_content` VALUES ('932908253420650498', '1', '1', '2017-11-21 17:47:15', '2017-11-21 17:47:15', null, null, null, null, null, '0', null, null, 'Y', null); +INSERT INTO `blog_content` VALUES ('932944200837292033', '1', '1', '2017-11-21 20:10:05', '2017-11-21 20:10:05', null, null, null, null, null, '0', null, null, 'Y', null); +INSERT INTO `blog_content` VALUES ('932944379099406337', '1', '1', '2017-11-21 20:10:48', '2017-11-21 20:10:48', null, null, null, null, null, '0', null, null, 'Y', null); -- ---------------------------- -- Table structure for sys_area @@ -4513,6 +4518,22 @@ INSERT INTO `sys_log` VALUES ('932577564624130049', '1', '1', '2017-11-20 19:53: INSERT INTO `sys_log` VALUES ('932802233776152577', '1', '1', '2017-11-21 10:45:58', '2017-11-21 10:45:58', null, 'Y', null, null, 'com.slife.controller.SysRoleController.list()', '127.0.0.1', '获角色列表', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"code\":\"superadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":1,\"name\":\"超级管理员\",\"remark\":\"1\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"Y\"},{\"code\":\"sanguoadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":2,\"name\":\"三国管理员\",\"remark\":\"2\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"Y\"},{\"code\":\"shuihuadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":3,\"name\":\"水浒管理员\",\"remark\":\"3\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"N\"}],\"searchParams\":{\"search_like_code\":\"\",\"search_eq_useable\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":3}', 'admin', '超级管理员', '130'); INSERT INTO `sys_log` VALUES ('932802256786104321', '1', '1', '2017-11-21 10:46:03', '2017-11-21 10:46:03', null, 'Y', null, null, 'com.slife.controller.SysRoleController.list()', '127.0.0.1', '获角色列表', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"code\":\"superadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":1,\"name\":\"超级管理员\",\"remark\":\"1\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"Y\"},{\"code\":\"sanguoadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":2,\"name\":\"三国管理员\",\"remark\":\"2\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"Y\"},{\"code\":\"shuihuadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":3,\"name\":\"水浒管理员\",\"remark\":\"3\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"N\"}],\"searchParams\":{\"search_like_code\":\"\",\"search_eq_useable\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":3}', 'admin', '超级管理员', '12'); INSERT INTO `sys_log` VALUES ('932802271050932225', '1', '1', '2017-11-21 10:46:07', '2017-11-21 10:46:07', null, 'Y', null, null, 'com.slife.controller.SysRoleController.list()', '127.0.0.1', '获角色列表', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"code\":\"superadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":1,\"name\":\"超级管理员\",\"remark\":\"1\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"Y\"},{\"code\":\"sanguoadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":2,\"name\":\"三国管理员\",\"remark\":\"2\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"Y\"},{\"code\":\"shuihuadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":3,\"name\":\"水浒管理员\",\"remark\":\"3\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"N\"}],\"searchParams\":{\"search_like_code\":\"\",\"search_eq_useable\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":3}', 'admin', '超级管理员', '10'); +INSERT INTO `sys_log` VALUES ('932871114540638210', '1', '1', '2017-11-21 15:19:40', '2017-11-21 15:19:40', null, 'Y', null, null, 'com.slife.controller.SysUserController.list()', '127.0.0.1', '获取用户列表数据', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"admin\":false,\"createDate\":1509959472000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"admin@qq.com\",\"id\":927463363798847489,\"loginFlag\":\"Y\",\"loginName\":\"1233333333\",\"mobile\":\"\",\"name\":\"4444444444444444\",\"no\":\"1111111111\",\"password\":\"95ef966a79b95992a30c71ce51a0aa492f9012684c598a8425d34043\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508158484000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"009@qq.com\",\"id\":919909472932597761,\"loginFlag\":\"Y\",\"loginName\":\"4421\",\"mobile\":\"\",\"name\":\"3434\",\"no\":\"009q\",\"password\":\"78d8590291ab5b46916fc9be69d410427d6249695efbf6b07a98bf38\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150820408445233705.jpg\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508146149000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"007@qq.com\",\"id\":919857736771661825,\"loginFlag\":\"Y\",\"loginName\":\"007\",\"mobile\":\"\",\"name\":\"007\",\"no\":\"007\",\"password\":\"430d9b8aa8a085d53598302ff949b919947cfe6d11555b75f335622e\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/15081461345698302.jpg\",\"remark\":\"\",\"updateDate\":1508146149000,\"updateId\":1},{\"admin\":false,\"createDate\":1508141533000,\"createId\":919837257709088770,\"delFlag\":\"Y\",\"email\":\"005@qq.com\",\"id\":919838376048947202,\"loginFlag\":\"Y\",\"loginName\":\"005\",\"mobile\":\"\",\"name\":\"005\",\"no\":\"005\",\"password\":\"9d31202fd0fd1067da48005d63ee434fbcda2695c8b5a4ef8d8479e3\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150814151366288150.png\",\"remark\":\"\",\"updateDate\":1508141533000,\"updateId\":919837257709088770},{\"admin\":false,\"createDate\":1508141267000,\"createId\":919834003923234818,\"delFlag\":\"Y\",\"email\":\"004@qq.com\",\"id\":919837257709088770,\"loginFlag\":\"Y\",\"loginName\":\"004\",\"mobile\":\"\",\"name\":\"004\",\"no\":\"004\",\"password\":\"f7aacea53f9a692eaac000294b2836ac18ae406400ed586f7be8631a\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1508141267000,\"updateId\":919834003923234818},{\"admin\":false,\"createDate\":1505475937000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"002@qq.com\",\"id\":908658055538475008,\"loginFlag\":\"Y\",\"loginName\":\"003\",\"mobile\":\"\",\"name\":\"123456\",\"no\":\"12\",\"password\":\"b0f62ba08c7fbc15a56a56efa0bf441ee4d467b50128a6544f7a779f\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1505475937000,\"updateId\":1},{\"admin\":false,\"createDate\":1505475572000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"hztest@qq.com\",\"id\":908656522709106688,\"loginFlag\":\"Y\",\"loginName\":\"test2\",\"mobile\":\"\",\"name\":\"测试2\",\"no\":\"1\",\"password\":\"7cbc0e9134b14f24820dc3d693a1b0b63799e63faaa9f37545076786\",\"phone\":\"1\",\"photo\":\"/attach/avatar/s/151073783884114535.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1490939182000,\"delFlag\":\"Y\",\"email\":\"122741483@qq.com\",\"id\":1,\"loginFlag\":\"Y\",\"loginName\":\"admin\",\"mobile\":\"13248754856\",\"name\":\"超级管理员\",\"no\":\"1\",\"password\":\"c5be5a475c0883d737da8351f7d8295b0cfd94356e8e831f953a4499\",\"phone\":\"0788-2548756\",\"photo\":\"/img/log9.png\",\"remark\":\"描述信息\",\"sysCompanyId\":1,\"updateDate\":1507812252000,\"updateId\":1}],\"searchParams\":{\"search_eq_login_name\":\"\",\"search_eq_no\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":8}', 'admin', '超级管理员', '394'); +INSERT INTO `sys_log` VALUES ('932871294262370305', '1', '1', '2017-11-21 15:20:23', '2017-11-21 15:20:23', null, 'Y', null, null, 'com.slife.controller.SysUserController.list()', '127.0.0.1', '获取用户列表数据', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"admin\":false,\"createDate\":1509959472000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"admin@qq.com\",\"id\":927463363798847489,\"loginFlag\":\"Y\",\"loginName\":\"1233333333\",\"mobile\":\"\",\"name\":\"4444444444444444\",\"no\":\"1111111111\",\"password\":\"95ef966a79b95992a30c71ce51a0aa492f9012684c598a8425d34043\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508158484000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"009@qq.com\",\"id\":919909472932597761,\"loginFlag\":\"Y\",\"loginName\":\"4421\",\"mobile\":\"\",\"name\":\"3434\",\"no\":\"009q\",\"password\":\"78d8590291ab5b46916fc9be69d410427d6249695efbf6b07a98bf38\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150820408445233705.jpg\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508146149000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"007@qq.com\",\"id\":919857736771661825,\"loginFlag\":\"Y\",\"loginName\":\"007\",\"mobile\":\"\",\"name\":\"007\",\"no\":\"007\",\"password\":\"430d9b8aa8a085d53598302ff949b919947cfe6d11555b75f335622e\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/15081461345698302.jpg\",\"remark\":\"\",\"updateDate\":1508146149000,\"updateId\":1},{\"admin\":false,\"createDate\":1508141533000,\"createId\":919837257709088770,\"delFlag\":\"Y\",\"email\":\"005@qq.com\",\"id\":919838376048947202,\"loginFlag\":\"Y\",\"loginName\":\"005\",\"mobile\":\"\",\"name\":\"005\",\"no\":\"005\",\"password\":\"9d31202fd0fd1067da48005d63ee434fbcda2695c8b5a4ef8d8479e3\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150814151366288150.png\",\"remark\":\"\",\"updateDate\":1508141533000,\"updateId\":919837257709088770},{\"admin\":false,\"createDate\":1508141267000,\"createId\":919834003923234818,\"delFlag\":\"Y\",\"email\":\"004@qq.com\",\"id\":919837257709088770,\"loginFlag\":\"Y\",\"loginName\":\"004\",\"mobile\":\"\",\"name\":\"004\",\"no\":\"004\",\"password\":\"f7aacea53f9a692eaac000294b2836ac18ae406400ed586f7be8631a\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1508141267000,\"updateId\":919834003923234818},{\"admin\":false,\"createDate\":1505475937000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"002@qq.com\",\"id\":908658055538475008,\"loginFlag\":\"Y\",\"loginName\":\"003\",\"mobile\":\"\",\"name\":\"123456\",\"no\":\"12\",\"password\":\"b0f62ba08c7fbc15a56a56efa0bf441ee4d467b50128a6544f7a779f\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1505475937000,\"updateId\":1},{\"admin\":false,\"createDate\":1505475572000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"hztest@qq.com\",\"id\":908656522709106688,\"loginFlag\":\"Y\",\"loginName\":\"test2\",\"mobile\":\"\",\"name\":\"测试2\",\"no\":\"1\",\"password\":\"7cbc0e9134b14f24820dc3d693a1b0b63799e63faaa9f37545076786\",\"phone\":\"1\",\"photo\":\"/attach/avatar/s/151073783884114535.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1490939182000,\"delFlag\":\"Y\",\"email\":\"122741483@qq.com\",\"id\":1,\"loginFlag\":\"Y\",\"loginName\":\"admin\",\"mobile\":\"13248754856\",\"name\":\"超级管理员\",\"no\":\"1\",\"password\":\"c5be5a475c0883d737da8351f7d8295b0cfd94356e8e831f953a4499\",\"phone\":\"0788-2548756\",\"photo\":\"/img/log9.png\",\"remark\":\"描述信息\",\"sysCompanyId\":1,\"updateDate\":1507812252000,\"updateId\":1}],\"searchParams\":{\"search_eq_login_name\":\"\",\"search_eq_no\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":8}', 'admin', '超级管理员', '18'); +INSERT INTO `sys_log` VALUES ('932936051002580993', '1', '1', '2017-11-21 19:37:42', '2017-11-21 19:37:42', null, 'Y', null, null, 'com.slife.controller.SysUserController.list()', '127.0.0.1', '获取用户列表数据', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"admin\":false,\"createDate\":1509959472000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"admin@qq.com\",\"id\":927463363798847489,\"loginFlag\":\"Y\",\"loginName\":\"1233333333\",\"mobile\":\"\",\"name\":\"4444444444444444\",\"no\":\"1111111111\",\"password\":\"95ef966a79b95992a30c71ce51a0aa492f9012684c598a8425d34043\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508158484000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"009@qq.com\",\"id\":919909472932597761,\"loginFlag\":\"Y\",\"loginName\":\"4421\",\"mobile\":\"\",\"name\":\"3434\",\"no\":\"009q\",\"password\":\"78d8590291ab5b46916fc9be69d410427d6249695efbf6b07a98bf38\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150820408445233705.jpg\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508146149000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"007@qq.com\",\"id\":919857736771661825,\"loginFlag\":\"Y\",\"loginName\":\"007\",\"mobile\":\"\",\"name\":\"007\",\"no\":\"007\",\"password\":\"430d9b8aa8a085d53598302ff949b919947cfe6d11555b75f335622e\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/15081461345698302.jpg\",\"remark\":\"\",\"updateDate\":1508146149000,\"updateId\":1},{\"admin\":false,\"createDate\":1508141533000,\"createId\":919837257709088770,\"delFlag\":\"Y\",\"email\":\"005@qq.com\",\"id\":919838376048947202,\"loginFlag\":\"Y\",\"loginName\":\"005\",\"mobile\":\"\",\"name\":\"005\",\"no\":\"005\",\"password\":\"9d31202fd0fd1067da48005d63ee434fbcda2695c8b5a4ef8d8479e3\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150814151366288150.png\",\"remark\":\"\",\"updateDate\":1508141533000,\"updateId\":919837257709088770},{\"admin\":false,\"createDate\":1508141267000,\"createId\":919834003923234818,\"delFlag\":\"Y\",\"email\":\"004@qq.com\",\"id\":919837257709088770,\"loginFlag\":\"Y\",\"loginName\":\"004\",\"mobile\":\"\",\"name\":\"004\",\"no\":\"004\",\"password\":\"f7aacea53f9a692eaac000294b2836ac18ae406400ed586f7be8631a\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1508141267000,\"updateId\":919834003923234818},{\"admin\":false,\"createDate\":1505475937000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"002@qq.com\",\"id\":908658055538475008,\"loginFlag\":\"Y\",\"loginName\":\"003\",\"mobile\":\"\",\"name\":\"123456\",\"no\":\"12\",\"password\":\"b0f62ba08c7fbc15a56a56efa0bf441ee4d467b50128a6544f7a779f\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1505475937000,\"updateId\":1},{\"admin\":false,\"createDate\":1505475572000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"hztest@qq.com\",\"id\":908656522709106688,\"loginFlag\":\"Y\",\"loginName\":\"test2\",\"mobile\":\"\",\"name\":\"测试2\",\"no\":\"1\",\"password\":\"7cbc0e9134b14f24820dc3d693a1b0b63799e63faaa9f37545076786\",\"phone\":\"1\",\"photo\":\"/attach/avatar/s/151073783884114535.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1490939182000,\"delFlag\":\"Y\",\"email\":\"122741483@qq.com\",\"id\":1,\"loginFlag\":\"Y\",\"loginName\":\"admin\",\"mobile\":\"13248754856\",\"name\":\"超级管理员\",\"no\":\"1\",\"password\":\"c5be5a475c0883d737da8351f7d8295b0cfd94356e8e831f953a4499\",\"phone\":\"0788-2548756\",\"photo\":\"/img/log9.png\",\"remark\":\"描述信息\",\"sysCompanyId\":1,\"updateDate\":1507812252000,\"updateId\":1}],\"searchParams\":{\"search_eq_login_name\":\"\",\"search_eq_no\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":8}', 'admin', '超级管理员', '42'); +INSERT INTO `sys_log` VALUES ('932936799203500034', '1', '1', '2017-11-21 19:40:41', '2017-11-21 19:40:41', null, 'Y', null, null, 'com.slife.controller.SysUserController.list()', '127.0.0.1', '获取用户列表数据', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"admin\":false,\"createDate\":1509959472000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"admin@qq.com\",\"id\":927463363798847489,\"loginFlag\":\"Y\",\"loginName\":\"1233333333\",\"mobile\":\"\",\"name\":\"4444444444444444\",\"no\":\"1111111111\",\"password\":\"95ef966a79b95992a30c71ce51a0aa492f9012684c598a8425d34043\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508158484000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"009@qq.com\",\"id\":919909472932597761,\"loginFlag\":\"Y\",\"loginName\":\"4421\",\"mobile\":\"\",\"name\":\"3434\",\"no\":\"009q\",\"password\":\"78d8590291ab5b46916fc9be69d410427d6249695efbf6b07a98bf38\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150820408445233705.jpg\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508146149000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"007@qq.com\",\"id\":919857736771661825,\"loginFlag\":\"Y\",\"loginName\":\"007\",\"mobile\":\"\",\"name\":\"007\",\"no\":\"007\",\"password\":\"430d9b8aa8a085d53598302ff949b919947cfe6d11555b75f335622e\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/15081461345698302.jpg\",\"remark\":\"\",\"updateDate\":1508146149000,\"updateId\":1},{\"admin\":false,\"createDate\":1508141533000,\"createId\":919837257709088770,\"delFlag\":\"Y\",\"email\":\"005@qq.com\",\"id\":919838376048947202,\"loginFlag\":\"Y\",\"loginName\":\"005\",\"mobile\":\"\",\"name\":\"005\",\"no\":\"005\",\"password\":\"9d31202fd0fd1067da48005d63ee434fbcda2695c8b5a4ef8d8479e3\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150814151366288150.png\",\"remark\":\"\",\"updateDate\":1508141533000,\"updateId\":919837257709088770},{\"admin\":false,\"createDate\":1508141267000,\"createId\":919834003923234818,\"delFlag\":\"Y\",\"email\":\"004@qq.com\",\"id\":919837257709088770,\"loginFlag\":\"Y\",\"loginName\":\"004\",\"mobile\":\"\",\"name\":\"004\",\"no\":\"004\",\"password\":\"f7aacea53f9a692eaac000294b2836ac18ae406400ed586f7be8631a\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1508141267000,\"updateId\":919834003923234818},{\"admin\":false,\"createDate\":1505475937000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"002@qq.com\",\"id\":908658055538475008,\"loginFlag\":\"Y\",\"loginName\":\"003\",\"mobile\":\"\",\"name\":\"123456\",\"no\":\"12\",\"password\":\"b0f62ba08c7fbc15a56a56efa0bf441ee4d467b50128a6544f7a779f\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1505475937000,\"updateId\":1},{\"admin\":false,\"createDate\":1505475572000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"hztest@qq.com\",\"id\":908656522709106688,\"loginFlag\":\"Y\",\"loginName\":\"test2\",\"mobile\":\"\",\"name\":\"测试2\",\"no\":\"1\",\"password\":\"7cbc0e9134b14f24820dc3d693a1b0b63799e63faaa9f37545076786\",\"phone\":\"1\",\"photo\":\"/attach/avatar/s/151073783884114535.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1490939182000,\"delFlag\":\"Y\",\"email\":\"122741483@qq.com\",\"id\":1,\"loginFlag\":\"Y\",\"loginName\":\"admin\",\"mobile\":\"13248754856\",\"name\":\"超级管理员\",\"no\":\"1\",\"password\":\"c5be5a475c0883d737da8351f7d8295b0cfd94356e8e831f953a4499\",\"phone\":\"0788-2548756\",\"photo\":\"/img/log9.png\",\"remark\":\"描述信息\",\"sysCompanyId\":1,\"updateDate\":1507812252000,\"updateId\":1}],\"searchParams\":{\"search_eq_login_name\":\"\",\"search_eq_no\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":8}', 'admin', '超级管理员', '18'); +INSERT INTO `sys_log` VALUES ('932936823287193602', '1', '1', '2017-11-21 19:40:46', '2017-11-21 19:40:46', null, 'Y', null, null, 'com.slife.controller.SysOfficeController.list()', '127.0.0.1', '获取组织用户列表数据', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[],\"searchParams\":{\"search_eq_sys_office_id\":\"\"},\"total\":0}', 'admin', '超级管理员', '167'); +INSERT INTO `sys_log` VALUES ('932936854866108418', '1', '1', '2017-11-21 19:40:54', '2017-11-21 19:40:54', null, 'Y', null, null, 'com.slife.controller.SysOfficeController.list()', '127.0.0.1', '获取组织用户列表数据', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[],\"searchParams\":{\"search_eq_sys_office_id\":\"\"},\"total\":0}', 'admin', '超级管理员', '13'); +INSERT INTO `sys_log` VALUES ('932936872700289025', '1', '1', '2017-11-21 19:40:58', '2017-11-21 19:40:58', null, 'Y', null, null, 'com.slife.controller.SysOfficeController.list()', '127.0.0.1', '获取组织用户列表数据', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[],\"searchParams\":{\"search_eq_sys_office_id\":\"\"},\"total\":0}', 'admin', '超级管理员', '7'); +INSERT INTO `sys_log` VALUES ('932938937665200129', '1', '1', '2017-11-21 19:49:11', '2017-11-21 19:49:11', null, 'Y', null, null, 'com.slife.controller.SysUserController.list()', '127.0.0.1', '获取用户列表数据', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"admin\":false,\"createDate\":1509959472000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"admin@qq.com\",\"id\":927463363798847489,\"loginFlag\":\"Y\",\"loginName\":\"1233333333\",\"mobile\":\"\",\"name\":\"4444444444444444\",\"no\":\"1111111111\",\"password\":\"95ef966a79b95992a30c71ce51a0aa492f9012684c598a8425d34043\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508158484000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"009@qq.com\",\"id\":919909472932597761,\"loginFlag\":\"Y\",\"loginName\":\"4421\",\"mobile\":\"\",\"name\":\"3434\",\"no\":\"009q\",\"password\":\"78d8590291ab5b46916fc9be69d410427d6249695efbf6b07a98bf38\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150820408445233705.jpg\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508146149000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"007@qq.com\",\"id\":919857736771661825,\"loginFlag\":\"Y\",\"loginName\":\"007\",\"mobile\":\"\",\"name\":\"007\",\"no\":\"007\",\"password\":\"430d9b8aa8a085d53598302ff949b919947cfe6d11555b75f335622e\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/15081461345698302.jpg\",\"remark\":\"\",\"updateDate\":1508146149000,\"updateId\":1},{\"admin\":false,\"createDate\":1508141533000,\"createId\":919837257709088770,\"delFlag\":\"Y\",\"email\":\"005@qq.com\",\"id\":919838376048947202,\"loginFlag\":\"Y\",\"loginName\":\"005\",\"mobile\":\"\",\"name\":\"005\",\"no\":\"005\",\"password\":\"9d31202fd0fd1067da48005d63ee434fbcda2695c8b5a4ef8d8479e3\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150814151366288150.png\",\"remark\":\"\",\"updateDate\":1508141533000,\"updateId\":919837257709088770},{\"admin\":false,\"createDate\":1508141267000,\"createId\":919834003923234818,\"delFlag\":\"Y\",\"email\":\"004@qq.com\",\"id\":919837257709088770,\"loginFlag\":\"Y\",\"loginName\":\"004\",\"mobile\":\"\",\"name\":\"004\",\"no\":\"004\",\"password\":\"f7aacea53f9a692eaac000294b2836ac18ae406400ed586f7be8631a\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1508141267000,\"updateId\":919834003923234818},{\"admin\":false,\"createDate\":1505475937000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"002@qq.com\",\"id\":908658055538475008,\"loginFlag\":\"Y\",\"loginName\":\"003\",\"mobile\":\"\",\"name\":\"123456\",\"no\":\"12\",\"password\":\"b0f62ba08c7fbc15a56a56efa0bf441ee4d467b50128a6544f7a779f\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1505475937000,\"updateId\":1},{\"admin\":false,\"createDate\":1505475572000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"hztest@qq.com\",\"id\":908656522709106688,\"loginFlag\":\"Y\",\"loginName\":\"test2\",\"mobile\":\"\",\"name\":\"测试2\",\"no\":\"1\",\"password\":\"7cbc0e9134b14f24820dc3d693a1b0b63799e63faaa9f37545076786\",\"phone\":\"1\",\"photo\":\"/attach/avatar/s/151073783884114535.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1490939182000,\"delFlag\":\"Y\",\"email\":\"122741483@qq.com\",\"id\":1,\"loginFlag\":\"Y\",\"loginName\":\"admin\",\"mobile\":\"13248754856\",\"name\":\"超级管理员\",\"no\":\"1\",\"password\":\"c5be5a475c0883d737da8351f7d8295b0cfd94356e8e831f953a4499\",\"phone\":\"0788-2548756\",\"photo\":\"/img/log9.png\",\"remark\":\"描述信息\",\"sysCompanyId\":1,\"updateDate\":1507812252000,\"updateId\":1}],\"searchParams\":{\"search_eq_login_name\":\"\",\"search_eq_no\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":8}', 'admin', '超级管理员', '10'); +INSERT INTO `sys_log` VALUES ('932939548758515713', '1', '1', '2017-11-21 19:51:36', '2017-11-21 19:51:36', null, 'Y', null, null, 'com.slife.controller.SysRoleController.list()', '127.0.0.1', '获角色列表', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"code\":\"superadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":1,\"name\":\"超级管理员\",\"remark\":\"1\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"Y\"},{\"code\":\"sanguoadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":2,\"name\":\"三国管理员\",\"remark\":\"2\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"Y\"},{\"code\":\"shuihuadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":3,\"name\":\"水浒管理员\",\"remark\":\"3\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"N\"}],\"searchParams\":{\"search_like_code\":\"\",\"search_eq_useable\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":3}', 'admin', '超级管理员', '36'); +INSERT INTO `sys_log` VALUES ('932939601057292290', '1', '1', '2017-11-21 19:51:49', '2017-11-21 19:51:49', null, 'Y', null, null, 'com.slife.controller.SysRoleController.list()', '127.0.0.1', '获角色列表', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"code\":\"superadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":1,\"name\":\"超级管理员\",\"remark\":\"1\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"Y\"},{\"code\":\"sanguoadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":2,\"name\":\"三国管理员\",\"remark\":\"2\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"Y\"},{\"code\":\"shuihuadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":3,\"name\":\"水浒管理员\",\"remark\":\"3\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"N\"}],\"searchParams\":{\"search_like_code\":\"\",\"search_eq_useable\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":3}', 'admin', '超级管理员', '9'); +INSERT INTO `sys_log` VALUES ('932939755005026305', '1', '1', '2017-11-21 19:52:25', '2017-11-21 19:52:25', null, 'Y', null, null, 'com.slife.controller.SysRoleController.list()', '127.0.0.1', '获角色列表', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"code\":\"superadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":1,\"name\":\"超级管理员\",\"remark\":\"1\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"Y\"},{\"code\":\"sanguoadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":2,\"name\":\"三国管理员\",\"remark\":\"2\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"Y\"},{\"code\":\"shuihuadmin\",\"dataScope\":\"DATA_SCOPE_SELF\",\"delFlag\":\"Y\",\"id\":3,\"name\":\"水浒管理员\",\"remark\":\"3\",\"sysMenuList\":[],\"sysOfficeList\":[],\"useable\":\"N\"}],\"searchParams\":{\"search_like_code\":\"\",\"search_eq_useable\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":3}', 'admin', '超级管理员', '7'); +INSERT INTO `sys_log` VALUES ('932942418576855041', '1', '1', '2017-11-21 20:03:00', '2017-11-21 20:03:00', null, 'Y', null, null, 'com.slife.controller.SysUserController.list()', '127.0.0.1', '获取用户列表数据', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"admin\":false,\"createDate\":1509959472000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"admin@qq.com\",\"id\":927463363798847489,\"loginFlag\":\"Y\",\"loginName\":\"1233333333\",\"mobile\":\"\",\"name\":\"4444444444444444\",\"no\":\"1111111111\",\"password\":\"95ef966a79b95992a30c71ce51a0aa492f9012684c598a8425d34043\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508158484000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"009@qq.com\",\"id\":919909472932597761,\"loginFlag\":\"Y\",\"loginName\":\"4421\",\"mobile\":\"\",\"name\":\"3434\",\"no\":\"009q\",\"password\":\"78d8590291ab5b46916fc9be69d410427d6249695efbf6b07a98bf38\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150820408445233705.jpg\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508146149000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"007@qq.com\",\"id\":919857736771661825,\"loginFlag\":\"Y\",\"loginName\":\"007\",\"mobile\":\"\",\"name\":\"007\",\"no\":\"007\",\"password\":\"430d9b8aa8a085d53598302ff949b919947cfe6d11555b75f335622e\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/15081461345698302.jpg\",\"remark\":\"\",\"updateDate\":1508146149000,\"updateId\":1},{\"admin\":false,\"createDate\":1508141533000,\"createId\":919837257709088770,\"delFlag\":\"Y\",\"email\":\"005@qq.com\",\"id\":919838376048947202,\"loginFlag\":\"Y\",\"loginName\":\"005\",\"mobile\":\"\",\"name\":\"005\",\"no\":\"005\",\"password\":\"9d31202fd0fd1067da48005d63ee434fbcda2695c8b5a4ef8d8479e3\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150814151366288150.png\",\"remark\":\"\",\"updateDate\":1508141533000,\"updateId\":919837257709088770},{\"admin\":false,\"createDate\":1508141267000,\"createId\":919834003923234818,\"delFlag\":\"Y\",\"email\":\"004@qq.com\",\"id\":919837257709088770,\"loginFlag\":\"Y\",\"loginName\":\"004\",\"mobile\":\"\",\"name\":\"004\",\"no\":\"004\",\"password\":\"f7aacea53f9a692eaac000294b2836ac18ae406400ed586f7be8631a\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1508141267000,\"updateId\":919834003923234818},{\"admin\":false,\"createDate\":1505475937000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"002@qq.com\",\"id\":908658055538475008,\"loginFlag\":\"Y\",\"loginName\":\"003\",\"mobile\":\"\",\"name\":\"123456\",\"no\":\"12\",\"password\":\"b0f62ba08c7fbc15a56a56efa0bf441ee4d467b50128a6544f7a779f\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1505475937000,\"updateId\":1},{\"admin\":false,\"createDate\":1505475572000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"hztest@qq.com\",\"id\":908656522709106688,\"loginFlag\":\"Y\",\"loginName\":\"test2\",\"mobile\":\"\",\"name\":\"测试2\",\"no\":\"1\",\"password\":\"7cbc0e9134b14f24820dc3d693a1b0b63799e63faaa9f37545076786\",\"phone\":\"1\",\"photo\":\"/attach/avatar/s/151073783884114535.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1490939182000,\"delFlag\":\"Y\",\"email\":\"122741483@qq.com\",\"id\":1,\"loginFlag\":\"Y\",\"loginName\":\"admin\",\"mobile\":\"13248754856\",\"name\":\"超级管理员\",\"no\":\"1\",\"password\":\"c5be5a475c0883d737da8351f7d8295b0cfd94356e8e831f953a4499\",\"phone\":\"0788-2548756\",\"photo\":\"/img/log9.png\",\"remark\":\"描述信息\",\"sysCompanyId\":1,\"updateDate\":1507812252000,\"updateId\":1}],\"searchParams\":{\"search_eq_login_name\":\"\",\"search_eq_no\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":8}', 'admin', '超级管理员', '12'); +INSERT INTO `sys_log` VALUES ('932942463971807233', '1', '1', '2017-11-21 20:03:11', '2017-11-21 20:03:11', null, 'Y', null, null, 'com.slife.controller.SysUserController.list()', '127.0.0.1', '获取用户列表数据', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"admin\":false,\"createDate\":1509959472000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"admin@qq.com\",\"id\":927463363798847489,\"loginFlag\":\"Y\",\"loginName\":\"1233333333\",\"mobile\":\"\",\"name\":\"4444444444444444\",\"no\":\"1111111111\",\"password\":\"95ef966a79b95992a30c71ce51a0aa492f9012684c598a8425d34043\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508158484000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"009@qq.com\",\"id\":919909472932597761,\"loginFlag\":\"Y\",\"loginName\":\"4421\",\"mobile\":\"\",\"name\":\"3434\",\"no\":\"009q\",\"password\":\"78d8590291ab5b46916fc9be69d410427d6249695efbf6b07a98bf38\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150820408445233705.jpg\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508146149000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"007@qq.com\",\"id\":919857736771661825,\"loginFlag\":\"Y\",\"loginName\":\"007\",\"mobile\":\"\",\"name\":\"007\",\"no\":\"007\",\"password\":\"430d9b8aa8a085d53598302ff949b919947cfe6d11555b75f335622e\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/15081461345698302.jpg\",\"remark\":\"\",\"updateDate\":1508146149000,\"updateId\":1},{\"admin\":false,\"createDate\":1508141533000,\"createId\":919837257709088770,\"delFlag\":\"Y\",\"email\":\"005@qq.com\",\"id\":919838376048947202,\"loginFlag\":\"Y\",\"loginName\":\"005\",\"mobile\":\"\",\"name\":\"005\",\"no\":\"005\",\"password\":\"9d31202fd0fd1067da48005d63ee434fbcda2695c8b5a4ef8d8479e3\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150814151366288150.png\",\"remark\":\"\",\"updateDate\":1508141533000,\"updateId\":919837257709088770},{\"admin\":false,\"createDate\":1508141267000,\"createId\":919834003923234818,\"delFlag\":\"Y\",\"email\":\"004@qq.com\",\"id\":919837257709088770,\"loginFlag\":\"Y\",\"loginName\":\"004\",\"mobile\":\"\",\"name\":\"004\",\"no\":\"004\",\"password\":\"f7aacea53f9a692eaac000294b2836ac18ae406400ed586f7be8631a\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1508141267000,\"updateId\":919834003923234818},{\"admin\":false,\"createDate\":1505475937000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"002@qq.com\",\"id\":908658055538475008,\"loginFlag\":\"Y\",\"loginName\":\"003\",\"mobile\":\"\",\"name\":\"123456\",\"no\":\"12\",\"password\":\"b0f62ba08c7fbc15a56a56efa0bf441ee4d467b50128a6544f7a779f\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1505475937000,\"updateId\":1},{\"admin\":false,\"createDate\":1505475572000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"hztest@qq.com\",\"id\":908656522709106688,\"loginFlag\":\"Y\",\"loginName\":\"test2\",\"mobile\":\"\",\"name\":\"测试2\",\"no\":\"1\",\"password\":\"7cbc0e9134b14f24820dc3d693a1b0b63799e63faaa9f37545076786\",\"phone\":\"1\",\"photo\":\"/attach/avatar/s/151073783884114535.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1490939182000,\"delFlag\":\"Y\",\"email\":\"122741483@qq.com\",\"id\":1,\"loginFlag\":\"Y\",\"loginName\":\"admin\",\"mobile\":\"13248754856\",\"name\":\"超级管理员\",\"no\":\"1\",\"password\":\"c5be5a475c0883d737da8351f7d8295b0cfd94356e8e831f953a4499\",\"phone\":\"0788-2548756\",\"photo\":\"/img/log9.png\",\"remark\":\"描述信息\",\"sysCompanyId\":1,\"updateDate\":1507812252000,\"updateId\":1}],\"searchParams\":{\"search_eq_login_name\":\"\",\"search_eq_no\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":8}', 'admin', '超级管理员', '18'); +INSERT INTO `sys_log` VALUES ('932943353789206529', '1', '1', '2017-11-21 20:06:43', '2017-11-21 20:06:43', null, 'Y', null, null, 'com.slife.controller.SysUserController.list()', '127.0.0.1', '获取用户列表数据', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"admin\":false,\"createDate\":1509959472000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"admin@qq.com\",\"id\":927463363798847489,\"loginFlag\":\"Y\",\"loginName\":\"1233333333\",\"mobile\":\"\",\"name\":\"4444444444444444\",\"no\":\"1111111111\",\"password\":\"95ef966a79b95992a30c71ce51a0aa492f9012684c598a8425d34043\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508158484000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"009@qq.com\",\"id\":919909472932597761,\"loginFlag\":\"Y\",\"loginName\":\"4421\",\"mobile\":\"\",\"name\":\"3434\",\"no\":\"009q\",\"password\":\"78d8590291ab5b46916fc9be69d410427d6249695efbf6b07a98bf38\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150820408445233705.jpg\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508146149000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"007@qq.com\",\"id\":919857736771661825,\"loginFlag\":\"Y\",\"loginName\":\"007\",\"mobile\":\"\",\"name\":\"007\",\"no\":\"007\",\"password\":\"430d9b8aa8a085d53598302ff949b919947cfe6d11555b75f335622e\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/15081461345698302.jpg\",\"remark\":\"\",\"updateDate\":1508146149000,\"updateId\":1},{\"admin\":false,\"createDate\":1508141533000,\"createId\":919837257709088770,\"delFlag\":\"Y\",\"email\":\"005@qq.com\",\"id\":919838376048947202,\"loginFlag\":\"Y\",\"loginName\":\"005\",\"mobile\":\"\",\"name\":\"005\",\"no\":\"005\",\"password\":\"9d31202fd0fd1067da48005d63ee434fbcda2695c8b5a4ef8d8479e3\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150814151366288150.png\",\"remark\":\"\",\"updateDate\":1508141533000,\"updateId\":919837257709088770},{\"admin\":false,\"createDate\":1508141267000,\"createId\":919834003923234818,\"delFlag\":\"Y\",\"email\":\"004@qq.com\",\"id\":919837257709088770,\"loginFlag\":\"Y\",\"loginName\":\"004\",\"mobile\":\"\",\"name\":\"004\",\"no\":\"004\",\"password\":\"f7aacea53f9a692eaac000294b2836ac18ae406400ed586f7be8631a\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1508141267000,\"updateId\":919834003923234818},{\"admin\":false,\"createDate\":1505475937000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"002@qq.com\",\"id\":908658055538475008,\"loginFlag\":\"Y\",\"loginName\":\"003\",\"mobile\":\"\",\"name\":\"123456\",\"no\":\"12\",\"password\":\"b0f62ba08c7fbc15a56a56efa0bf441ee4d467b50128a6544f7a779f\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1505475937000,\"updateId\":1},{\"admin\":false,\"createDate\":1505475572000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"hztest@qq.com\",\"id\":908656522709106688,\"loginFlag\":\"Y\",\"loginName\":\"test2\",\"mobile\":\"\",\"name\":\"测试2\",\"no\":\"1\",\"password\":\"7cbc0e9134b14f24820dc3d693a1b0b63799e63faaa9f37545076786\",\"phone\":\"1\",\"photo\":\"/attach/avatar/s/151073783884114535.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1490939182000,\"delFlag\":\"Y\",\"email\":\"122741483@qq.com\",\"id\":1,\"loginFlag\":\"Y\",\"loginName\":\"admin\",\"mobile\":\"13248754856\",\"name\":\"超级管理员\",\"no\":\"1\",\"password\":\"c5be5a475c0883d737da8351f7d8295b0cfd94356e8e831f953a4499\",\"phone\":\"0788-2548756\",\"photo\":\"/img/log9.png\",\"remark\":\"描述信息\",\"sysCompanyId\":1,\"updateDate\":1507812252000,\"updateId\":1}],\"searchParams\":{\"search_eq_login_name\":\"\",\"search_eq_no\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":8}', 'admin', '超级管理员', '19'); +INSERT INTO `sys_log` VALUES ('932943428175187969', '1', '1', '2017-11-21 20:07:01', '2017-11-21 20:07:01', null, 'Y', null, null, 'com.slife.controller.SysUserController.list()', '127.0.0.1', '获取用户列表数据', '{\"pageNumber\":1,\"pageSize\":10,\"rows\":[{\"admin\":false,\"createDate\":1509959472000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"admin@qq.com\",\"id\":927463363798847489,\"loginFlag\":\"Y\",\"loginName\":\"1233333333\",\"mobile\":\"\",\"name\":\"4444444444444444\",\"no\":\"1111111111\",\"password\":\"95ef966a79b95992a30c71ce51a0aa492f9012684c598a8425d34043\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508158484000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"009@qq.com\",\"id\":919909472932597761,\"loginFlag\":\"Y\",\"loginName\":\"4421\",\"mobile\":\"\",\"name\":\"3434\",\"no\":\"009q\",\"password\":\"78d8590291ab5b46916fc9be69d410427d6249695efbf6b07a98bf38\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150820408445233705.jpg\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1508146149000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"007@qq.com\",\"id\":919857736771661825,\"loginFlag\":\"Y\",\"loginName\":\"007\",\"mobile\":\"\",\"name\":\"007\",\"no\":\"007\",\"password\":\"430d9b8aa8a085d53598302ff949b919947cfe6d11555b75f335622e\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/15081461345698302.jpg\",\"remark\":\"\",\"updateDate\":1508146149000,\"updateId\":1},{\"admin\":false,\"createDate\":1508141533000,\"createId\":919837257709088770,\"delFlag\":\"Y\",\"email\":\"005@qq.com\",\"id\":919838376048947202,\"loginFlag\":\"Y\",\"loginName\":\"005\",\"mobile\":\"\",\"name\":\"005\",\"no\":\"005\",\"password\":\"9d31202fd0fd1067da48005d63ee434fbcda2695c8b5a4ef8d8479e3\",\"phone\":\"\",\"photo\":\"/attach/avatar/s/150814151366288150.png\",\"remark\":\"\",\"updateDate\":1508141533000,\"updateId\":919837257709088770},{\"admin\":false,\"createDate\":1508141267000,\"createId\":919834003923234818,\"delFlag\":\"Y\",\"email\":\"004@qq.com\",\"id\":919837257709088770,\"loginFlag\":\"Y\",\"loginName\":\"004\",\"mobile\":\"\",\"name\":\"004\",\"no\":\"004\",\"password\":\"f7aacea53f9a692eaac000294b2836ac18ae406400ed586f7be8631a\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1508141267000,\"updateId\":919834003923234818},{\"admin\":false,\"createDate\":1505475937000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"002@qq.com\",\"id\":908658055538475008,\"loginFlag\":\"Y\",\"loginName\":\"003\",\"mobile\":\"\",\"name\":\"123456\",\"no\":\"12\",\"password\":\"b0f62ba08c7fbc15a56a56efa0bf441ee4d467b50128a6544f7a779f\",\"phone\":\"\",\"photo\":\"/img/log9.png\",\"remark\":\"\",\"updateDate\":1505475937000,\"updateId\":1},{\"admin\":false,\"createDate\":1505475572000,\"createId\":1,\"delFlag\":\"Y\",\"email\":\"hztest@qq.com\",\"id\":908656522709106688,\"loginFlag\":\"Y\",\"loginName\":\"test2\",\"mobile\":\"\",\"name\":\"测试2\",\"no\":\"1\",\"password\":\"7cbc0e9134b14f24820dc3d693a1b0b63799e63faaa9f37545076786\",\"phone\":\"1\",\"photo\":\"/attach/avatar/s/151073783884114535.png\",\"remark\":\"\"},{\"admin\":false,\"createDate\":1490939182000,\"delFlag\":\"Y\",\"email\":\"122741483@qq.com\",\"id\":1,\"loginFlag\":\"Y\",\"loginName\":\"admin\",\"mobile\":\"13248754856\",\"name\":\"超级管理员\",\"no\":\"1\",\"password\":\"c5be5a475c0883d737da8351f7d8295b0cfd94356e8e831f953a4499\",\"phone\":\"0788-2548756\",\"photo\":\"/img/log9.png\",\"remark\":\"描述信息\",\"sysCompanyId\":1,\"updateDate\":1507812252000,\"updateId\":1}],\"searchParams\":{\"search_eq_login_name\":\"\",\"search_eq_no\":\"\",\"search_like_name\":\"\"},\"sorts\":{\"createDate\":\"desc\"},\"total\":8}', 'admin', '超级管理员', '14'); +INSERT INTO `sys_log` VALUES ('932945642033713153', '1', '1', '2017-11-21 20:15:49', '2017-11-21 20:15:49', null, 'Y', null, null, 'com.slife.controller.BlogContentController.delete()', '127.0.0.1', '批量删除博客', '[932945048711651330]', 'admin', '超级管理员', '131'); -- ---------------------------- -- Table structure for sys_menu @@ -4557,9 +4578,9 @@ INSERT INTO `sys_menu` VALUES ('21', null, null, null, null, null, 'Y', '20', ' INSERT INTO `sys_menu` VALUES ('22', null, null, null, null, null, 'Y', '20', '日志', 'MENU', '/monitor/log', null, 'glyphicon glyphicon-star', 'Y', 'd', '20.22', '2', null); INSERT INTO `sys_menu` VALUES ('23', null, null, null, null, null, 'Y', '20', '系统配置', 'MENU', '/monitor/conf', null, 'glyphicon glyphicon-star', 'Y', 'd', '20.23', '3', null); INSERT INTO `sys_menu` VALUES ('24', null, null, null, null, null, 'Y', '20', 'api接口', 'MENU', '/swagger-ui.html', null, 'glyphicon glyphicon-star', 'Y', 'd', '20.24', '4', null); -INSERT INTO `sys_menu` VALUES ('922649953047375874', '1', null, '2017-10-24 10:24:25', null, null, 'Y', '0', '博客', 'MENU', '/bolg', null, 'glyphicon glyphicon-comment', 'Y', 'blog', '922649953047375874.', '4', null); -INSERT INTO `sys_menu` VALUES ('922652123016687617', '1', null, '2017-10-24 10:33:03', null, null, 'Y', '922649953047375874', '博客列表', 'MENU', '/blog/content', null, 'glyphicon glyphicon-th-list', 'Y', 'blog', '922649953047375874.922652123016687617.', '1', null); -INSERT INTO `sys_menu` VALUES ('932802213060485122', '1', '1', '2017-11-21 10:45:53', '2017-11-21 10:45:53', null, 'Y', '922649953047375874', '添加博客', 'MENU', '/blog/content/detail/create', null, 'glyphicon glyphicon-plus-sign', 'Y', 'blog', '922649953047375874.932802213060485122.', '2', null); +INSERT INTO `sys_menu` VALUES ('25', '1', null, '2017-10-24 10:24:25', null, null, 'Y', '0', '博客', 'MENU', '/blog', null, 'glyphicon glyphicon-comment', 'Y', 'blog', '25.', '4', null); +INSERT INTO `sys_menu` VALUES ('26', '1', null, '2017-10-24 10:33:03', null, null, 'Y', '25', '博客列表', 'MENU', '/blog/content', null, 'glyphicon glyphicon-th-list', 'Y', 'blog', '25.26.', '1', null); +INSERT INTO `sys_menu` VALUES ('27', '1', '1', '2017-11-21 10:45:53', '2017-11-21 10:45:53', null, 'Y', '25', '添加博客', 'MENU', '/blog/content/detail/create', null, 'glyphicon glyphicon-plus-sign', 'N', 'blog', '25.27.', '2', null); -- ---------------------------- -- Table structure for sys_office @@ -4650,9 +4671,9 @@ INSERT INTO `sys_role_sys_menu` VALUES ('21', '1'); INSERT INTO `sys_role_sys_menu` VALUES ('22', '1'); INSERT INTO `sys_role_sys_menu` VALUES ('23', '1'); INSERT INTO `sys_role_sys_menu` VALUES ('24', '1'); -INSERT INTO `sys_role_sys_menu` VALUES ('922649953047375874', '1'); -INSERT INTO `sys_role_sys_menu` VALUES ('922652123016687617', '1'); -INSERT INTO `sys_role_sys_menu` VALUES ('932802213060485122', '1'); +INSERT INTO `sys_role_sys_menu` VALUES ('25', '1'); +INSERT INTO `sys_role_sys_menu` VALUES ('26', '1'); +INSERT INTO `sys_role_sys_menu` VALUES ('27', '1'); INSERT INTO `sys_role_sys_menu` VALUES ('1', '2'); INSERT INTO `sys_role_sys_menu` VALUES ('2', '2'); INSERT INTO `sys_role_sys_menu` VALUES ('3', '2'); diff --git a/dec/9.jpg b/dec/9.jpg new file mode 100644 index 0000000000000000000000000000000000000000..063189f8755d670c732a176ac691b94a96dfb470 GIT binary patch literal 184435 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 ids, ServletRequest request) { + boolean success = blogContentService.deleteBatchIds(ids); + if (success) { + return ReturnDTOUtil.success(); + } + return ReturnDTOUtil.fail(); + + } } diff --git a/slife-blog/src/main/java/com/slife/entity/BlogContent.java b/slife-blog/src/main/java/com/slife/entity/BlogContent.java index 39f1497..ce1dffb 100644 --- a/slife-blog/src/main/java/com/slife/entity/BlogContent.java +++ b/slife-blog/src/main/java/com/slife/entity/BlogContent.java @@ -3,6 +3,7 @@ package com.slife.entity; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import com.slife.base.entity.BaseEntity; +import com.slife.base.entity.DataEntity; import org.hibernate.validator.constraints.NotBlank; import java.io.Serializable; @@ -16,7 +17,7 @@ import java.io.Serializable; * Describe: 博客 */ @TableName("blog_content") -public class BlogContent extends BaseEntity { +public class BlogContent extends DataEntity { @Override diff --git a/slife-blog/src/main/resources/templates/blog/detail.ftl b/slife-blog/src/main/resources/templates/blog/detail.ftl index 7f3a518..1045d8b 100644 --- a/slife-blog/src/main/resources/templates/blog/detail.ftl +++ b/slife-blog/src/main/resources/templates/blog/detail.ftl @@ -1,30 +1,15 @@ 博客编辑 - - - + + - - - - - - - - - - - - - - + + - - + @@ -37,8 +22,8 @@

-
- + +
@@ -78,28 +63,14 @@
- -
-
- - -
-
- 返回列表 + 返回列表 + class="btn btn-primary waves-effect waves-light" type="submit">保存文章
@@ -108,12 +79,125 @@ - + + + + + diff --git a/slife-blog/src/main/resources/templates/blog/list.ftl b/slife-blog/src/main/resources/templates/blog/list.ftl index 417a864..ecb1f87 100644 --- a/slife-blog/src/main/resources/templates/blog/list.ftl +++ b/slife-blog/src/main/resources/templates/blog/list.ftl @@ -42,6 +42,12 @@ + + + + diff --git a/slife-web/src/main/java/com/slife/config/sitemesh/WebSiteMeshFilter.java b/slife-web/src/main/java/com/slife/config/sitemesh/WebSiteMeshFilter.java index 966a61c..f85e7b3 100644 --- a/slife-web/src/main/java/com/slife/config/sitemesh/WebSiteMeshFilter.java +++ b/slife-web/src/main/java/com/slife/config/sitemesh/WebSiteMeshFilter.java @@ -15,7 +15,7 @@ public class WebSiteMeshFilter extends ConfigurableSiteMeshFilter { /** 需要装饰的访问路径 */ private String contentPath="/sys/user,/sys/menu,/sys/dict,/sys/role,/sys/office,/sys/,/index,/monitor/*," + - "/blog/content,/404"; + "/blog/content**,/404"; /** 装饰器页面路径 */ diff --git a/slife-web/src/main/resources/static/css/plugins/summernote/font/summernote.woff b/slife-web/src/main/resources/static/css/plugins/summernote/font/summernote.woff new file mode 100644 index 0000000000000000000000000000000000000000..2b21d9d89435b271686872ebd03f3acaf7ad1ed0 GIT binary patch literal 10196 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 Ae*gdg literal 0 HcmV?d00001 diff --git a/slife-web/src/main/resources/static/css/plugins/summernote/summernote-0.8.8.css b/slife-web/src/main/resources/static/css/plugins/summernote/summernote-0.8.8.css new file mode 100644 index 0000000..4971a21 --- /dev/null +++ b/slife-web/src/main/resources/static/css/plugins/summernote/summernote-0.8.8.css @@ -0,0 +1 @@ +@font-face{font-family:"summernote";font-style:normal;font-weight:normal;src:url("./font/summernote.eot?0d0d5fac99cc8774d89eb08b1a8323c4");src:url("./font/summernote.eot?#iefix") format("embedded-opentype"),url("./font/summernote.woff?0d0d5fac99cc8774d89eb08b1a8323c4") format("woff"),url("./font/summernote.ttf?0d0d5fac99cc8774d89eb08b1a8323c4") format("truetype")}[class^="note-icon-"]:before,[class*=" note-icon-"]:before{display:inline-block;font:normal normal normal 14px summernote;font-size:inherit;-webkit-font-smoothing:antialiased;text-decoration:inherit;text-rendering:auto;text-transform:none;vertical-align:middle;speak:none;-moz-osx-font-smoothing:grayscale}.note-icon-align-center:before,.note-icon-align-indent:before,.note-icon-align-justify:before,.note-icon-align-left:before,.note-icon-align-outdent:before,.note-icon-align-right:before,.note-icon-align:before,.note-icon-arrow-circle-down:before,.note-icon-arrow-circle-left:before,.note-icon-arrow-circle-right:before,.note-icon-arrow-circle-up:before,.note-icon-arrows-alt:before,.note-icon-arrows-h:before,.note-icon-arrows-v:before,.note-icon-bold:before,.note-icon-caret:before,.note-icon-chain-broken:before,.note-icon-circle:before,.note-icon-close:before,.note-icon-code:before,.note-icon-col-after:before,.note-icon-col-before:before,.note-icon-col-remove:before,.note-icon-eraser:before,.note-icon-font:before,.note-icon-frame:before,.note-icon-italic:before,.note-icon-link:before,.note-icon-magic:before,.note-icon-menu-check:before,.note-icon-minus:before,.note-icon-orderedlist:before,.note-icon-pencil:before,.note-icon-picture:before,.note-icon-question:before,.note-icon-redo:before,.note-icon-row-above:before,.note-icon-row-below:before,.note-icon-row-remove:before,.note-icon-special-character:before,.note-icon-square:before,.note-icon-strikethrough:before,.note-icon-subscript:before,.note-icon-summernote:before,.note-icon-superscript:before,.note-icon-table:before,.note-icon-text-height:before,.note-icon-trash:before,.note-icon-underline:before,.note-icon-undo:before,.note-icon-unorderedlist:before,.note-icon-video:before{display:inline-block;font-family:"summernote";font-style:normal;font-weight:normal;text-decoration:inherit}.note-icon-align-center:before{content:"\f101"}.note-icon-align-indent:before{content:"\f102"}.note-icon-align-justify:before{content:"\f103"}.note-icon-align-left:before{content:"\f104"}.note-icon-align-outdent:before{content:"\f105"}.note-icon-align-right:before{content:"\f106"}.note-icon-align:before{content:"\f107"}.note-icon-arrow-circle-down:before{content:"\f108"}.note-icon-arrow-circle-left:before{content:"\f109"}.note-icon-arrow-circle-right:before{content:"\f10a"}.note-icon-arrow-circle-up:before{content:"\f10b"}.note-icon-arrows-alt:before{content:"\f10c"}.note-icon-arrows-h:before{content:"\f10d"}.note-icon-arrows-v:before{content:"\f10e"}.note-icon-bold:before{content:"\f10f"}.note-icon-caret:before{content:"\f110"}.note-icon-chain-broken:before{content:"\f111"}.note-icon-circle:before{content:"\f112"}.note-icon-close:before{content:"\f113"}.note-icon-code:before{content:"\f114"}.note-icon-col-after:before{content:"\f115"}.note-icon-col-before:before{content:"\f116"}.note-icon-col-remove:before{content:"\f117"}.note-icon-eraser:before{content:"\f118"}.note-icon-font:before{content:"\f119"}.note-icon-frame:before{content:"\f11a"}.note-icon-italic:before{content:"\f11b"}.note-icon-link:before{content:"\f11c"}.note-icon-magic:before{content:"\f11d"}.note-icon-menu-check:before{content:"\f11e"}.note-icon-minus:before{content:"\f11f"}.note-icon-orderedlist:before{content:"\f120"}.note-icon-pencil:before{content:"\f121"}.note-icon-picture:before{content:"\f122"}.note-icon-question:before{content:"\f123"}.note-icon-redo:before{content:"\f124"}.note-icon-row-above:before{content:"\f125"}.note-icon-row-below:before{content:"\f126"}.note-icon-row-remove:before{content:"\f127"}.note-icon-special-character:before{content:"\f128"}.note-icon-square:before{content:"\f129"}.note-icon-strikethrough:before{content:"\f12a"}.note-icon-subscript:before{content:"\f12b"}.note-icon-summernote:before{content:"\f12c"}.note-icon-superscript:before{content:"\f12d"}.note-icon-table:before{content:"\f12e"}.note-icon-text-height:before{content:"\f12f"}.note-icon-trash:before{content:"\f130"}.note-icon-underline:before{content:"\f131"}.note-icon-undo:before{content:"\f132"}.note-icon-unorderedlist:before{content:"\f133"}.note-icon-video:before{content:"\f134"}.note-editor{position:relative}.note-editor .note-dropzone{position:absolute;z-index:100;display:none;color:#87cefa;background-color:white;opacity:.95}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;font-size:28px;font-weight:bold;text-align:center;vertical-align:middle}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:0}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area img.note-float-left{margin-right:10px}.note-editor .note-editing-area img.note-float-right{margin-left:10px}.note-editor.note-frame{border:1px solid #a9a9a9}.note-editor.note-frame.codeview .note-editing-area .note-editable{display:none}.note-editor.note-frame.codeview .note-editing-area .note-codable{display:block}.note-editor.note-frame .note-editing-area{overflow:hidden}.note-editor.note-frame .note-editing-area .note-editable{padding:10px;overflow:auto;color:#000;background-color:#fff}.note-editor.note-frame .note-editing-area .note-editable[contenteditable="false"]{background-color:#e5e5e5}.note-editor.note-frame .note-editing-area .note-codable{display:none;width:100%;padding:10px;margin-bottom:0;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#222;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;resize:none}.note-editor.note-frame.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important}.note-editor.note-frame.fullscreen .note-editable{background-color:white}.note-editor.note-frame.fullscreen .note-resizebar{display:none}.note-editor.note-frame .note-statusbar{background-color:#f5f5f5;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.note-editor.note-frame .note-statusbar .note-resizebar{width:100%;height:8px;padding-top:1px;cursor:ns-resize}.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid #a9a9a9}.note-editor.note-frame .note-placeholder{padding:10px}.note-popover.popover{max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-popover.popover .arrow{left:20px!important}.note-popover .popover-content,.panel-heading.note-toolbar{padding:0 0 5px 5px;margin:0}.note-popover .popover-content>.btn-group,.panel-heading.note-toolbar>.btn-group{margin-top:5px;margin-right:5px;margin-left:0}.note-popover .popover-content .btn-group .note-table,.panel-heading.note-toolbar .btn-group .note-table{min-width:0;padding:5px}.note-popover .popover-content .btn-group .note-table .note-dimension-picker,.panel-heading.note-toolbar .btn-group .note-table .note-dimension-picker{font-size:18px}.note-popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.panel-heading.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute!important;z-index:3;width:10em;height:10em;cursor:pointer}.note-popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.panel-heading.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative!important;z-index:1;width:5em;height:5em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat}.note-popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.panel-heading.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{position:absolute!important;z-index:2;width:1em;height:1em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat}.note-popover .popover-content .note-style h1,.panel-heading.note-toolbar .note-style h1,.note-popover .popover-content .note-style h2,.panel-heading.note-toolbar .note-style h2,.note-popover .popover-content .note-style h3,.panel-heading.note-toolbar .note-style h3,.note-popover .popover-content .note-style h4,.panel-heading.note-toolbar .note-style h4,.note-popover .popover-content .note-style h5,.panel-heading.note-toolbar .note-style h5,.note-popover .popover-content .note-style h6,.panel-heading.note-toolbar .note-style h6,.note-popover .popover-content .note-style blockquote,.panel-heading.note-toolbar .note-style blockquote{margin:0}.note-popover .popover-content .note-color .dropdown-toggle,.panel-heading.note-toolbar .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-popover .popover-content .note-color .dropdown-menu,.panel-heading.note-toolbar .note-color .dropdown-menu{min-width:337px}.note-popover .popover-content .note-color .dropdown-menu .note-palette,.panel-heading.note-toolbar .note-color .dropdown-menu .note-palette{display:inline-block;width:160px;margin:0}.note-popover .popover-content .note-color .dropdown-menu .note-palette:first-child,.panel-heading.note-toolbar .note-color .dropdown-menu .note-palette:first-child{margin:0 5px}.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-palette-title,.panel-heading.note-toolbar .note-color .dropdown-menu .note-palette .note-palette-title{margin:2px 7px;font-size:12px;text-align:center;border-bottom:1px solid #eee}.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-color-reset,.panel-heading.note-toolbar .note-color .dropdown-menu .note-palette .note-color-reset{width:100%;padding:0 3px;margin:3px;font-size:11px;cursor:pointer;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-color-row,.panel-heading.note-toolbar .note-color .dropdown-menu .note-palette .note-color-row{height:20px}.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-color-reset:hover,.panel-heading.note-toolbar .note-color .dropdown-menu .note-palette .note-color-reset:hover{background:#eee}.note-popover .popover-content .note-para .dropdown-menu,.panel-heading.note-toolbar .note-para .dropdown-menu{min-width:216px;padding:5px}.note-popover .popover-content .note-para .dropdown-menu>div:first-child,.panel-heading.note-toolbar .note-para .dropdown-menu>div:first-child{margin-right:5px}.note-popover .popover-content .dropdown-menu,.panel-heading.note-toolbar .dropdown-menu{min-width:90px}.note-popover .popover-content .dropdown-menu.right,.panel-heading.note-toolbar .dropdown-menu.right{right:0;left:auto}.note-popover .popover-content .dropdown-menu.right::before,.panel-heading.note-toolbar .dropdown-menu.right::before{right:9px;left:auto!important}.note-popover .popover-content .dropdown-menu.right::after,.panel-heading.note-toolbar .dropdown-menu.right::after{right:10px;left:auto!important}.note-popover .popover-content .dropdown-menu.note-check li a i,.panel-heading.note-toolbar .dropdown-menu.note-check li a i{color:deepskyblue;visibility:hidden}.note-popover .popover-content .dropdown-menu.note-check li a.checked i,.panel-heading.note-toolbar .dropdown-menu.note-check li a.checked i{visibility:visible}.note-popover .popover-content .note-fontsize-10,.panel-heading.note-toolbar .note-fontsize-10{font-size:10px}.note-popover .popover-content .note-color-palette,.panel-heading.note-toolbar .note-color-palette{line-height:1}.note-popover .popover-content .note-color-palette div .note-color-btn,.panel-heading.note-toolbar .note-color-palette div .note-color-btn{width:20px;height:20px;padding:0;margin:0;border:1px solid #fff}.note-popover .popover-content .note-color-palette div .note-color-btn:hover,.panel-heading.note-toolbar .note-color-palette div .note-color-btn:hover{border:1px solid #000}.note-dialog>div{display:none}.note-dialog .form-group{margin-right:0;margin-left:0}.note-dialog .note-modal-form{margin:0}.note-dialog .note-image-dialog .note-dropzone{min-height:100px;margin-bottom:10px;font-size:30px;line-height:4;color:lightgray;text-align:center;border:4px dashed lightgray}@-moz-document url-prefix(){.note-image-input{height:auto}}.note-placeholder{position:absolute;display:none;color:gray}.note-handle .note-control-selection{position:absolute;display:none;border:1px solid black}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:black;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;-ms-filter:alpha(opacity=30);filter:alpha(opacity=30)}.note-handle .note-control-selection .note-control-handle{width:7px;height:7px;border:1px solid black}.note-handle .note-control-selection .note-control-holder{width:7px;height:7px;border:1px solid black}.note-handle .note-control-selection .note-control-sizing{width:7px;height:7px;background-color:white;border:1px solid black}.note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:0;border-bottom:0}.note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:0;border-left:none}.note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:0;border-right:0}.note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-handle .note-control-selection .note-control-se.note-control-holder{cursor:default;border-top:0;border-left:none}.note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;font-size:12px;color:white;background-color:black;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;-ms-filter:alpha(opacity=70);filter:alpha(opacity=70)}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{max-height:150px;padding:3px;overflow:auto}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block!important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{display:block;clear:both;font-weight:400;line-height:1.4;color:white;text-decoration:none;white-space:nowrap;cursor:pointer;background-color:#428bca;outline:0} \ No newline at end of file diff --git a/slife-web/src/main/resources/static/js/plugins/summernote/summernote-zh-CN.min.js b/slife-web/src/main/resources/static/js/plugins/summernote/summernote-zh-CN.min.js new file mode 100644 index 0000000..d2fd03d --- /dev/null +++ b/slife-web/src/main/resources/static/js/plugins/summernote/summernote-zh-CN.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.8 | (c) 2013- Alan Hong and other contributors | MIT license */ + +!function(a){a.extend(a.summernote.lang,{"zh-CN":{font:{bold:"粗体",italic:"斜体",underline:"下划线",clear:"清除格式",height:"行高",name:"字体",strikethrough:"删除线",subscript:"下标",superscript:"上标",size:"字号"},image:{image:"图片",insert:"插入图片",resizeFull:"缩放至 100%",resizeHalf:"缩放至 50%",resizeQuarter:"缩放至 25%",floatLeft:"靠左浮动",floatRight:"靠右浮动",floatNone:"取消浮动",shapeRounded:"形状: 圆角",shapeCircle:"形状: 圆",shapeThumbnail:"形状: 缩略图",shapeNone:"形状: 无",dragImageHere:"将图片拖拽至此处",selectFromFiles:"从本地上传",maximumFileSize:"文件大小最大值",maximumFileSizeError:"文件大小超出最大值。",url:"图片地址",remove:"移除图片"},video:{video:"视频",videoLink:"视频链接",insert:"插入视频",url:"视频地址",providers:"(优酷, 腾讯, Instagram, DailyMotion, Youtube等)"},link:{link:"链接",insert:"插入链接",unlink:"去除链接",edit:"编辑链接",textToDisplay:"显示文本",url:"链接地址",openInNewWindow:"在新窗口打开"},table:{table:"表格"},hr:{insert:"水平线"},style:{style:"样式",p:"普通",blockquote:"引用",pre:"代码",h1:"标题 1",h2:"标题 2",h3:"标题 3",h4:"标题 4",h5:"标题 5",h6:"标题 6"},lists:{unordered:"无序列表",ordered:"有序列表"},options:{help:"帮助",fullscreen:"全屏",codeview:"源代码"},paragraph:{paragraph:"段落",outdent:"减少缩进",indent:"增加缩进",left:"左对齐",center:"居中对齐",right:"右对齐",justify:"两端对齐"},color:{recent:"最近使用",more:"更多",background:"背景",foreground:"前景",transparent:"透明",setTransparent:"透明",reset:"重置",resetToDefault:"默认"},shortcut:{shortcuts:"快捷键",close:"关闭",textFormatting:"文本格式",action:"动作",paragraphFormatting:"段落格式",documentStyle:"文档样式",extraKeys:"额外按键"},history:{undo:"撤销",redo:"重做"},help:{insertParagraph:"插入段落",undo:"撤销",redo:"重做",tab:"增加缩进",untab:"减少缩进",bold:"粗体",italic:"斜体",underline:"下划线",strikethrough:"删除线",removeFormat:"清除格式",justifyLeft:"左对齐",justifyCenter:"居中对齐",justifyRight:"右对齐",justifyFull:"两端对齐",insertUnorderedList:"无序列表",insertOrderedList:"有序列表",outdent:"减少缩进",indent:"增加缩进",formatPara:"设置选中内容样式为 普通",formatH1:"设置选中内容样式为 标题1",formatH2:"设置选中内容样式为 标题2",formatH3:"设置选中内容样式为 标题3",formatH4:"设置选中内容样式为 标题4",formatH5:"设置选中内容样式为 标题5",formatH6:"设置选中内容样式为 标题6",insertHorizontalRule:"插入水平线","linkDialog.show":"显示链接对话框"}}})}(jQuery); \ No newline at end of file diff --git a/slife-web/src/main/resources/static/js/plugins/summernote/summernote.js b/slife-web/src/main/resources/static/js/plugins/summernote/summernote.js new file mode 100644 index 0000000..c815e9c --- /dev/null +++ b/slife-web/src/main/resources/static/js/plugins/summernote/summernote.js @@ -0,0 +1,7987 @@ +/** + * Super simple wysiwyg editor v0.8.8 + * http://summernote.org/ + * + * summernote.js + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license./ + * + * Date: 2017-09-09T11:03Z + */ +(function (factory) { + /* global define */ + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof module === 'object' && module.exports) { + // Node/CommonJS + module.exports = factory(require('jquery')); + } else { + // Browser globals + factory(window.jQuery); + } +}(function ($) { + 'use strict'; + + var isSupportAmd = typeof define === 'function' && define.amd; + + /** + * returns whether font is installed or not. + * + * @param {String} fontName + * @return {Boolean} + */ + var isFontInstalled = function (fontName) { + var testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS'; + var $tester = $('
').css({ + position: 'absolute', + left: '-9999px', + top: '-9999px', + fontSize: '200px' + }).text('mmmmmmmmmwwwwwww').appendTo(document.body); + + var originalWidth = $tester.css('fontFamily', testFontName).width(); + var width = $tester.css('fontFamily', fontName + ',' + testFontName).width(); + + $tester.remove(); + + return originalWidth !== width; + }; + + var userAgent = navigator.userAgent; + var isMSIE = /MSIE|Trident/i.test(userAgent); + var browserVersion; + if (isMSIE) { + var matches = /MSIE (\d+[.]\d+)/.exec(userAgent); + if (matches) { + browserVersion = parseFloat(matches[1]); + } + matches = /Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(userAgent); + if (matches) { + browserVersion = parseFloat(matches[1]); + } + } + + var isEdge = /Edge\/\d+/.test(userAgent); + + var hasCodeMirror = !!window.CodeMirror; + if (!hasCodeMirror && isSupportAmd) { + // Webpack + if (typeof __webpack_require__ === 'function') { // jshint ignore:line + try { + // If CodeMirror can't be resolved, `require.resolve` will throw an + // exception and `hasCodeMirror` won't be set to `true`. + require.resolve('codemirror'); + hasCodeMirror = true; + } catch (e) { + // do nothing + } + } else if (typeof require !== 'undefined') { + // Browserify + if (typeof require.resolve !== 'undefined') { + try { + // If CodeMirror can't be resolved, `require.resolve` will throw an + // exception and `hasCodeMirror` won't be set to `true`. + require.resolve('codemirror'); + hasCodeMirror = true; + } catch (e) { + // do nothing + } + // Almond/Require + } else if (typeof require.specified !== 'undefined') { + hasCodeMirror = require.specified('codemirror'); + } + } + } + + var isSupportTouch = + (('ontouchstart' in window) || + (navigator.MaxTouchPoints > 0) || + (navigator.msMaxTouchPoints > 0)); + + /** + * @class core.agent + * + * Object which check platform and agent + * + * @singleton + * @alternateClassName agent + */ + var agent = { + isMac: navigator.appVersion.indexOf('Mac') > -1, + isMSIE: isMSIE, + isEdge: isEdge, + isFF: !isEdge && /firefox/i.test(userAgent), + isPhantom: /PhantomJS/i.test(userAgent), + isWebkit: !isEdge && /webkit/i.test(userAgent), + isChrome: !isEdge && /chrome/i.test(userAgent), + isSafari: !isEdge && /safari/i.test(userAgent), + browserVersion: browserVersion, + jqueryVersion: parseFloat($.fn.jquery), + isSupportAmd: isSupportAmd, + isSupportTouch: isSupportTouch, + hasCodeMirror: hasCodeMirror, + isFontInstalled: isFontInstalled, + isW3CRangeSupport: !!document.createRange + }; + + /** + * @class core.func + * + * func utils (for high-order func's arg) + * + * @singleton + * @alternateClassName func + */ + var func = (function () { + var eq = function (itemA) { + return function (itemB) { + return itemA === itemB; + }; + }; + + var eq2 = function (itemA, itemB) { + return itemA === itemB; + }; + + var peq2 = function (propName) { + return function (itemA, itemB) { + return itemA[propName] === itemB[propName]; + }; + }; + + var ok = function () { + return true; + }; + + var fail = function () { + return false; + }; + + var not = function (f) { + return function () { + return !f.apply(f, arguments); + }; + }; + + var and = function (fA, fB) { + return function (item) { + return fA(item) && fB(item); + }; + }; + + var self = function (a) { + return a; + }; + + var invoke = function (obj, method) { + return function () { + return obj[method].apply(obj, arguments); + }; + }; + + var idCounter = 0; + + /** + * generate a globally-unique id + * + * @param {String} [prefix] + */ + var uniqueId = function (prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + /** + * returns bnd (bounds) from rect + * + * - IE Compatibility Issue: http://goo.gl/sRLOAo + * - Scroll Issue: http://goo.gl/sNjUc + * + * @param {Rect} rect + * @return {Object} bounds + * @return {Number} bounds.top + * @return {Number} bounds.left + * @return {Number} bounds.width + * @return {Number} bounds.height + */ + var rect2bnd = function (rect) { + var $document = $(document); + return { + top: rect.top + $document.scrollTop(), + left: rect.left + $document.scrollLeft(), + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; + }; + + /** + * returns a copy of the object where the keys have become the values and the values the keys. + * @param {Object} obj + * @return {Object} + */ + var invertObject = function (obj) { + var inverted = {}; + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + inverted[obj[key]] = key; + } + } + return inverted; + }; + + /** + * @param {String} namespace + * @param {String} [prefix] + * @return {String} + */ + var namespaceToCamel = function (namespace, prefix) { + prefix = prefix || ''; + return prefix + namespace.split('.').map(function (name) { + return name.substring(0, 1).toUpperCase() + name.substring(1); + }).join(''); + }; + + /** + * Returns a function, that, as long as it continues to be invoked, will not + * be triggered. The function will be called after it stops being called for + * N milliseconds. If `immediate` is passed, trigger the function on the + * leading edge, instead of the trailing. + * @param {Function} func + * @param {Number} wait + * @param {Boolean} immediate + * @return {Function} + */ + var debounce = function (func, wait, immediate) { + var timeout; + return function () { + var context = this, args = arguments; + var later = function () { + timeout = null; + if (!immediate) { + func.apply(context, args); + } + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + func.apply(context, args); + } + }; + }; + + return { + eq: eq, + eq2: eq2, + peq2: peq2, + ok: ok, + fail: fail, + self: self, + not: not, + and: and, + invoke: invoke, + uniqueId: uniqueId, + rect2bnd: rect2bnd, + invertObject: invertObject, + namespaceToCamel: namespaceToCamel, + debounce: debounce + }; + })(); + + /** + * @class core.list + * + * list utils + * + * @singleton + * @alternateClassName list + */ + var list = (function () { + /** + * returns the first item of an array. + * + * @param {Array} array + */ + var head = function (array) { + return array[0]; + }; + + /** + * returns the last item of an array. + * + * @param {Array} array + */ + var last = function (array) { + return array[array.length - 1]; + }; + + /** + * returns everything but the last entry of the array. + * + * @param {Array} array + */ + var initial = function (array) { + return array.slice(0, array.length - 1); + }; + + /** + * returns the rest of the items in an array. + * + * @param {Array} array + */ + var tail = function (array) { + return array.slice(1); + }; + + /** + * returns item of array + */ + var find = function (array, pred) { + for (var idx = 0, len = array.length; idx < len; idx ++) { + var item = array[idx]; + if (pred(item)) { + return item; + } + } + }; + + /** + * returns true if all of the values in the array pass the predicate truth test. + */ + var all = function (array, pred) { + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (!pred(array[idx])) { + return false; + } + } + return true; + }; + + /** + * returns index of item + */ + var indexOf = function (array, item) { + return $.inArray(item, array); + }; + + /** + * returns true if the value is present in the list. + */ + var contains = function (array, item) { + return indexOf(array, item) !== -1; + }; + + /** + * get sum from a list + * + * @param {Array} array - array + * @param {Function} fn - iterator + */ + var sum = function (array, fn) { + fn = fn || func.self; + return array.reduce(function (memo, v) { + return memo + fn(v); + }, 0); + }; + + /** + * returns a copy of the collection with array type. + * @param {Collection} collection - collection eg) node.childNodes, ... + */ + var from = function (collection) { + var result = [], idx = -1, length = collection.length; + while (++idx < length) { + result[idx] = collection[idx]; + } + return result; + }; + + /** + * returns whether list is empty or not + */ + var isEmpty = function (array) { + return !array || !array.length; + }; + + /** + * cluster elements by predicate function. + * + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + * @param {Array[]} + */ + var clusterBy = function (array, fn) { + if (!array.length) { return []; } + var aTail = tail(array); + return aTail.reduce(function (memo, v) { + var aLast = last(memo); + if (fn(last(aLast), v)) { + aLast[aLast.length] = v; + } else { + memo[memo.length] = [v]; + } + return memo; + }, [[head(array)]]); + }; + + /** + * returns a copy of the array with all false values removed + * + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + */ + var compact = function (array) { + var aResult = []; + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (array[idx]) { aResult.push(array[idx]); } + } + return aResult; + }; + + /** + * produces a duplicate-free version of the array + * + * @param {Array} array + */ + var unique = function (array) { + var results = []; + + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (!contains(results, array[idx])) { + results.push(array[idx]); + } + } + + return results; + }; + + /** + * returns next item. + * @param {Array} array + */ + var next = function (array, item) { + var idx = indexOf(array, item); + if (idx === -1) { return null; } + + return array[idx + 1]; + }; + + /** + * returns prev item. + * @param {Array} array + */ + var prev = function (array, item) { + var idx = indexOf(array, item); + if (idx === -1) { return null; } + + return array[idx - 1]; + }; + + return { head: head, last: last, initial: initial, tail: tail, + prev: prev, next: next, find: find, contains: contains, + all: all, sum: sum, from: from, isEmpty: isEmpty, + clusterBy: clusterBy, compact: compact, unique: unique }; + })(); + + + var NBSP_CHAR = String.fromCharCode(160); + var ZERO_WIDTH_NBSP_CHAR = '\ufeff'; + + /** + * @class core.dom + * + * Dom functions + * + * @singleton + * @alternateClassName dom + */ + var dom = (function () { + /** + * @method isEditable + * + * returns whether node is `note-editable` or not. + * + * @param {Node} node + * @return {Boolean} + */ + var isEditable = function (node) { + return node && $(node).hasClass('note-editable'); + }; + + /** + * @method isControlSizing + * + * returns whether node is `note-control-sizing` or not. + * + * @param {Node} node + * @return {Boolean} + */ + var isControlSizing = function (node) { + return node && $(node).hasClass('note-control-sizing'); + }; + + /** + * @method makePredByNodeName + * + * returns predicate which judge whether nodeName is same + * + * @param {String} nodeName + * @return {Function} + */ + var makePredByNodeName = function (nodeName) { + nodeName = nodeName.toUpperCase(); + return function (node) { + return node && node.nodeName.toUpperCase() === nodeName; + }; + }; + + /** + * @method isText + * + * + * + * @param {Node} node + * @return {Boolean} true if node's type is text(3) + */ + var isText = function (node) { + return node && node.nodeType === 3; + }; + + /** + * @method isElement + * + * + * + * @param {Node} node + * @return {Boolean} true if node's type is element(1) + */ + var isElement = function (node) { + return node && node.nodeType === 1; + }; + + /** + * ex) br, col, embed, hr, img, input, ... + * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements + */ + var isVoid = function (node) { + return node && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT/.test(node.nodeName.toUpperCase()); + }; + + var isPara = function (node) { + if (isEditable(node)) { + return false; + } + + // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph + return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase()); + }; + + var isHeading = function (node) { + return node && /^H[1-7]/.test(node.nodeName.toUpperCase()); + }; + + var isPre = makePredByNodeName('PRE'); + + var isLi = makePredByNodeName('LI'); + + var isPurePara = function (node) { + return isPara(node) && !isLi(node); + }; + + var isTable = makePredByNodeName('TABLE'); + + var isData = makePredByNodeName('DATA'); + + var isInline = function (node) { + return !isBodyContainer(node) && + !isList(node) && + !isHr(node) && + !isPara(node) && + !isTable(node) && + !isBlockquote(node) && + !isData(node); + }; + + var isList = function (node) { + return node && /^UL|^OL/.test(node.nodeName.toUpperCase()); + }; + + var isHr = makePredByNodeName('HR'); + + var isCell = function (node) { + return node && /^TD|^TH/.test(node.nodeName.toUpperCase()); + }; + + var isBlockquote = makePredByNodeName('BLOCKQUOTE'); + + var isBodyContainer = function (node) { + return isCell(node) || isBlockquote(node) || isEditable(node); + }; + + var isAnchor = makePredByNodeName('A'); + + var isParaInline = function (node) { + return isInline(node) && !!ancestor(node, isPara); + }; + + var isBodyInline = function (node) { + return isInline(node) && !ancestor(node, isPara); + }; + + var isBody = makePredByNodeName('BODY'); + + /** + * returns whether nodeB is closest sibling of nodeA + * + * @param {Node} nodeA + * @param {Node} nodeB + * @return {Boolean} + */ + var isClosestSibling = function (nodeA, nodeB) { + return nodeA.nextSibling === nodeB || + nodeA.previousSibling === nodeB; + }; + + /** + * returns array of closest siblings with node + * + * @param {Node} node + * @param {function} [pred] - predicate function + * @return {Node[]} + */ + var withClosestSiblings = function (node, pred) { + pred = pred || func.ok; + + var siblings = []; + if (node.previousSibling && pred(node.previousSibling)) { + siblings.push(node.previousSibling); + } + siblings.push(node); + if (node.nextSibling && pred(node.nextSibling)) { + siblings.push(node.nextSibling); + } + return siblings; + }; + + /** + * blank HTML for cursor position + * - [workaround] old IE only works with   + * - [workaround] IE11 and other browser works with bogus br + */ + var blankHTML = agent.isMSIE && agent.browserVersion < 11 ? ' ' : '
'; + + /** + * @method nodeLength + * + * returns #text's text size or element's childNodes size + * + * @param {Node} node + */ + var nodeLength = function (node) { + if (isText(node)) { + return node.nodeValue.length; + } + + if (node) { + return node.childNodes.length; + } + + return 0; + + }; + + /** + * returns whether node is empty or not. + * + * @param {Node} node + * @return {Boolean} + */ + var isEmpty = function (node) { + var len = nodeLength(node); + + if (len === 0) { + return true; + } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) { + // ex)


,
+ return true; + } else if (list.all(node.childNodes, isText) && node.innerHTML === '') { + // ex)

, + return true; + } + + return false; + }; + + /** + * padding blankHTML if node is empty (for cursor position) + */ + var paddingBlankHTML = function (node) { + if (!isVoid(node) && !nodeLength(node)) { + node.innerHTML = blankHTML; + } + }; + + /** + * find nearest ancestor predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + var ancestor = function (node, pred) { + while (node) { + if (pred(node)) { return node; } + if (isEditable(node)) { break; } + + node = node.parentNode; + } + return null; + }; + + /** + * find nearest ancestor only single child blood line and predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + var singleChildAncestor = function (node, pred) { + node = node.parentNode; + + while (node) { + if (nodeLength(node) !== 1) { break; } + if (pred(node)) { return node; } + if (isEditable(node)) { break; } + + node = node.parentNode; + } + return null; + }; + + /** + * returns new array of ancestor nodes (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + var listAncestor = function (node, pred) { + pred = pred || func.fail; + + var ancestors = []; + ancestor(node, function (el) { + if (!isEditable(el)) { + ancestors.push(el); + } + + return pred(el); + }); + return ancestors; + }; + + /** + * find farthest ancestor predicate hit + */ + var lastAncestor = function (node, pred) { + var ancestors = listAncestor(node); + return list.last(ancestors.filter(pred)); + }; + + /** + * returns common ancestor node between two nodes. + * + * @param {Node} nodeA + * @param {Node} nodeB + */ + var commonAncestor = function (nodeA, nodeB) { + var ancestors = listAncestor(nodeA); + for (var n = nodeB; n; n = n.parentNode) { + if ($.inArray(n, ancestors) > -1) { return n; } + } + return null; // difference document area + }; + + /** + * listing all previous siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + var listPrev = function (node, pred) { + pred = pred || func.fail; + + var nodes = []; + while (node) { + if (pred(node)) { break; } + nodes.push(node); + node = node.previousSibling; + } + return nodes; + }; + + /** + * listing next siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + var listNext = function (node, pred) { + pred = pred || func.fail; + + var nodes = []; + while (node) { + if (pred(node)) { break; } + nodes.push(node); + node = node.nextSibling; + } + return nodes; + }; + + /** + * listing descendant nodes + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + var listDescendant = function (node, pred) { + var descendants = []; + pred = pred || func.ok; + + // start DFS(depth first search) with node + (function fnWalk(current) { + if (node !== current && pred(current)) { + descendants.push(current); + } + for (var idx = 0, len = current.childNodes.length; idx < len; idx++) { + fnWalk(current.childNodes[idx]); + } + })(node); + + return descendants; + }; + + /** + * wrap node with new tag. + * + * @param {Node} node + * @param {Node} tagName of wrapper + * @return {Node} - wrapper + */ + var wrap = function (node, wrapperName) { + var parent = node.parentNode; + var wrapper = $('<' + wrapperName + '>')[0]; + + parent.insertBefore(wrapper, node); + wrapper.appendChild(node); + + return wrapper; + }; + + /** + * insert node after preceding + * + * @param {Node} node + * @param {Node} preceding - predicate function + */ + var insertAfter = function (node, preceding) { + var next = preceding.nextSibling, parent = preceding.parentNode; + if (next) { + parent.insertBefore(node, next); + } else { + parent.appendChild(node); + } + return node; + }; + + /** + * append elements. + * + * @param {Node} node + * @param {Collection} aChild + */ + var appendChildNodes = function (node, aChild) { + $.each(aChild, function (idx, child) { + node.appendChild(child); + }); + return node; + }; + + /** + * returns whether boundaryPoint is left edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isLeftEdgePoint = function (point) { + return point.offset === 0; + }; + + /** + * returns whether boundaryPoint is right edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isRightEdgePoint = function (point) { + return point.offset === nodeLength(point.node); + }; + + /** + * returns whether boundaryPoint is edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isEdgePoint = function (point) { + return isLeftEdgePoint(point) || isRightEdgePoint(point); + }; + + /** + * returns whether node is left edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + var isLeftEdgeOf = function (node, ancestor) { + while (node && node !== ancestor) { + if (position(node) !== 0) { + return false; + } + node = node.parentNode; + } + + return true; + }; + + /** + * returns whether node is right edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + var isRightEdgeOf = function (node, ancestor) { + if (!ancestor) { + return false; + } + while (node && node !== ancestor) { + if (position(node) !== nodeLength(node.parentNode) - 1) { + return false; + } + node = node.parentNode; + } + + return true; + }; + + /** + * returns whether point is left edge of ancestor or not. + * @param {BoundaryPoint} point + * @param {Node} ancestor + * @return {Boolean} + */ + var isLeftEdgePointOf = function (point, ancestor) { + return isLeftEdgePoint(point) && isLeftEdgeOf(point.node, ancestor); + }; + + /** + * returns whether point is right edge of ancestor or not. + * @param {BoundaryPoint} point + * @param {Node} ancestor + * @return {Boolean} + */ + var isRightEdgePointOf = function (point, ancestor) { + return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor); + }; + + /** + * returns offset from parent. + * + * @param {Node} node + */ + var position = function (node) { + var offset = 0; + while ((node = node.previousSibling)) { + offset += 1; + } + return offset; + }; + + var hasChildren = function (node) { + return !!(node && node.childNodes && node.childNodes.length); + }; + + /** + * returns previous boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + var prevPoint = function (point, isSkipInnerOffset) { + var node, offset; + + if (point.offset === 0) { + if (isEditable(point.node)) { + return null; + } + + node = point.node.parentNode; + offset = position(point.node); + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset - 1]; + offset = nodeLength(node); + } else { + node = point.node; + offset = isSkipInnerOffset ? 0 : point.offset - 1; + } + + return { + node: node, + offset: offset + }; + }; + + /** + * returns next boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + var nextPoint = function (point, isSkipInnerOffset) { + var node, offset; + + if (nodeLength(point.node) === point.offset) { + if (isEditable(point.node)) { + return null; + } + + node = point.node.parentNode; + offset = position(point.node) + 1; + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset]; + offset = 0; + } else { + node = point.node; + offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1; + } + + return { + node: node, + offset: offset + }; + }; + + /** + * returns whether pointA and pointB is same or not. + * + * @param {BoundaryPoint} pointA + * @param {BoundaryPoint} pointB + * @return {Boolean} + */ + var isSamePoint = function (pointA, pointB) { + return pointA.node === pointB.node && pointA.offset === pointB.offset; + }; + + /** + * returns whether point is visible (can set cursor) or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isVisiblePoint = function (point) { + if (isText(point.node) || !hasChildren(point.node) || isEmpty(point.node)) { + return true; + } + + var leftNode = point.node.childNodes[point.offset - 1]; + var rightNode = point.node.childNodes[point.offset]; + if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) { + return true; + } + + return false; + }; + + /** + * @method prevPointUtil + * + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + var prevPointUntil = function (point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = prevPoint(point); + } + + return null; + }; + + /** + * @method nextPointUntil + * + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + var nextPointUntil = function (point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = nextPoint(point); + } + + return null; + }; + + /** + * returns whether point has character or not. + * + * @param {Point} point + * @return {Boolean} + */ + var isCharPoint = function (point) { + if (!isText(point.node)) { + return false; + } + + var ch = point.node.nodeValue.charAt(point.offset - 1); + return ch && (ch !== ' ' && ch !== NBSP_CHAR); + }; + + /** + * @method walkPoint + * + * @param {BoundaryPoint} startPoint + * @param {BoundaryPoint} endPoint + * @param {Function} handler + * @param {Boolean} isSkipInnerOffset + */ + var walkPoint = function (startPoint, endPoint, handler, isSkipInnerOffset) { + var point = startPoint; + + while (point) { + handler(point); + + if (isSamePoint(point, endPoint)) { + break; + } + + var isSkipOffset = isSkipInnerOffset && + startPoint.node !== point.node && + endPoint.node !== point.node; + point = nextPoint(point, isSkipOffset); + } + }; + + /** + * @method makeOffsetPath + * + * return offsetPath(array of offset) from ancestor + * + * @param {Node} ancestor - ancestor node + * @param {Node} node + */ + var makeOffsetPath = function (ancestor, node) { + var ancestors = listAncestor(node, func.eq(ancestor)); + return ancestors.map(position).reverse(); + }; + + /** + * @method fromOffsetPath + * + * return element from offsetPath(array of offset) + * + * @param {Node} ancestor - ancestor node + * @param {array} offsets - offsetPath + */ + var fromOffsetPath = function (ancestor, offsets) { + var current = ancestor; + for (var i = 0, len = offsets.length; i < len; i++) { + if (current.childNodes.length <= offsets[i]) { + current = current.childNodes[current.childNodes.length - 1]; + } else { + current = current.childNodes[offsets[i]]; + } + } + return current; + }; + + /** + * @method splitNode + * + * split element or #text + * + * @param {BoundaryPoint} point + * @param {Object} [options] + * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false + * @param {Boolean} [options.isNotSplitEdgePoint] - default: false + * @return {Node} right node of boundaryPoint + */ + var splitNode = function (point, options) { + var isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML; + var isNotSplitEdgePoint = options && options.isNotSplitEdgePoint; + + // edge case + if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) { + if (isLeftEdgePoint(point)) { + return point.node; + } else if (isRightEdgePoint(point)) { + return point.node.nextSibling; + } + } + + // split #text + if (isText(point.node)) { + return point.node.splitText(point.offset); + } else { + var childNode = point.node.childNodes[point.offset]; + var clone = insertAfter(point.node.cloneNode(false), point.node); + appendChildNodes(clone, listNext(childNode)); + + if (!isSkipPaddingBlankHTML) { + paddingBlankHTML(point.node); + paddingBlankHTML(clone); + } + + return clone; + } + }; + + /** + * @method splitTree + * + * split tree by point + * + * @param {Node} root - split root + * @param {BoundaryPoint} point + * @param {Object} [options] + * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false + * @param {Boolean} [options.isNotSplitEdgePoint] - default: false + * @return {Node} right node of boundaryPoint + */ + var splitTree = function (root, point, options) { + // ex) [#text, ,

] + var ancestors = listAncestor(point.node, func.eq(root)); + + if (!ancestors.length) { + return null; + } else if (ancestors.length === 1) { + return splitNode(point, options); + } + + return ancestors.reduce(function (node, parent) { + if (node === point.node) { + node = splitNode(point, options); + } + + return splitNode({ + node: parent, + offset: node ? dom.position(node) : nodeLength(parent) + }, options); + }); + }; + + /** + * split point + * + * @param {Point} point + * @param {Boolean} isInline + * @return {Object} + */ + var splitPoint = function (point, isInline) { + // find splitRoot, container + // - inline: splitRoot is a child of paragraph + // - block: splitRoot is a child of bodyContainer + var pred = isInline ? isPara : isBodyContainer; + var ancestors = listAncestor(point.node, pred); + var topAncestor = list.last(ancestors) || point.node; + + var splitRoot, container; + if (pred(topAncestor)) { + splitRoot = ancestors[ancestors.length - 2]; + container = topAncestor; + } else { + splitRoot = topAncestor; + container = splitRoot.parentNode; + } + + // if splitRoot is exists, split with splitTree + var pivot = splitRoot && splitTree(splitRoot, point, { + isSkipPaddingBlankHTML: isInline, + isNotSplitEdgePoint: isInline + }); + + // if container is point.node, find pivot with point.offset + if (!pivot && container === point.node) { + pivot = point.node.childNodes[point.offset]; + } + + return { + rightNode: pivot, + container: container + }; + }; + + var create = function (nodeName) { + return document.createElement(nodeName); + }; + + var createText = function (text) { + return document.createTextNode(text); + }; + + /** + * @method remove + * + * remove node, (isRemoveChild: remove child or not) + * + * @param {Node} node + * @param {Boolean} isRemoveChild + */ + var remove = function (node, isRemoveChild) { + if (!node || !node.parentNode) { return; } + if (node.removeNode) { return node.removeNode(isRemoveChild); } + + var parent = node.parentNode; + if (!isRemoveChild) { + var nodes = []; + var i, len; + for (i = 0, len = node.childNodes.length; i < len; i++) { + nodes.push(node.childNodes[i]); + } + + for (i = 0, len = nodes.length; i < len; i++) { + parent.insertBefore(nodes[i], node); + } + } + + parent.removeChild(node); + }; + + /** + * @method removeWhile + * + * @param {Node} node + * @param {Function} pred + */ + var removeWhile = function (node, pred) { + while (node) { + if (isEditable(node) || !pred(node)) { + break; + } + + var parent = node.parentNode; + remove(node); + node = parent; + } + }; + + /** + * @method replace + * + * replace node with provided nodeName + * + * @param {Node} node + * @param {String} nodeName + * @return {Node} - new node + */ + var replace = function (node, nodeName) { + if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) { + return node; + } + + var newNode = create(nodeName); + + if (node.style.cssText) { + newNode.style.cssText = node.style.cssText; + } + + appendChildNodes(newNode, list.from(node.childNodes)); + insertAfter(newNode, node); + remove(node); + + return newNode; + }; + + var isTextarea = makePredByNodeName('TEXTAREA'); + + /** + * @param {jQuery} $node + * @param {Boolean} [stripLinebreaks] - default: false + */ + var value = function ($node, stripLinebreaks) { + var val = isTextarea($node[0]) ? $node.val() : $node.html(); + if (stripLinebreaks) { + return val.replace(/[\n\r]/g, ''); + } + return val; + }; + + /** + * @method html + * + * get the HTML contents of node + * + * @param {jQuery} $node + * @param {Boolean} [isNewlineOnBlock] + */ + var html = function ($node, isNewlineOnBlock) { + var markup = value($node); + + if (isNewlineOnBlock) { + var regexTag = /<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g; + markup = markup.replace(regexTag, function (match, endSlash, name) { + name = name.toUpperCase(); + var isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) && + !!endSlash; + var isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name); + + return match + ((isEndOfInlineContainer || isBlockNode) ? '\n' : ''); + }); + markup = $.trim(markup); + } + + return markup; + }; + + var posFromPlaceholder = function (placeholder) { + var $placeholder = $(placeholder); + var pos = $placeholder.offset(); + var height = $placeholder.outerHeight(true); // include margin + + return { + left: pos.left, + top: pos.top + height + }; + }; + + var attachEvents = function ($node, events) { + Object.keys(events).forEach(function (key) { + $node.on(key, events[key]); + }); + }; + + var detachEvents = function ($node, events) { + Object.keys(events).forEach(function (key) { + $node.off(key, events[key]); + }); + }; + + /** + * @method isCustomStyleTag + * + * assert if a node contains a "note-styletag" class, + * which implies that's a custom-made style tag node + * + * @param {Node} an HTML DOM node + */ + var isCustomStyleTag = function (node) { + return node && !dom.isText(node) && list.contains(node.classList, 'note-styletag'); + }; + + return { + /** @property {String} NBSP_CHAR */ + NBSP_CHAR: NBSP_CHAR, + /** @property {String} ZERO_WIDTH_NBSP_CHAR */ + ZERO_WIDTH_NBSP_CHAR: ZERO_WIDTH_NBSP_CHAR, + /** @property {String} blank */ + blank: blankHTML, + /** @property {String} emptyPara */ + emptyPara: '

' + blankHTML + '

', + makePredByNodeName: makePredByNodeName, + isEditable: isEditable, + isControlSizing: isControlSizing, + isText: isText, + isElement: isElement, + isVoid: isVoid, + isPara: isPara, + isPurePara: isPurePara, + isHeading: isHeading, + isInline: isInline, + isBlock: func.not(isInline), + isBodyInline: isBodyInline, + isBody: isBody, + isParaInline: isParaInline, + isPre: isPre, + isList: isList, + isTable: isTable, + isData: isData, + isCell: isCell, + isBlockquote: isBlockquote, + isBodyContainer: isBodyContainer, + isAnchor: isAnchor, + isDiv: makePredByNodeName('DIV'), + isLi: isLi, + isBR: makePredByNodeName('BR'), + isSpan: makePredByNodeName('SPAN'), + isB: makePredByNodeName('B'), + isU: makePredByNodeName('U'), + isS: makePredByNodeName('S'), + isI: makePredByNodeName('I'), + isImg: makePredByNodeName('IMG'), + isTextarea: isTextarea, + isEmpty: isEmpty, + isEmptyAnchor: func.and(isAnchor, isEmpty), + isClosestSibling: isClosestSibling, + withClosestSiblings: withClosestSiblings, + nodeLength: nodeLength, + isLeftEdgePoint: isLeftEdgePoint, + isRightEdgePoint: isRightEdgePoint, + isEdgePoint: isEdgePoint, + isLeftEdgeOf: isLeftEdgeOf, + isRightEdgeOf: isRightEdgeOf, + isLeftEdgePointOf: isLeftEdgePointOf, + isRightEdgePointOf: isRightEdgePointOf, + prevPoint: prevPoint, + nextPoint: nextPoint, + isSamePoint: isSamePoint, + isVisiblePoint: isVisiblePoint, + prevPointUntil: prevPointUntil, + nextPointUntil: nextPointUntil, + isCharPoint: isCharPoint, + walkPoint: walkPoint, + ancestor: ancestor, + singleChildAncestor: singleChildAncestor, + listAncestor: listAncestor, + lastAncestor: lastAncestor, + listNext: listNext, + listPrev: listPrev, + listDescendant: listDescendant, + commonAncestor: commonAncestor, + wrap: wrap, + insertAfter: insertAfter, + appendChildNodes: appendChildNodes, + position: position, + hasChildren: hasChildren, + makeOffsetPath: makeOffsetPath, + fromOffsetPath: fromOffsetPath, + splitTree: splitTree, + splitPoint: splitPoint, + create: create, + createText: createText, + remove: remove, + removeWhile: removeWhile, + replace: replace, + html: html, + value: value, + posFromPlaceholder: posFromPlaceholder, + attachEvents: attachEvents, + detachEvents: detachEvents, + isCustomStyleTag: isCustomStyleTag + }; + })(); + + /** + * @param {jQuery} $note + * @param {Object} options + * @return {Context} + */ + var Context = function ($note, options) { + var self = this; + + var ui = $.summernote.ui; + this.memos = {}; + this.modules = {}; + this.layoutInfo = {}; + this.options = options; + + /** + * create layout and initialize modules and other resources + */ + this.initialize = function () { + this.layoutInfo = ui.createLayout($note, options); + this._initialize(); + $note.hide(); + return this; + }; + + /** + * destroy modules and other resources and remove layout + */ + this.destroy = function () { + this._destroy(); + $note.removeData('summernote'); + ui.removeLayout($note, this.layoutInfo); + }; + + /** + * destory modules and other resources and initialize it again + */ + this.reset = function () { + var disabled = self.isDisabled(); + this.code(dom.emptyPara); + this._destroy(); + this._initialize(); + + if (disabled) { + self.disable(); + } + }; + + this._initialize = function () { + // add optional buttons + var buttons = $.extend({}, this.options.buttons); + Object.keys(buttons).forEach(function (key) { + self.memo('button.' + key, buttons[key]); + }); + + var modules = $.extend({}, this.options.modules, $.summernote.plugins || {}); + + // add and initialize modules + Object.keys(modules).forEach(function (key) { + self.module(key, modules[key], true); + }); + + Object.keys(this.modules).forEach(function (key) { + self.initializeModule(key); + }); + }; + + this._destroy = function () { + // destroy modules with reversed order + Object.keys(this.modules).reverse().forEach(function (key) { + self.removeModule(key); + }); + + Object.keys(this.memos).forEach(function (key) { + self.removeMemo(key); + }); + // trigger custom onDestroy callback + this.triggerEvent('destroy', this); + }; + + this.code = function (html) { + var isActivated = this.invoke('codeview.isActivated'); + + if (html === undefined) { + this.invoke('codeview.sync'); + return isActivated ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html(); + } else { + if (isActivated) { + this.layoutInfo.codable.val(html); + } else { + this.layoutInfo.editable.html(html); + } + $note.val(html); + this.triggerEvent('change', html); + } + }; + + this.isDisabled = function () { + return this.layoutInfo.editable.attr('contenteditable') === 'false'; + }; + + this.enable = function () { + this.layoutInfo.editable.attr('contenteditable', true); + this.invoke('toolbar.activate', true); + this.triggerEvent('disable', false); + }; + + this.disable = function () { + // close codeview if codeview is opend + if (this.invoke('codeview.isActivated')) { + this.invoke('codeview.deactivate'); + } + this.layoutInfo.editable.attr('contenteditable', false); + this.invoke('toolbar.deactivate', true); + + this.triggerEvent('disable', true); + }; + + this.triggerEvent = function () { + var namespace = list.head(arguments); + var args = list.tail(list.from(arguments)); + + var callback = this.options.callbacks[func.namespaceToCamel(namespace, 'on')]; + if (callback) { + callback.apply($note[0], args); + } + $note.trigger('summernote.' + namespace, args); + }; + + this.initializeModule = function (key) { + var module = this.modules[key]; + module.shouldInitialize = module.shouldInitialize || func.ok; + if (!module.shouldInitialize()) { + return; + } + + // initialize module + if (module.initialize) { + module.initialize(); + } + + // attach events + if (module.events) { + dom.attachEvents($note, module.events); + } + }; + + this.module = function (key, ModuleClass, withoutIntialize) { + if (arguments.length === 1) { + return this.modules[key]; + } + + this.modules[key] = new ModuleClass(this); + + if (!withoutIntialize) { + this.initializeModule(key); + } + }; + + this.removeModule = function (key) { + var module = this.modules[key]; + if (module.shouldInitialize()) { + if (module.events) { + dom.detachEvents($note, module.events); + } + + if (module.destroy) { + module.destroy(); + } + } + + delete this.modules[key]; + }; + + this.memo = function (key, obj) { + if (arguments.length === 1) { + return this.memos[key]; + } + this.memos[key] = obj; + }; + + this.removeMemo = function (key) { + if (this.memos[key] && this.memos[key].destroy) { + this.memos[key].destroy(); + } + + delete this.memos[key]; + }; + + /** + *Some buttons need to change their visual style immediately once they get pressed + */ + this.createInvokeHandlerAndUpdateState = function (namespace, value) { + return function (event) { + self.createInvokeHandler(namespace, value)(event); + self.invoke('buttons.updateCurrentStyle'); + }; + }; + + this.createInvokeHandler = function (namespace, value) { + return function (event) { + event.preventDefault(); + var $target = $(event.target); + self.invoke(namespace, value || $target.closest('[data-value]').data('value'), $target); + }; + }; + + this.invoke = function () { + var namespace = list.head(arguments); + var args = list.tail(list.from(arguments)); + + var splits = namespace.split('.'); + var hasSeparator = splits.length > 1; + var moduleName = hasSeparator && list.head(splits); + var methodName = hasSeparator ? list.last(splits) : list.head(splits); + + var module = this.modules[moduleName || 'editor']; + if (!moduleName && this[methodName]) { + return this[methodName].apply(this, args); + } else if (module && module[methodName] && module.shouldInitialize()) { + return module[methodName].apply(module, args); + } + }; + + return this.initialize(); + }; + + $.fn.extend({ + /** + * Summernote API + * + * @param {Object|String} + * @return {this} + */ + summernote: function () { + var type = $.type(list.head(arguments)); + var isExternalAPICalled = type === 'string'; + var hasInitOptions = type === 'object'; + + var options = hasInitOptions ? list.head(arguments) : {}; + + options = $.extend({}, $.summernote.options, options); + + // Update options + options.langInfo = $.extend(true, {}, $.summernote.lang['en-US'], $.summernote.lang[options.lang]); + options.icons = $.extend(true, {}, $.summernote.options.icons, options.icons); + options.tooltip = options.tooltip === 'auto' ? !agent.isSupportTouch : options.tooltip; + + this.each(function (idx, note) { + var $note = $(note); + if (!$note.data('summernote')) { + var context = new Context($note, options); + $note.data('summernote', context); + $note.data('summernote').triggerEvent('init', context.layoutInfo); + } + }); + + var $note = this.first(); + if ($note.length) { + var context = $note.data('summernote'); + if (isExternalAPICalled) { + return context.invoke.apply(context, list.from(arguments)); + } else if (options.focus) { + context.invoke('editor.focus'); + } + } + + return this; + } + }); + + + var Renderer = function (markup, children, options, callback) { + this.render = function ($parent) { + var $node = $(markup); + + if (options && options.contents) { + $node.html(options.contents); + } + + if (options && options.className) { + $node.addClass(options.className); + } + + if (options && options.data) { + $.each(options.data, function (k, v) { + $node.attr('data-' + k, v); + }); + } + + if (options && options.click) { + $node.on('click', options.click); + } + + if (children) { + var $container = $node.find('.note-children-container'); + children.forEach(function (child) { + child.render($container.length ? $container : $node); + }); + } + + if (callback) { + callback($node, options); + } + + if (options && options.callback) { + options.callback($node); + } + + if ($parent) { + $parent.append($node); + } + + return $node; + }; + }; + + var renderer = { + create: function (markup, callback) { + return function () { + var children = $.isArray(arguments[0]) ? arguments[0] : []; + var options = typeof arguments[1] === 'object' ? arguments[1] : arguments[0]; + if (options && options.children) { + children = options.children; + } + return new Renderer(markup, children, options, callback); + }; + } + }; + + var editor = renderer.create('
'); + var toolbar = renderer.create('
'); + var editingArea = renderer.create('
'); + var codable = renderer.create('