From eaa3dd47482c78b89da44b0f32d19d07dbb1ec65 Mon Sep 17 00:00:00 2001 From: mingsoft Date: Tue, 28 Dec 2021 22:15:26 +0800 Subject: [PATCH] =?UTF-8?q?5.2.5=E7=89=88=E6=9C=AC=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/5.2.3-up-5.2.4.sql | 8 - doc/{mcms-5.2.4.sql => mcms-5.2.5.sql} | 193 +------------------------ 2 files changed, 8 insertions(+), 193 deletions(-) delete mode 100644 doc/5.2.3-up-5.2.4.sql rename doc/{mcms-5.2.4.sql => mcms-5.2.5.sql} (91%) diff --git a/doc/5.2.3-up-5.2.4.sql b/doc/5.2.3-up-5.2.4.sql deleted file mode 100644 index 2ee7a4b4..00000000 --- a/doc/5.2.3-up-5.2.4.sql +++ /dev/null @@ -1,8 +0,0 @@ -UPDATE `mdiy_tag` SET `tag_name` = 'arclist', `tag_type` = 'list', `tag_sql` = ' <#assign _typeid=\'\'/>\n<#assign _typetitle=\'\'/>\n<#assign _size=\'20\'/>\n\n<#if column?? && column.id?? && column.id?number gt 0>\n <#assign _typeid=\'${column.id}\'>\n\n\n<#if typeid??>\n <#assign _typeid=\'${typeid}\'>\n\n\n<#if typetitle??>\n <#assign _typetitle=\'${typetitle}\'>\n\n\n<#if size??>\n <#assign _size=\'${size}\'>\n\n\n<#if orderby?? >\n <#if orderby==\'date\'>\n <#assign _orderby=\'content_datetime\'>\n <#elseif orderby==\'updatedate\'>\n <#assign _orderby=\'content_updatetime\'>\n <#elseif orderby==\'hit\'>\n <#assign _orderby=\'content_hit\'>\n <#elseif orderby==\'sort\'>\n <#assign _orderby=\'content_sort\'>\n <#else>\n <#assign _orderby=\'cms_content.id\'>\n \n<#else>\n <#assign _orderby=\'cms_content.id\'>\n\n\nSELECT\n cms_content.id AS id,\n content_title AS title,\n content_title AS fulltitle,\n content_author AS author,\n content_source AS source,\n content_details AS content,\n category.category_title AS typetitle,\n category.id AS typeid,\ncategory.category_path AS typepath,\n category.category_img AS typelitpic,\n category.category_keyword as typekeyword,\n category.top_id as topId,\n category.category_parent_ids as parentids,\n category.category_type AS \"type\",\n\n <#--列表页动态链接-->\n <#if isDo?? && isDo>\n CONCAT(\'/${modelName}/list.do?typeid=\', category.category_id) as typelink,\n <#else>\n (SELECT \'index.html\') AS typelink,\n \n content_description AS descrip,\n content_hit AS hit,\n content_type AS flag,\n cms_content.content_keyword AS keyword,\n content_img AS litpic,\n \n <#--内容页动态链接-->\n <#if isDo?? && isDo>\n CONCAT(\'/${modelName}/view.do?id=\', cms_content.id,\'&orderby=${_orderby}\',\'&order=${order!\'ASC\'}\',\'&typeid=${typeid}\') as \"link\",\n <#else>\n CONCAT(category.category_path,\'/\',if(category_type=2,\"index\",cms_content.id),\'.html\') AS \"link\",\n \n\n <#if tableName??>${tableName}.*,\n content_datetime AS \"date\"\nFROM\n cms_content LEFT JOIN cms_category as category\n ON cms_content.category_id = category.id\n\n <#--判断是否有自定义模型表-->\n <#if tableName??>\n LEFT JOIN ${tableName} ON ${tableName}.link_id=cms_content.id\n \n WHERE \n content_display=0\n and cms_content.del=0\n <#--根据站点编号查询-->\n <#if appId?? >\n and cms_content.app_id=${appId}\n and cms_content.id>0\n \n <#--判断是否有搜索分类集合-->\n <#if search?? && _typeid==\"\">\n <#if search.categoryIds?has_content>and FIND_IN_SET(category.id,\'${search.categoryIds}\')\n <#--标题-->\n <#if search.content_title??> and content_title like CONCAT(\'%\',\'${search.content_title}\',\'%\')\n <#--作者-->\n <#if search.content_author??> and content_author like CONCAT(\'%\',\'${search.content_author}\',\'%\')\n <#--来源-->\n <#if search.content_source??> and content_source like CONCAT(\'%\',\'${search.content_source}\',\'%\')\n <#--属性-->\n <#if search.content_type??> and (\n <#list search.content_type?split(\',\') as item>\n <#if item?index gt 0> or\n FIND_IN_SET(\'${item}\',cms_content.content_type)\n )\n \n\n <#--描述-->\n <#if search.content_description??>\n and content_description like CONCAT(\'%\',\'${search.content_description}\',\'%\')\n \n\n <#--关键字-->\n <#if search.content_keyword??> and content_keyword like CONCAT(\'%\',\'${search.content_keyword}\',\'%\')\n\n <#--内容-->\n <#if search.content_details??> and content_details like CONCAT(\'%\',\'${search.content_details}\',\'%\')\n\n <#--自定义顺序-->\n <#if search.content_sort??> and content_sort=${search.content_sort}\n <#--时间范围-->\n <#if search.content_datetime_start??&&search.content_datetime_end??>\n and content_datetime between \'${search.content_datetime_start}\' and \'${search.content_datetime_end}\'\n \n <#else>\n <#--查询栏目-->\n <#if _typeid?has_content> \n and (cms_content.category_id=${_typeid} or cms_content.category_id in (select id FROM cms_category where cms_category.del=0 \n <#if _typetitle?has_content>\n and cms_category.category_title=\'${_typetitle}\' and FIND_IN_SET(${_typeid},CATEGORY_PARENT_IDS))) \n \n \n <#--标题-->\n <#if content_title??> and content_title like CONCAT(\'%\',\'${content_title}\',\'%\')\n <#--作者-->\n <#if content_author??> and content_author like CONCAT(\'%\',\'${content_author}\',\'%\')\n <#--来源-->\n <#if content_source??> and content_source like CONCAT(\'%\',\'${content_source}\',\'%\')\n <#--属性-->\n <#if content_type??> and content_type like CONCAT(\'%\',\'${content_type}\',\'%\')\n <#--描述-->\n <#if content_description??> and content_description like CONCAT(\'%\',\'${content_description}\',\'%\')\n <#--关键字-->\n <#if content_keyword??> and content_keyword like CONCAT(\'%\',\'${content_keyword}\',\'%\')\n <#--内容-->\n <#if content_details??> and content_details like CONCAT(\'%\',\'${content_details}\',\'%\')\n <#--自定义顺序-->\n <#if content_sort??> and content_sort=${content_sort}\n <#--自定义模型-->\n <#if diyModel??>\n <#list diyModel as dm>\n and ${tableName}.${dm.key} like CONCAT(\'%\',\'${dm.value}\',\'%\') \n \n \n <#--文章属性-->\n <#if flag?? >\n and(\n <#list flag?split(\',\') as item>\n <#if item?index gt 0> or\n FIND_IN_SET(\'${item}\',cms_content.content_type)\n )\n \n <#if noflag??>\n and(\n <#list noflag?split(\',\') as item>\n <#if item?index gt 0> and\n FIND_IN_SET(\'${item}\',cms_content.content_type)=0\n or cms_content.content_type is null)\n \n\n <#--字段排序-->\n <#if orderby?? >\n ORDER BY\n <#if orderby==\'date\'> content_datetime\n <#elseif orderby==\'updatedate\'> content_updatetime\n <#elseif orderby==\'hit\'> content_hit\n <#elseif orderby==\'sort\'> content_sort\n <#else>\n cms_content.id\n \n <#else>\n ORDER BY cms_content.id\n \n\n <#if order?? >\n <#if order==\'desc\'> desc\n <#if order==\'asc\'> asc\n <#else>\n desc\n \n LIMIT \n <#--判断是否分页-->\n <#if ispaging?? && (pageTag.pageNo)??>\n ${((pageTag.pageNo-1)*_size?eval)?c},${_size?default(20)}\n <#else>\n ${_size?default(20)}\n ', `tag_class` = NULL, `tag_description` = '文章列表', `UPDATE_BY` = NULL, `UPDATE_DATE` = NULL, `CREATE_BY` = NULL, `CREATE_DATE` = NULL, `DEL` = 0 WHERE `id` = 3; -UPDATE `mdiy_tag` SET `tag_name` = 'channel', `tag_type` = 'list', `tag_sql` = '<#assign _typeid=\'0\'/>\n<#if column?? && column.id?? && column.id?number gt 0>\n <#assign _typeid=\'${column.id}\'>\n <#assign selfid=\'${column.id}\'>\n\n\n<#if typeid??>\n <#assign _typeid=\'${typeid}\'>\n\n\nselect\n id,\n id as typeid,\n category_title as typetitle,\n <#--动态链接-->\n <#if isDo?? && isDo>\n CONCAT(\'/${modelName}/list.do?typeid=\', id) as typelink,\n <#else>\n <#--栏目类型为链接-->\n CONCAT(category_path,\'/index.html\') as typelink,\n \n category_keyword as typekeyword,\n category_diy_url as typeurl,\n category_flag as flag,\n category_parent_ids as parentids,\n category_descrip as typedescrip,\n category_type as type,\n category_path as typepath,\n leaf as typeleaf,\n category_img as typelitpic ,\n ( SELECT count(*) FROM cms_category cc WHERE cc.category_id = cms_category.id AND cc.del = 0 ) AS childsize \n from cms_category\n where\n cms_category.del=0\n <#--根据站点编号查询-->\n <#if appId?? >\n and cms_category.app_id=${appId}\n \n\n <#--栏目属性-->\n <#if flag?? >\n and\n (<#list flag?split(\',\') as item>\n <#if item?index gt 0> or\n FIND_IN_SET(\'${item}\',category_flag)\n )\n \n\n <#if noflag?? >\n and\n (<#list noflag?split(\',\') as item>\n <#if item?index gt 0> and\n FIND_IN_SET(\'${item}\',category_flag)=0\n or category_flag is null)\n \n\n <#--type默认son-->\n <#if !type??||!type?has_content>\n <#assign type=\'son\'/>\n \n\n <#if type?has_content>\n <#--顶级栏目(单个)-->\n <#if type==\'top\'>\n <#if _typeid != \'0\'>\n and (id = top_id or top_id = 0)\n \n\n <#elseif type==\'nav\'>\n and(category_id=0 or category_id is null)\n\n <#--同级栏目(多个)-->\n <#elseif type==\'level\'>\n and\n <#if _typeid != \'0\'>\n category_id=(select category_id from cms_category where id=${_typeid})\n <#else>\n 1=1\n \n\n <#--当前栏目(单个)-->\n <#elseif type==\'self\'>\n and\n <#if _typeid != \'0\'>\n id=${_typeid}\n <#else>\n 1=1\n \n\n <#--当前栏目的所属栏目(多个)-->\n <#elseif type==\'path\'>\n and\n <#if _typeid != \'0\'>\n id in (<#if column?? && column.categoryParentIds??>${column.categoryParentIds},${_typeid})\n <#else>\n 1=1\n \n <#--子栏目(多个)-->\n\n <#elseif type==\'son\'>\n and\n <#if _typeid != \'0\'>\n category_id=${_typeid}\n <#else>\n 1=1\n \n\n <#--上一级栏目没有则取当前栏目(单个)-->\n <#elseif type==\'parent\'>\n and\n <#if _typeid != \'0\'>\n <#if column?? && column.categoryId??>\n id=${column.categoryId}\n <#else>\n id=${_typeid}\n \n <#else>\n 1=1\n \n \n\n<#else> <#--默认顶级栏目-->\n and\n <#if _typeid != \'0\'>\n id=${_typeid}\n <#else>\n (category_id=0 or category_id is null)\n \n\n\n\n<#--字段排序-->\n<#if orderby?? >\n ORDER BY\n <#if orderby==\'date\'> category_datetime\n <#elseif orderby==\'sort\'> category_sort\n <#else>id\n\n\n<#if order?? >\n <#if order==\'desc\'> desc\n <#if order==\'asc\'> asc\n', `tag_class` = NULL, `tag_description` = '通用栏目', `UPDATE_BY` = NULL, `UPDATE_DATE` = NULL, `CREATE_BY` = NULL, `CREATE_DATE` = NULL, `DEL` = 0 WHERE `id` = 4; -UPDATE `mdiy_tag` SET `tag_name` = 'global', `tag_type` = 'single', `tag_sql` = 'select\nAPP_NAME as name,\napp_logo as logo,\napp_keyword as keyword,\napp_description as descrip,\napp_copyright as copyright,\n<#--动态解析 -->\n<#if isDo?? && isDo>\nCONCAT(\'${url}\',\'${html}/\',app_dir) as url,\n\'${url}\' as host,\n<#--使用地址栏的域名 -->\n<#elseif url??>\nCONCAT(\'${url}\',\'${html}/\',app_dir) as url,\n\'${url}\' as host,\n<#else>\nCONCAT(REPLACE(REPLACE(TRIM(substring_index(app_url,\'\\n\',1)), CHAR(10),\'\'), CHAR(13),\'\'),\'/html/\',app_dir) as url,\nREPLACE(REPLACE(TRIM(substring_index(app_url,\'\\n\',1)), CHAR(10),\'\'), CHAR(13),\'\') as host,\n\nCONCAT(\'template/\',id,\'/\',app_style) as \"style\" <#-- 判断是否为手机端 -->\nfrom app\n<#--根据站点编号查询-->\n<#if appId?? >\n where id = ${appId}\n', `tag_class` = NULL, `tag_description` = '全局', `UPDATE_BY` = NULL, `UPDATE_DATE` = NULL, `CREATE_BY` = NULL, `CREATE_DATE` = NULL, `DEL` = 0 WHERE `id` = 5; -UPDATE `mdiy_tag` SET `tag_name` = 'field', `tag_type` = 'single', `tag_sql` = 'SELECT\ncms_content.id as id,\ncontent_title as title,\ncontent_author as author, \ncontent_source as source, \ncontent_details as content,\ncms_category.id as typeid,\ncms_category.leaf as typeleaf,\ncms_category.category_title as typetitle,\ncms_category.category_img AS typelitpic,\ncms_category.top_id as topId,\ncms_category.category_flag as typeflag,\ncms_category.category_parent_ids as parentids,\ncms_category.category_keyword as typekeyword,\ncms_category.category_descrip as typedescrip,\ncms_category.category_diy_url as typeurl,\n<#--动态链接-->\n<#if isDo?? && isDo>\nCONCAT(\'/${modelName}/list.do?typeid=\', cms_category.id) as typelink,\n<#else>\n <#--栏目类型为链接-->\n CONCAT(cms_category.category_path,\'/index.html\') as typelink,\n\ncms_content.content_img AS litpic,\n<#--内容页动态链接-->\n<#if isDo?? && isDo>\nCONCAT(\'/mcms/view.do?id=\', cms_content.id) as \"link\",\n<#else>\nCONCAT(cms_category.category_path,\'/\',cms_content.id,\'.html\') AS \"link\",\n\ncontent_datetime as \"date\",\ncontent_description as descrip,\nCONCAT(\'\') as hit,\ncontent_type as flag,\ncategory_title as typetitle,\n<#if tableName??>${tableName}.*,\ncontent_keyword as keyword\nFROM cms_content\nLEFT JOIN cms_category ON\ncms_category.id = cms_content.category_id\n<#--判断是否有自定义模型表-->\n<#if tableName??>left join ${tableName} on ${tableName}.link_id=cms_content.id\nWHERE\n<#--如果是栏目列表页没有文章id所以只取栏目id-->\n<#if column??&&column.id??&&!id??>\ncms_category.id=${column.id} and\n\n cms_content.del=0\n<#if id??> and cms_content.id=${id}', `tag_class` = NULL, `tag_description` = '文章内容', `UPDATE_BY` = NULL, `UPDATE_DATE` = NULL, `CREATE_BY` = NULL, `CREATE_DATE` = NULL, `DEL` = 0 WHERE `id` = 7; -UPDATE `mdiy_tag` SET `tag_name` = 'pre', `tag_type` = 'single', `tag_sql` = '<#assign select=\"(SELECT \'\')\"/>\n<#if orderby?? >\n <#if orderby==\"date\">\n <#assign _orderby=\"content_datetime\">\n <#elseif orderby==\"updatedate\">\n <#assign _orderby=\"content_updatetime\">\n <#elseif orderby==\"hit\">\n <#assign _orderby=\"content_hit\">\n <#elseif orderby==\"sort\">\n <#assign _orderby=\"content_sort\">\n <#else><#assign _orderby=\"cms_content.id\">\n <#else>\n <#assign _orderby=\"cms_content.id\">\n \n<#if pageTag.preId??>\nSELECT\ncms_content.id as id,\ncontent_title as title,\ncontent_author as author, \ncontent_source as source, \ncontent_details as content,\ncategory.category_title as typename,\ncategory.category_id as typeid,\n(SELECT \'index.html\') as typelink,\ncontent_img as litpic,\n<#--内容页动态链接-->\n <#if isDo?? && isDo>\n CONCAT(\'/${modelName}/view.do?id=\', cms_content.id,\'&orderby=${_orderby}\',\'&order=${order!\'ASC\'}\',\'&typeid=${typeid}\') as \"link\",\n <#else>\n CONCAT(category_path,\'/\',cms_content.id,\'.html\') AS \"link\",\n \ncontent_datetime as \"date\",\ncontent_description as descrip,\ncontent_hit as hit,\ncontent_type as flag,\ncontent_keyword as keyword \nFROM cms_content\nLEFT JOIN cms_category as category ON cms_content.category_id=category.id\nWHERE cms_content.id=${pageTag.preId}\n<#else>\nSELECT\n${select} as id,\n${select} as title,\n${select} as fulltitle,\n${select} as author, \n${select} as source, \n${select} as content,\n${select} as typename,\n${select} as typeid,\n${select} as typelink,\n${select} as litpic,\n${select} as \"link\",\n${select} as \"date\",\n${select} as descrip,\n${select} as hit,\n${select} as flag,\n${select} as keyword\n', `tag_class` = NULL, `tag_description` = '文章上一篇', `UPDATE_BY` = NULL, `UPDATE_DATE` = NULL, `CREATE_BY` = NULL, `CREATE_DATE` = NULL, `DEL` = 0 WHERE `id` = 8; -UPDATE `mdiy_tag` SET `tag_name` = 'page', `tag_type` = 'single', `tag_sql` = 'select\n<#if !(pageTag.indexUrl??)>\n <#--判断是否有栏目对象,用于搜索不传栏目-->\n <#if column??>\n <#assign path=column.categoryPath/>\n <#else>\n <#assign path=\"\"/>\n \n <#--总记录数、总页数-->\n (SELECT ${pageTag.total}) as \"total\",\n (SELECT ${pageTag.size}) as \"size\",\n\n <#--记录总数-->\n (SELECT ${pageTag.rcount}) as \"rcount\",\n <#--当前页码-->\n (SELECT ${pageTag.pageNo}) as \"cur\",\n <#--首页-->\n CONCAT(\'${path}\', \'/index.html\') as \"index\",\n <#--上一页-->\n <#if (pageTag.pageNo?eval-1) gt 1>\n CONCAT(\'${path}\',\'/list-${pageTag.pageNo?eval-1}.html\') as \"pre\",\n <#else>\n CONCAT(\'${path}\',\'/index.html\') as \"pre\",\n \n\n <#--下一页-->\n <#if pageTag.total==1>\n CONCAT(\'${path}\', \'/index.html\') as \"next\",\n CONCAT(\'${path}\', \'/index.html\') as \"last\"\n <#else>\n <#if pageTag.pageNo?eval gte pageTag.total>\n CONCAT(\'${path}\',\'/list-${pageTag.total}.html\') as \"next\",\n <#else>\n CONCAT(\'${path}\',\'/list-${pageTag.pageNo?eval+1}.html\') as \"next\",\n \n <#--最后一页-->\n CONCAT(\'${path}\',\'/list-${pageTag.total}.html\') as \"last\"\n \n\n<#else>\n <#--判断是否是搜索页面-->\n \'${pageTag.indexUrl}\' as \"index\",\n \'${pageTag.lastUrl}\' as \"last\",\n \'${pageTag.preUrl}\' as \"pre\",\n \'${pageTag.nextUrl}\' as \"next\",\n (select ${pageTag.total}) as \"total\",\n (select ${pageTag.size}) as \"size\",\n (select ${pageTag.rcount}) as \"rcount\",\n (select ${pageTag.pageNo}) as \"cur\"\n', `tag_class` = NULL, `tag_description` = '通用分页', `UPDATE_BY` = NULL, `UPDATE_DATE` = NULL, `CREATE_BY` = NULL, `CREATE_DATE` = NULL, `DEL` = 0 WHERE `id` = 9; -UPDATE `mdiy_tag` SET `tag_name` = 'next', `tag_type` = 'single', `tag_sql` = '<#assign select=\"(SELECT \'\')\"/>\n<#if orderby?? >\n <#if orderby==\"date\">\n <#assign _orderby=\"content_datetime\">\n <#elseif orderby==\"updatedate\">\n <#assign _orderby=\"content_updatetime\">\n <#elseif orderby==\"hit\">\n <#assign _orderby=\"content_hit\">\n <#elseif orderby==\"sort\">\n <#assign _orderby=\"content_sort\">\n <#else><#assign _orderby=\"cms_content.id\">\n <#else>\n <#assign _orderby=\"cms_content.id\">\n \n<#if pageTag.nextId??>\nSELECT\ncms_content.id as id,\ncontent_title as title,\ncontent_author as author, \ncontent_source as source, \ncontent_details as content,\ncategory.category_title as typename,\ncategory.category_id as typeid,\n(SELECT \'index.html\') as typelink,\ncontent_img as litpic,\n<#--内容页动态链接-->\n <#if isDo?? && isDo>\n CONCAT(\'/${modelName}/view.do?id=\', cms_content.id,\'&orderby=${_orderby}\',\'&order=${order!\'ASC\'}\',\'&typeid=${typeid}\') as \"link\",\n <#else>\n CONCAT(category_path,\'/\',cms_content.id,\'.html\') AS \"link\",\n \ncontent_datetime as \"date\",\ncontent_description as descrip,\ncontent_hit as hit,\ncontent_type as flag,\ncontent_keyword as keyword \nFROM cms_content\nLEFT JOIN cms_category as category ON cms_content.category_id=category.id\nWHERE cms_content.id=${pageTag.nextId}\n<#else>\nSELECT\n${select} as id,\n${select} as title,\n${select} as fulltitle,\n${select} as author, \n${select} as source, \n${select} as content,\n${select} as typename,\n${select} as typeid,\n${select} as typelink,\n${select} as litpic,\n${select} as \"link\",\n${select} as \"date\",\n${select} as descrip,\n${select} as hit,\n${select} as flag,\n${select} as keyword \n', `tag_class` = NULL, `tag_description` = '文章下一篇', `UPDATE_BY` = NULL, `UPDATE_DATE` = NULL, `CREATE_BY` = NULL, `CREATE_DATE` = NULL, `DEL` = 0 WHERE `id` = 10; - diff --git a/doc/mcms-5.2.4.sql b/doc/mcms-5.2.5.sql similarity index 91% rename from doc/mcms-5.2.4.sql rename to doc/mcms-5.2.5.sql index 684f11c8..fa2ea141 100644 --- a/doc/mcms-5.2.4.sql +++ b/doc/mcms-5.2.5.sql @@ -1,3 +1,4 @@ + SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; @@ -142,7 +143,7 @@ INSERT INTO `cms_content` VALUES (1345973065812586497, 1329257757913718785, '

最干净、最简单的内容管理插件,包含菜单、权限、角色、栏目、内容、静态化、等常用功能


源码

https://gitee.com/mingSoft/MCMS

https://github.com/ming-soft/MCMS

在线文档

后台使用:http://doc.mingsoft.net/plugs-cms/quan-xian-guan-li/guan-li-yuan-guan-li.html

标签手册:http://doc.mingsoft.net/plugs-cms/biao-qian/jie-shao.html

模版制作:http://doc.mingsoft.net/plugs-cms/mo-ban-zhi-zuo/pcduan-mo-ban-zhi-zuo.html

开放接口:http://doc.mingsoft.net/plugs-cms/jie-kou/wen-zhang-lie-biao-xin-xi.html

常见问题:http://doc.mingsoft.net/plugs-cms/chang-jian-wen-ti/biao-qian-shi-yong.html

更新说明:http://doc.mingsoft.net/plugs-cms/ban-ben.html

BUG提交:https://gitee.com/mingSoft/MCMS/issues



', '内容插件', NULL, '免费', '内容升级包补丁,修复功能权限控制', '[{\"url\":\"blob:http://localhost:8080/a7cec28a-a49b-437b-ba46-f8b4e62fa79c\",\"name\":\"a.png\",\"path\":\"/upload/1/cms/content/1609837531913.png\",\"uid\":1609837531865,\"status\":\"success\"}]', '', '', '0', '', '2021-01-03 23:59:35', 0, NULL, '2021-01-05 03:05:33', '57', '2021-01-03 23:59:46', '57', 0); INSERT INTO `cms_content` VALUES (1345973329424592897, 1329257757913718785, '

目前最完整的城市数据库,精确到乡镇村 


安装方式

由于城市数据文件比较大,约90M,所以提供在线SQL文件下载,需要手动导入数据库,推荐使用source指令导入方式。

mysql>use 数据名称;\nmysql>source 路径/city.sql;

城市数据接口读取方式参考代码生成器中的城市组件,特别说明:商城插件、运费插件、会员插件等用以后用到城市数据的插件都必须导入城市数据,否则会因缺少城市数据导致业务流程失败。



', '城市数据', NULL, '免费', '通用城市数据,不定期会更新', '[{\"url\":\"/upload/1/cms/content/1609740022739.png\",\"name\":\"1535532192568.png\",\"path\":\"/upload/1/cms/content/1609740022739.png\",\"uid\":1609740024570,\"status\":\"success\"}]', '', '', '0', '', '2021-01-04 00:00:11', 0, NULL, '2021-01-04 18:26:06', '57', '2021-01-04 00:00:23', '57', 0); INSERT INTO `cms_content` VALUES (1346299650146922497, 1329258744783118337, '

下面我们开始分享一下开源中国中最火的Java开源CMS建站系统(代码可以到gitee.com中下载 搜一下项目名称)

  (1)铭飞 / MCMS(开发人/项目名称)

  watch 1800 star 3400 fork 1800

  项目介绍:

  完整开源!Java快速开发平台!基于Spring、SpringMVC、Mybatis架构,MStore提供更多好用的插件与模板(文章、商城、微信、论坛、会员、评论、支付、积分、工作流、任务调度等,同时提供上百套免费模板任意选择),价值源自分享!铭飞系统不仅一套简单好用的开源系统、更是一整套优质的开源生态内容体系。铭飞的使命就是降低开发成本提高开发效率,提供全方位的企业级开发解决方案。

  使用技术:

  核心框架:Spring Framework 4

  安全框架:Apache Shiro 1.2

  视图框架:Spring MVC 4

  任务调度:Spring Task 4

  持久层框架:MyBatis 3

  数据库连接池:Alibaba Druid 1.0

  日志管理:SLF4J 1.7、Log4j

  JS框架:jQuery 1.10

  CSS框架:Twitter Bootstrap 2.3.1。

  富文本:Ueditor

  项目预览图:

\"国内有哪些较好的Java开源CMS建站系统?\"

\"国内有哪些较好的Java开源CMS建站系统?\"

  (2)Fly的狐狸 / jfinal_cms

  watch 713 star 1417 fork 822

  项目介绍:

  jfinal cms是一个java开发的功能强大的信息咨询网站,采用了简洁强大的JFinal作为web框架,模板引擎用的是beetl,数据库用mysql,前端bootstrap框架。 支持oauth2认证、帐号注册、密码加密、评论及回复,消息提示,网站访问量统计,文章评论数和浏览量统计,回复管理,支持权限管理。 后台模块包含:栏目管理,栏目公告,栏目滚动图片,文章管理,回复管理,意见反馈,我的相册,相册管理,图片管理,专辑管理、视频管理、缓存更新,友情链接,访问统计,联系人管理,模板管理,组织机构管理,用户管理,角色管理,菜单管理,数据字典管理。

  使用技术:

  jfinal cms,采用了简洁强大的JFinal作为web框架,模板引擎用的是beetl,数据库用mysql,前端bootstrap框架。

  后台模块包含:栏目管理,栏目公告,栏目滚动图片,文章管理,回复管理,意见反馈,我的相册,相册管理,图片管理,专辑管理,视频管理,缓存更新,友情链接,访问统计,联系人管理,模板管理,组织机构管理,用户管理,角色管理,菜单管理,参数配置,数据字典管理。

  后端模板支持:bootstrap默认样式、bootstrap黑色样式和flat-ui样式

  前端模板支持:默认内容发布、官网模板、图片模板和视频模板

  项目预览图:

\"国内有哪些较好的Java开源CMS建站系统?\"

\"国内有哪些较好的Java开源CMS建站系统?\"

  (3)kerneler / PublicCMS

  watch 382 star 726 fork 370

  项目介绍:

  PublicCMS是采用2018年最新主流技术开发的开源JAVACMS系统。架构科学,轻松支持上千万数据、千万PV;支持全站静态化,SSI,动态页面局部静态化等为您快速建站,建设大规模站点提供强大驱动,也是企业级项目产品原型的良好选择。

  使用技术:

\"国内有哪些较好的Java开源CMS建站系统?\"

  项目预览图:

\"国内有哪些较好的Java开源CMS建站系统?\"

\"国内有哪些较好的Java开源CMS建站系统?\"

  (4)付苗 / 51opencms

  watch 181 star 370 fork 133

  项目介绍:

  youngcms采用spring mvc ,mybatis,freemaker,mysql等技术开发完成,我们正在采用dubbo,activeMq消息队列,redis等技术进行全新的架构

  项目预览图:

\"国内有哪些较好的Java开源CMS建站系统?\"

\"国内有哪些较好的Java开源CMS建站系统?\"

\"国内有哪些较好的Java开源CMS建站系统?\"

  (5)jeffxu / tianti天梯

  watch 156 star 345 fork 174

  项目介绍:

  java轻量级的CMS系统-天梯。天梯是一个用java相关技术搭建的后台CMS解决方案,用户可以结合自身业务进行相应扩展,同时提供了针对dao、service等的代码生成工具。技术选型:Spring Data JPA、Hibernate、Shiro、 Spring MVC、Layer、Mysql等。

  使用技术:

  核心框架:Spring Framework 4.2.5.RELEASE

  ·安全框架:Apache Shiro 1.3.2

  ·视图框架:Spring MVC 4.2.5.RELEASE

  ·数据库连接池:Tomcat JDBC

  ·缓存框架:Ehcache

  ·ORM框架:Spring Data JPA、hibernate 4.3.5.Final

  ·日志管理:SLF4J 1.7.21、Log4j

  ·编辑器:ueditor

  ·工具类:Apache Commons、Jackson 2.8.5、POI 3.15

  ·view层:JSP

  ·数据库:mysql、oracle等关系型数据库

  ·dom : Jquery

  ·分页 : jquery.pagination

  ·UI管理 : common

  ·UI集成 : uiExtend

  ·滚动条 : jquery.nicescroll.min.js

  ·图表 : highcharts

  ·3D图表 :highcharts-more

  ·轮播图 : jquery-swipe

  ·表单提交 :jquery.form

  ·文件上传 :jquery.uploadify

  ·表单验证 :jquery.validator

  ·展现树 :jquery.ztree

  ·html模版引擎 :template

  项目预览图:

\"国内有哪些较好的Java开源CMS建站系统?\"

\"国内有哪些较好的Java开源CMS建站系统?\"

\"国内有哪些较好的Java开源CMS建站系统?\"

  (6)SeeYoui / kensite_cms

  watch 197 star 320 fork 135

  项目介绍:

  KenSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台。

  KenSite本身是以Spring Framework为核心容器,Spring MVC为模型视图控制器,MyBatis为数据访问层, Apache Shiro为权限授权层,Ehcahe对常用数据进行缓存,Quartz为定时任务计划管理。

  KenSite 提供了常用工具进行封装,包括日志工具、缓存工具、服务器端验证、数据字典、当前组织机构数据以及其它常用小工具等。另外还提供一个强大的在线 代码生成 工具,直接生成controller、service、domain、mapper、mybatis xml、jsp等文件, 前端显示基于easyui,一键生成就可以直接使用包括新增修改删除等常规操作。 如果你使用了KenSite基础框架,就可以很高效的快速开发出,优秀的信息管理系统。

  使用技术:

  核心框架:Spring Framework 4.0

  安全框架:Apache Shiro 1.2

  视图框架:Spring MVC 4.0

  服务端验证:Hibernate Validator 5.1

  定时任务计划:Quartz

  流程引擎:activiti 5.21.0

  持久层框架:MyBatis 3.2

  数据库连接池:Alibaba Druid 1.0

  缓存框架:Ehcache 2.6、Redis

  日志管理:SLF4J 1.7、Log4j

  全文检索:lucene

  验证码:patchca

  WebService:CXF webservice

  工具类:Apache Commons、Jackson 2.2、Xstream 1.4、Dozer 5.3、POI 3.9

  JS框架:jQuery 1.9

  CSS框架:Twitter Bootstrap 2.3.1

  前端组件:easyui

  客户端验证:JQuery Validation Plugin 1.11

  富文本:Ueditor

  对话框:layer、jquery-ui

  上传空间:uploadify

  树结构控件:jQuery zTree

  日期控件: My97DatePicker

  web excel插件:handsontable

  统计图表:echarts

  项目预览图:

\"国内有哪些较好的Java开源CMS建站系统?\"

\"国内有哪些较好的Java开源CMS建站系统?\"

\"国内有哪些较好的Java开源CMS建站系统?\"


', '【网站】国内 前6名 Java开源CMS建站系统', NULL, '', '下面我们开始分享一下开源中国中最火的Java开源CMS建站系统', '[{\"url\":\"/upload/1/cms/content/1609835629433.jpeg\",\"name\":\"a.jpeg\",\"path\":\"/upload/1/cms/content/1609835629433.jpeg\",\"uid\":1609835629283,\"status\":\"success\"}]', '', '', '0', '', '2021-01-04 21:33:50', 0, 2, '2021-01-07 00:28:55', '57', '2021-01-04 21:37:04', '57', 0); -INSERT INTO `cms_content` VALUES (1346302136240926721, 1329258744783118337, '

特点

面向对象

技术框架

系统结构

\"输入图片说明\"

开发环境

建议开发者使用以下环境,这样避免版本带来的问题

运行环境

快速体验

文件说明

代码部署与常见问题

开源说明

系统美图

\"输入图片说明\"
\"输入图片说明\"
\"输入图片说明\"


', '铭飞MCMS内容管理系统完整开源版J2EE代码', '', '', '官网同时提供一键运行版本下载,请步移官网....', '[{\"url\":\"/upload/1/cms/content/1609835614568.jpeg\",\"name\":\"a.jpeg\",\"path\":\"/upload/1/cms/content/1609835614568.jpeg\",\"uid\":1609835614464,\"status\":\"success\"}]', '', '', '0', '', '2021-01-04 21:46:14', 0, 7, '2021-03-26 08:36:09', '57', '2021-01-04 21:46:57', '57', 0); +INSERT INTO `cms_content` VALUES (1346302136240926721, 1329258744783118337, '

特点

面向对象

技术框架

系统结构

\"输入图片说明\"

开发环境

建议开发者使用以下环境,这样避免版本带来的问题

运行环境

快速体验

文件说明

代码部署与常见问题

开源说明

系统美图

\"输入图片说明\"
\"输入图片说明\"
\"输入图片说明\"


', '铭飞MCMS内容管理系统完整开源版J2EE代码', '', '', '官网同时提供一键运行版本下载,请步移官网....', '[{\"url\":\"/upload/1/cms/content/1609835614568.jpeg\",\"name\":\"a.jpeg\",\"path\":\"/upload/1/cms/content/1609835614568.jpeg\",\"uid\":1609835614464,\"status\":\"success\"}]', '', '', '0', '', '2021-01-04 21:46:14', 0, 8, '2021-03-26 08:36:09', '57', '2021-01-04 21:46:57', '57', 0); COMMIT; -- ---------------------------- @@ -161,13 +162,14 @@ CREATE TABLE `cms_history_log` ( `create_by` varchar(11) DEFAULT NULL COMMENT '创建人', `del` int(1) DEFAULT '0' COMMENT '删除标记', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='文章浏览记录'; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='文章浏览记录'; -- ---------------------------- -- Records of cms_history_log -- ---------------------------- BEGIN; INSERT INTO `cms_history_log` VALUES (1, 1329374724146405378, NULL, '127.0.0.1', '0', NULL, NULL, '2021-05-28 16:32:32', NULL, 0); +INSERT INTO `cms_history_log` VALUES (2, 1346302136240926721, NULL, '127.0.0.1', '0', NULL, NULL, '2021-12-28 22:02:52', NULL, 0); COMMIT; -- ---------------------------- @@ -195,26 +197,12 @@ CREATE TABLE `logger` ( `create_by` varchar(11) DEFAULT NULL COMMENT '创建人', `del` int(1) DEFAULT '0' COMMENT '删除标记', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='系统日志'; +) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='系统日志'; -- ---------------------------- -- Records of logger -- ---------------------------- BEGIN; -INSERT INTO `logger` VALUES (1, NULL, '{\n \"result\":true,\n \"code\":200\n}', '{\n \"url\":[\"index.htm\"],\n \"position\":[\"index\"]\n}', '内网IP', 'msopen', 'manage', 'update', 'success', '/ms/cms/generate//generateIndex.do', 'POST', 'net.mingsoft.cms.action.GeneraterAction.generateIndex()', '127.0.0.1', '生成主页', NULL, NULL, '2021-09-27 21:50:16', NULL, 0); -INSERT INTO `logger` VALUES (2, NULL, '{\n \"result\":true,\n \"code\":200\n}', '{}', '内网IP', 'msopen', 'manage', 'update', 'success', '/ms/cms/generate/0/genernateColumn.do', 'GET', 'net.mingsoft.cms.action.GeneraterAction.genernateColumn()', '127.0.0.1', '生成栏目', NULL, NULL, '2021-09-27 21:50:41', NULL, 0); -INSERT INTO `logger` VALUES (3, NULL, '{\n \"result\":true,\n \"code\":200\n}', '{\n \"dateTime\":[\"2019-09-15\"]\n}', '内网IP', 'msopen', 'manage', 'update', 'success', '/ms/cms/generate/0/generateArticle.do', 'POST', 'net.mingsoft.cms.action.GeneraterAction.generateArticle()', '127.0.0.1', '生成文章', NULL, NULL, '2021-09-27 21:50:43', NULL, 0); -INSERT INTO `logger` VALUES (4, NULL, '{\n \"result\":true,\n \"code\":200,\n \"data\":{\n \"id\":\"1345971507544764417\"\n }\n}', '{\n \"createBy\":[\"57\"],\n \"createDate\":[\"2021-01-03 23:53:09\"],\n \"del\":[\"0\"],\n \"id\":[\"1345971507544764417\"],\n \"remarks\":[\"\"],\n \"updateBy\":[\"0\"],\n \"updateDate\":[\"\"],\n \"order\":[\"\"],\n \"contentTitle\":[\"微信插件\"],\n \"categoryId\":[\"1329257757913718785\"],\n \"contentType\":[\"\"],\n \"contentDisplay\":[\"0\"],\n \"contentAuthor\":[\"\"],\n \"contentSource\":[\"\"],\n \"contentDatetime\":[\"2021-01-03 23:52:49\"],\n \"contentSort\":[\"0\"],\n \"contentImg\":[\"[{\\\"url\\\":\\\"/upload/1/cms/content/1609739587867.png\\\",\\\"name\\\":\\\"1531101341729.png\\\",\\\"path\\\":\\\"/upload/1/cms/content/1609739587867.png\\\",\\\"uid\\\":1609739590109,\\\"status\\\":\\\"success\\\"}]\"],\n \"contentDescription\":[\"可管理多个微信号,微信的基本功能、关注回复、自定义菜单、图文消息、群发功能、自动回复等\"],\n \"contentKeyword\":[\"免费\"],\n \"contentDetails\":[\"

微信插件是最近后台系统更新上线的一个系统功能,微信插件可管理多个微信号,进行自定义菜单、编辑图文消息、群发功能和关注回复、被动回复、关键字回复功能。


安装方法

Steup 1:pom.xml增加依赖,并重启系统

当前版本

\\\"\\\"/

<!-- 微信插件-->\\n<dependency>\\n    <groupId>net.mingsoft</groupId>\\n    <artifactId>ms-mweixin</artifactId>\\n    <version>当前版本</version>\\n</dependency>\\n<!-- 微信公众号第三方插件 -->\\n<dependency>\\n    <groupId>com.github.binarywang</groupId>\\n    <artifactId>weixin-java-mp</artifactId>\\n    <version>3.6.0</version>\\n</dependency>\\n<!-- 微信公众号公共包第三方插件 -->\\n<dependency>\\n    <groupId>com.github.binarywang</groupId>\\n    <artifactId>weixin-java-common</artifactId>\\n    <version>3.6.0</version>\\n</dependency>\\n<!-- 微信公众号支付第三方插件 -->\\n<dependency>\\n    <groupId>com.github.binarywang</groupId>\\n    <artifactId>weixin-java-pay</artifactId>\\n    <version>3.6.0</version>\\n</dependency>

Steup 2:重新进入mstore、进入插件详情页点击 在线安装  完成后,刷新后台主界面,会显示相应插件功能菜单,到此插件安装完成;

验证码${code}

', '验证码${code}', 'code', '2021-09-07 14:07:02', NULL, '2021-09-07 14:07:02', NULL, 0); -COMMIT; - --- ---------------------------- --- Table structure for people --- ---------------------------- -DROP TABLE IF EXISTS `people`; -CREATE TABLE `people` ( - `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id主键', - `people_name` varchar(30) DEFAULT NULL COMMENT '账号', - `people_password` varchar(50) DEFAULT NULL COMMENT '密码', - `people_ip` varchar(100) DEFAULT NULL COMMENT '用户登录ip', - `people_phone` varchar(30) DEFAULT NULL COMMENT '手机号码', - `people_phonecheck` int(1) DEFAULT '0' COMMENT '1手机验证通过', - `people_mail` varchar(120) DEFAULT NULL COMMENT '用户邮箱', - `people_maillcheck` int(1) DEFAULT '0' COMMENT '1邮箱验证通过', - `people_state` int(2) DEFAULT '0' COMMENT '用户状态', - `people_code` varchar(15) DEFAULT NULL COMMENT '随机验证码', - `people_codesenddate` datetime DEFAULT NULL COMMENT '发送验证码时间', - `people_datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间', - `UPDATE_BY` int(11) DEFAULT NULL COMMENT '更新人', - `UPDATE_DATE` datetime DEFAULT NULL COMMENT '更新时间', - `CREATE_BY` int(11) DEFAULT NULL COMMENT '创建人', - `CREATE_DATE` datetime DEFAULT NULL COMMENT '创建时间', - `DEL` int(1) DEFAULT '0' COMMENT '删除标记', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='户用基础表'; - --- ---------------------------- --- Records of people --- ---------------------------- -BEGIN; -COMMIT; - --- ---------------------------- --- Table structure for people_address --- ---------------------------- -DROP TABLE IF EXISTS `people_address`; -CREATE TABLE `people_address` ( - `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id主键', - `PEOPLE_ID` int(11) NOT NULL COMMENT '对应用户基础信息拓展表的id', - `PA_CONSIGNEE_NAME` varchar(30) DEFAULT NULL COMMENT '用户收货人姓名', - `PA_PHONE` varchar(40) DEFAULT NULL COMMENT '收货人手机', - `PA_MAIL` varchar(40) DEFAULT NULL COMMENT '收货人邮箱', - `PA_ADDRESS` varchar(200) DEFAULT NULL COMMENT '收货人的详细收货地址', - `PA_PROVINCE` varchar(10) DEFAULT NULL COMMENT '收货人所在的省', - `PA_PROVINCE_ID` bigint(11) DEFAULT '0' COMMENT '省份编号', - `PA_CITY` varchar(10) DEFAULT NULL COMMENT '收货人所在的市', - `PA_CITY_ID` bigint(11) DEFAULT '0' COMMENT '城市编号', - `PA_DISTRICT` varchar(10) DEFAULT NULL COMMENT '收货人所在区(县)', - `PA_DISTRICT_ID` bigint(11) DEFAULT '0' COMMENT '区编号', - `PA_STREET` varchar(255) DEFAULT NULL COMMENT '街道', - `PA_STREET_ID` bigint(11) DEFAULT '0' COMMENT '街道编号', - `PA_DEFAULT` int(1) DEFAULT '0' COMMENT '是否是收货人最终收货地址。1代表是,0代表不是,默认为0', - PRIMARY KEY (`id`) USING BTREE, - KEY `PA_PEOPLE_ID` (`PEOPLE_ID`) USING BTREE, - CONSTRAINT `people_address_ibfk_1` FOREIGN KEY (`PEOPLE_ID`) REFERENCES `people` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户地址'; - --- ---------------------------- --- Records of people_address --- ---------------------------- -BEGIN; -COMMIT; - --- ---------------------------- --- Table structure for people_user --- ---------------------------- -DROP TABLE IF EXISTS `people_user`; -CREATE TABLE `people_user` ( - `people_id` int(11) NOT NULL COMMENT '用户id关联people表的(people_id)', - `pu_real_name` varchar(50) DEFAULT NULL COMMENT '用户真实名称', - `pu_address` varchar(200) DEFAULT NULL COMMENT '用户地址', - `pu_level` varchar(200) DEFAULT NULL COMMENT '用户等级', - `pu_level_name` varchar(200) DEFAULT NULL COMMENT '用户等级名称', - `pu_icon` varchar(200) DEFAULT NULL COMMENT '用户头像图标地址', - `pu_nickname` varchar(50) DEFAULT NULL COMMENT '用户昵称', - `pu_sex` int(2) DEFAULT NULL COMMENT '用户性别(0.未知、1.男、2.女)', - `pu_birthday` date DEFAULT NULL COMMENT '用户出生年月日', - `pu_card` varchar(255) DEFAULT NULL COMMENT '身份证', - `province_id` bigint(20) DEFAULT NULL COMMENT '省编号', - `province_name` varchar(255) DEFAULT NULL COMMENT '省', - `city_id` bigint(20) DEFAULT NULL COMMENT '城市编号', - `city_name` varchar(255) DEFAULT NULL COMMENT '城市', - `county_id` bigint(20) DEFAULT NULL COMMENT '县编号', - `county_name` varchar(255) DEFAULT NULL COMMENT '县', - PRIMARY KEY (`people_id`) USING BTREE, - CONSTRAINT `people_user_ibfk_1` FOREIGN KEY (`people_id`) REFERENCES `people` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户基础信息表'; - --- ---------------------------- --- Records of people_user --- ---------------------------- -BEGIN; +INSERT INTO `model` VALUES (1733, 1713, NULL, '1700,1713', '', '更新数据', 'mdiy:configData:update', '', 0, 0, '', '2021-12-28 22:05:33', '57', '2021-12-28 22:06:19', '', '2021-12-28 22:05:33', 0); COMMIT; -- ---------------------------- @@ -805,6 +627,7 @@ INSERT INTO `role_model` VALUES (1729, 48); INSERT INTO `role_model` VALUES (1730, 48); INSERT INTO `role_model` VALUES (1731, 48); INSERT INTO `role_model` VALUES (1732, 48); +INSERT INTO `role_model` VALUES (1733, 48); COMMIT; SET FOREIGN_KEY_CHECKS = 1;