From 794449870fb92864d5f00051834062cd085e14ab Mon Sep 17 00:00:00 2001 From: sanluan Date: Thu, 19 Sep 2024 15:43:01 +0800 Subject: [PATCH] V2021.a --- LICENSE | 22 +- README.md | 10 +- SECURITY.md | 6 +- Update History.md | 2 +- ...licCMS V2021 Deplyment Manual_english.doc} | Bin 301056 -> 300544 bytes ...2\351\205\215\346\211\213\345\206\214.doc" | Bin 2407936 -> 2404864 bytes ... Secondary development manual_english.doc} | Bin 1718784 -> 1719296 bytes ...\345\206\214_\344\270\255\346\226\207.doc" | Bin 1731584 -> 1731072 bytes ...\347\274\226\345\206\231\344\270\255].doc" | Bin 2962944 -> 2952704 bytes ...\345\205\270_\344\270\255\346\226\207.doc" | Bin 700928 -> 700928 bytes ...\345\206\214_\344\270\255\346\226\207.doc" | Bin 521728 -> 520704 bytes ...\345\206\214_\344\270\255\346\226\207.doc" | Bin 718336 -> 712704 bytes publiccms-parent/build.gradle | 12 +- publiccms-parent/pom.xml | 12 +- .../common/constants/CmsVersion.java | 31 +- .../common/constants/CommonConstants.java | 9 - .../common/copyright/CmsCopyright.java | 67 - .../publiccms/common/copyright/Copyright.java | 28 - .../publiccms/common/copyright/License.java | 83 - .../common/database/CmsUpgrader.java | 146 +- .../publiccms/common/tools/LicenseUtils.java | 115 -- .../admin/sys/SysDomainAdminController.java | 6 +- .../admin/sys/SysSiteAdminController.java | 39 +- .../directive/sys/SysConfigDataDirective.java | 61 +- .../tools/LicenseVerifyDirective.java | 33 - .../directive/tools/VersionDirective.java | 11 +- .../method/tools/GetLicenseDataMethod.java | 36 - .../views/method/tools/GetLicenseMethod.java | 34 - .../views/method/tools/GetXmlMethod.java | 4 +- .../initialization/template/license.html | 12 +- ...0-V4.0.180707.sql => V2017.0708-V2019.sql} | 1643 +++++++++++------ .../upgrade/V2017.0708-V4.0.20180210.sql | 106 -- ...190312-V4.0.202004.sql => V2019-V2021.sql} | 271 +++ .../upgrade/V4.0.180707-V4.0.180825.sql | 39 - .../upgrade/V4.0.180825-V4.0.181024.sql | 172 -- .../upgrade/V4.0.181024-V4.0.190312.sql | 186 -- .../upgrade/V4.0.202004-V4.0.202011.sql | 36 - .../upgrade/V4.0.202011-V4.0.202107.sql | 234 --- publiccms-parent/publiccms/pom.xml | 1 + .../main/java/boot/SpringBootApplication.java | 7 +- .../resources/language/menu_en.properties | 1 - .../resources/language/menu_ja.properties | 1 - .../resources/language/menu_zh.properties | 1 - .../resources/language/message_en.properties | 2 - .../resources/language/message_ja.properties | 2 - .../resources/language/message_zh.properties | 2 - .../templates/admin/common/license.html | 51 - .../main/resources/templates/admin/index.html | 12 - .../templates/admin/sysSite/menu.html | 3 - .../admin/sysSite/uploadLicense.html | 35 - .../publiccms/src/main/webapp/error/500.jsp | 4 +- 51 files changed, 1506 insertions(+), 2082 deletions(-) rename doc/{PublicCMS V4.0 Deplyment Manual_english.doc => PublicCMS V2021 Deplyment Manual_english.doc} (84%) rename "doc/PublicCMS V4.0 ORACLE\346\225\260\346\215\256\345\272\223\351\200\202\351\205\215\346\211\213\345\206\214.doc" => "doc/PublicCMS V2021 ORACLE\346\225\260\346\215\256\345\272\223\351\200\202\351\205\215\346\211\213\345\206\214.doc" (98%) rename doc/{PublicCMS V4.0 Secondary development manual_english.doc => PublicCMS V2021 Secondary development manual_english.doc} (95%) rename "doc/PublicCMS V4.0 \344\272\214\346\254\241\345\274\200\345\217\221\346\211\213\345\206\214_\344\270\255\346\226\207.doc" => "doc/PublicCMS V2021 \344\272\214\346\254\241\345\274\200\345\217\221\346\211\213\345\206\214_\344\270\255\346\226\207.doc" (96%) rename "doc/PublicCMS V4.0 \345\220\216\345\217\260\346\223\215\344\275\234\346\211\213\345\206\214_\344\270\255\346\226\207[\347\274\226\345\206\231\344\270\255].doc" => "doc/PublicCMS V2021 \345\220\216\345\217\260\346\223\215\344\275\234\346\211\213\345\206\214_\344\270\255\346\226\207[\347\274\226\345\206\231\344\270\255].doc" (96%) rename "doc/PublicCMS V4.0 \346\225\260\346\215\256\345\255\227\345\205\270_\344\270\255\346\226\207.doc" => "doc/PublicCMS V2021 \346\225\260\346\215\256\345\255\227\345\205\270_\344\270\255\346\226\207.doc" (76%) rename "doc/PublicCMS V4.0 \346\250\241\346\235\277\345\210\266\344\275\234\346\211\213\345\206\214_\344\270\255\346\226\207.doc" => "doc/PublicCMS V2021 \346\250\241\346\235\277\345\210\266\344\275\234\346\211\213\345\206\214_\344\270\255\346\226\207.doc" (82%) rename "doc/PublicCMS V4.0 \351\203\250\347\275\262\346\211\213\345\206\214_\344\270\255\346\226\207.doc" => "doc/PublicCMS V2021 \351\203\250\347\275\262\346\211\213\345\206\214_\344\270\255\346\226\207.doc" (92%) delete mode 100644 publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/copyright/CmsCopyright.java delete mode 100644 publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/copyright/Copyright.java delete mode 100644 publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/copyright/License.java delete mode 100644 publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/tools/LicenseUtils.java delete mode 100644 publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/directive/tools/LicenseVerifyDirective.java delete mode 100644 publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/method/tools/GetLicenseDataMethod.java delete mode 100644 publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/method/tools/GetLicenseMethod.java rename publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/{V4.0.20180210-V4.0.180707.sql => V2017.0708-V2019.sql} (57%) delete mode 100644 publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V2017.0708-V4.0.20180210.sql rename publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/{V4.0.190312-V4.0.202004.sql => V2019-V2021.sql} (59%) delete mode 100644 publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.180707-V4.0.180825.sql delete mode 100644 publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.180825-V4.0.181024.sql delete mode 100644 publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.181024-V4.0.190312.sql delete mode 100644 publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.202004-V4.0.202011.sql delete mode 100644 publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.202011-V4.0.202107.sql delete mode 100644 publiccms-parent/publiccms/src/main/resources/templates/admin/common/license.html delete mode 100644 publiccms-parent/publiccms/src/main/resources/templates/admin/sysSite/uploadLicense.html diff --git a/LICENSE b/LICENSE index 976dbc387..7576baa7f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,18 +1,26 @@ -Copyright (c) 2018 PublicMS +Copyright (c) 2024 PublicMS 一、授权许可 - 1.1 您可以免费修改、复制、分发本软件及本软件的源码 - 1.2 您可以免费获得的基于免费协议的授权文件,并获得非商业用途的使用权限,非商业用途限个人用户使用 - 1.3 所有免费授权用户,基于本软件开发的页面必须在显著位置添加Powered by PublicCMS标识,并保留产品中的授权及logo等标识 - 1.4 在将本软件用作商业用途时,需要取得软件版权方商业使用授权,授权单位应为最终使用产品的用户单位 - 1.5 已获得商业授权的用户可以使用、复制、修改、分发本软件(含源码)及包含本软件(含源码)的产品 - 1.6 该协议仅对当前版本有效,历史已发布版本请参照软件发布时附带得授权协议 + 1.1 该软件版本遵循MIT授权协议(http://www.opensource.org/licenses/mit-license.php) + 1.2 被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售本软件及本软件的源码。 + 1.3 被授权人可根据程式的需要修改授权条款为适当的内容。 + 1.4 在软件和软件的所有副本中都必须包含版权声明和许可声明。 + 1.5 您的再发行版本,可以使用PublicCMS名义进行宣传。 + 1.6 本软件中包含其他授权协议的第三方产品请遵守其授权协议。 二、版权 2.1 该软件版权归PublicCMS官方所有 三、免责声明 3.1 本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的 3.2 用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未购买产品技术服务之前,我们不承诺提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任 +### 协议正文 + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + # 其他授权许可 Other Licenses This software includes projects with the following licenses diff --git a/README.md b/README.md index 08fe3a2ac..32aef3177 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# PublicCMS V4.0 +# PublicCMS V2021 浜ゆ祦缇1缇 191381542 浜ゆ祦缇2缇 481589563 @@ -6,7 +6,7 @@ ## 绠浠 -PublicCMS鏄噰鐢2020骞存渶鏂颁富娴佹妧鏈紑鍙戠殑寮婧怞AVACMS绯荤粺銆傜敱澶╂触榛戞牳绉戞妧鏈夐檺鍏徃寮鍙戯紝鏋舵瀯绉戝锛岃交鏉炬敮鎸佷笂鍗冧竾鏁版嵁銆佸崈涓嘝V锛涙敮鎸佸叏绔欓潤鎬佸寲锛孲SI锛屽姩鎬侀〉闈㈠眬閮ㄩ潤鎬佸寲绛変负鎮ㄥ揩閫熷缓绔欙紝寤鸿澶ц妯$珯鐐规彁渚涘己澶ч┍鍔紝涔熸槸浼佷笟绾ч」鐩骇鍝佸師鍨嬬殑鑹ソ閫夋嫨銆 +PublicCMS鏄噰鐢2021骞存渶鏂颁富娴佹妧鏈紑鍙戠殑寮婧怞AVACMS绯荤粺銆傜敱澶╂触榛戞牳绉戞妧鏈夐檺鍏徃寮鍙戯紝鏋舵瀯绉戝锛岃交鏉炬敮鎸佷笂鍗冧竾鏁版嵁銆佸崈涓嘝V锛涙敮鎸佸叏绔欓潤鎬佸寲锛孲SI锛屽姩鎬侀〉闈㈠眬閮ㄩ潤鎬佸寲绛変负鎮ㄥ揩閫熷缓绔欙紝寤鸿澶ц妯$珯鐐规彁渚涘己澶ч┍鍔紝涔熸槸浼佷笟绾ч」鐩骇鍝佸師鍨嬬殑鑹ソ閫夋嫨銆 ## 鑾峰彇婧愮爜 @@ -15,12 +15,12 @@ https://github.com/sanluan/PublicCMS ## 鍙備笌寮鍙 -鍒囨崲鍒癲evelop鍒嗘敮,鍏嶈垂鐗堟湰鍒囨崲鍒2017鍒嗘敮 +鍒囨崲鍒癲evelop鍒嗘敮,鍏嶈垂鐗堟湰鍒囨崲鍒癡2021鍒嗘敮 ## 鎺堟潈鍗忚 -* 鐗堟湰:V4.0 鍟嗙敤浠樿垂鎺堟潈鍗忚:璇︽儏鍙傝LICENSE -* 鐗堟湰:V1.0,V2016,V2017 瀹屽叏鍏嶈垂鎺堟潈鍗忚:MIT +* 鐗堟湰:V4.0,V5 鍟嗙敤浠樿垂鎺堟潈鍗忚:璇︽儏鍙傝LICENSE +* 鐗堟湰:V1.0,V2016,V2017,V2019,V2021 瀹屽叏鍏嶈垂鎺堟潈鍗忚:MIT ## 鐜瑕佹眰 diff --git a/SECURITY.md b/SECURITY.md index d1526c9d9..a92103839 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -6,8 +6,12 @@ which versions are currently being supported with security updates. | Version | Supported | | ------- | ------------------ | +|V5-develop| :white_check_mark: | +| develop | :white_check_mark: | | 4.0 | :white_check_mark: | -| 2017 | :white_check_mark: | +| 2021 | :white_check_mark: | +| 2019 | :x: | +| 2017 | :x: | | 2016 | :x: | | 1.0 | :x: | diff --git a/Update History.md b/Update History.md index 9ccdb64b1..349b087f4 100644 --- a/Update History.md +++ b/Update History.md @@ -1,4 +1,4 @@ -### V4.0.202107.a +### V2021 绋嬪簭鍔熻兘淇敼 1. 澧炲姞璁块棶缁熻鍔熻兘 diff --git a/doc/PublicCMS V4.0 Deplyment Manual_english.doc b/doc/PublicCMS V2021 Deplyment Manual_english.doc similarity index 84% rename from doc/PublicCMS V4.0 Deplyment Manual_english.doc rename to doc/PublicCMS V2021 Deplyment Manual_english.doc index 4ce9d107f2da6ad721166cf50fbc3e884038b417..cc8c086ce02f68b9f51cef077534e18e09d463fe 100644 GIT binary patch delta 14859 zcmbW;2V4``yYTS|35p_i5KuG}v13EAvLIN%-YY02LX;*&MR$!IyU3_n3o5RQ*l?9q z?0pp#3--Qi!QPd%Eb9H8gedF(-ut=l8~kSG%uLRl^E_uJlS!QTTg8bRD<(H;s0FoQ&I;rin%6;#2ox)zCyk8#fhg zS9}`IcGk|4bcE?urc;@k)-T;BNlWQRfQux#DJ5xkEkmU`)6CatnsJ5HuZ1N2MO2!% zlB9)fdxB{frjPbY67@(=n2N{$b?SallD6~0$A=|pc+u;$lANNdSlZNAo7VCIm5t7Z zJ&T8!dWmUkQTjGD?a{bYl1!m9O^do_S}lnlC6MMmgusTSYrKuCzMqQy%rTRieyz|{ zk*HX-Nt8teA_T=BYrN%GC7ZW3wevq$8#fmF+s@D#xq`Nsf2$yf>TTsw^;+xZuQe_; z?bwv;i7RI|3NC$}Y#1M=<*VCDQWIjj{})LbVp_@cA`Ps}bOb$a#8f0-JgTmdq_n!lEIbnqALC|k6h7<^M%@50oSsMPfYq|&#Hn0juCsHtp7 zsH@YrqH(vTvMG^I_L6s3^BCge&YW{g(+1y9P5tPK0c;Z!-iwVjB$&Oq2B0(*bt3dbZl6|qF2T>jMTZ?PdV-oADBcnsL!^Kn+8^*$zgy0BmTzGwTs5UM> zRvVlU&%!vd(9kJ$P*kWoP7@JfsIRxFA7ZJYV>(0gs5(?*>a1xaH$$tM5)jR|mPH07 z7PY|e`gl!jWSr@Rrd`rrQFl;GOl)*atTrfKL;X?lny7enP)JC0Y^XLWOms?Yq>IvM zLci9)3&LW9B8_`?SNqUmV+cfhW7wBA&XAU<=yxDOCrBG8W>saa8^-;ZZ@68g&mt zkbS!LHa54p7&)<_4Pt^~;}g~NBs3u;UZgQ7-q8IZ+7?ZhV~a+R2trVpE>@$7BrL1 zrlWdA3~!;5=0Mz;ziWNK|qX`L*(uM>@aCF7QM8}G5g{s36f<%)w8a3M)#vUy- zjkB+94c4%hz;G(y&^EOso*H#URcc~K8%A`|2rU{u^=VkFXdkT%ii;!8h9(innCPfD zZLl^%%UCn*nHL2|XgD52f@nmjIymuvYEa3NR^A~TKym7)(t~_4Tus>PS{n4=F;@NI_B@&uS?|3YVh!GnU4% zEZDF#T8g69AW6$qBgL{_&Fi$%NbxH9i}Nkr*dRuN#?7inZ1f0Ch~Y39t_@3wH4KRV zeyMu6HiD5LhS|5nF;pAN%cEn94)Ol&+cog()}bMzIF4as6%rZeMr=5L#EUJ&YdIec z*H$#`s;E-pxYaen+-!^{OI81qLP@)`%-p^x805=zvb>f^O)66fDGI z{EX8$i*vYu8+em{_2hwV`RiBf=g*#^n-US&H}HpuK;v7M@wu*<#U$kjF<-($VI5v6 zp|)fbF0X5Ht>W(JwNf*SNk0DWQV^nRD`Z{MiGys!Wvm%YZ4>PhZR%5s>o)k8mZa5q z1usiUT7qZj%-dr+KB1o#7oAX*<#p(XQCS1s*D5NAX5T_Zs;Ued*{Zp-!vN;yAsH!H zhzzX9M!9QqXTRsnN$gUAil~Ijutpu!#hd(VC$H^1dF^ESoAmtD{G@bIPB4{IQ}c(i zMBd+gzC5v|tDND{Um?leJlso4HN~sz$%+=v4qccFLpZb;fk~K*DYAD9=MHO_+m8b{ zh(kDwJeSj)Rx)-aQt zWK}D*!y8^*mT;Csc~n3RsNpELZ{_UNj=2B?Vkm}TED|vevZXw)O;tIyMXjtOty(J- zYFX7r?XZkB+mVeO*oj=6!fDyNjdOz+%qd7-X;`8RtWW_JQ5W@4AMNEyp4GC}wdt>r zRi0{xt}F_N79%hc(=Z)LvbU$RV+M1FaRh(hC~n{;ZsA?lBu^ccd8r+~P_$?8R7Ev7 zpc$IOLvHWo>@HIga6wbJqZzto&1^S@#`@OoIe_ADj6y8NA`#;-9uqJF%di6LumKyf37L3} zLbNI;Nxt$V->Mb64bu$J43MN!HsQ`8T5)V`@hJIKu@E(GsoD0Ugl|-O&S+Fd4rh9fj}sd%++79^bi`vuDS5kE{(V zHY{Ddc)`-ebC*t=J54uD4(}RUqJ&L25t2vy&D1q1-W;)evCFk6U4@9ECYnPo9?5yd z3sZ_0CKN9u7B9pXFGLg-2pEr$qLQ(|C)Q^2&!J`I?cMz>RU(~Ib+#KR=XSfKlS+wx ziw17SZ`gvnxCaXwS_-1^mavBCL{*56G(pjG zayIcdjlT)8A__J(;rDw)N|BvPsiHcmEaI5PGnM4zp4H^-J=@9Gy3Es&#<7*Mc@MP- z-yIQcn0|~~EY&aGyW+hPy%7x;jar4|;$crJUKm%r@UJzI-`3QXq++G-3Yu@*5nl1p zSx)KgCEx39FQ4mOsYDd{481Ssb-PSPMSw(m)}yzbBn?CW0`U`OU^eDq6;@*{wjc}p zZ~#Yf3^_QBYj}hw_z20K48j3Ua6wHSPqk1R&Ebpo=!#w#ieZRCG-5Cc2}s0L%*Gt( zu>vcx3cuqLuHZS|-~&olWvHSQx)i>9^Zd=@uYY%M+`X9hIPY<8-myIX9nQ0l6sz`Q!)LRGxS2UykM8UQo!v3QCL{>Q>gDj$xFHG zXuGOUif{ezg8cGFJ9*$}tJ=4UZ*!@5;Z*TLj{Ieio#J=dt+$%!zY7pID{Si(jqXC3~oUN=5{IE7diMM{)Kq~3Hsz`L_@M7?-9 zZQvlwDwZ7$i*Gc!Az$g&LPYxK;lqrFSO2;?$=!5}l;PMA$4Oa;W5o{ks18@Sp&`7{ z15rqVIHqPI6)TW|b=Zr2IEy@7z(rib6JA+I|_Fc zZdsSQga|B|Gh@nx#3iF5BS(b}l4Re2-BwZ=YeWAHQIH=FXsP%tI}L2tmmr9+IE$8v z7Kv7f7DQ9|MLfi2M{dS*n|OsYCt;N0Zfp&NLyw=a7FpPhcXEKco#LU~qnn*Pq?;9U z0p08rCk;yt>uMjCiaqufo0tAwke~IkE4#V)`psNAxXXKjTFUhXhwCbe7>K6EU@Q_b z4&$*2nK*~@5Z!qI(WPg2ju)s-_iDfk-e?CubVe6U!BnirCS*c{WSgUoPd3c##4hZ{ z9o$7BKH)RU6T6D2j3$_h>9~d)xCIg4`*0z?g@tbmUp%<`;M&>3+?>NX%Ln~nKD%VKB{PP(nNxG+n4t|Cn2rBzcvI*-C{m1C#;;hyTqW!9V^KnVw{b4;ktST zGbvaM)4*H8{I5ud7=#(v3NaXWK@7+}IF3uWjE{f6`1{eF>lglh@#55>ec4+xGgfB) zy!GdOnc10{@;siCGPmk7lai9g#?WdGaqIApK5yjUkglZ~m1sl&l4DNGFC(1g>wzmP zN%e~F;yKm7kSm0)H|yk?wKvp9p%Xj2j$3#J!xl_m!mK9Wd%y;^u!A$&;s^MnJ9?le zLNF3>NWf@}!C1`23arE`q+vr%qPCG44_Dr-&=p#Yz(_=322$_~*5Fs9V?DMb8@q7~ zr*Q_CaTB+27x!=&DgRW>>ys*93Jq*5AcFFI>8@`f7bj`t06NlR~lcaPiIwr-O zNWrNQ%Q)aFCbSV3OEo+_#A-Pr!A>XUB~vmx(SY*S;Y;c_BzuPRvZS$S&oD$oWM~RR zmXfdqyCE`G10rk9ATrklJs~o93?hpsa1z%cGTQ$$PlHM65CmX07GW9Euo@fiJ9c0f zJ`}uqlz+S6M#0Hrj}8~?E7-Jp>D;9=rcRwWHF0YERBiB};6ZZq_+W@>W_U+o5xpw8+%&m*(EZ%zRRMIZpDP1DQlrc`lGh<`A z&Pl}QZ8+bqFg6b9YRP-YWknE^D-CuKlUaRJBsbA#(O=PQCA%4iOB1+6!VUa|JGhUB zc#7w+We@hKhU##ED{3PU!w{^?3jA@kLVxcsWu+|jjEf3+mCAPYWR*_zN9@cBWlHOrh(ymx#Yk@{f(3Jc%Adiwre;k{e;#D~nQ#<{#x($|0ccV(_mUzxsO!TR*M z)7DQT=hSF;E_y0wy6zKKbbT$v$H{_$ujT1UL9K4zGb2sc1D(b4$W9Wst0Yx|g+d(u zDdwKM8<}1!N^C>6U&MAM+wyFkgB+u?ZNiprt*i_Ogjmy9Gwtd}eQH!fuhx<8Rp{3&4)XX^Us2Q3X%$~$=q&`yd zJuw0-vI=G*H(}C{HfF>-t)`AjPSp zf9GfC?zow!Z2e_$^72_`=B3xPFKgA~?Kz*G?p{jw@N%CTCfrtc)%hmfxHxNJ#(Tvt z7NrM!hOdjBUL$Ncf6=$bRqp-5BF=k2uXnROO7BaOt6O%ecvV8=wO94Ws?q!Ztkw4Er-F~~vj6ZypLpoc z4s!L)Hyh{^HTa7rc8OP`+K<{MUODB_z`gUuMZuXvl^M&AHQVr5esW&A@Z_LhZ@2W* zcSh{&(Lggmxo|?l!_2<3PBy=Fc7K~=I|tPB@UORcf|Y;4=G@zs*SFojw0_#WRO4 zSN8R(9x!6IXXksX2h7fMyn9{h;Wf*}uT9J9cRU|^H`@Q<(HoEbpKfpKWb1vys^=lq zMjQV>oP2Njr!Ca|elX9z!}Q-)oBJNQk+S;k%<8p#2EKbSvEQE)m+zbK)9ZT|kITBD z-B)R$cyT;Z%>?O6{8>8WpyRTVE+i0G_O*< zcDH!zp$ScUcXWnR$;?TStv&xr)($yv{TH9vF|F@7>-?(Ozv!^V{Dx*ubK5b4Zf9OQ z*(fe-;ne4+KI9y^>GLpW+dEhP`VBog`gGcI;AkVg&ccS zy<+gy1pV6JmBNF8Tc<7%fJ z9_15~Ukn?us>)Sm<*-lit{O z+do^qv*pcwosVsqdoQKTkXD0dG_JJsj}pr&%t~^LSmv@|=BGYo)V>SG99Uzy@8r|g zz5!Ee^w@g#W;u)PH+~x3d`CIEOKaS%$`_oR(fY^4s!i)nxE^w?zFNatvJF;cAst zhb^8@8&u9I)VfhZgB!0}-Cz9Wblm)dKP86ewK(>Zu2hrvhngf`>AK|Iwe%?&+YY)9 zYc*qRgZ{hBE1dk)yF%X~+pgr)xttw+ZC%w>Ew_$a@v}=lO3v1lX+krCZw}b=NHFt8N+4aO0s1bpnzaFY1z)@4r3c{iDRXFLf6q zeA*6AE#G5n6~~~6;qrjd$r)X2&ZyIl4)1?>_5EQz`#!FfxwNTykCS`N&RnnF=GV)g zE?T#@=#am<b!oKhOxu9oL#kBop6X_`EpF^J zr?k|R>5ICy8{ENTtkdMRf7New@o{4KkPDZ$t?S%CH||8`aX-v>QD?4y!B6$wo{UUh zcFM}VaZ~fId+zQU8W=b&`B7TX%@>DrZ1)}Ync!kdtK9Mbvl2(zq_`B&!bkW4_j!g|LAhR&XCLU@_GACL=GFG2`e$h-t~CtAdf!g zm)zI)?fT~2qSyfg63*E4THG|{{_n#F4Q$`H>lmA?(LXPoWH&f4GpFiCSJ&ywBZv2U z@1Afb{l+zy%ctI!N?asOdGPn{A&)#Vx_V?~)H(V_J0SmQ#KlYpS-HadS)2BUaz5tI zyk@sMzuBRk4)p`qzn*d<;=-X`x^w+UbbiwR!Tphum)cIfx5Yf*`3(QGfKm-NwVa%} zantyeHj&|Z1v>qztxD_cs#v?NPQ;JkNfzN7+$P*^i7mwXj#7(a^CPC~)AuRkgT(JX#IG#GuOnnj zu7t~QRg1M;k8~@`)iH1N;tNOd6_xldLEJbO_jx1LTySyMO5DE@pT)&TK=Fx1T)vAd zM{x}!t|)BvL6cR^3TOS={YqyIA9|#gXoc4Bf;YsETf}$h;=5S!<(>GZM%;51_m0G! z3UNO|+;tH56~x^GagRWJvK1G`rfV0z)G=JNx#;U1P&(_+PF7jyTCl7Q+JVg_Klnq7 zS@;!ek%9F%j*Adq*}MjKRwVJoPGv$}7wypzo!}2GCLF`nQV$|(5~9v#pLe&~!5n2t33q9p!nm`TSU zxQX}ph=1@2)l@_rJ<%I|&<_ciiwvyC25dqu?%@j*j50H*;0$+kM^E%ZADvjhK$?VK z@f*ZXIxI-_6;fS?R7YSOHsKteqdMvLLT60DChWo;6rvQlZih$|IJ3PA!wSCGiNiPs z_ck>N5yYLs{Wy+WuwndoVGtJK5XA9P$!g&jedZx$vUqaQdmdK)=pcS{MW7@Vh`iyb z6J;@ProVhx$#?4IB(s+(l+}{OOEx!bqp;8~JFjf2?{P$FslR$&X~lvE=ant0D8$wY z99QLwwl>tJ(mNbs>(l4idhijpR%L6CD1R);^!`buT+)vHi^Etv=$b??_!S>bQ0W_7 zP};Fs#|z5$3V(6vk1AqETf|Rxgwn)(Av>Kx+|LlV5o%(K7)P4z#7AB1A(pvC%GA<- zoTT#C#ZcGSB6X?Hjk*MD>RU;Dsnqu;^-ZR(rJ_#iYerqyagw^O6e%N)KOX#$LE;=D z?siK=UAjWuf5OmK>Q^I(lacs=S6xdEp{AUbT-aelRAr~)S3fo3hPLPc9cICS2DzdE zT3{MdpsmQ=U>u{dXK{-`_5k7bEXP`G#UA9~B@~?P%&Kw-iLXw3LVO)M7ITn>4cLey z5MPO2!wuZVUA)9Uu%x?HQ3H;si~4Ae7U%-;U1SnwU_RDkJ09qGdW&%m#xE9EGTi`2 z&WnmPWrkR@?W^=D9>*$o^kKKW-4R1PPv>e81R4YNE@D`u2z9d10$g~(q z;undfNva*hh+0Yl)3BL@9YRKVwnrF0IEukK5}1h&455M8uB*(3Fz1&=w$NZCcH;y- zpbXir4p)d_FNUfq>)&Vl`y?+Sd8;6jybB^(UJ%JjgwB*DQ&I--#u$jcBqRX0@eW}e z3!^ZVt&y4smuAUq*^Er1sUs_jba9F_6i zi%O(?h=*JD;P$G{3bSVx*=stedMTCMoysooQ@t`%I)`Yp^Sh|*%*}R3XBYNVjV_@x zbyvJnlT#< z6qVl>O(%%uU%n`$Z0mt4ONHW|-f@tsnZhi){~*;0MGtR_iChb;QDi8?MH{4o$GyXj zEIXbgZ5&tYgtVAt#|hm(YT99V*CAxd9oX*QOT`lLNHfoFKSb3}QDO@X-{PuI3s7}3 zE7M*7BtYe&@Y0tLRJp5&V-tSKWo_oD(%-gIRno@>svK2o|H#qm^?|COcDpgyu^`Rju$7+ol*^B>9 zCdL78e1?~a28;4P*=ZrFO64kwCW|r$h+(?LHT!6+szZ4T@t-8yvoO2z6qRiWL-7=0 z$abHpnyN4q8=3KzabT9p)=+98N`FyOeAX*w)1UIQRVwTDEbRbMo8Twr7X)2jJVzB# z>OkvRhX3x?NuMxBr7Pjf-r~#YKh9B&E0N2thW()*H&>-oOxJ&$s~V?hs85(j$wOZ- fPZeG66P$xbC@yU0#xnG|W#Oe)*h?v;Hx7;^16| zi)-JC>skxNb!}O)6aKIF)R6o6{~nL;jOV=H?{nVgecszSbLN~(+**F(&hqm-Jv&%P zg)du4@+Yn!_4&(}FJfUk((U05ANV4z;XKtU#R3aez*wo2N|N67{NwBPM64t!Y>Fh= zNFl>Rh9?|MI9Rx{_@~OsQQDCtNtLet9WE&3t` zChuQ_T?i*1kR-~HrV@(R|0QIf(hK@)9~*8wN+n2dV*5x*UZ5&p+T7OaE#>(tM?-b? zEM6jPC&HE@^(_=z7Jr$$&Kwps?Q0g%qBw@xjxKOyse8M^RsRjeer{MuKT7{CNTfxb zM8To}(FMg{?(O6kC7ZT3*Ykf@7iJdw+sD*-{;MSQD)Fs=5Q=w_+YfDN@Y+zg)Z7B| zV6W=-;{J2XD`JkCUgqWRTT9Y7miVrbq(MdNL=a5{D-hPE#h!#>@WpEt`Ia#F)_)eJ z6cM9eKW_oz8-8qiuU z-;#y9HK)x3x#2X6=k=m6rQQuY$sS4+Q;c5w6T#oO_(}1 za#)03XWdmB78#zXuIHnTNmK_%hpBZD!Lb^3_qdR#$WXOU*Fe+4NWD(2)5gVyYSf|H zFilJAjvBq144P=2MjbpXR-+lIiPo#biKs_vH2TQsVd~(hD0NJ%CRQ^lE>ah%7h4*l z!y@&O+Gt%pQ>k%mTx>^?(duYzbp4PxU1YRIrz5{PySk1#lKAMzu(;qTwKh5`(Y>X0 z`TqqWI#{nZjMVD%>L1l3wbA+rDiIbJD{2}a5g8hx z)<=%i)KlvtzN=G|c9_;w*Z*zo$T-Rhj)~C($5J~oskI@aBeiilb&Qtw7FA1>7q1Bs z9pGVY=u+5aVQQKlOAFcPe+Ph03l1yZ9x*Kc839wBMA$U1WjYTJZ-}-uL+7=b5iB*rLwqo4W5y7K1A{Tqn#z&jW z{Z?#CYcY{bbIY{jP;<&ux`C?bwBh=AF~veOQQGKXISVX1Qsac@(RtI#Q>OkK|~I z)0^uUsnMx_>Z$hmshe*=uYjMr1*(7YQ@8KdU)?#Nn=gGCsi*z1YE1$I%=BhTMvi0( zYr{)>3yVR?3o>wQuvqIY|IQOb%&_69XqYc6nu zFZ|F6UC<5lumB6O80T;SnYe@-$bxMtNqYIu^|Obs@7=a0dGVYXbK)b1Ms|viY!hkv z_NeF(F}Lq6$uT0J#x-fAzod#roRvZ$PiXW^p7P_k0TsoCqXo>>5mgb@=tiUz!uIx}A_Nah5a7SJE;Pw62m+!y6e`N2GjVm@L9oa~Fv^l+E<51Ir z!Y@!sKG<}w+@<+YIiXn(3pXFRgqLg8aEcg)2t;BcCSfv`$sN30s~sZt2M*&1GLVUj zcvM=R)2gz(yhUyKm{+d6p=AqsYx8QBlKK%V7qn2K;o>2R-62 z6SFWI8}OgLXeatYEMMTQu6dg949?;lF5xfa;x6vtlib1EwW^wlSpzO`MI-!(#^{PmEhZ=K#6!WfJ~JQ9$IF&K|&NXBw(LJGEG8(!ceq;d>3e9#qr5*begG zF;(OczuGn#Mf2VioRoVtsnz7Fz{bc8@tPgp{b_up!;v8@OWEV!}|CVoh8XYBrbZlX+c=u7*kP>Bjywp zC1N70=sXcVaZE9Vo5JRs!m)#9o5J4}hfG`k-FZ*ZmLevVbBM@ll*PA$*q+LjEuNMf z#d3Lkz+^)$(bl`j!z+jh`5qr2F)>Q@6U0Pr43f{ha_V|8I_Vw(S z*_XxJ^pTyJefsF{r&G7C-@0P`>Ez_a3+Bw2Vn|LNn{4X21p74R09{+p=`54aA>vc1 z06MIJs-0=IIb2~ug~+uac)BTUr5I)k#Ze%(D(vP;c0U$Nxq96wmJ;RuKL*6W4#nZ~ zt)TCVHIM#fhi0Zx7I_P&nmEWrwM<(x34KN{5^IQwHHCS)#tkv$G0z=!i)a6tum&+> zJw+FOhQ!In1-(&t;*q3&#Dg#t!HB|W#A6DkVkTx`HV)wr3~(jTP8{bYvhC7mOJ34rn0&WOlhRDvlJ*P5w3VH@dW$oo zNH!KdR=lS~?}*+IEfuX4l@*oC#tVd3;!7M&Ds%S76d17--c=xGqY+^0g>@S{uzgSgyZ}COnCuCclvwYCcTCN{xEiYGey31r0=hCqneO*nT1wU^!M`B{pCS9^(nV zKw>|qm@h%c|=f67gF{io}^xOJ}h~5 zqCBS1ihz)!CE^QjRZvCwY`=8|PqDX0cnmQe^6?UH@D}eNF-59_-`-Mlv_MOAfFC-- zfQd-K7Hox>T04;eC#IJhJmG}|jB)A9sfvi0dmHcsPvPXs&wKd757Bu2_}|>@-0K(5 zpTBtQ@pTaq;lcDh>3g>A*|=)yf<4=2P8=5(6GeR`x&M&$a`_-v`E-zj3uhaPv7b#R z)xZHG#YvUZt5`yeb#B^~@`@lwFMD$zidCZ5SS`7Ws);Iz>TE>`o*G%g0X5+6CJ$&_ z#XC>z)%^N@C+?ZEi15~TiB!e7Rth;KtgJkIV10v1{3aH|Cs~Qc$KV&tLNb0u3Pg=A z;R(d^EEUW(EJ@rR6(DNs2sK2l>%bj#(G0%mfBq!6;0{FPMh;*n(|H z$3YyzAGnC?$iZFQ!#}u>kC1Be^8+7VHKk(qglk0S>%_huf*+_`n%kfJM^ zN%i4@rf3E&Vi1o67%&HOu@H-}7|ZK0m@9~!z$s)P6IbyZFOZM-_<#aP?wn3g4z{R^ z#^{Ky_z6Ry0oTxv#NCj;&is{~lYRWik>f{lvJdXd*_WMjFnj05o!JK~h{Qn=UABzd zBGY-#nJ!O=YgO*+kX!g}mpc2)FJq=@7^c#ZT(%Q35x6s07|^~L5 zM4h`K5TfpdCnyTVK9bZ zHjG$~wOEI3*oXZ%fP)a@^aqaP1Wt-V&f@}Z;3odT8@$Ck@UTr%!3w2N4euVmyPunT zEB9*drQDN;(|K=MyJX(lC9|f^nl(Og)X0(HgTuLUXqC86-ZOgc5I0f2D7!V=DkpKZ zf-95RC$ew{xwwx9c!H;Jn!+g>RZtCXsD(NhjG+jbk~(}!|L zWuH5NV}${qq_Qs`OfOo&-PP2>EL%2i{Q8e(6@M`SA5<#A2}?O#EG|s-wh|Y7&tf}^ zsY=YFg|&$B-BC(JO$+2F2`-h`S}YJ>GOr@EMH5?WC&^BUwJVy-^tHYwQ6{-XtnJ2K z!77V26I3I`;6KMJI5Nopod{}{xuE!js7tyJ`e6VD;oBtPmn`Z0JWi{Zt{*#=ef@BH zc6v%W;Rc=r-)=z_Ox3IGV0s|?{bO03zsick{A*W;tI5J@(?zm+O0bLOo&~MHIoMS! zFZMLoA%wk(J%8Y$^ob(%^|Ux!#YE%8Gl~kbVaYH#WNDU_XF1Wq=gX)1CI22~^-@=q zD)r^;Fsl+Q%GrhwkQvkC}CM?SIK_UKzZe9^4i7*tO~WDX$%x zy{I^U!Ge>E_Us=x;@O*PLDw%1^k30wb$9>H)hg8)|Io+Xx^ZS^n^%U-Gkuaj+bz$Q zpN?MNyP$pP)z_N(rM+FY^!9~w=V!f%&Kl>`-Ub|CRf*I%TevzkKb;rcJgXE|nIJ?U;0BoM*G4CxZ&Qf2h{M;C*y< z@{r87pU>Q%?Xahz!f zwk&w~mvs5rpWOmI_FZ^1d~M_7l~%o4>l2@PW6%!+5`4bgu=sb|?hkvPS6cX}LH#>7 z^DGlC9v#trMuP@-&c1#<=C3O|+PfdxJ#mNQzU1{OhV?_Hcz4RZXtBTh_N`6Ae?PDG z@k?9&{B`W+prGY-GkVOk?myby-pBE*<~PUHK1_n{?Pj=5Z{0lLx$Wy3ONV@U_5Shg z&(BBu+j`%sSts10Pnj)0j}Er}yyfx>QG-m6l@=U3ikx@47l->>{M!-`(>rTik2#)K&Ip-q zQ6==@=CM&zcZJ56v)Wa#zw?J*OEq11OPTw(-KhQRI*;ko^dIk=Zj;ly3{us&wOBj) z+1NP0px>i&T`QN$uv}x4AJnCOvs>Pw(_M^bJPb27J$zo(&8On&3sc{A9n{%BNk7s3 z9shz`D{yAaxs@v_mXZ;#{d%b+hFE+r>V|mM@hW6LP*7_x_IrekjJg>&PR?e_n zS0~?QiT+6Z(oa)2jYv|?F#htf&5=Io8QU%2t~#2$FkjUp{zR7D*?~*?zrVROv&PZw zJyVanZaEe`D)*dW&IhlZJ;#;|oiXR46#DGeMjOkx#r@i31l+b+oe~w=HzeC{^!Aj; zPGz1vydJ)*+f&=%^-(2DMwMEbeR@#N(p6sG<7{0kqk2jMLp|ls*$Wdl zYWF7%u*{$O&?Pr7{Y?F&emNN(dg=ZS3Eh~LIU(Yu=i!*J^R4WrXH=Sa-*08Uq1lJS z6Gwf>({;2tv~twRZP!wISFEC6{P%*q-(G|}M^D%k>DfkI{d1SUeDA)Kd@A>^*RQYZ z`M>?|etFh0S(EYdZ*^)^R(hqdaZaAw4VFtEUOe;BIV}Hri4&FLZq2Xu@`2CFh=)rv z=5@a@-+o5?)HZMIp2vk}{?ei5#<{IWjka7e^?8rI%{_*UgcS*Lc|uTj}d zn{lXT`J~N{+9i~-j|pFAT)y97#hkT4P5tM#nAst2>(bGECWRduTxZzhm@YK~_3M+X z-_|^8aRqW?Z~G6gQ@hvS zDGl%6>(0l0C2wCEG2u6ri&}MZl;^T?y?(vaJ!8$5Dev339z3_SkLBTst-=-VguS-zj42h@|^{2K_ww`H=+!r|r&PJ%7ro zo9$2hS>tKvAD^65`==1SCT1>kX=PTQGZ8@X=xxjRff1In1U-bTPdh%1} zD#O#mZdi?-G<@fVz-`gVakCfxd1?FDee?2v?a}zchQeQvks2&L}OfkAS! ze&+|3ZE{}w?;v>< ziw{pSu0NpEYs6nziNA<4{q0d1?hTdY+8W}oW5ge`h`*o^5AekUT=A?-JU|l9D8!9= zar5R&=aqB|-;uXKH#18^-tt&2(#D#^EF?gcNwS=gcn{mZKrE72#qRr6~tlVCKY=Vx4OkWIdQ{A+>sHtTg1H-@oQfETo=E`#m_@=^=`h5p@Nc&vDP6j zA(|3x1~0TgYxsaIB!2`T0@JY$8?X_ZaSE653@;#_{Jeraz3vWQ_@N^L5P?bf6)Uh( z!3FnfB8QQQ$H>D|JV!aMgsP(jTA?-CVlWaQV-Xf(3DR&5|KcGY;R(tp`KgW$=m>vw zLZp%l?w^UQ!Wyi_dK^O*-r_wzpa7Ls3@y5&Cj!wMdd$K`Y(@&U;wpo8+%yUR8dvQd{k0~3UsyU zh!dfpG+sEOY*0~APO^9&$5En|te%tIl%Hd9$5G{v&ZJAQsGOvF9#@jhEJ~ZQD6G;x z9#xJjNtkd(DVG#~Jt+=R@glRu^95{VTT~uXMN+7Y6-0T|!(5&>i_1$z<*AHAk8CENt`8Oia3$IFJmHfWK1q{6dva&EX(1v zu{wQ^ZEB9f8dSlBiGxyfuMkknIPtQwlR-;a@kQJzZv!$xQgP4O zz{!Hhdz9c-R(-TVTZkvyb0D5p@5O1{!UH^nf@X@R)fM54YEYv-yx@<17=*zXhDhij zo(@mPW&SVSg!_jmk_8 z@eLsMtTgR&>2+mwgNTY3hl%O?K^z=nSE4vk)O0qJaSAyQ2g+24gGKzwsW@P=F@;%c zgg0N9ebAIi-wEPivSI#|FPb~zz^V#A402}j{!PS^xgh3EABg!P=7t#GyJ*8u^@SL| zb2!UT-9|NrrU}GRdJWsug-;g6k*b3@TAhoISn%)|BlXu1ENhs&tAsSGsQ-c+iM zzg$&1l@Q~mOj~})L4Kumwp9oP7eau&om)fF9N3h9AO+UUWm8H!ZfaXyNDLsec1Wy9vpjV*&! zwUmeQWMf#csz#N`i*Jhm)2C!Rt{Y9;iYkkA@3hsyD*JNfMWsbrG)sg}Yo?uuQTf?g zi5231tEN?$q;j&fI!7m%l8vXSrYfu&P#=*r9!^p@Sv51K?vSc4u8_pKPyavsSl6*= zy~xwaSYx{C=HeNus8Y}E@=gB(F~Ar%LuIh+!2aLa7(dKVjj=q>&Z{0Xj+v=4D3XjH sW~#<0JdJU)NO>7w&r)g2NvEEfwk`T!j7HsT)u{h2OnW(7Wo`BU0fhL&?(=$n|KIC>@;-a*Y3=V?d+l}B-sf2HDVMk6aV{^% zPA5Q>>3%6Q%tWMlnEUee>sN*mmK93Slu! zN6&sgPMxsa+>l|~FjX^Rm_CDun9}S2IxRx|9KnuL!x+Z5XTL;-%avADkd%Gs0B)nSrhtx2 zFUfT1fbMz8RC2`br3@q4T{7({nq;-OWL_vi9wOGn(sGCHRsWn){_V2NkZ&1EGWuu6 zR0Ti2${n~Fat>CK`2KVC_v2+Ejt3KjMwYB57cb`|I1|*pPI4&8>3uon_UM@k_po*M zOS0T#FvFx^>GVK`F_x^vR30HwGuex&9j0`;>6MD@+_3!~)H=O(4q+II;r4Wf@n9G! z=1dS`_w=SXc3?ei*9YrMv7TCpr06pyGE6bfo}`SDsiY1i^WsxzX8e7Y4*GpJ$*D64 z#+f#g888&l2vZGMHLgHfdDws3OH!Eswtgtrzt_J8Q;~i=)_>jlTXRCmU5x(QX0GT5 zX7oXgmHEis;Pn}dY8}iBVifVmHR@@WxhRAw@CKD_SKr0cd$KNW!#h8(1nbDeoW0Y> zF=Lq^CS#U+*(q*2rA3rA$%U4f08uERAfemAi3@j$oL9&AA zJuS&~rhH^vfOX_Rzt1^;OkcWLCU8KISAu)w%iz9qvVtnsbp%rCdnPu_P~=e@o|d$J z0u_VmyU*8-z$boGVt>@@%%1vkXT~vsjAGDOzk3^eGj@d-jv4=BHV(+9yPO04=%7gx zZu?12S6Y(wQhC3l5x@GK4tl>XF()G=NnA^GD*1M0CE5YKxU1u5bF+Pwa}9OF_0jX2 zfdyEBH8_9=c!C%Bf*<%p3ao&YkOs%#1iWc&t-oAkf!*oFwnz)rB0s;TN4D%S0l#mBL3b%lr3d5X*Nw^%Qs&XrgEz33-FW_lX z(3NlsnxGjT%W*oav7Q+YGY!HZ9A-ic#6mn5!J1f?BGn4d$ejz72P(H8s623I-JJ_7 zFT{xFr+%B~uCfW7t0OCC!k0^xieAcaF9-W`x#nJ6o}sCZA!X49?eGb{0E6=JIa4ze zJvXElLozIb6xaqkpnzLoX5i6;R5NI!E_9$foc|@B?oLMh-W^e>6nD^6x2(?0oTq6- zS?Gd3Sc47Naf2*OEE13^hP|*4N}vLc!3k)Gmym0v?eqmx1}BCO_TT{jk9u0U@&dzf zB^E)P-5@nC)YgPEvkVqj(_TwcO=HTz37o+je8G`v@}F@8uk#AVDg2>gD9JSrG~`OGzQxmX{(h4EcK+N3nDY8@thJ%34f350b07+$ zAr|6cF(kt>j%Q-QBP|Y(UPe>OPKC9qoqJ?M$Ssyq_@d)O=gbV0~-@A%-o*a zGAKfx>0Yx(4r@&GO(=7HT$F}j3@q4#12}O@>`Xk9kva&aa2SrjF*pHd;T+UJ7rbk| zUe$Vd_hD}L;oViKRjuz@=T)_)2GNp@(#D+Y5F761kOAB;gG{+5J60T1ilsF_R{_DW zXi~cBDw7yN;4XM%wG z>|mG*(;y7OVKF2_3ao%_umgU)w3jVj6gtu0*WcIUCvl(%HG9|sPUK+0jdC>M8Xc%% zEaQhOQD}i$l0#7Tlr?3$Lk;Hx^f55C00*c68x7Pil)?uXfkC+^Btr%?LcUg6fO9NQ zs;@>ccV_rV0fkop+mIjSd%GuZUF7%wlYgET9fM&u!!{^|3b+V2;Wj*m7GSh-o8+a9 zI))s`g*+&NJ)qDJy)^{EB$x^_VK&6VO2~qID1;)|1I2I*YM=#L;U&BVMhE8^x?VqT zX>M_BzI)||*ST|8hQH=Y{Hvfh@ua2s;BSS6Ex-NNy|QKNRxWPjWG7{fr~ur2X-176 zoyjcpLf&c`QK(ofp?3@+Xd$j?S|95rEr%tGFyWd;YmAK;XV|kRqofh_uK{5_bJ#{+ zGwRb^1=^n(DXB}UN2)uj9;yba0xEt{zcOQ&MxNP^MW^DjD55iXLlDe?SRKyBO}EU= zwUQ^GDli7x&Ix|pb~ff|`xuCYcu0aY*aCZD9~_20{n539DyYK<@B}ZI3Tdzg3ZV%0 zKyiNzS`Q*o3P+#@y54oY>*)9ke;r*-U3a^#cfGrGp}L~_Q1$-e9q;nju3j<^-INKZ zI{LDpk4DtRp&F9vQ|zu_AJjFf4C@{Y+$33ts@0B&{a&?L`+c5~?cS3?h0`gb3OA7y zmwcZ;x4DG#B%~~fDz?PxqSgf52p@hLIQMwIx2KF?DHzK^196v&;gD> zHJpW;a2pz-30j~PK7k}pKJw`Us-OwlUX|%D~eHXAk6jQBj}+$*>aMasE;Lxbaas zpjb9HO2`w?E(|u;1%0pv8*l>;pzN}MvXn&@l5G1RtqR&ehtLOmaDXIO40PBPK!?tT z9LR?k_2R!;kw~PnYuAqa9UC%NWu_!&&Y6TilvTHvzGjqJVmrg_jMwH?&zqst7xSv4 zFlLgMUI^TQIcH6DDO*XFO-QdChpq_LKpvbLS7sd3$eTik+y+I^2()b*v_lts0$FS? z2b$ml9*_bnK$36kmDZ}_Jp8T5o0B&-&%+g=n&-w9E0}jj>t@A6z&cz}++eOHdPOv& z@?$gw$ms-B!YSwiSw9>NT)_=Iz!Ur-2{Iuc3ZM`U!?Pz%cW*YGELy*$>F$D%q?D!&Q--LaI0gN8Zzp1s2{VZY-Gpd;)8SJ%k&ePc^;IlH0Ei! z9fSj|pA9P@6S5#1jzBe>h1M$-JJ&A?UF6|0(1Y9QrCHXxNRuayBRf8P3ZqEdoP!#u zg^O?*>Yxdl;R`VSXsTcV)?fp^;0G<2j}{edUArV9CLzq<)5#iJmmOU^n#ZLrnq{l} z&)g|z%9V1Uy#pWy)q} zfh@>@0%(H{bTr<+cB$sfwW@1XCA+t5ShIA^qFGbNdm?c0i~B`dkt-5}aPmvval*yM zaaxo)Wki`cfg5;20wh5tRKq!FfF@{zJ^|U11OGopjZ|G#gh+P-~>=?r-0%+3l!tqwzqAM>aJ9l z@7$1rijOGT8RoGVRf;ObJ%1sb$tEz|=QvJt4D&wvWs1z&)V z0?C2`PzCe_sst9OA}oL^!v^fY0h}NV!XX|KAPwF=dwBKX+w;|x)#{Z;OLuNwpSCb9 zDinV~V}sDObAGE1a#vUQs`Lc>{f>?6pK5}0sKLERRTVJm-Q|(2#s~xVbh>naH9%)2 z6C`J*5^2fVd5kojp>}u;UC#>LFbDY8~$UDkV;5mAwFEnW?tm-|jy9NwTFZqaX%S zU?tSRMW_Qd2%&%zjDT>M4RfFYoiXXaY%jJ6i75 zo+>Zex-};~Cp{%@W@vDrpEvr|Z!d0}v=-OAL6=Kjznc4;nQDP%b7eusw=>b*Z0O?n zaVc67m$J@Cphl0E?g)_QF1>fMbv~8TW!v0EKWE zj=%}1ggwF759m9Q6T#@ADv>w~=b&T?9+*HWoP~2x105~5E}gA9UR70geBbf1U1i6S zIKH`TL)r1N<7s6}X%b%+S#})P)*8-V8TVFmy{}{7K5z06#?ITEQ{HfGj0Lq8ij*?k zi^1%+5JU=vK;MHE!(J$XgK!v*Koc~>V`vHC1}%5sQr0MPCv)t}PUg5{0FV4?p&1@S z0P+rkJx~mEtQx2V7v$jzUf>N`uorKs^EL%(W2RB3 z55p))MN>=bo|}k9vuu+#XUI)6{`E!K(){;Y{I_{!ANOBYz;xAx z3eklM-grNx({+0BMLNBttS(|kYPkv5v3C5p7szTBG@ zI67;K9G&~AzMvT&a~wrf5WTK;WfBJhdp@2Fg< z)hY;XJ9&t`m#n=}>d*W~X0N3-<{FRj_IYu=*+wR}bXQ2uwoJZ^Lec2HivFF~-6z<) zO4&y#eYQ<}XgE&bk=}4CGq3mqZOt>ZT~y{3w~q(mRNeSuTDz;QIJ&izx%-$ez~S!{G0*l7{>yWT<5;zOqkij`+tJ6OKYR^I>j!O&CL!#`~794W|5 zOEY+uGV1F`pXZLkt5eN9p75u*$A)~3NchFo&f@9FC3Tk^2ip7G+BCCdx>WJD^Fx1s z#y!8m+0x=oQUANOO@Znj?)st8>s)*u7Y47pX7uPDm|_08RA{L^l_|?# zKfZN=6HFh!!)4@>*9(t`CPiF$QNY?iY5e^1)=#$jO9fwF-#;EX{nwBy&8ydnvRi_b z%y&#}?%XPj3p+Vt`Ijg64E{Cja9sS&p%3*`XFYuJa8`%@x`!*W72}1|eGAo$W_ri4 zJ6+`ijyrWaM$F#%{#=G}uaeaH!(Ezk=1x0xZW?Y3-Lj)||cX-da=s-pt$D)^Uux*P*k!6NXf4UXsdGUF)_j{ONBG>X=#Q zpX#g5yqhTObW+=Adoum(Ji})DvFVHUM{QAfk)!=-aFU9&Amqs1&ztQol zT4#84*!@bM^M}?y&h0bJIV59{+R;B`x2j~O+r(^TH?I90)W^_cqFZ5i#Q?|(|Pi#oV7;*I6g;VQE?>9r~B8(xz=F>!l%>d5=|F8*~vQ)N=k zkp(rHFYoGIVRsDjo_SVlZllzJtqyTX!y2-(7q;V@66to8R%xTKZJu|v3eL#2ub!%8 zJX^yqabUwM=a&4hmltk0y?ja3HK+5-1@ePGR1eOn8~4lm`aP?P%TL>fJ7+8&IQf{2 z%AcPDRVGd=udA`VBZ{m4t$)F=(&QbR*~p=;UqhcuDV}>Oveg~5c<77lkVBh(x2bEj zt~DJ#n|22Jvz4W z)y~rug4o%m*J^Ls55CbTQ?E0$!|VKrPGhlSeitG;O&nm%Zg@3kl1M~Xi@U1If8a4W`r&1i{SmwGe7>bITF&!HVXu=*3O?l> zOKuK*aq;)gPUBfqRhWf;bh36^uZ#>0oTjBee!Gog`NGBZ#yhv?uGuusEyUAtvGK}Z zo2;F0JzEkr?dF~G-+TrNl55qIf6C~vT<`sMxwXync{y7zDcTPjA~Wv9qhr&ofj!=b9?tIsFohL^&A&tDYBe$IQ)C7jDR{X#f4u zU$F&iFB@$MIV3IraFyxgRfk{i+$i6GUE0UqcyTVXbWyT=KbK1ym#3EtK0G`^vf1jDznr-vvO!{D-cx6vRJ$vU;r~Hyl%&NcM9iR5p zv3Q(gS+V80H*2DJa;TUOFSrou$ z5Ak|F2<4>NDf~C`LVrGMDa^uJUb|?!H0#cjd!vrqGTamiTV+@e0eufn-$BzCzw{+5 zeML&&Ez(zZ^ko};DaEK__y^KD7@qaVa0*Wz>ERnaxS}UJ^o)fbV9>(`y0zEAO(NY) z()}0RW6+?V2G2D7Yr)71*)l5K*$T%*u}1xnA7cPUU;?%<2!;qh%Ch|hBax(Uaa>^( zxC8xOfWEY$2lw<)o}MSulU90&NYCQv$rL?!p~n++cW;e2Xjn_fry`*k^e|TZoYN3f z`Z1CX*uh{J3QpimzcF(`!VSzp63BF<7eE$d!v@$02SEha;U?UIJMa#^f({Q)`alm1 zzy-!bG{nGsh=XhpLMd*Wn8Qevg9vWJefR)f@Hc!0T|REDU=+B62Y5mRBtj140tcJm zFr0)ssE2!SA3lK`emG|WreG$(n+1%40GJPP5Dy8k5w^k+sDPtz9O~f_d;tc(Ipl#9 z7=ty80dMeuaS#JPLoRHBeAo;E5#CNi13Z8xXa=4P9zuXASb!xAfY-gy=FmRqw<7_t z8uo%R+RHGY?-r-QRj7wX2vWlX3YZD>rC&3=0!wwK9}|d6W;Xl_E&^RbYKom-g-!CT zmC#v%)fRq{XD{l}4_K(Ms6jED74dH|#q+|y6j)m=G=BceTr4+aS(i?WL;3NWXN$3ROm-djmOPZEw~|lSg}cVTJM!dosf1z1iU+ejm0-N??bwON>NX zLP-|aT#t*Wn}6DmI3&{17u+=irH}^e;4;)hBfNvp zK(($WiwjsC2^}y33$TS~$cOE41WrO7Jb>rW1%Cq{HKPZXU<)H)B)Eelv}0-f5M za2Fb&1)d4;)&}$gFCSRfbH1r+ML@rSIt{gO6Yj%fcmf^p20j8GRWAjKpaiO*4#QwL zxWQ{>_oF1_u}gqhTCOfO!xHsjvpt!aB$T4t|AVD1n1; z1S&uYpO~7U1?FH0cHju3z#D=fqc_ffCK9jU1AK&D_^6c!WzYg67yv_IHbg@V#K8iP z?`h?Vm@0t|^aouq0CyMze&7#unbH+e3s(hrYlJ5F1oRsr126^?uz=w(8hpSXra~CR z!OyS+R>CR}!e%%KhoBNp!5KIQ=iweS0`(IDx+bZ!cmc2AHK3nk)IkgSfhAbM0I-80 zApU(2ro&+*`~+^W3wFb=un+b_8PKnW-oXd>8$QEVC7gdAIsz$>fqd8udto0?@6`&4 z=pTND5;zE@a2T545wt@Gyn;7C9Ub*4)X`C&q6qW}L%&#|PnXB|^k^449P$rZQ;*Wo7If;&(L^>7bf0eVnnP1Z%2q{%7^ZM4`vqD7i)7f;;PQ;#a?s9cfW z40QcdFDkkIsavPZJQ-KXa*$kslBdS4bov76u=6!!E9&-{E|)} z{w$zwSJKd^ZM^_$Gjo92$u6MtPp5w+YH2n6v)2AE714-_==fG4xOfJkR-ED-2k)k&1C{)&FErhPrR9gG7ssb8zpt}GxL-AmB1Ew@Mr9mkTMrjaA zgHIZC(qNOum^8MeF(r*9X$(nYM;bGhfn>}`W5vHgGFCLhsK*l|Lqr-H=FqrNGB%_! z;a!l7327{71d_2JjREI@WDH1Szat%fA+YHrb2b6 zL~Vx9r@a)KN~$i~UznrI$_cmWvc5cN(L-HUPamHRyZWw@U+!8=wS<@JT$A3uvvdMb z2Y5YMJXwX7@PzWi*@#iJf)^L^BA`T9z(x1 z!h>Srrs3>qE&3VsOk@1U+aQQBP?*R#OHXF-V~3uSAM+kLnNyk zNC!b%WpGK-AQZ)-B{W5g6;IJ(#Z$CS@e~b9JVk>NPqlldxL*>_dx>_tu<1M=UpUZ} zE#o~FK6GUp{Z?SJB3`jnl(?M5)iLIOY`u_9d(0N!>Ga3Bq|On8R4kKbq;gC#{r9D` zgkC#kM2c?gB%bUai1-h6`db7xmc4_ADvBAo8QPP3tFnNBTr zRWwl81vEIAi~9VC(qN=1?yIREM)&yCgVpEpL~^6q4}APD42>gREX$J`WM?NdAIq9a z>8N)J{l~Hzx=C+F(tk)n+;lrD9;Q>cG=Er>I+h)-q(TAHJQazie~2yxv+l~e^k1nw zF+T>pU@Ulp4~VSivMW5LX%peW1FX9AYlJ1NIlvZ=qGkFxmH`-o5g3CBut4k0Ff|7Y zummd@0M_tDc*Aey{;Q5~VL6-dk7c4a J<*cII{{WB9t4Tr4t`6ixbxvOJj{`h)kJ= ztP^AGlkB81F}9j4Lrng!cXjcd@8kD>d_VQP=X1_I_j5km`JB(Wonr2-(!{)7rAhF# z3${|qgQcPjCaz(v^xeC6in1~++NK{{0uhA%7=VFR`Wo)qfR#m;RvDS}n4?rSQIuEx z4!=)@h?$~<3{?~hC2V}y_*sW$9V&nG<5v?i8^t?OQS7c<4i}ZJRez&U-Oc*tJN^Hb zwLVIRoRU>VDXRF~$4hUvyE-aLEz0E6KvAZDv|nMcqMSBTlvK8x8!JktmNykeXNdgQ z(#SGK^TA2fQ!my#^7(O!y2`}L z+)(zRP1KbpHaa=71jBM@lk#=LQa<@{FnrvwtSH+1U1Z&l671x2Hf$|wUH;a;my&+f zN=ggm-wFMDU8>;YP}Eu-Vb zqhX5DMNy2E(jfBQwTI+mGCRnAReAp;?@Oy0iXPElQP$FWhB6wKhB`E?mo=e_(}&ga zqZ-x?P1iA)mUj6hzLlbc>sQv%)>M;BEI&2u_3x#jF#q2EeqF6wX_J=}Ny7WB|LQjX zy`7T#Hu&$&<;is9%nz%oD4WxIn*FBvq^07ac&0Tp|I%FJnYO9c7L6`>cwyil{=NHt zy6kD6Pe*G!s|{-1PvdFY?_yxnF_Tuj^gms(jEzi)(9Ei)IP%k+RJ>Sz_-w`k{jk`` zl7Y+1QtA`9dr53$+{n&j7L9)CU-ez&PirN{4?31O_;p>;ZQ9&l;NZD?q_`uEUD)I)v}W-S}1P*W@BO_FE4SOQT3g?)*thH zb=7y0k@D;-!!8EKM$T9prvG`^oVBh4eZvRF_U;p*d-Fw7zW`;DQe&nvTA7Mb93)Kn zQgKw9+tt)n8k@aD@_nn%pcy;-j|RE>mzU>s;6y$&2Hoe#J|8mKlFz#iGz~33tm}-> zK87s699{LDqMx@oH&8!JYSeFP=P^HymUpF?QcG3e$!q_>-hC2>w)I!WoYFexgfu9663988I`>nB& zazr_fe|a0XCi=$`Y0aPgUk?r(*1MnI)TU!9kMW~K3j>P-i-%kcG#)D3{$6q{aLg1b zoosnIy2~1uq2)CupH6FQ+pp3pM|+)?D~tD&^A{) zy4$O}8@i~k9OtNu8$^z&E0;YZn7|Z<3`%AsBaW37B?Ug_3?!IXg$pO*Ijvl)ktz6F zC`vx2S0^1V$!p6cBrW7X>c}IR!5Yj_x`7?b>hWAN{s`)8zM?7^~dXR4-FC zQyWSxgsW{E4s>yr4?o0Xl;AB&p-@swc)(MwL8c; zO&?zQC2LO>VZ)xRJy(`o`DOku6Aha}$~P&_WsNh$Sl!svKJBVYBaN5yZ4$_X4Haw) zJJ`bwP2mAgbi_~$SFK&0L$(u3#xA5F9S4w!gE)hSc#NkgLNWe&@Ykiof9>D4pP+8r zzwPk6!)%&h*feO{el^uKNHuEirgm)HPmONgRK4D~q3Z75%t&!khr8M~SLg&@Xo=SF zhA;fk1HIsnp@>4XYVGFS=>)NCoWg0G!vz%G`t{bK{reAXymjc1TBH)@6{+PL4^6l= z@K@=_Opr07sXK$%0U4h;2|F4E$ry4_E^=_v2Pg5 zQ3%IaOhg1C!9cIfMiiD}7gA7o3(Ggs!5W&CpKz&_ z)I4qLvR-!GU8@dl*pdvps+mn4jg@*S>gP?JKP@J?=Xi-%c#Bdn{Zvd*6&A3B6`ar! zozw;%&TZp}#bYU+-2UzMk=;j<^hxuMB<)U0O8V{gZ-hzjHxH6JE6>>a%4AGyR^Ia( zRF%}X6>#;Wx^ojrFGOU08rXYU+KJ0{`Vv}0*c&OW)b_Rjn#7277i-$eD+lJnQ7T9uEo zy~Ulpf-dL^KlFe<0@Q}BYr6bZaHW9o z^Ob@t`;zwkrT=T*zKTr+lghRY4<&i^Y3s&nyEe`h4Klnsp2`xP%*uw=a5sJyUj@u}}Ta==$HFI7>Ar|piige`RCFB+=6ho1UOgzO~^sCLjc>Bk# zt5ondYY` z)&676ynIdGkiGkHXZauR*C=0$@G~)+e!2W?>c9U@g{TJCc!t-N?czT*YEjfW_zD_w-hE0o|Z6!K;S6PUvSRF zv+Sp^Fy~ZRBx6TLM&hc(im+oI?d_x*buU$y)}OAP=;@i}+2caZw8>^mHExEaCD{~s z^`e!r7Wr`K&9wv8VfFfmhN`B!v&KQaJHkQdD2ergKLXGX0}z5x48WwNIEGs-=w!(`$5c;DuNU z*>x3?u?s2KhfHMQ1Ww@`a&Z;6k&gmA#AC?eoD35*NSJ`A5 zoaESYOgWw;{}QiI0#^$G3G>vLvB_${I1klzoa=DK zMm{+k`>-GBIDkx?z(bV6ye~(E4ea2GaLmGNY{mTx2QyNWx2)Hz`sFic4j9SAwRrrZ`c_haj}I+}kR)@_wqKgV#C**lNj?=h z72B_}EXH$`pcG0!8Xs=(gcn-F8*Sl(2M=<7+Pd|ppO!3{zGTUgts$MrVH0)zl#ywJ zB5G?ql^TW}ec8DqdSL)I;~27$hZ2(oyn+<;ElOb&NH>Q$tY8B>IKTyN zXbErlpd-5IcO-fOir8pkp+1=YVp20Hf}|FW6r>{)1$YRrAUX`%A^<@cju^yZ9X8@E z6ehl&Xo&#`K`i319!dSxzFqCp;v*w9Iyq(($dvvOKbJ$92@o9>0NbB^2xU-g+lR-UnruxoJKlVIfC?pI4ng160sK2GuA_T$7XEBE~H=|(vgXSIEE8Ag$uZZ99%^n z?x6q=@fbyT9;Bo7h?GFOUn!&un!p?us0CZt!x37z!VMmf?)vhPg#3&7*+21P2>W*I z*dch`xGevtkAhTHSy0!R)Kd@4ZK;A5JzwfCy5|e~(A`iuQ37-L! z9=)&@>yd&~8hxc5+i zhj@%4NM4>p@>7CRC>+xWrZ7WQSfUneVGmb$zzZ$WdVu1qv?U^i@`V(v3wof0P<;35 zSqUf7P9#g%@KHFsbU{P}m(u!a1u?c79as8LUvIh6D-Gr2Qa=F*!f=FREGA+qA~74$ zh(RpkuoMYc1F7G2kUCDnW^BcF>_Q55gSyu#`-tpEIx>-kV>p3RIE^znhfByoE({HJ zn|R?p3D?TPg|gSf<%?^(w|@O`h|}q&Q|AmHSFEFC_)y&zELCqWXrL~N8KzU*C9!-I z-~k@uF^cgDr7)#;SillCu!TLG;0iZ*p(VWGgO2C|KlFk>q^AWT7$FGN@giL>3}X?2 z$(V)Nh(;_HA|A_;fJCfA5;kKyb|D3+NJl2Ja0C~SgIrw2P2@p$kCz8{jHf8ZOO)U( z6wUz?7zXXK;rc&Te$OGCEc^EV(7(cg{|+)*(f{%Wx0U`^S=~E7R_7-NFhf;X!V0xu z0|z)l3s*FS2RzXdZQ+Yf2tYr`6-iF!5XcEV6mn9BK~C&&L_kjPslklhvxv;bawK96 zcH;u_QGf?98AQ9o0gh-25A=exa~oR0&&CHf%`Q zS~D?mYYOp{l*L=6dL*bGUtJun@QsXAlvG%(xwfpr-dCN{QZg)=@Zmuarm56dq?iicyS7o%&9v9wo-=2;;Fpw)Us5!E{E08Jd!xy)dt>BwhLw!2 zCyi^Kl&yo8n`8`L{>jb;vSOP0Nrq{v>D^Yc^5-9>8Grs!X;44ezl*n-OMlrqahVw^ zXG~mX-s84xI543~#(@b{XPlGWnzgOAr=@Joi>Q{77hzF&K~^qysGf1LgJpxKvhv)$ zM#gh@tEjWGGWCrWYNA%g)Hl}8Tx8=ICmYnx7~^Dnu8M4E<6)c8#-ona6Itn5*A8_v zde*h?Y08F-wGHf>50rO)on?=DaLD*|R{i$lacoR92g6y}&=6xLwl zWLepKsX@l(OHR*k$}Vg7I4|w+iK*S*eh>AH3!R;HwW~poTT<87t(B4sxoLjG4 z@WQ&yU$s}RT6J>u{>;G>3SV9wa_!<^zl}Y<4e;yfVCOpb&(4jjwY+e__qlH8lFsW& zYizisK8@Vg|Ltey-(GFqHRJDZzP@wr%-N+cBW_07_ANA<_E~V~vn5x|vljjCTQ|Ww z`SstKPx|bBvoXQd!SS>%Ec98U;8$(hbSQmbdOe}R^3+Pjd#`qE)gjUATJWG6bA!9) z+x47W_3wpCyZIe!Sbc!0eZ2*@<94Umn6F-Kw({!VVYTL6|L1PP^Sysx`R>l0sCSRg zcN=zO)8S9kE^Z#~x~7x+^Tvg)Rjyj)Ts@kcY#HWcmpG?eTyB(So8c#iybUOE_*~cN z*s^uQE_5h8U9il0e{<{2Qx~T+xRTo;@W-7;hVS3?MRAh8j{EA<+fEPIKFl~d^u!Ol zzVGqfsy}~Iate?82YRHRdpLee%b)F%o^RB?)j{7*1niMHtFlO?b2-~y=KYq-&XD&Kt-IigzWcXw8mZZ(c??dcV3?e6Ggv!+(PKF>exKI-h@ zY9Vutr_ibj+lJ%8aC*C&Bzg%NV=GLCG2ekg9(+%zX1HD2` z8r)tpDY9_RjIKj|ipY1aTlu`{W{ct>z1-W}?lf|-lm4`aEV^$GknwW=w(TFJ`1?He#D(^>Zz_%yLa{2&@Qfd&1<8!bdB45;;SbK z-YxfTim$QNwb)|q^rJJs{wFqhLY#5De&HM6qXQ0{-);JL(y?`k#U_1cX5Xyw>)^G6 zUf=loLW5(w`=$Nt{N0I&Dfwq~%S*gd`^~8|GJg3*Wn|&)9TuiD)&%>W?|#SP+g%e! z4h*~1HFEc^N48ZS|9LHZum4la5!)tKsx-0krdz*+-u*hsyHnKH1?}T9|9m!J#qr}0 zuHN^3vZ7a>!@Ta6#XtXAj)5UO09cU>tbm*oHkdBYrOQIdAKuUu3gvnvdRb zK{H)bDNwdQ6Mi$(ES{jB14KI}NFa?Q!%TlE_;GNiTNindEWpONx)e;^b&@a*F3S)q~bw3OK*{y9KX(oe!P) zdVuMXnD)QM_*{Av|LD?_owv5_j9l(FSi5w3TKBQ%A87i-7P-$_w_*GXpOzkWk6!p} zwP~;W!~Bct{hI9Pd#KdIM!&4psk2v1?Y>z(Kl}ESvwKojHyB;wy7P5sZ?A~F6n*d<~0i(WaTlc=3>to2Rz!2YZVuF;^r3ZuGiz=46+@YG9j*DK3Y=tNcF_D+^FbSR)0T}3i99>AZ`(zeW^_?4d$)@pbSChC z#~*d-&0YQa$bofF>)4M!FzUM5oO$C@w+DV7v2Mn)#N(HC&q+@xUf;LnvyJ2WTVHN< ztN)pOo)e6xWgQGv+XSBtt=j6W?s3t$KQ}h}@ljexn>LL`4KcFc`1<_C8RsurRvrIi z^Cj!T4hApme|F>U>xV|BA8nDmVMlk{{)fE++uhGd>E?a*X#Tdg9ZsDcMsI#j>@3m7;2AS9EF>Bn}8dba0Yp;$P-FZnwX%$6z_s&=e=xJ&n5 z=;R4Oc`i>LhLgwCI=rj!VApk}rHbxto@|a=D9@`#8CgVES4~kr`RYQ2mAy zXOHHjEq_f^8bF@amglLP!wW6Z8g1|?+QCQvSE#n8t}{^{%~n1~SIAQi-62m~O1{l) znP%H@e*pO-qx|tq{`Mk&Y>@BF+mcuLN>jd}kg2--V*d-Yj5!Wo`ufmZNF zTltTG_Cz|N8{|=ZUvvQJlszN9gyk|UM*{XB9T)K%a*&G`C`BEOqSS>w9MB&A7>5a% zhzKmh8orlS_7X|Mex&0vZsKpeMhV`cE)S$PL`QT&XMB!Pn2r@#iB(8M8V=$LuHiav z;teYCuMSSo>Ue30M(B#Zn1~2W!W1N69ezLt4j>cPkdJ>rho)cfg$o*>3A&;?dY~63 zAQCH)h}F>Pc}d3++`w(z!Cfeya8m{?8o?EAXiDE03VGCbDGo!Pkd;T9reQhOz`Q2+ ziLk|Tti^g*)uMUOq?S@!8A)UrHsTsgtrf-HI%C;C&b2i4G^8peqsq$A3?Jh9tWxJ@ zwKdfhqar`HJ1S;H?5@Z@ikW`XJLeYlSSP>S^RUkU;2^%;<3wbDg6u!dGkUk*Q{TE8`1}4%U zP#X@YkH&CE3;3Wtx}iII!5`Bw15wcFcu9mF+p!yau@BPWq-{?i8+T9$d1m|{$aCY; zA?3Mo>6Fs`_2CRHT+jrbXpT1UhA*V!(noYk7b1Pp9|IAB5eUa*%z+Mzumsz%6F=by zj^k%!<1FqX9}n;lMJPshF029QixC)!@l|O5DMaQV7RzxAC(wkeusrJB0-vEXv=FgpJsW?bwO$(7B@LcVpQd{FjB&9|JH5b1@HbI$q)-=dPS0CNPIB?9dv17=%y^ zK^SI0hp!NiM6AV5>_r+5;t($45+33aUZDj4K*x}#F!U+bu!RgBa-PZn(g;n^6usb& zz6iufjKXM)#}}B4shEM8_!3dLg*&*50^G+F6jkT=o?PX<&xx57O0LIutF_ZqX`&Qf2*wZ)$7c)ruq)%+N%0Dm9;Jz#2#qMt^qRC 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 IoUN7r4=X4zZ~y=R delta 21834 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 diff --git "a/doc/PublicCMS V4.0 \344\272\214\346\254\241\345\274\200\345\217\221\346\211\213\345\206\214_\344\270\255\346\226\207.doc" "b/doc/PublicCMS V2021 \344\272\214\346\254\241\345\274\200\345\217\221\346\211\213\345\206\214_\344\270\255\346\226\207.doc" similarity index 96% rename from "doc/PublicCMS V4.0 \344\272\214\346\254\241\345\274\200\345\217\221\346\211\213\345\206\214_\344\270\255\346\226\207.doc" rename to "doc/PublicCMS V2021 \344\272\214\346\254\241\345\274\200\345\217\221\346\211\213\345\206\214_\344\270\255\346\226\207.doc" index 43665e730d57141b91062caac07c37d22cf92c2e..66d08ff576eaccbb2032a3d759bf91221694439a 100644 GIT binary patch delta 19990 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%0AX7|#YCJ*-1K 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 diff --git "a/doc/PublicCMS V4.0 \345\220\216\345\217\260\346\223\215\344\275\234\346\211\213\345\206\214_\344\270\255\346\226\207[\347\274\226\345\206\231\344\270\255].doc" "b/doc/PublicCMS V2021 \345\220\216\345\217\260\346\223\215\344\275\234\346\211\213\345\206\214_\344\270\255\346\226\207[\347\274\226\345\206\231\344\270\255].doc" similarity index 96% rename from "doc/PublicCMS V4.0 \345\220\216\345\217\260\346\223\215\344\275\234\346\211\213\345\206\214_\344\270\255\346\226\207[\347\274\226\345\206\231\344\270\255].doc" rename to "doc/PublicCMS V2021 \345\220\216\345\217\260\346\223\215\344\275\234\346\211\213\345\206\214_\344\270\255\346\226\207[\347\274\226\345\206\231\344\270\255].doc" index effad76206f5726d9198fe03d47a844e35438e91..0028496698851ff6222b5bcc7661b333c59f2730 100644 GIT binary patch delta 31496 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 delta 40792 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£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 diff --git "a/doc/PublicCMS V4.0 \346\250\241\346\235\277\345\210\266\344\275\234\346\211\213\345\206\214_\344\270\255\346\226\207.doc" "b/doc/PublicCMS V2021 \346\250\241\346\235\277\345\210\266\344\275\234\346\211\213\345\206\214_\344\270\255\346\226\207.doc" similarity index 82% rename from "doc/PublicCMS V4.0 \346\250\241\346\235\277\345\210\266\344\275\234\346\211\213\345\206\214_\344\270\255\346\226\207.doc" rename to "doc/PublicCMS V2021 \346\250\241\346\235\277\345\210\266\344\275\234\346\211\213\345\206\214_\344\270\255\346\226\207.doc" index 1b3eea746a366245460d2b1fb1306b198118a7bf..10da19eb83ba58d049e9ddd855b558afb117e295 100644 GIT binary patch delta 36007 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 diff --git "a/doc/PublicCMS V4.0 \351\203\250\347\275\262\346\211\213\345\206\214_\344\270\255\346\226\207.doc" "b/doc/PublicCMS V2021 \351\203\250\347\275\262\346\211\213\345\206\214_\344\270\255\346\226\207.doc" similarity index 92% rename from "doc/PublicCMS V4.0 \351\203\250\347\275\262\346\211\213\345\206\214_\344\270\255\346\226\207.doc" rename to "doc/PublicCMS V2021 \351\203\250\347\275\262\346\211\213\345\206\214_\344\270\255\346\226\207.doc" index c888b970ac925bb21059820b9098961f5fac7236..fadd199b255108fee72779b3bd84ab681adb2b79 100644 GIT binary patch delta 17108 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 delta 21952 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 diff --git a/publiccms-parent/build.gradle b/publiccms-parent/build.gradle index 25aee1c54..a60473809 100644 --- a/publiccms-parent/build.gradle +++ b/publiccms-parent/build.gradle @@ -23,28 +23,28 @@ subprojects { apply plugin: "eclipse-wtp" group = 'com.publiccms' - version = 'V4.0.202107.f' + version = 'V2021.a' test.enabled = false ext { // http://mvnrepository.com/artifact/org.springframework/spring-core // http://projects.spring.io/spring-framework/ - springVersion = "5.3.8" + springVersion = "5.3.27" // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web // https://projects.spring.io/spring-boot/ - springBootVersion = "2.5.2" + springBootVersion = "2.5.15" // http://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient // http://hc.apache.org/downloads.cgi httpclientVersion = "4.5.13" // http://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core - jacksonVersion = "2.12.4" + jacksonVersion = "2.15.4" // http://mvnrepository.com/artifact/org.hibernate/hibernate-core // http://hibernate.org/orm/downloads/ - hibernateVersion = "5.4.32.Final" + hibernateVersion = "5.4.33.Final" // http://mvnrepository.com/artifact/org.hibernate/hibernate-search // http://hibernate.org/search/downloads/ - hibernateSearchVersion = "6.0.5.Final" + hibernateSearchVersion = "6.0.11.Final" // https://mvnrepository.com/artifact/org.ehcache/ehcache ehcacheVersion = "3.9.4" // http://mvnrepository.com/artifact/org.freemarker/freemarker diff --git a/publiccms-parent/pom.xml b/publiccms-parent/pom.xml index 52b8ff226..6b9eb41e5 100644 --- a/publiccms-parent/pom.xml +++ b/publiccms-parent/pom.xml @@ -19,24 +19,24 @@ UTF-8 UTF-8 - V4.0.202107.f + V2021.a - 5.3.18 + 5.3.27 - 2.5.12 + 2.5.15 4.5.13 - 2.12.6.1 + 2.15.4 - 5.4.32.Final + 5.4.33.Final - 6.0.5.Final + 6.0.11.Final 3.9.4 diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/constants/CmsVersion.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/constants/CmsVersion.java index ad96cdca6..f8add57d5 100644 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/constants/CmsVersion.java +++ b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/constants/CmsVersion.java @@ -2,10 +2,6 @@ import java.util.UUID; -import com.publiccms.common.copyright.CmsCopyright; -import com.publiccms.common.copyright.Copyright; -import com.publiccms.common.copyright.License; - /** * * CmsVersion @@ -15,41 +11,18 @@ public class CmsVersion { private static final String clusterId = UUID.randomUUID().toString(); private static boolean master = false; private static boolean initialized = false; - private static Copyright copyright = new CmsCopyright(); /** * @return version */ public static final String getVersion() { - return "V4.0.202107"; + return "V2021"; } /** * @return revision */ public static final String getRevision() { - return "f"; - } - - /** - * @return whether the authorization edition - */ - public static boolean isAuthorizationEdition() { - return copyright.verify(CommonConstants.CMS_FILEPATH + CommonConstants.LICENSE_FILENAME); - } - - /** - * @param domain - * @return whether the domain authorized - */ - public static boolean verifyDomain(String domain) { - return copyright.verify(CommonConstants.CMS_FILEPATH + CommonConstants.LICENSE_FILENAME, domain); - } - - /** - * @return license - */ - public static License getLicense() { - return copyright.getLicense(CommonConstants.CMS_FILEPATH + CommonConstants.LICENSE_FILENAME); + return "a"; } /** diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/constants/CommonConstants.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/constants/CommonConstants.java index c2c657330..6045a68a3 100644 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/constants/CommonConstants.java +++ b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/constants/CommonConstants.java @@ -24,10 +24,6 @@ public class CommonConstants extends Constants{ * 瀹夎閿 */ public static final String INSTALL_LOCK_FILENAME = "/install.lock"; - /** - * 鎺堟潈鏂囦欢 - */ - public static final String LICENSE_FILENAME = "/license.dat"; /** * 閰嶇疆鏂囦欢 @@ -39,11 +35,6 @@ public class CommonConstants extends Constants{ */ public static final String ENCRYPT_KEY = "publiccms"; - /** - * 鍏挜 - */ - public static final String PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/ZHiLKHR70/tuoE9TsWhcKuoAgHWIOWrt+kAl1cZotjqsZwR/55PkYkz0SLZMOhXRjY1ii5Y0SDceLG0GsdRQBSvrGb2pPCDPsWM+LuG7BM8Dr8gnHKK1CROVEHJ6wR2RYsD2UIZLRp/HIzTc5B922X9oFibIyZJphFqpZngYtwIDAQAB"; - /** * 棣栭〉妯℃澘 */ diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/copyright/CmsCopyright.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/copyright/CmsCopyright.java deleted file mode 100644 index a379a1d52..000000000 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/copyright/CmsCopyright.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.publiccms.common.copyright; - -import java.io.File; -import java.io.IOException; - -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.lang3.StringUtils; - -import com.publiccms.common.constants.CommonConstants; -import com.publiccms.common.tools.IpUtils; -import com.publiccms.common.tools.LicenseUtils; - -/** - * - * CmsCopyright - * - */ -public class CmsCopyright implements Copyright { - private long lastModify = 0L; - private License license; - - @Override - public boolean verify(String licenseFilePath) { - return LicenseUtils.verifyLicense(CommonConstants.PUBLIC_KEY, getLicense(licenseFilePath)); - } - - @Override - public boolean verify(String licenseFilePath, String domain) { - License l = getLicense(licenseFilePath); - return LicenseUtils.verifyLicense(CommonConstants.PUBLIC_KEY, l) && verifyDomain(domain, l.getDomain()); - } - - @Override - public License getLicense(String licenseFilePath) { - if (null != licenseFilePath) { - File licenseFile = new File(licenseFilePath); - if (null == license || lastModify != licenseFile.lastModified()) { - try { - String licenseText = FileUtils.readFileToString(licenseFile, CommonConstants.DEFAULT_CHARSET_NAME); - license = LicenseUtils.readLicense(licenseText); - lastModify = licenseFile.lastModified(); - } catch (IOException e) { - } - } - } - return license; - } - - private static boolean verifyDomain(String domain, String licenseDomain) { - if ("*".equals(licenseDomain) || IpUtils.isIp(domain) || domain.toLowerCase().startsWith("dev.") - || domain.toLowerCase().contains(".dev.") || "localhost".equals(domain)) { - return true; - } else { - String[] licenseDomains = StringUtils.split(licenseDomain, CommonConstants.COMMA_DELIMITED); - int index; - while (0 < (index = domain.indexOf(CommonConstants.DOT))) { - if (ArrayUtils.contains(licenseDomains, domain)) { - return true; - } else { - domain = domain.substring(index + 1); - } - } - } - return false; - } -} diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/copyright/Copyright.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/copyright/Copyright.java deleted file mode 100644 index 306f3c3e1..000000000 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/copyright/Copyright.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.publiccms.common.copyright; - -/** - * - * Copyright - * - */ -public interface Copyright { - - /** - * @param licenseFilePath - * @return whether to pass verify - */ - boolean verify(String licenseFilePath); - - /** - * @param licenseFilePath - * @return license - */ - License getLicense(String licenseFilePath); - - /** - * @param licenseFilePath - * @param domain - * @return whether to pass verify - */ - boolean verify(String licenseFilePath, String domain); -} diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/copyright/License.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/copyright/License.java deleted file mode 100644 index 34f7354bd..000000000 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/copyright/License.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.publiccms.common.copyright; - -import java.util.LinkedHashMap; - -public class License extends LinkedHashMap { - - /** - * - */ - private static final long serialVersionUID = 1L; - public final static String KEY_VERSION = "version"; - public final static String KEY_AUTHORIZATION = "authorization"; - public final static String KEY_ORGANIZATION = "organization"; - public final static String KEY_ISSUE = "issue"; - public final static String KEY_DOMAIN = "domain"; - public final static String KEY_START_DATE = "startDate"; - public final static String KEY_END_DATE = "endDate"; - public final static String KEY_SIGNATURER = "signaturer"; - - public String getVersion() { - return get(KEY_VERSION); - } - - public void setVersion(String version) { - this.put(KEY_VERSION, version); - } - - public String getAuthorization() { - return get(KEY_AUTHORIZATION); - } - - public void setAuthorization(String authorization) { - this.put(KEY_AUTHORIZATION, authorization); - } - - public String getOrganization() { - return get(KEY_ORGANIZATION); - } - - public void setOrganization(String organization) { - this.put(KEY_ORGANIZATION, organization); - } - - public String getIssue() { - return get(KEY_ISSUE); - } - - public void setIssue(String issue) { - this.put(KEY_ISSUE, issue); - } - - public String getDomain() { - return get(KEY_DOMAIN); - } - - public void setDomain(String domain) { - this.put(KEY_DOMAIN, domain); - } - - public String getStartDate() { - return get(KEY_START_DATE); - } - - public void setStartDate(String startDate) { - this.put(KEY_START_DATE, startDate); - } - - public String getEndDate() { - return get(KEY_END_DATE); - } - - public void setEndDate(String endDate) { - this.put(KEY_END_DATE, endDate); - } - - public String getSignaturer() { - return get(KEY_SIGNATURER); - } - - public void setSignaturer(String signaturer) { - this.put(KEY_SIGNATURER, signaturer); - } -} diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/database/CmsUpgrader.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/database/CmsUpgrader.java index 238d389d6..5aa148cfa 100644 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/database/CmsUpgrader.java +++ b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/database/CmsUpgrader.java @@ -23,88 +23,76 @@ */ public class CmsUpgrader extends AbstractCmsUpgrader { - /** - * 涓婚敭绛栫暐 - */ - public static final String IDENTIFIER_GENERATOR = IDENTIFIER_GENERATOR_IDENTITY; - /** - * - */ - private final static String VERSION_20170708 = "V2017.0708", VERSION_20180210 = "V4.0.20180210", - VERSION_180707 = "V4.0.180707", VERSION_180825 = "V4.0.180825", VERSION_181024 = "V4.0.181024", - VERSION_190312 = "V4.0.190312", VERSION_202004 = "V4.0.202004", VERSION_202011 = "V4.0.202011"; - /** - * - */ - private final static List VERSION_LIST = Arrays.asList(VERSION_20170708, VERSION_20180210, VERSION_180707, - VERSION_180825, VERSION_181024, VERSION_190312, VERSION_202004, VERSION_202011); + /** + * 涓婚敭绛栫暐 + */ + public static final String IDENTIFIER_GENERATOR = IDENTIFIER_GENERATOR_IDENTITY; + /** + * + */ + private final static String VERSION_20170708 = "V2017.0708", VERSION_2019 = "V2019", VERSION_202011 = "V2021"; + /** + * + */ + private final static List VERSION_LIST = Arrays.asList(VERSION_20170708, VERSION_2019, VERSION_202011); - public CmsUpgrader(Properties config) { - super(config); - } + public CmsUpgrader(Properties config) { + super(config); + } - /** - * @throws SQLException - * @throws IOException - */ - @Override - public void update(StringWriter stringWriter, Connection connection, String fromVersion) throws SQLException, IOException { - switch (fromVersion) { - case VERSION_20170708: - runScript(stringWriter, connection, VERSION_20170708, VERSION_20180210); - case VERSION_20180210: - runScript(stringWriter, connection, VERSION_20180210, VERSION_180707); - case VERSION_180707: - updateMetadata(stringWriter, connection); - runScript(stringWriter, connection, VERSION_180707, VERSION_180825); - case VERSION_180825: - runScript(stringWriter, connection, VERSION_180825, VERSION_180825); - case VERSION_181024: - runScript(stringWriter, connection, VERSION_181024, VERSION_190312); - case VERSION_190312: - runScript(stringWriter, connection, VERSION_190312, VERSION_202004); - case VERSION_202004: - runScript(stringWriter, connection, VERSION_202004, VERSION_202011); - case VERSION_202011: - runScript(stringWriter, connection, VERSION_202011, CmsVersion.getVersion()); - } - } + /** + * @throws SQLException + * @throws IOException + */ + @Override + public void update(StringWriter stringWriter, Connection connection, String fromVersion) + throws SQLException, IOException { + switch (fromVersion) { + case VERSION_20170708: + runScript(stringWriter, connection, VERSION_20170708, VERSION_2019); + updateMetadata(stringWriter, connection); + case VERSION_2019: + runScript(stringWriter, connection, VERSION_2019, VERSION_202011); + case VERSION_202011: + runScript(stringWriter, connection, VERSION_202011, CmsVersion.getVersion()); + } + } - @Override - public void setDataBaseUrl(Properties dbconfig, String host, String port, String database, String timeZone) - throws IOException, URISyntaxException { - StringBuilder sb = new StringBuilder(); - sb.append("jdbc:mysql://"); - sb.append(host); - sb.append(":"); - if (CommonUtils.empty(port)) { - sb.append(getDefaultPort()); - } else { - sb.append(port); - } - sb.append("/"); - sb.append(database); - sb.append("?characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&useAffectedRows=true"); - if (CommonUtils.notEmpty(timeZone)) { - try { - sb.append("&serverTimezone=GMT"); - if (!"Z".equalsIgnoreCase(timeZone)) { - sb.append(URLEncoder.encode(timeZone, Constants.DEFAULT_CHARSET_NAME)); - } - } catch (UnsupportedEncodingException e) { - } - } - dbconfig.setProperty("jdbc.url", sb.toString()); - dbconfig.setProperty("jdbc.driverClassName", "com.mysql.cj.jdbc.Driver"); - } + @Override + public void setDataBaseUrl(Properties dbconfig, String host, String port, String database, String timeZone) + throws IOException, URISyntaxException { + StringBuilder sb = new StringBuilder(); + sb.append("jdbc:mysql://"); + sb.append(host); + sb.append(":"); + if (CommonUtils.empty(port)) { + sb.append(getDefaultPort()); + } else { + sb.append(port); + } + sb.append("/"); + sb.append(database); + sb.append("?characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&useAffectedRows=true"); + if (CommonUtils.notEmpty(timeZone)) { + try { + sb.append("&serverTimezone=GMT"); + if (!"Z".equalsIgnoreCase(timeZone)) { + sb.append(URLEncoder.encode(timeZone, Constants.DEFAULT_CHARSET_NAME)); + } + } catch (UnsupportedEncodingException e) { + } + } + dbconfig.setProperty("jdbc.url", sb.toString()); + dbconfig.setProperty("jdbc.driverClassName", "com.mysql.cj.jdbc.Driver"); + } - @Override - public List getVersionList() { - return VERSION_LIST; - } + @Override + public List getVersionList() { + return VERSION_LIST; + } - @Override - public int getDefaultPort() { - return 3306; - } + @Override + public int getDefaultPort() { + return 3306; + } } diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/tools/LicenseUtils.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/tools/LicenseUtils.java deleted file mode 100644 index ed267738b..000000000 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/common/tools/LicenseUtils.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.publiccms.common.tools; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.IOException; -import java.io.StringReader; -import java.io.StringWriter; -import java.text.ParseException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.Map.Entry; - -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.time.DateUtils; - -import com.publiccms.common.constants.Constants; -import com.publiccms.common.copyright.License; - -public class LicenseUtils { - public static final String DATE_FORMAT_STRING = "yyyy-MM-dd"; - - public static String writeLicense(License license) { - try { - StringWriter sw = new StringWriter(); - BufferedWriter bw = new BufferedWriter(sw); - for (Entry entry : license.entrySet()) { - bw.append(entry.getKey()).append("=").append(entry.getValue()); - bw.newLine(); - } - bw.close(); - return sw.getBuffer().toString(); - } catch (IOException e) { - } - return null; - } - - public static License readLicense(String licenseText) { - License license = new License(); - if (null != licenseText) { - try { - BufferedReader br = new BufferedReader(new StringReader(licenseText)); - String temp = null; - while (null != (temp = br.readLine())) { - String[] values = StringUtils.split(temp, "=", 2); - if (values.length == 2) { - license.put(values[0], values[1]); - } - } - br.close(); - } catch (IOException e) { - } - } - return license; - } - - public static License readLicense(byte[] licenseData) { - License license = new License(); - if (null != licenseData) { - String licenseText = new String(licenseData, Constants.DEFAULT_CHARSET); - String[] licenseItem = StringUtils.split(licenseText, ";"); - for (String item : licenseItem) { - String[] values = StringUtils.split(item, "=", 2); - if (values.length == 2) { - license.put(values[0], values[1]); - } - } - } - return license; - } - - public static boolean verifyLicense(String publicKey, License license) { - if (null != license && VerificationUtils.publicKeyVerify(VerificationUtils.base64Decode(publicKey), - getLicenseDate(license), VerificationUtils.base64Decode(license.getSignaturer()))) { - return verifyLicenseDate(license); - } - return false; - } - - public static boolean verifyLicenseDate(License license) { - if (null != license && null != license.getStartDate() && null != license.getEndDate()) { - Date now = new Date(); - try { - if (now.after( - DateFormatUtils.getDateFormat(DateFormatUtils.SHORT_DATE_FORMAT_STRING).parse(license.getStartDate())) - && (DateFormatUtils.SHORT_DATE_LENGTH != license.getEndDate().length() || now - .before(DateUtils.addDays(DateFormatUtils.getDateFormat(DateFormatUtils.SHORT_DATE_FORMAT_STRING) - .parse(license.getEndDate()), 1)))) { - return true; - } - } catch (ParseException e) { - } - } - return false; - } - - public static String generateSignaturer(byte[] privateKey, License license) { - return VerificationUtils.base64Encode(VerificationUtils.privateKeySign(privateKey, getLicenseDate(license))); - } - - public static byte[] getLicenseDate(License license) { - StringBuilder sb = new StringBuilder(); - if (null != license) { - List list = new ArrayList<>(license.keySet()); - Collections.sort(list); - for (String key : list) { - if (!License.KEY_SIGNATURER.equals(key)) { - sb.append(key).append("=").append(license.get(key)).append(";"); - } - } - } - return sb.toString().getBytes(Constants.DEFAULT_CHARSET); - } -} \ No newline at end of file diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/controller/admin/sys/SysDomainAdminController.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/controller/admin/sys/SysDomainAdminController.java index 865ae8980..73715074a 100644 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/controller/admin/sys/SysDomainAdminController.java +++ b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/controller/admin/sys/SysDomainAdminController.java @@ -1,6 +1,7 @@ package com.publiccms.controller.admin.sys; import javax.servlet.http.HttpServletRequest; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; @@ -10,7 +11,6 @@ import org.springframework.web.bind.annotation.SessionAttribute; import com.publiccms.common.annotation.Csrf; -import com.publiccms.common.constants.CmsVersion; import com.publiccms.common.constants.CommonConstants; import com.publiccms.common.tools.CommonUtils; import com.publiccms.common.tools.ControllerUtils; @@ -55,9 +55,7 @@ public class SysDomainAdminController { @Csrf public String save(@RequestAttribute SysSite site, @SessionAttribute SysUser admin, SysDomain entity, String oldName, HttpServletRequest request, ModelMap model) { - if (ControllerUtils.verifyCustom("noright", !siteComponent.isMaster(site.getId()), model) - || ControllerUtils.verifyCustom("needAuthorizationEdition", !CmsVersion.isAuthorizationEdition(), model) - || ControllerUtils.verifyCustom("unauthorizedDomain", !CmsVersion.verifyDomain(entity.getName()), model)) { + if (ControllerUtils.verifyCustom("noright", !siteComponent.isMaster(site.getId()), model)) { return CommonConstants.TEMPLATE_ERROR; } if (CommonUtils.notEmpty(oldName)) { diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/controller/admin/sys/SysSiteAdminController.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/controller/admin/sys/SysSiteAdminController.java index 2e55e2489..6f08c2091 100644 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/controller/admin/sys/SysSiteAdminController.java +++ b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/controller/admin/sys/SysSiteAdminController.java @@ -2,7 +2,6 @@ import java.io.BufferedReader; import java.io.File; -import java.io.IOException; import java.io.InputStreamReader; import java.util.regex.Pattern; @@ -17,20 +16,15 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestAttribute; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.SessionAttribute; -import org.springframework.web.multipart.MultipartFile; import com.publiccms.common.annotation.Csrf; -import com.publiccms.common.constants.CmsVersion; import com.publiccms.common.constants.CommonConstants; -import com.publiccms.common.tools.CmsFileUtils; import com.publiccms.common.tools.CommonUtils; import com.publiccms.common.tools.ControllerUtils; import com.publiccms.common.tools.JsonUtils; import com.publiccms.common.tools.RequestUtils; import com.publiccms.entities.log.LogOperate; -import com.publiccms.entities.log.LogUpload; import com.publiccms.entities.sys.SysSite; import com.publiccms.entities.sys.SysUser; import com.publiccms.logic.component.site.SiteComponent; @@ -108,9 +102,7 @@ public String save(@RequestAttribute SysSite site, @SessionAttribute SysUser adm "update.site", RequestUtils.getIpAddress(request), CommonUtils.getDate(), JsonUtils.getString(entity))); } } else { - if (ControllerUtils.verifyCustom("needAuthorizationEdition", !CmsVersion.isAuthorizationEdition(), model) - || ControllerUtils.verifyCustom("unauthorizedDomain", !CmsVersion.verifyDomain(domain), model) - || ControllerUtils.verifyNotEmpty("userName", userName, model) + if ( ControllerUtils.verifyNotEmpty("userName", userName, model) || ControllerUtils.verifyNotEmpty("password", password, model) || ControllerUtils.verifyHasExist("domain", domainService.getEntity(domain), model)) { return CommonConstants.TEMPLATE_ERROR; @@ -266,35 +258,6 @@ public String execScript(@RequestAttribute SysSite site, @SessionAttribute SysUs } - /** - * @param site - * @param admin - * @param file - * @param request - * @param model - * @return view name - */ - @RequestMapping(value = "doUploadLicense", method = RequestMethod.POST) - @Csrf - public String upload(@RequestAttribute SysSite site, @SessionAttribute SysUser admin, MultipartFile file, - HttpServletRequest request, ModelMap model) { - if (ControllerUtils.verifyCustom("noright", !siteComponent.isMaster(site.getId()), model)) { - return CommonConstants.TEMPLATE_ERROR; - } - if (null != file && !file.isEmpty()) { - try { - CmsFileUtils.upload(file, siteComponent.getRootPath() + CommonConstants.LICENSE_FILENAME); - logUploadService.save(new LogUpload(site.getId(), admin.getId(), LogLoginService.CHANNEL_WEB_MANAGER, - "license.dat", CmsFileUtils.FILE_TYPE_OTHER, file.getSize(), null, null, - RequestUtils.getIpAddress(request), CommonUtils.getDate(), CommonConstants.LICENSE_FILENAME)); - return CommonConstants.TEMPLATE_DONE; - } catch (IllegalStateException | IOException e) { - log.error(e.getMessage(), e); - } - } - return CommonConstants.TEMPLATE_ERROR; - } - /** * @param site * @param admin diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/directive/sys/SysConfigDataDirective.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/directive/sys/SysConfigDataDirective.java index 3dd0056fc..53fbb4edd 100644 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/directive/sys/SysConfigDataDirective.java +++ b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/directive/sys/SysConfigDataDirective.java @@ -24,33 +24,38 @@ @Component public class SysConfigDataDirective extends AbstractTemplateDirective { - @Override - public void execute(RenderHandler handler) throws IOException, Exception { - String code = handler.getString("code"); - String[] codes = handler.getStringArray("codes"); - SysSite site = getSite(handler); - if (CommonUtils.notEmpty(code)) { - SysConfigData entity = service.getEntity(new SysConfigDataId(site.getId(), code)); - if (null != entity) { - handler.put("object", ExtendUtils.getExtendMap(entity.getData())).render(); - } - } else if (CommonUtils.notEmpty(codes)) { - SysConfigDataId[] ids = new SysConfigDataId[codes.length]; - int i = 0; - for (String s : codes) { - if (CommonUtils.notEmpty(s)) { - ids[i++] = new SysConfigDataId(site.getId(), s); - } - } - Map> map = new LinkedHashMap<>(); - for (SysConfigData entity : service.getEntitys(ids)) { - map.put(entity.getId().getCode(), ExtendUtils.getExtendMap(entity.getData())); - } - handler.put("map", map).render(); - } - } - - @Autowired - private SysConfigDataService service; + @Override + public void execute(RenderHandler handler) throws IOException, Exception { + String code = handler.getString("code"); + String[] codes = handler.getStringArray("codes"); + SysSite site = getSite(handler); + if (CommonUtils.notEmpty(code)) { + SysConfigData entity = service.getEntity(new SysConfigDataId(site.getId(), code)); + if (null != entity) { + handler.put("object", ExtendUtils.getExtendMap(entity.getData())).render(); + } + } else if (CommonUtils.notEmpty(codes)) { + SysConfigDataId[] ids = new SysConfigDataId[codes.length]; + int i = 0; + for (String s : codes) { + if (CommonUtils.notEmpty(s)) { + ids[i++] = new SysConfigDataId(site.getId(), s); + } + } + Map> map = new LinkedHashMap<>(); + for (SysConfigData entity : service.getEntitys(ids)) { + map.put(entity.getId().getCode(), ExtendUtils.getExtendMap(entity.getData())); + } + handler.put("map", map).render(); + } + } + + @Override + public boolean needAppToken() { + return true; + } + + @Autowired + private SysConfigDataService service; } diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/directive/tools/LicenseVerifyDirective.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/directive/tools/LicenseVerifyDirective.java deleted file mode 100644 index 385763c29..000000000 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/directive/tools/LicenseVerifyDirective.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.publiccms.views.directive.tools; - -import java.io.IOException; - -import org.springframework.stereotype.Component; - -import com.publiccms.common.base.AbstractTemplateDirective; -import com.publiccms.common.copyright.License; -import com.publiccms.common.handler.RenderHandler; -import com.publiccms.common.tools.CommonUtils; -import com.publiccms.common.tools.LicenseUtils; -import com.publiccms.common.tools.VerificationUtils; - -/** - * - * VersionDirective 鎶鏈鏋剁増鏈寚浠 - * - */ -@Component -public class LicenseVerifyDirective extends AbstractTemplateDirective { - - @Override - public void execute(RenderHandler handler) throws IOException, Exception { - String licenseData = handler.getString("licenseData"); - handler.put("result", false); - if (CommonUtils.notEmpty(licenseData)) { - License license = LicenseUtils.readLicense(VerificationUtils.base64Decode(licenseData)); - handler.put("result", LicenseUtils.verifyLicenseDate(license)); - } - handler.render(); - } - -} diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/directive/tools/VersionDirective.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/directive/tools/VersionDirective.java index 6e3d59640..36cb06b94 100644 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/directive/tools/VersionDirective.java +++ b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/directive/tools/VersionDirective.java @@ -2,10 +2,10 @@ import java.io.IOException; -import com.publiccms.common.base.AbstractTemplateDirective; -import com.publiccms.common.constants.CmsVersion; import org.springframework.stereotype.Component; +import com.publiccms.common.base.AbstractTemplateDirective; +import com.publiccms.common.constants.CmsVersion; import com.publiccms.common.handler.RenderHandler; /** @@ -20,13 +20,6 @@ public class VersionDirective extends AbstractTemplateDirective { public void execute(RenderHandler handler) throws IOException, Exception { handler.put("cms", CmsVersion.getVersion()); handler.put("revision", CmsVersion.getRevision()); - boolean authorizationEdition = CmsVersion.isAuthorizationEdition(); - handler.put("authorizationEdition", authorizationEdition); - if (authorizationEdition) { - handler.put("authorizationStartDate", CmsVersion.getLicense().getStartDate()); - handler.put("authorizationEndDate", CmsVersion.getLicense().getEndDate()); - handler.put("authorizationOrganization", CmsVersion.getLicense().getOrganization()); - } handler.put("cluster", CmsVersion.getClusterId()); handler.put("master", CmsVersion.isMaster()); handler.render(); diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/method/tools/GetLicenseDataMethod.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/method/tools/GetLicenseDataMethod.java deleted file mode 100644 index ac3ed38de..000000000 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/method/tools/GetLicenseDataMethod.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.publiccms.views.method.tools; - -import java.util.List; - -import org.springframework.stereotype.Component; - -import com.publiccms.common.base.BaseMethod; -import com.publiccms.common.constants.CmsVersion; -import com.publiccms.common.tools.LicenseUtils; -import com.publiccms.common.tools.VerificationUtils; - -import freemarker.template.TemplateModelException; - -/** - * - * GetLicenseDateMethod - * - */ -@Component -public class GetLicenseDataMethod extends BaseMethod { - - @Override - public Object exec(@SuppressWarnings("rawtypes") List arguments) throws TemplateModelException { - return VerificationUtils.base64Encode(LicenseUtils.getLicenseDate(CmsVersion.getLicense())); - } - - @Override - public boolean needAppToken() { - return false; - } - - @Override - public int minParametersNumber() { - return 0; - } -} diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/method/tools/GetLicenseMethod.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/method/tools/GetLicenseMethod.java deleted file mode 100644 index 4a8fa59f1..000000000 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/method/tools/GetLicenseMethod.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.publiccms.views.method.tools; - -import java.util.List; - -import com.publiccms.common.constants.CmsVersion; -import org.springframework.stereotype.Component; - -import com.publiccms.common.base.BaseMethod; - -import freemarker.template.TemplateModelException; - -/** - * - * GetLicenseMethod - * - */ -@Component -public class GetLicenseMethod extends BaseMethod { - - @Override - public Object exec(@SuppressWarnings("rawtypes") List arguments) throws TemplateModelException { - return CmsVersion.getLicense(); - } - - @Override - public boolean needAppToken() { - return true; - } - - @Override - public int minParametersNumber() { - return 0; - } -} diff --git a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/method/tools/GetXmlMethod.java b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/method/tools/GetXmlMethod.java index d09800816..85bfc8af8 100644 --- a/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/method/tools/GetXmlMethod.java +++ b/publiccms-parent/publiccms-core/src/main/java/com/publiccms/views/method/tools/GetXmlMethod.java @@ -33,9 +33,9 @@ public Object exec(@SuppressWarnings("rawtypes") List arguments) throws Template if (CommonUtils.notEmpty(str)) { if (uninitialized) { try { - DocumentBuilderFactory dbf = NodeModel.getDocumentBuilderFactory(); + DocumentBuilderFactory dbf = NodeModel.getDocumentBuilderFactory(); dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false); - dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", false); + dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); dbf.setFeature("http://xml.org/sax/features/external-general-entities", false); dbf.setXIncludeAware(false); dbf.setExpandEntityReferences(false); diff --git a/publiccms-parent/publiccms-core/src/main/resources/initialization/template/license.html b/publiccms-parent/publiccms-core/src/main/resources/initialization/template/license.html index 2ee5ea235..a5d78fe3b 100644 --- a/publiccms-parent/publiccms-core/src/main/resources/initialization/template/license.html +++ b/publiccms-parent/publiccms-core/src/main/resources/initialization/template/license.html @@ -1,10 +1,10 @@ 涓銆佹巿鏉冭鍙 - 1.1 鎮ㄥ彲浠ュ厤璐逛慨鏀广佸鍒躲佸垎鍙戞湰杞欢鍙婃湰杞欢鐨勬簮鐮 - 1.2 鎮ㄥ彲浠ュ厤璐硅幏寰楃殑鍩轰簬鍏嶈垂鍗忚鐨勬巿鏉冩枃浠讹紝骞惰幏寰楅潪鍟嗕笟鐢ㄩ旂殑浣跨敤鏉冮檺锛岄潪鍟嗕笟鐢ㄩ旈檺涓汉鐢ㄦ埛浣跨敤 - 1.3 鍟嗕笟鐢ㄩ旂敤鎴峰厑璁镐笉瓒呰繃3涓湀鐨勮瘯鐢紝璇曠敤鏈熼棿锛屽熀浜庢湰杞欢寮鍙戠殑椤甸潰蹇呴』鍦ㄦ樉钁椾綅缃坊鍔燩owered by PublicCMS鏍囪瘑锛屽苟淇濈暀浜у搧涓殑鎺堟潈鍙妉ogo绛夋爣璇 - 1.4 鍦ㄥ皢鏈蒋浠剁敤浣滃晢涓氱敤閫旀椂锛岄渶瑕佸彇寰楄蒋浠剁増鏉冩柟鍟嗕笟浣跨敤鎺堟潈锛屾巿鏉冨崟浣嶅簲涓烘渶缁堜娇鐢ㄤ骇鍝佺殑鐢ㄦ埛鍗曚綅 - 1.5 宸茶幏寰楀晢涓氭巿鏉冪殑鐢ㄦ埛鍙互浣跨敤銆佸鍒躲佷慨鏀广佸垎鍙戞湰杞欢(鍚簮鐮)鍙婂寘鍚湰杞欢(鍚簮鐮)鐨勪骇鍝 - 1.6 璇ュ崗璁粎瀵瑰綋鍓嶇増鏈湁鏁堬紝鍘嗗彶宸插彂甯冪増鏈鍙傜収杞欢鍙戝竷鏃堕檮甯︾殑鎺堟潈鍗忚 + 1.1 璇ヨ蒋浠剁増鏈伒寰狹IT鎺堟潈鍗忚(http://www.opensource.org/licenses/mit-license.php) + 1.2 琚巿鏉冧汉鏈夋潈鍒╀娇鐢ㄣ佸鍒躲佷慨鏀广佸悎骞躲佸嚭鐗堝彂琛屻佹暎甯冦佸啀鎺堟潈鍙婅穿鍞湰杞欢鍙婃湰杞欢鐨勬簮鐮併 + 1.3 琚巿鏉冧汉鍙牴鎹▼寮忕殑闇瑕佷慨鏀规巿鏉冩潯娆句负閫傚綋鐨勫唴瀹广 + 1.4 鍦ㄨ蒋浠跺拰杞欢鐨勬墍鏈夊壇鏈腑閮藉繀椤诲寘鍚増鏉冨0鏄庡拰璁稿彲澹版槑銆 + 1.5 鎮ㄧ殑鍐嶅彂琛岀増鏈紝鍙互浣跨敤PublicCMS鍚嶄箟杩涜瀹d紶銆 + 1.6 鏈蒋浠朵腑鍖呭惈鍏朵粬鎺堟潈鍗忚鐨勭涓夋柟浜у搧璇烽伒瀹堝叾鎺堟潈鍗忚銆 浜屻佺増鏉 2.1 璇ヨ蒋浠剁増鏉冨綊PublicCMS瀹樻柟鎵鏈 涓夈佸厤璐e0鏄 diff --git a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.20180210-V4.0.180707.sql b/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V2017.0708-V2019.sql similarity index 57% rename from publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.20180210-V4.0.180707.sql rename to publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V2017.0708-V2019.sql index 33782c883..971fd4cd9 100644 --- a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.20180210-V4.0.180707.sql +++ b/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V2017.0708-V2019.sql @@ -1,570 +1,1073 @@ -UPDATE `sys_module` SET `authorized_url` = 'sysUser/lookup,cmsContent/recycle,cmsContent/realDelete' WHERE `id` = 117; -ALTER TABLE `sys_user` MODIFY COLUMN `last_login_ip` varchar(64) NULL DEFAULT NULL COMMENT '鏈鍚庣櫥褰昳p' AFTER `last_login_date`; -ALTER TABLE `sys_user_token` MODIFY COLUMN `login_ip` varchar(64) NOT NULL COMMENT '鐧诲綍IP' AFTER `create_date`; --- 20180414 -- -DROP TABLE IF EXISTS `home_active`; -DROP TABLE IF EXISTS `home_article`; -DROP TABLE IF EXISTS `home_article_content`; -DROP TABLE IF EXISTS `home_attention`; -DROP TABLE IF EXISTS `home_broadcast`; -DROP TABLE IF EXISTS `home_comment`; -DROP TABLE IF EXISTS `home_comment_content`; -DROP TABLE IF EXISTS `home_directory`; -DROP TABLE IF EXISTS `home_file`; -DROP TABLE IF EXISTS `home_friend`; -DROP TABLE IF EXISTS `home_friend_apply`; -DROP TABLE IF EXISTS `home_group`; -DROP TABLE IF EXISTS `home_group_apply`; -DROP TABLE IF EXISTS `home_group_post`; -DROP TABLE IF EXISTS `home_group_post_content`; -DROP TABLE IF EXISTS `home_group_user`; -DROP TABLE IF EXISTS `home_score`; -DROP TABLE IF EXISTS `home_user`; -UPDATE `sys_module` SET `parent_id` = 149 WHERE `id` in (150,151,152,153,154); -UPDATE `sys_module` SET `parent_id` = 99 WHERE `id` in (145,146); --- 20180504 -- -UPDATE `sys_module` SET `authorized_url` = 'cmsContent/push_content,cmsContent/push_content_list,cmsContent/push_to_content,cmsContent/push_page,cmsContent/push_page_list,cmsPlace/add,cmsPlace/save,cmsContent/related,cmsContent/unrelated,cmsPlace/delete' WHERE `id` = 23; -INSERT INTO `sys_module` VALUES ('141', '淇敼鍐呭妯″瀷', 'cmsContent/changeModelParameters', 'cmsContent/changeModel', null, '12', '0', '0'); --- 20180605 -- -DELETE FROM `sys_module` WHERE id < 1000; -ALTER TABLE `sys_module` - MODIFY COLUMN `id` varchar(30) NOT NULL FIRST, - MODIFY COLUMN `parent_id` varchar(30) NULL DEFAULT NULL COMMENT '鐖舵ā鍧' AFTER `attached`; -ALTER TABLE `sys_role` MODIFY COLUMN `show_all_module` tinyint(1) NOT NULL COMMENT '鏄剧ず鍏ㄩ儴妯″潡' AFTER `owns_all_right`; -ALTER TABLE `sys_site` MODIFY COLUMN `id` smallint(6) NOT NULL AUTO_INCREMENT FIRST; -ALTER TABLE `cms_place` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `sys_role_module` MODIFY COLUMN `module_id` varchar(30) NOT NULL COMMENT '妯″潡ID' AFTER `role_id`; - -CREATE TABLE `sys_module_lang` ( - `module_id` varchar(30) NOT NULL COMMENT '妯″潡ID', - `lang` varchar(20) NOT NULL COMMENT '璇█', - `value` varchar(100) DEFAULT NULL COMMENT '鍊', - PRIMARY KEY (`module_id`,`lang`) USING BTREE -) COMMENT='妯″潡璇█'; - -INSERT INTO `sys_module_lang` SELECT `id`,'',`name` FROM `sys_module` where id >= 1000; -INSERT INTO `sys_module_lang` SELECT `id`,'en',`name` FROM `sys_module` where id >= 1000; - -INSERT INTO `sys_module_lang` VALUES ('app_add', '', '澧炲姞/淇敼'); -INSERT INTO `sys_module_lang` VALUES ('app_add', 'en', 'Add/edit'); -INSERT INTO `sys_module_lang` VALUES ('app_client_disable', '', '绂佺敤'); -INSERT INTO `sys_module_lang` VALUES ('app_client_disable', 'en', 'Disable'); -INSERT INTO `sys_module_lang` VALUES ('app_client_enable', '', '鍚敤'); -INSERT INTO `sys_module_lang` VALUES ('app_client_enable', 'en', 'Enable'); -INSERT INTO `sys_module_lang` VALUES ('app_client_list', '', '瀹㈡埛绔鐞'); -INSERT INTO `sys_module_lang` VALUES ('app_client_list', 'en', 'Application client management'); -INSERT INTO `sys_module_lang` VALUES ('app_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('app_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('app_list', '', '搴旂敤鎺堟潈'); -INSERT INTO `sys_module_lang` VALUES ('app_list', 'en', 'Application Authorization'); -INSERT INTO `sys_module_lang` VALUES ('category', '', '鍒嗙被'); -INSERT INTO `sys_module_lang` VALUES ('category', 'en', 'Category'); -INSERT INTO `sys_module_lang` VALUES ('category_add', '', '澧炲姞/淇敼'); -INSERT INTO `sys_module_lang` VALUES ('category_add', 'en', 'Add/edit'); -INSERT INTO `sys_module_lang` VALUES ('category_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('category_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('category_extend', '', '鍒嗙被鎵╁睍'); -INSERT INTO `sys_module_lang` VALUES ('category_extend', 'en', 'Category extension'); -INSERT INTO `sys_module_lang` VALUES ('category_menu', '', '鍒嗙被绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('category_menu', 'en', 'Category management'); -INSERT INTO `sys_module_lang` VALUES ('category_move', '', '绉诲姩'); -INSERT INTO `sys_module_lang` VALUES ('category_move', 'en', 'Move'); -INSERT INTO `sys_module_lang` VALUES ('category_publish', '', '鐢熸垚'); -INSERT INTO `sys_module_lang` VALUES ('category_publish', 'en', 'Publish'); -INSERT INTO `sys_module_lang` VALUES ('category_push', '', '鎺ㄨ崘'); -INSERT INTO `sys_module_lang` VALUES ('category_push', 'en', 'Push'); -INSERT INTO `sys_module_lang` VALUES ('category_type_add', '', '澧炲姞/淇敼'); -INSERT INTO `sys_module_lang` VALUES ('category_type_add', 'en', 'test'); -INSERT INTO `sys_module_lang` VALUES ('category_type_change', '', '淇敼绫诲瀷'); -INSERT INTO `sys_module_lang` VALUES ('category_type_change', 'en', 'Change category type'); -INSERT INTO `sys_module_lang` VALUES ('category_type_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('category_type_delete', 'en', 'test'); -INSERT INTO `sys_module_lang` VALUES ('category_type_list', '', '鍒嗙被绫诲瀷'); -INSERT INTO `sys_module_lang` VALUES ('category_type_list', 'en', 'Category type'); -INSERT INTO `sys_module_lang` VALUES ('clearcache', '', '鍒锋柊缂撳瓨'); -INSERT INTO `sys_module_lang` VALUES ('clearcache', 'en', 'Clear cache'); -INSERT INTO `sys_module_lang` VALUES ('config_add', '', '娣诲姞/淇敼'); -INSERT INTO `sys_module_lang` VALUES ('config_add', 'en', 'Add/edit'); -INSERT INTO `sys_module_lang` VALUES ('config_data_delete', '', '娓呯┖閰嶇疆'); -INSERT INTO `sys_module_lang` VALUES ('config_data_delete', 'en', 'Clear config data'); -INSERT INTO `sys_module_lang` VALUES ('config_data_edit', '', '淇敼'); -INSERT INTO `sys_module_lang` VALUES ('config_data_edit', 'en', 'Edit'); -INSERT INTO `sys_module_lang` VALUES ('config_data_list', '', '绔欑偣閰嶇疆'); -INSERT INTO `sys_module_lang` VALUES ('config_data_list', 'en', 'Site configuration'); -INSERT INTO `sys_module_lang` VALUES ('config_delete', '', '鍒犻櫎閰嶇疆'); -INSERT INTO `sys_module_lang` VALUES ('config_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('config_list', '', '绔欑偣閰嶇疆绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('config_list', 'en', 'Site config management'); -INSERT INTO `sys_module_lang` VALUES ('config_list_data_dictionary', '', '閫夋嫨鏁版嵁瀛楀吀'); -INSERT INTO `sys_module_lang` VALUES ('config_list_data_dictionary', 'en', 'Select data dictionary'); -INSERT INTO `sys_module_lang` VALUES ('config_menu', '', '閰嶇疆绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('config_menu', 'en', 'Configuration management'); -INSERT INTO `sys_module_lang` VALUES ('content', '', '鍐呭'); -INSERT INTO `sys_module_lang` VALUES ('content', 'en', 'Content'); -INSERT INTO `sys_module_lang` VALUES ('content_add', '', '澧炲姞/淇敼'); -INSERT INTO `sys_module_lang` VALUES ('content_add', 'en', 'Add/edit'); -INSERT INTO `sys_module_lang` VALUES ('content_check', '', '瀹℃牳'); -INSERT INTO `sys_module_lang` VALUES ('content_check', 'en', 'Check'); -INSERT INTO `sys_module_lang` VALUES ('content_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('content_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('content_extend', '', '鍐呭鎵╁睍'); -INSERT INTO `sys_module_lang` VALUES ('content_extend', 'en', 'Content extension'); -INSERT INTO `sys_module_lang` VALUES ('content_menu', '', '鍐呭绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('content_menu', 'en', 'Content management'); -INSERT INTO `sys_module_lang` VALUES ('content_move', '', '绉诲姩'); -INSERT INTO `sys_module_lang` VALUES ('content_move', 'en', 'Move'); -INSERT INTO `sys_module_lang` VALUES ('content_publish', '', '鐢熸垚'); -INSERT INTO `sys_module_lang` VALUES ('content_publish', 'en', 'Publish'); -INSERT INTO `sys_module_lang` VALUES ('content_push', '', '鎺ㄨ崘'); -INSERT INTO `sys_module_lang` VALUES ('content_push', 'en', 'Push'); -INSERT INTO `sys_module_lang` VALUES ('content_recycle_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('content_recycle_delete', 'en', 'test'); -INSERT INTO `sys_module_lang` VALUES ('content_recycle_list', '', '鍐呭鍥炴敹绔'); -INSERT INTO `sys_module_lang` VALUES ('content_recycle_list', 'en', 'Content recycle'); -INSERT INTO `sys_module_lang` VALUES ('content_recycle_recycle', '', '杩樺師'); -INSERT INTO `sys_module_lang` VALUES ('content_recycle_recycle', 'en', 'test'); -INSERT INTO `sys_module_lang` VALUES ('content_refresh', '', '鍒锋柊'); -INSERT INTO `sys_module_lang` VALUES ('content_refresh', 'en', 'Refresh'); -INSERT INTO `sys_module_lang` VALUES ('content_select_category', '', '閫夋嫨鍒嗙被'); -INSERT INTO `sys_module_lang` VALUES ('content_select_category', 'en', 'Select category'); -INSERT INTO `sys_module_lang` VALUES ('content_select_category_type', '', '閫夋嫨鍒嗙被绫诲瀷'); -INSERT INTO `sys_module_lang` VALUES ('content_select_category_type', 'en', 'Select category type'); -INSERT INTO `sys_module_lang` VALUES ('content_select_content', '', '閫夋嫨鍐呭'); -INSERT INTO `sys_module_lang` VALUES ('content_select_content', 'en', 'Select content'); -INSERT INTO `sys_module_lang` VALUES ('content_select_tag_type', '', '閫夋嫨鏍囩绫诲瀷'); -INSERT INTO `sys_module_lang` VALUES ('content_select_tag_type', 'en', 'Select tag type'); -INSERT INTO `sys_module_lang` VALUES ('content_select_template', '', '閫夋嫨妯℃澘'); -INSERT INTO `sys_module_lang` VALUES ('content_select_template', 'en', 'Select template'); -INSERT INTO `sys_module_lang` VALUES ('content_select_user', '', '閫夋嫨鐢ㄦ埛'); -INSERT INTO `sys_module_lang` VALUES ('content_select_user', 'en', 'Select user'); -INSERT INTO `sys_module_lang` VALUES ('content_sort', '', '缃《'); -INSERT INTO `sys_module_lang` VALUES ('content_sort', 'en', 'Sort'); -INSERT INTO `sys_module_lang` VALUES ('content_uncheck', '', '鎾ら攢瀹℃牳'); -INSERT INTO `sys_module_lang` VALUES ('content_uncheck', 'en', 'Uncheck'); -INSERT INTO `sys_module_lang` VALUES ('content_view', '', '鏌ョ湅'); -INSERT INTO `sys_module_lang` VALUES ('content_view', 'en', 'View'); -INSERT INTO `sys_module_lang` VALUES ('dept_add', '', '澧炲姞/淇敼'); -INSERT INTO `sys_module_lang` VALUES ('dept_add', 'en', 'Add/edit'); -INSERT INTO `sys_module_lang` VALUES ('dept_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('dept_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('dept_list', '', '閮ㄩ棬绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('dept_list', 'en', 'Department management'); -INSERT INTO `sys_module_lang` VALUES ('dept_user_list', '', '浜哄憳绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('dept_user_list', 'en', 'Department user management'); -INSERT INTO `sys_module_lang` VALUES ('develop', '', '寮鍙'); -INSERT INTO `sys_module_lang` VALUES ('develop', 'en', 'Development'); -INSERT INTO `sys_module_lang` VALUES ('dictionary_add', '', '娣诲姞/淇敼'); -INSERT INTO `sys_module_lang` VALUES ('dictionary_add', 'en', 'Add/edit'); -INSERT INTO `sys_module_lang` VALUES ('dictionary_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('dictionary_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('dictionary_list', '', '鏁版嵁瀛楀吀'); -INSERT INTO `sys_module_lang` VALUES ('dictionary_list', 'en', 'Dictionary management'); -INSERT INTO `sys_module_lang` VALUES ('domain_config', '', '淇敼'); -INSERT INTO `sys_module_lang` VALUES ('domain_config', 'en', 'Edit'); -INSERT INTO `sys_module_lang` VALUES ('domain_list', '', '缁戝畾鍩熷悕'); -INSERT INTO `sys_module_lang` VALUES ('domain_list', 'en', 'Domain management'); -INSERT INTO `sys_module_lang` VALUES ('file_menu', '', '鏂囦欢绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('file_menu', 'en', 'File maintenance'); -INSERT INTO `sys_module_lang` VALUES ('log_login', '', '鐧诲綍鏃ュ織'); -INSERT INTO `sys_module_lang` VALUES ('log_login', 'en', 'Login log'); -INSERT INTO `sys_module_lang` VALUES ('log_login_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('log_login_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('log_menu', '', '鏃ュ織绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('log_menu', 'en', 'Log management'); -INSERT INTO `sys_module_lang` VALUES ('log_operate', '', '鎿嶄綔鏃ュ織'); -INSERT INTO `sys_module_lang` VALUES ('log_operate', 'en', 'Operate log'); -INSERT INTO `sys_module_lang` VALUES ('log_operate_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('log_operate_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('log_operate_view', '', '鏌ョ湅'); -INSERT INTO `sys_module_lang` VALUES ('log_operate_view', 'en', 'View'); -INSERT INTO `sys_module_lang` VALUES ('log_task', '', '浠诲姟璁″垝鏃ュ織'); -INSERT INTO `sys_module_lang` VALUES ('log_task', 'en', 'Task log'); -INSERT INTO `sys_module_lang` VALUES ('log_task_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('log_task_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('log_task_view', '', '鏌ョ湅'); -INSERT INTO `sys_module_lang` VALUES ('log_task_view', 'en', 'View'); -INSERT INTO `sys_module_lang` VALUES ('log_upload', '', '鏂囦欢涓婁紶鏃ュ織'); -INSERT INTO `sys_module_lang` VALUES ('log_upload', 'en', 'Upload log'); -INSERT INTO `sys_module_lang` VALUES ('maintenance', '', '缁存姢'); -INSERT INTO `sys_module_lang` VALUES ('maintenance', 'en', 'Maintenance'); -INSERT INTO `sys_module_lang` VALUES ('model_add', '', '澧炲姞/淇敼'); -INSERT INTO `sys_module_lang` VALUES ('model_add', 'en', 'Add/edit'); -INSERT INTO `sys_module_lang` VALUES ('model_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('model_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('model_list', '', '鍐呭妯″瀷绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('model_list', 'en', 'Model management'); -INSERT INTO `sys_module_lang` VALUES ('myself', '', '涓汉'); -INSERT INTO `sys_module_lang` VALUES ('myself', 'en', 'Myself'); -INSERT INTO `sys_module_lang` VALUES ('myself_content', '', '鎴戠殑鍐呭'); -INSERT INTO `sys_module_lang` VALUES ('myself_content', 'en', 'My content'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_add', '', '淇敼'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_add', 'en', 'Add'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_publish', '', '鐢熸垚'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_publish', 'en', 'Publish'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_push', '', '鎺ㄨ崘'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_push', 'en', 'Push'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_refresh', '', '鍒锋柊'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_refresh', 'en', 'Refresh'); -INSERT INTO `sys_module_lang` VALUES ('myself_log_login', '', '鎴戠殑鐧诲綍鏃ュ織'); -INSERT INTO `sys_module_lang` VALUES ('myself_log_login', 'en', 'My login log'); -INSERT INTO `sys_module_lang` VALUES ('myself_log_operate', '', '鎴戠殑鎿嶄綔鏃ュ織'); -INSERT INTO `sys_module_lang` VALUES ('myself_log_operate', 'en', 'My operate log'); -INSERT INTO `sys_module_lang` VALUES ('myself_menu', '', '涓庢垜鐩稿叧'); -INSERT INTO `sys_module_lang` VALUES ('myself_menu', 'en', 'My account'); -INSERT INTO `sys_module_lang` VALUES ('myself_password', '', '淇敼瀵嗙爜'); -INSERT INTO `sys_module_lang` VALUES ('myself_password', 'en', 'Change password'); -INSERT INTO `sys_module_lang` VALUES ('myself_token', '', '鎴戠殑鐧诲綍鎺堟潈'); -INSERT INTO `sys_module_lang` VALUES ('myself_token', 'en', 'My login token'); -INSERT INTO `sys_module_lang` VALUES ('page', '', '椤甸潰'); -INSERT INTO `sys_module_lang` VALUES ('page', 'en', 'Page'); -INSERT INTO `sys_module_lang` VALUES ('page_list', '', '椤甸潰绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('page_list', 'en', 'Page management'); -INSERT INTO `sys_module_lang` VALUES ('page_menu', '', '椤甸潰缁存姢'); -INSERT INTO `sys_module_lang` VALUES ('page_menu', 'en', 'Page maintenance'); -INSERT INTO `sys_module_lang` VALUES ('page_metadata', '', '鍏冩暟鎹鐞'); -INSERT INTO `sys_module_lang` VALUES ('page_metadata', 'en', 'Metadata management'); -INSERT INTO `sys_module_lang` VALUES ('page_publish', '', '鐢熸垚椤甸潰'); -INSERT INTO `sys_module_lang` VALUES ('page_publish', 'en', 'Publish'); -INSERT INTO `sys_module_lang` VALUES ('page_save', '', '淇濆瓨椤甸潰閰嶇疆'); -INSERT INTO `sys_module_lang` VALUES ('page_save', 'en', 'Save configuration'); -INSERT INTO `sys_module_lang` VALUES ('page_select_category', '', '閫夋嫨鍒嗙被'); -INSERT INTO `sys_module_lang` VALUES ('page_select_category', 'en', 'Select category'); -INSERT INTO `sys_module_lang` VALUES ('page_select_category_type', '', '閫夋嫨鍒嗙被绫诲瀷'); -INSERT INTO `sys_module_lang` VALUES ('page_select_category_type', 'en', 'Select category type'); -INSERT INTO `sys_module_lang` VALUES ('page_select_content', '', '閫夋嫨鍐呭'); -INSERT INTO `sys_module_lang` VALUES ('page_select_content', 'en', 'Select content'); -INSERT INTO `sys_module_lang` VALUES ('page_select_tag_type', '', '閫夋嫨鏍囩绫诲瀷'); -INSERT INTO `sys_module_lang` VALUES ('page_select_tag_type', 'en', 'Select tag type'); -INSERT INTO `sys_module_lang` VALUES ('page_select_template', '', '閫夋嫨妯℃澘'); -INSERT INTO `sys_module_lang` VALUES ('page_select_template', 'en', 'Select template'); -INSERT INTO `sys_module_lang` VALUES ('page_select_user', '', '閫夋嫨鐢ㄦ埛'); -INSERT INTO `sys_module_lang` VALUES ('page_select_user', 'en', 'Select user'); -INSERT INTO `sys_module_lang` VALUES ('place_add', '', '澧炲姞/淇敼鎺ㄨ崘浣嶆暟鎹'); -INSERT INTO `sys_module_lang` VALUES ('place_add', 'en', 'Add/edit'); -INSERT INTO `sys_module_lang` VALUES ('place_check', '', '瀹℃牳鎺ㄨ崘浣嶆暟鎹'); -INSERT INTO `sys_module_lang` VALUES ('place_check', 'en', 'Check'); -INSERT INTO `sys_module_lang` VALUES ('place_clear', '', '娓呯┖鎺ㄨ崘浣嶆暟鎹'); -INSERT INTO `sys_module_lang` VALUES ('place_clear', 'en', 'Clear'); -INSERT INTO `sys_module_lang` VALUES ('place_data_list', '', '鎺ㄨ崘浣嶆暟鎹'); -INSERT INTO `sys_module_lang` VALUES ('place_data_list', 'en', 'Page fragment data'); -INSERT INTO `sys_module_lang` VALUES ('place_delete', '', '鍒犻櫎鎺ㄨ崘浣嶆暟鎹'); -INSERT INTO `sys_module_lang` VALUES ('place_delete', 'en', 'data'); -INSERT INTO `sys_module_lang` VALUES ('place_list', '', '椤甸潰鐗囨绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('place_list', 'en', 'Page fragment management'); -INSERT INTO `sys_module_lang` VALUES ('place_publish', '', '鍙戝竷'); -INSERT INTO `sys_module_lang` VALUES ('place_publish', 'en', 'Publish'); -INSERT INTO `sys_module_lang` VALUES ('place_refresh', '', '鍒锋柊鎺ㄨ崘浣嶆暟鎹'); -INSERT INTO `sys_module_lang` VALUES ('place_refresh', 'en', 'Refresh'); -INSERT INTO `sys_module_lang` VALUES ('place_template_content', '', '淇敼'); -INSERT INTO `sys_module_lang` VALUES ('place_template_content', 'en', 'Edit template'); -INSERT INTO `sys_module_lang` VALUES ('place_template_data_dictionary', '', '閫夋嫨鏁版嵁瀛楀吀'); -INSERT INTO `sys_module_lang` VALUES ('place_template_data_dictionary', 'en', 'Select data dictionary'); -INSERT INTO `sys_module_lang` VALUES ('place_template_fragment', '', '妯℃澘鐗囨'); -INSERT INTO `sys_module_lang` VALUES ('place_template_fragment', 'en', 'Template fragment'); -INSERT INTO `sys_module_lang` VALUES ('place_template_help', '', '妯℃澘甯姪'); -INSERT INTO `sys_module_lang` VALUES ('place_template_help', 'en', 'Template help'); -INSERT INTO `sys_module_lang` VALUES ('place_template_list', '', '椤甸潰鐗囨妯℃澘'); -INSERT INTO `sys_module_lang` VALUES ('place_template_list', 'en', 'Page fragment template'); -INSERT INTO `sys_module_lang` VALUES ('place_template_metadata', '', '淇敼鍏冩暟鎹'); -INSERT INTO `sys_module_lang` VALUES ('place_template_metadata', 'en', 'Edit metadata'); -INSERT INTO `sys_module_lang` VALUES ('place_template_place', '', '椤甸潰鐗囨'); -INSERT INTO `sys_module_lang` VALUES ('place_template_place', 'en', 'Page fragment'); -INSERT INTO `sys_module_lang` VALUES ('place_template_webfile', '', '缃戠珯鏂囦欢'); -INSERT INTO `sys_module_lang` VALUES ('place_template_webfile', 'en', 'Website file'); -INSERT INTO `sys_module_lang` VALUES ('place_view', '', '鏌ョ湅鎺ㄨ崘浣嶆暟鎹'); -INSERT INTO `sys_module_lang` VALUES ('place_view', 'en', 'View'); -INSERT INTO `sys_module_lang` VALUES ('report_user', '', '鐢ㄦ埛鏁版嵁鐩戞帶'); -INSERT INTO `sys_module_lang` VALUES ('report_user', 'en', 'User report'); -INSERT INTO `sys_module_lang` VALUES ('role_add', '', '澧炲姞/淇敼'); -INSERT INTO `sys_module_lang` VALUES ('role_add', 'en', 'Add/edit'); -INSERT INTO `sys_module_lang` VALUES ('role_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('role_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('role_list', '', '瑙掕壊绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('role_list', 'en', 'Role management'); -INSERT INTO `sys_module_lang` VALUES ('system_menu', '', '绯荤粺缁存姢'); -INSERT INTO `sys_module_lang` VALUES ('system_menu', 'en', 'System maintenance'); -INSERT INTO `sys_module_lang` VALUES ('tag_add', '', '澧炲姞/淇敼'); -INSERT INTO `sys_module_lang` VALUES ('tag_add', 'en', 'Add/edit'); -INSERT INTO `sys_module_lang` VALUES ('tag_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('tag_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('tag_list', '', '鏍囩绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('tag_list', 'en', 'Tag management'); -INSERT INTO `sys_module_lang` VALUES ('tag_type_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('tag_type_delete', 'en', 'test'); -INSERT INTO `sys_module_lang` VALUES ('tag_type_list', '', '鏍囩鍒嗙被'); -INSERT INTO `sys_module_lang` VALUES ('tag_type_list', 'en', 'Tag type'); -INSERT INTO `sys_module_lang` VALUES ('tag_type_save', '', '澧炲姞/淇敼'); -INSERT INTO `sys_module_lang` VALUES ('tag_type_save', 'en', 'test'); -INSERT INTO `sys_module_lang` VALUES ('task_add', '', '澧炲姞/淇敼'); -INSERT INTO `sys_module_lang` VALUES ('task_add', 'en', 'Add/edit'); -INSERT INTO `sys_module_lang` VALUES ('task_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('task_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('task_list', '', '浠诲姟璁″垝'); -INSERT INTO `sys_module_lang` VALUES ('task_list', 'en', 'Task management'); -INSERT INTO `sys_module_lang` VALUES ('task_pause', '', '鏆傚仠'); -INSERT INTO `sys_module_lang` VALUES ('task_pause', 'en', 'Pause'); -INSERT INTO `sys_module_lang` VALUES ('task_recreate', '', '閲嶆柊鍒濆鍖'); -INSERT INTO `sys_module_lang` VALUES ('task_recreate', 'en', 'Recreate'); -INSERT INTO `sys_module_lang` VALUES ('task_resume', '', '鎭㈠'); -INSERT INTO `sys_module_lang` VALUES ('task_resume', 'en', 'Resume'); -INSERT INTO `sys_module_lang` VALUES ('task_runonce', '', '绔嬪埢鎵ц'); -INSERT INTO `sys_module_lang` VALUES ('task_runonce', 'en', 'Run once'); -INSERT INTO `sys_module_lang` VALUES ('task_template_content', '', '淇敼'); -INSERT INTO `sys_module_lang` VALUES ('task_template_content', 'en', 'Edit'); -INSERT INTO `sys_module_lang` VALUES ('task_template_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('task_template_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('task_template_fragment', '', '浠诲姟璁″垝鑴氭湰鐗囨'); -INSERT INTO `sys_module_lang` VALUES ('task_template_fragment', 'en', 'Task script fragment'); -INSERT INTO `sys_module_lang` VALUES ('task_template_help', '', '甯姪'); -INSERT INTO `sys_module_lang` VALUES ('task_template_help', 'en', 'help'); -INSERT INTO `sys_module_lang` VALUES ('task_template_list', '', '浠诲姟璁″垝鑴氭湰'); -INSERT INTO `sys_module_lang` VALUES ('task_template_list', 'en', 'Task template management'); -INSERT INTO `sys_module_lang` VALUES ('template_content', '', '淇敼'); -INSERT INTO `sys_module_lang` VALUES ('template_content', 'en', 'Edit'); -INSERT INTO `sys_module_lang` VALUES ('template_content-type', '', '閫夋嫨content-type'); -INSERT INTO `sys_module_lang` VALUES ('template_content-type', 'en', 'Select content-type'); -INSERT INTO `sys_module_lang` VALUES ('template_content_form', '', '鍐呭鎶曠ǹ琛ㄥ崟'); -INSERT INTO `sys_module_lang` VALUES ('template_content_form', 'en', 'Content contribute form'); -INSERT INTO `sys_module_lang` VALUES ('template_data_dictionary', '', '閫夋嫨鏁版嵁瀛楀吀'); -INSERT INTO `sys_module_lang` VALUES ('template_data_dictionary', 'en', 'Select data dictionary'); -INSERT INTO `sys_module_lang` VALUES ('template_delete', '', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('template_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('template_demo', '', '妯℃澘绀轰緥'); -INSERT INTO `sys_module_lang` VALUES ('template_demo', 'en', 'Template example'); -INSERT INTO `sys_module_lang` VALUES ('template_fragment', '', '妯℃澘鐗囨'); -INSERT INTO `sys_module_lang` VALUES ('template_fragment', 'en', 'Template fragment'); -INSERT INTO `sys_module_lang` VALUES ('template_help', '', '妯℃澘甯姪'); -INSERT INTO `sys_module_lang` VALUES ('template_help', 'en', 'Template help'); -INSERT INTO `sys_module_lang` VALUES ('template_list', '', '妯℃澘鏂囦欢绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('template_list', 'en', 'Template management'); -INSERT INTO `sys_module_lang` VALUES ('template_metadata', '', '淇敼鍏冩暟鎹'); -INSERT INTO `sys_module_lang` VALUES ('template_metadata', 'en', 'Edit metadata'); -INSERT INTO `sys_module_lang` VALUES ('template_place', '', '椤甸潰鐗囨'); -INSERT INTO `sys_module_lang` VALUES ('template_place', 'en', 'Page fragment'); -INSERT INTO `sys_module_lang` VALUES ('template_place_form', '', '椤甸潰鐗囨鎶曠ǹ琛ㄥ崟'); -INSERT INTO `sys_module_lang` VALUES ('template_place_form', 'en', 'Page fragment data contribute form'); -INSERT INTO `sys_module_lang` VALUES ('template_upload', '', '涓婁紶妯℃澘'); -INSERT INTO `sys_module_lang` VALUES ('template_upload', 'en', 'Upload template'); -INSERT INTO `sys_module_lang` VALUES ('template_website_file', '', '缃戠珯鏂囦欢'); -INSERT INTO `sys_module_lang` VALUES ('template_website_file', 'en', 'Website file'); -INSERT INTO `sys_module_lang` VALUES ('user_add', '', '澧炲姞/淇敼'); -INSERT INTO `sys_module_lang` VALUES ('user_add', 'en', 'Add/edit'); -INSERT INTO `sys_module_lang` VALUES ('user_disable', '', '绂佺敤'); -INSERT INTO `sys_module_lang` VALUES ('user_disable', 'en', 'Disable'); -INSERT INTO `sys_module_lang` VALUES ('user_enable', '', '鍚敤'); -INSERT INTO `sys_module_lang` VALUES ('user_enable', 'en', 'Enable'); -INSERT INTO `sys_module_lang` VALUES ('user_list', '', '鐢ㄦ埛绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('user_list', 'en', 'User management'); -INSERT INTO `sys_module_lang` VALUES ('user_menu', '', '鐢ㄦ埛绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('user_menu', 'en', 'User maintenance'); -INSERT INTO `sys_module_lang` VALUES ('webfile_content', '', '淇敼鏂囦欢'); -INSERT INTO `sys_module_lang` VALUES ('webfile_content', 'en', 'Edit file'); -INSERT INTO `sys_module_lang` VALUES ('webfile_directory', '', '鏂板缓鐩綍'); -INSERT INTO `sys_module_lang` VALUES ('webfile_directory', 'en', 'Create Directory'); -INSERT INTO `sys_module_lang` VALUES ('webfile_list', '', '缃戠珯鏂囦欢绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('webfile_list', 'en', 'Website file management'); -INSERT INTO `sys_module_lang` VALUES ('webfile_unzip', '', '瑙e帇缂'); -INSERT INTO `sys_module_lang` VALUES ('webfile_unzip', 'en', 'Decompress'); -INSERT INTO `sys_module_lang` VALUES ('webfile_upload', '', '涓婁紶'); -INSERT INTO `sys_module_lang` VALUES ('webfile_upload', 'en', 'Upload'); -INSERT INTO `sys_module_lang` VALUES ('webfile_zip', '', '鍘嬬缉'); -INSERT INTO `sys_module_lang` VALUES ('webfile_zip', 'en', 'Compress'); -INSERT INTO `sys_module_lang` VALUES ('word_list', '', '鎼滅储璇嶇鐞'); -INSERT INTO `sys_module_lang` VALUES ('word_list', 'en', 'Search word management'); - -ALTER TABLE `sys_module` DROP COLUMN `name`, - DROP INDEX `parent_id`, - DROP INDEX `url`, - ADD INDEX `parent_id`(`parent_id`, `menu`); - -INSERT INTO `sys_module` VALUES ('app_add', 'sysApp/add', 'sysApp/save', NULL, 'app_list', 0, 0); -INSERT INTO `sys_module` VALUES ('app_client_disable', NULL, 'sysAppClient/disable', NULL, 'app_client_list', 0, 0); -INSERT INTO `sys_module` VALUES ('app_client_enable', NULL, 'sysAppClient/enable', NULL, 'app_client_list', 0, 0); -INSERT INTO `sys_module` VALUES ('app_client_list', 'sysAppClient/list', NULL, '', 'user_menu', 1, 4); -INSERT INTO `sys_module` VALUES ('app_delete', NULL, 'sysApp/delete', NULL, 'app_list', 0, 0); -INSERT INTO `sys_module` VALUES ('app_list', 'sysApp/list', NULL, '', 'system_menu', 1, 5); -INSERT INTO `sys_module` VALUES ('category', NULL, NULL, '', NULL, 1, 5); -INSERT INTO `sys_module` VALUES ('category_add', 'cmsCategory/add', 'cmsCategory/addMore,cmsTemplate/lookup,cmsCategory/categoryPath,cmsCategory/contentPath,file/doUpload,cmsCategory/save', '', 'category_menu', 0, 0); -INSERT INTO `sys_module` VALUES ('category_delete', NULL, 'cmsCategory/delete', '', 'category_menu', 0, 0); -INSERT INTO `sys_module` VALUES ('category_extend', NULL, NULL, '', 'category', 1, 2); -INSERT INTO `sys_module` VALUES ('category_menu', 'cmsCategory/list', NULL, '', 'category', 1, 1); -INSERT INTO `sys_module` VALUES ('category_move', 'cmsCategory/moveParameters', 'cmsCategory/move,cmsCategory/lookup', '', 'category_menu', 0, 0); -INSERT INTO `sys_module` VALUES ('category_publish', 'cmsCategory/publishParameters', 'cmsCategory/publish', '', 'category_menu', 0, 0); -INSERT INTO `sys_module` VALUES ('category_push', 'cmsCategory/push_page', 'cmsPlace/push,cmsPlace/add,cmsPlace/save', '', 'category_menu', 0, 0); -INSERT INTO `sys_module` VALUES ('category_type_add', 'cmsCategoryType/add', 'cmsCategoryType/save', NULL, 'category_type_list', 0, 0); -INSERT INTO `sys_module` VALUES ('category_type_change', 'cmsCategory/changeTypeParameters', 'cmsCategory/changeType', '', 'category_menu', 0, 0); -INSERT INTO `sys_module` VALUES ('category_type_delete', NULL, 'cmsCategoryType/delete', NULL, 'category_type_list', 0, 0); -INSERT INTO `sys_module` VALUES ('category_type_list', 'cmsCategoryType/list', NULL, '', 'category_extend', 1, 1); -INSERT INTO `sys_module` VALUES ('clearcache', NULL, 'clearCache', '', NULL, 0, 10); -INSERT INTO `sys_module` VALUES ('config_add', 'sysConfig/add', 'sysConfig/save', NULL, 'config_list', 0, 0); -INSERT INTO `sys_module` VALUES ('config_data_delete', NULL, 'sysConfigData/delete', NULL, 'config_data_list', 0, 0); -INSERT INTO `sys_module` VALUES ('config_data_edit', 'sysConfigData/edit', 'sysConfigData/save', NULL, 'config_data_list', 0, 0); -INSERT INTO `sys_module` VALUES ('config_data_list', 'sysConfigData/list', NULL, '', 'system_menu', 1, 1); -INSERT INTO `sys_module` VALUES ('config_delete', NULL, 'sysConfig/delete', NULL, 'config_list', 0, 0); -INSERT INTO `sys_module` VALUES ('config_list', 'sysConfig/list', NULL, '', 'config_menu', 1, 2); -INSERT INTO `sys_module` VALUES ('config_list_data_dictionary', 'cmsDictionary/lookup', NULL, NULL, 'config_list', 0, 0); -INSERT INTO `sys_module` VALUES ('config_menu', NULL, NULL, '', 'develop', 1, 2); -INSERT INTO `sys_module` VALUES ('content', NULL, NULL, '', NULL, 1, 2); -INSERT INTO `sys_module` VALUES ('content_add', 'cmsContent/add', 'cmsContent/addMore,cmsContent/save,ueditor', '', 'content_menu', 1, 0); -INSERT INTO `sys_module` VALUES ('content_check', NULL, 'cmsContent/check', '', 'content_menu', 1, 0); -INSERT INTO `sys_module` VALUES ('content_delete', NULL, 'cmsContent/delete', '', 'content_menu', 1, 0); -INSERT INTO `sys_module` VALUES ('content_extend', NULL, NULL, '', 'content', 1, 1); -INSERT INTO `sys_module` VALUES ('content_menu', 'cmsContent/list', 'sysUser/lookup', '', 'content', 1, 0); -INSERT INTO `sys_module` VALUES ('content_move', 'cmsContent/moveParameters', 'cmsContent/move', '', 'content_menu', 1, 0); -INSERT INTO `sys_module` VALUES ('content_publish', NULL, 'cmsContent/publish', '', 'content_menu', 1, 0); -INSERT INTO `sys_module` VALUES ('content_push', 'cmsContent/push', 'cmsContent/push_content,cmsContent/push_content_list,cmsContent/push_to_content,cmsContent/push_page,cmsContent/push_page_list,cmsPlace/add,cmsPlace/save,cmsContent/related,cmsContent/unrelated,cmsPlace/delete', '', 'content_menu', 1, 0); -INSERT INTO `sys_module` VALUES ('content_recycle_delete', NULL, 'cmsContent/realDelete', NULL, 'content_recycle_list', 0, 0); -INSERT INTO `sys_module` VALUES ('content_recycle_list', 'cmsRecycleContent/list', 'sysUser/lookup', '', 'content_extend', 1, 3); -INSERT INTO `sys_module` VALUES ('content_recycle_recycle', NULL, 'cmsContent/recycle', NULL, 'content_recycle_list', 0, 0); -INSERT INTO `sys_module` VALUES ('content_refresh', NULL, 'cmsContent/refresh', '', 'content_menu', 1, 0); -INSERT INTO `sys_module` VALUES ('content_select_category', 'cmsCategory/lookup', NULL, NULL, 'content_add', 0, 0); -INSERT INTO `sys_module` VALUES ('content_select_category_type', 'cmsCategoryType/lookup', NULL, NULL, 'content_add', 0, 0); -INSERT INTO `sys_module` VALUES ('content_select_content', 'cmsContent/lookup', 'cmsContent/lookup_list', NULL, 'content_add', 0, 0); -INSERT INTO `sys_module` VALUES ('content_select_tag_type', 'cmsTagType/lookup', NULL, NULL, 'content_add', 0, 0); -INSERT INTO `sys_module` VALUES ('content_select_template', 'cmsTemplate/lookup', NULL, NULL, 'content_add', 0, 0); -INSERT INTO `sys_module` VALUES ('content_select_user', 'sysUser/lookup', NULL, NULL, 'content_add', 0, 0); -INSERT INTO `sys_module` VALUES ('content_sort', 'cmsContent/sortParameters', 'cmsContent/sort', '', 'content_menu', 0, 0); -INSERT INTO `sys_module` VALUES ('content_uncheck', NULL, 'cmsContent/uncheck', '', 'content_menu', 0, 0); -INSERT INTO `sys_module` VALUES ('content_view', 'cmsContent/view', NULL, '', 'content_menu', 0, 0); -INSERT INTO `sys_module` VALUES ('dept_add', 'sysDept/add', 'sysDept/lookup,sysUser/lookup,sysDept/save', NULL, 'dept_list', 0, 0); -INSERT INTO `sys_module` VALUES ('dept_delete', NULL, 'sysDept/delete', NULL, 'dept_list', 0, 0); -INSERT INTO `sys_module` VALUES ('dept_list', 'sysDept/list', 'sysDept/lookup,sysUser/lookup', '', 'user_menu', 1, 2); -INSERT INTO `sys_module` VALUES ('dept_user_list', 'sysDept/userList', 'sysDept/addUser,sysDept/saveUser,sysDept/enableUser,sysDept/disableUser', NULL, 'dept_list', 0, 0); -INSERT INTO `sys_module` VALUES ('develop', NULL, NULL, '', NULL, 1, 7); -INSERT INTO `sys_module` VALUES ('dictionary_add', 'cmsDictionary/add', 'cmsDictionary/save', NULL, 'dictionary_list', 0, 0); -INSERT INTO `sys_module` VALUES ('dictionary_delete', NULL, 'cmsDictionary/delete', NULL, 'dictionary_list', 0, 0); -INSERT INTO `sys_module` VALUES ('dictionary_list', 'cmsDictionary/list', NULL, '', 'system_menu', 1, 4); -INSERT INTO `sys_module` VALUES ('domain_config', 'sysDomain/config', 'sysDomain/saveConfig,cmsTemplate/directoryLookup,cmsTemplate/lookup', NULL, 'domain_list', 0, 0); -INSERT INTO `sys_module` VALUES ('domain_list', 'sysDomain/domainList', NULL, '', 'system_menu', 1, 3); -INSERT INTO `sys_module` VALUES ('file_menu', NULL, NULL, '', 'develop', 1, 1); -INSERT INTO `sys_module` VALUES ('log_login', 'log/login', 'sysUser/lookup', '', 'log_menu', 1, 3); -INSERT INTO `sys_module` VALUES ('log_login_delete', NULL, 'logLogin/delete', NULL, 'log_login', 0, 0); -INSERT INTO `sys_module` VALUES ('log_menu', NULL, NULL, '', 'maintenance', 1, 3); -INSERT INTO `sys_module` VALUES ('log_operate', 'log/operate', 'sysUser/lookup', '', 'log_menu', 1, 2); -INSERT INTO `sys_module` VALUES ('log_operate_delete', NULL, 'logOperate/delete', NULL, 'log_operate', 0, 0); -INSERT INTO `sys_module` VALUES ('log_operate_view', 'log/operateView', NULL, NULL, 'log_operate', 0, 0); -INSERT INTO `sys_module` VALUES ('log_task', 'log/task', 'sysUser/lookup', '', 'log_menu', 1, 4); -INSERT INTO `sys_module` VALUES ('log_task_delete', NULL, 'logTask/delete', NULL, 'log_task', 0, 0); -INSERT INTO `sys_module` VALUES ('log_task_view', 'log/taskView', NULL, NULL, 'log_task', 0, 0); -INSERT INTO `sys_module` VALUES ('log_upload', 'log/upload', 'sysUser/lookup', '', 'log_menu', 1, 1); -INSERT INTO `sys_module` VALUES ('maintenance', NULL, NULL, '', NULL, 1, 6); -INSERT INTO `sys_module` VALUES ('model_add', 'cmsModel/add', 'cmsModel/save,cmsTemplate/lookup', NULL, 'model_list', 0, 0); -INSERT INTO `sys_module` VALUES ('model_delete', NULL, 'cmsModel/delete', NULL, 'model_list', 0, 0); -INSERT INTO `sys_module` VALUES ('model_list', 'cmsModel/list', NULL, '', 'config_menu', 1, 1); -INSERT INTO `sys_module` VALUES ('myself', NULL, NULL, '', NULL, 1, 1); -INSERT INTO `sys_module` VALUES ('myself_content', 'myself/contentList', NULL, '', 'myself_menu', 1, 2); -INSERT INTO `sys_module` VALUES ('myself_content_add', 'cmsContent/add', 'cmsContent/addMore,file/doUpload,cmsContent/lookup,cmsContent/lookup_list,cmsContent/save,ueditor,ckeditor/upload', NULL, 'myself_content', 0, 0); -INSERT INTO `sys_module` VALUES ('myself_content_delete', NULL, 'cmsContent/delete', NULL, 'myself_content', 0, 0); -INSERT INTO `sys_module` VALUES ('myself_content_publish', NULL, 'cmsContent/publish', NULL, 'myself_content', 0, 0); -INSERT INTO `sys_module` VALUES ('myself_content_push', 'cmsContent/push', 'cmsContent/push_content,cmsContent/push_content_list,cmsContent/push_to_content,cmsContent/push_page,cmsContent/push_page_list,cmsContent/push_to_place,cmsContent/related', NULL, 'myself_content', 0, 0); -INSERT INTO `sys_module` VALUES ('myself_content_refresh', NULL, 'cmsContent/refresh', NULL, 'myself_content', 0, 0); -INSERT INTO `sys_module` VALUES ('myself_log_login', 'myself/logLogin', NULL, '', 'myself_menu', 1, 4); -INSERT INTO `sys_module` VALUES ('myself_log_operate', 'myself/logOperate', NULL, '', 'myself_menu', 1, 3); -INSERT INTO `sys_module` VALUES ('myself_menu', NULL, NULL, '', 'myself', 1, 0); -INSERT INTO `sys_module` VALUES ('myself_password', 'myself/password', 'changePassword', '', 'myself_menu', 1, 1); -INSERT INTO `sys_module` VALUES ('myself_token', 'myself/userTokenList', NULL, '', 'myself_menu', 1, 5); -INSERT INTO `sys_module` VALUES ('page', NULL, NULL, '', NULL, 1, 3); -INSERT INTO `sys_module` VALUES ('page_list', 'cmsPage/list', 'cmsPage/metadata,sysUser/lookup,cmsContent/lookup,cmsContent/lookup_list,cmsCategory/lookup', '', 'page_menu', 1, 1); -INSERT INTO `sys_module` VALUES ('page_menu', NULL, NULL, '', 'page', 1, 0); -INSERT INTO `sys_module` VALUES ('page_metadata', 'cmsPage/metadata', 'cmsPage/save', NULL, 'page_list', 0, 0); -INSERT INTO `sys_module` VALUES ('page_publish', NULL, 'cmsTemplate/publish', NULL, 'page_list', 0, 0); -INSERT INTO `sys_module` VALUES ('page_save', NULL, 'cmsPage/save,file/doUpload,cmsPage/clearCache', NULL, 'page_list', 0, 0); -INSERT INTO `sys_module` VALUES ('page_select_category', 'cmsCategory/lookup', NULL, NULL, 'page_list', 0, 0); -INSERT INTO `sys_module` VALUES ('page_select_category_type', 'cmsCategoryType/lookup', NULL, NULL, 'page_list', 0, 0); -INSERT INTO `sys_module` VALUES ('page_select_content', 'cmsContent/lookup', 'cmsContent/lookup_list', NULL, 'page_list', 0, 0); -INSERT INTO `sys_module` VALUES ('page_select_tag_type', 'cmsTagType/lookup', NULL, NULL, 'page_list', 0, 0); -INSERT INTO `sys_module` VALUES ('page_select_template', 'cmsTemplate/lookup', NULL, NULL, 'page_list', 0, 0); -INSERT INTO `sys_module` VALUES ('page_select_user', 'sysUser/lookup', NULL, NULL, 'page_list', 0, 0); -INSERT INTO `sys_module` VALUES ('place_add', 'cmsPlace/add', 'cmsContent/lookup,cmsPlace/lookup,cmsPlace/lookup_content_list,file/doUpload,cmsPlace/save', NULL, 'place_list', 0, 0); -INSERT INTO `sys_module` VALUES ('place_check', NULL, 'cmsPlace/check', NULL, 'place_list', 0, 0); -INSERT INTO `sys_module` VALUES ('place_clear', NULL, 'cmsPlace/clear', NULL, 'place_list', 0, 0); -INSERT INTO `sys_module` VALUES ('place_data_list', 'cmsPlace/dataList', NULL, NULL, 'place_list', 0, 1); -INSERT INTO `sys_module` VALUES ('place_delete', NULL, 'cmsPlace/delete', NULL, 'place_list', 0, 0); -INSERT INTO `sys_module` VALUES ('place_list', 'cmsPlace/list', 'sysUser/lookup,cmsPlace/data_list', '', 'page_menu', 1, 1); -INSERT INTO `sys_module` VALUES ('place_publish', 'cmsPlace/publish_place', 'cmsTemplate/publishPlace', NULL, 'place_list', 0, 0); -INSERT INTO `sys_module` VALUES ('place_refresh', NULL, 'cmsPlace/refresh', NULL, 'place_list', 0, 0); -INSERT INTO `sys_module` VALUES ('place_template_content', 'placeTemplate/content', 'cmsTemplate/help,cmsTemplate/chipLookup,cmsWebFile/lookup,cmsWebFile/contentForm,placeTemplate/form', NULL, 'place_template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('place_template_data_dictionary', 'cmsDictionary/lookup', NULL, NULL, 'place_template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('place_template_fragment', 'cmsTemplate/ftlLookup', NULL, NULL, 'place_template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('place_template_help', 'cmsTemplate/help', NULL, NULL, 'place_template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('place_template_list', 'placeTemplate/list', NULL, '', 'file_menu', 1, 2); -INSERT INTO `sys_module` VALUES ('place_template_metadata', 'placeTemplate/metadata', 'cmsTemplate/savePlaceMetaData', NULL, 'place_template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('place_template_place', 'placeTemplate/lookup', NULL, NULL, 'place_template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('place_template_webfile', 'cmsWebFile/lookup', NULL, NULL, 'place_template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('place_view', 'cmsPlace/view', NULL, NULL, 'place_list', 0, 0); -INSERT INTO `sys_module` VALUES ('report_user', 'report/user', NULL, '', 'user_menu', 1, 5); -INSERT INTO `sys_module` VALUES ('role_add', 'sysRole/add', 'sysRole/save', NULL, 'role_list', 0, 0); -INSERT INTO `sys_module` VALUES ('role_delete', NULL, 'sysRole/delete', NULL, 'role_list', 0, 0); -INSERT INTO `sys_module` VALUES ('role_list', 'sysRole/list', NULL, '', 'user_menu', 1, 3); -INSERT INTO `sys_module` VALUES ('system_menu', NULL, NULL, '', 'maintenance', 1, 2); -INSERT INTO `sys_module` VALUES ('tag_add', 'cmsTag/add', 'cmsTagType/lookup,cmsTag/save', NULL, 'tag_list', 0, 0); -INSERT INTO `sys_module` VALUES ('tag_delete', NULL, 'cmsTag/delete', NULL, 'tag_list', 0, 0); -INSERT INTO `sys_module` VALUES ('tag_list', 'cmsTag/list', 'cmsTagType/lookup', '', 'content_extend', 1, 1); -INSERT INTO `sys_module` VALUES ('tag_type_delete', NULL, 'cmsTagType/delete', NULL, 'tag_type_list', 0, 0); -INSERT INTO `sys_module` VALUES ('tag_type_list', 'cmsTagType/list', NULL, '', 'category_extend', 1, 2); -INSERT INTO `sys_module` VALUES ('tag_type_save', 'cmsTagType/add', 'cmsTagType/save', NULL, 'tag_type_list', 0, 0); -INSERT INTO `sys_module` VALUES ('task_add', 'sysTask/add', 'sysTask/save,sysTask/example,taskTemplate/lookup', NULL, 'task_list', 0, 0); -INSERT INTO `sys_module` VALUES ('task_delete', NULL, 'sysTask/delete', NULL, 'task_list', 0, 0); -INSERT INTO `sys_module` VALUES ('task_list', 'sysTask/list', NULL, '', 'system_menu', 1, 2); -INSERT INTO `sys_module` VALUES ('task_pause', NULL, 'sysTask/pause', NULL, 'task_list', 0, 0); -INSERT INTO `sys_module` VALUES ('task_recreate', NULL, 'sysTask/recreate', NULL, 'task_list', 0, 0); -INSERT INTO `sys_module` VALUES ('task_resume', NULL, 'sysTask/resume', NULL, 'task_list', 0, 0); -INSERT INTO `sys_module` VALUES ('task_runonce', NULL, 'sysTask/runOnce', NULL, 'task_list', 0, 0); -INSERT INTO `sys_module` VALUES ('task_template_content', 'taskTemplate/content', 'taskTemplate/save,taskTemplate/chipLookup,cmsTemplate/help,placeTemplate/form,cmsWebFile/contentForm', NULL, 'task_template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('task_template_delete', NULL, 'taskTemplate/delete', NULL, 'task_template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('task_template_fragment', 'taskTemplate/chipLookup', NULL, NULL, 'task_template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('task_template_help', 'cmsTemplate/help', NULL, NULL, 'task_template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('task_template_list', 'taskTemplate/list', NULL, '', 'file_menu', 1, 3); -INSERT INTO `sys_module` VALUES ('template_content', 'cmsTemplate/content', 'cmsTemplate/save,cmsTemplate/chipLookup,cmsWebFile/lookup,placeTemplate/form,cmsWebFile/contentForm,cmsTemplate/demo,cmsTemplate/help,cmsTemplate/upload,cmsTemplate/doUpload', NULL, 'template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('template_content-type', 'cmsTemplate/contentTypeLookup', NULL, NULL, 'template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('template_content_form', 'cmsTemplate/contentForm', NULL, NULL, 'template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('template_data_dictionary', 'cmsDictionary/lookup', NULL, NULL, 'template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('template_delete', NULL, 'cmsTemplate/delete', NULL, 'template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('template_demo', 'cmsTemplate/demo', NULL, NULL, 'template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('template_fragment', 'cmsTemplate/ftlLookup', NULL, NULL, 'template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('template_help', 'cmsTemplate/help', NULL, NULL, 'template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('template_list', 'cmsTemplate/list', 'cmsTemplate/directory', '', 'file_menu', 1, 1); -INSERT INTO `sys_module` VALUES ('template_metadata', 'cmsTemplate/metadata', 'cmsTemplate/saveMetadata', NULL, 'template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('template_place', 'placeTemplate/lookup', NULL, NULL, 'template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('template_place_form', 'placeTemplate/form', NULL, NULL, 'template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('template_upload', 'cmsTemplate/upload', 'cmsTemplate/doUpload', NULL, 'template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('template_website_file', 'cmsWebFile/lookup', NULL, NULL, 'template_list', 0, 0); -INSERT INTO `sys_module` VALUES ('user_add', 'sysUser/add', 'sysDept/lookup,sysUser/save', NULL, 'user_list', 0, 0); -INSERT INTO `sys_module` VALUES ('user_disable', NULL, 'sysUser/disable', NULL, 'user_list', 0, 0); -INSERT INTO `sys_module` VALUES ('user_enable', NULL, 'sysUser/enable', NULL, 'user_list', 0, 0); -INSERT INTO `sys_module` VALUES ('user_list', 'sysUser/list', NULL, '', 'user_menu', 1, 1); -INSERT INTO `sys_module` VALUES ('user_menu', NULL, NULL, '', 'maintenance', 1, 1); -INSERT INTO `sys_module` VALUES ('webfile_content', 'cmsWebFile/content', 'cmsWebFile/save', NULL, 'webfile_list', 0, 0); -INSERT INTO `sys_module` VALUES ('webfile_directory', 'cmsWebFile/directory', 'cmsWebFile/createDirectory', NULL, 'webfile_list', 0, 0); -INSERT INTO `sys_module` VALUES ('webfile_list', 'cmsWebFile/list', NULL, '', 'file_menu', 1, 4); -INSERT INTO `sys_module` VALUES ('webfile_unzip', NULL, 'cmsWebFile/unzip,cmsWebFile/unzipHere', NULL, 'webfile_list', 0, 0); -INSERT INTO `sys_module` VALUES ('webfile_upload', 'cmsWebFile/upload', 'cmsWebFile/doUpload', NULL, 'webfile_list', 0, 0); -INSERT INTO `sys_module` VALUES ('webfile_zip', NULL, 'cmsWebFile/zip', NULL, 'webfile_list', 0, 0); -INSERT INTO `sys_module` VALUES ('word_list', 'cmsWord/list', NULL, '', 'content_extend', 1, 2); - --- 20180609 -- -ALTER TABLE `log_upload` - CHANGE COLUMN `image` `file_type` varchar(20) NOT NULL COMMENT '鏂囦欢绫诲瀷' AFTER `channel`, - ADD COLUMN `original_name` varchar(255) NULL COMMENT '鍘熸枃浠跺悕' AFTER `channel`, - DROP INDEX `image`, - ADD INDEX `file_type`(`file_type`); -UPDATE `log_upload` SET file_type = 'image' WHERE file_type = '1'; -UPDATE `log_upload` SET file_type = 'image' WHERE file_path like '%.png' or file_path like '%.jpg' or file_path like '%.gif' or file_path like '%.bmp'; -UPDATE `log_upload` SET file_type = 'video' WHERE file_path like '%.mp4' or file_path like '%.3gp'; -UPDATE `log_upload` SET file_type = 'other' WHERE file_type = '0'; --- 20180612 -- -DROP TABLE IF EXISTS `cms_lottery`; -DROP TABLE IF EXISTS `cms_lottery_user`; -DROP TABLE IF EXISTS `cms_vote`; -DROP TABLE IF EXISTS `cms_vote_item`; -DROP TABLE IF EXISTS `cms_vote_user`; --- 20180622 -- -ALTER TABLE `cms_dictionary` - ADD COLUMN `site_id` smallint(6) NOT NULL DEFAULT 1 COMMENT '绔欑偣ID' AFTER `id`, - DROP INDEX `multiple`, - ADD INDEX `siteId`(`site_id`, `multiple`); --- 20180706 -- -ALTER TABLE `sys_extend_field` MODIFY COLUMN `dictionary_id` bigint(20) NULL DEFAULT NULL COMMENT '鏁版嵁瀛楀吀ID' AFTER `default_value`; -ALTER TABLE `sys_extend_field` DROP COLUMN `dictionary_type`; \ No newline at end of file +-- 20170715 -- +INSERT INTO `sys_moudle` VALUES ('125', '鎾ら攢瀹℃牳', null, 'cmsContent/uncheck', null, '12', '0', '0'); +DROP TABLE IF EXISTS `home_dialog`; +DROP TABLE IF EXISTS `home_message`; +DROP TABLE IF EXISTS `home_group_active`; +-- 20170804 -- +UPDATE sys_moudle SET `parent_id` = 117 WHERE `sys_moudle`.`id` in(118,119); +-- 20170812 -- +INSERT INTO `sys_moudle` VALUES ('126', '鏂囦欢', null, null, '', null, '1', '1'); +UPDATE sys_moudle SET `parent_id` = 126 WHERE `sys_moudle`.`id` = 38; +UPDATE `sys_moudle` SET `name` = '绔欑偣閰嶇疆' WHERE `sys_moudle`.`id` = 140; +UPDATE `sys_moudle` SET `name` = '鏁版嵁瀛楀吀' WHERE `sys_moudle`.`id` = 122; +ALTER TABLE `cms_content` + ADD COLUMN `check_date` datetime default NULL COMMENT '瀹℃牳鏃ユ湡' AFTER `publish_date`, + ADD COLUMN `update_date` datetime default NULL COMMENT '鏇存柊鏃ユ湡' AFTER `check_date`, + DROP INDEX `publish_date`, + DROP INDEX `user_id`, + DROP INDEX `category_id`, + DROP INDEX `model_id`, + DROP INDEX `parent_id`, + DROP INDEX `status`, + DROP INDEX `childs`, + DROP INDEX `scores`, + DROP INDEX `comments`, + DROP INDEX `clicks`, + DROP INDEX `title`, + DROP INDEX `check_user_id`, + DROP INDEX `site_id`, + DROP INDEX `has_files`, + DROP INDEX `has_images`, + DROP INDEX `only_url`, + DROP INDEX `sort`, + ADD INDEX `check_date` (`check_date`,`update_date`), + ADD INDEX `scores` (`scores`,`comments`,`clicks`), + ADD INDEX `status` (`site_id`,`status`,`category_id`,`disabled`,`model_id`,`parent_id`,`sort`,`publish_date`), + ADD INDEX `only_url` (`only_url`,`has_images`,`has_files`,`user_id`); +UPDATE `cms_content` SET `check_date` = `publish_date`; +-- 20170905 -- +UPDATE `sys_moudle` SET `url` = 'cmsPlace/publish_place' WHERE `sys_moudle`.`id` = 53; +-- 20170922 -- +UPDATE `sys_moudle` SET `parent_id` = 5 WHERE `sys_moudle`.`id` = 63; +UPDATE `sys_moudle` SET `authorized_url` = 'cmsContent/addMore,file/doUpload,cmsContent/lookup,cmsContent/lookup_list,cmsContent/save,ueditor,ckeditor/upload' WHERE `sys_moudle`.`id` = 102; +-- 20170922 -- +INSERT INTO `sys_moudle` VALUES ('127', '鎺ㄨ崘浣嶆暟鎹', 'cmsPlace/dataList', null, null , '107', '1', '1'); +INSERT INTO `sys_moudle` VALUES ('128', '鐢ㄦ埛鏁版嵁鐩戞帶', 'report/user', NULL, '', '46', '1', '0'); +ALTER TABLE `sys_moudle` ORDER BY `id`; +DELETE FROM `sys_moudle` WHERE id = 130; +-- 20171103 -- +UPDATE `sys_user` SET roles = '2' where id = 2 and site_id = 2; +-- 20171216 -- +ALTER TABLE `cms_place` MODIFY COLUMN `item_id` bigint(20) default NULL COMMENT '鎺ㄨ崘椤圭洰ID' AFTER `item_type`; +ALTER TABLE `cms_category` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `cms_category_type` CHANGE COLUMN `siteId` `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`, DROP INDEX `siteId`,ADD INDEX `site_id`(`site_id`) USING BTREE; +ALTER TABLE `cms_content` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `cms_lottery` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `cms_tag` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `cms_tag_type` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `cms_vote` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `cms_word` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `home_article` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `home_broadcast` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `home_comment` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `home_directory` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `home_file` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `home_group` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `home_group_post` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `home_score` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `home_user` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `user_id`; +ALTER TABLE `log_login` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `log_operate` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `log_task` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `log_upload` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `sys_app` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `sys_app_client` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' FIRST; +ALTER TABLE `sys_config_data` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' FIRST; +ALTER TABLE `sys_dept` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `sys_domain` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `name`; +ALTER TABLE `sys_role` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `sys_task` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `sys_user` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `sys_user_token` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `auth_token`; +ALTER TABLE `cms_category_type` COMMENT = '鍒嗙被绫诲瀷'; +ALTER TABLE `cms_lottery` COMMENT = '鎶藉'; +ALTER TABLE `cms_lottery_user` COMMENT = '鎶藉鐢ㄦ埛'; +ALTER TABLE `cms_lottery_user_attribute` COMMENT = '鎶藉鐢ㄦ埛鎵╁睍鏁版嵁'; +ALTER TABLE `cms_vote` COMMENT = '鎶曠エ'; +ALTER TABLE `cms_vote_item` COMMENT = '鎶曠エ閫夐」'; +ALTER TABLE `cms_vote_user` COMMENT = '鎶曠エ鐢ㄦ埛'; +ALTER TABLE `cms_word` COMMENT = '鎼滅储璇'; +ALTER TABLE `sys_app` COMMENT = '搴旂敤'; +ALTER TABLE `sys_app_client` COMMENT = '搴旂敤瀹㈡埛绔'; +ALTER TABLE `sys_app_token` COMMENT = '搴旂敤鎺堟潈'; +ALTER TABLE `sys_extend` COMMENT = '鎵╁睍'; +ALTER TABLE `sys_extend_field` COMMENT = '鎵╁睍瀛楁'; +-- 2017-12-24 -- +ALTER TABLE `cms_lottery` DROP COLUMN `interval_hour`,DROP COLUMN `gift`,DROP COLUMN `extend_id`; +ALTER TABLE `cms_vote` DROP COLUMN `anonymous`,DROP COLUMN `interval_hour`,DROP COLUMN `item_extend_id` , DROP INDEX `disabled`, ADD INDEX `disabled` (`site_id`,`end_date`,`disabled`); +DROP TABLE IF EXISTS `cms_vote_item_attribute`; +DROP TABLE IF EXISTS `cms_lottery_user_attribute`; +-- 2018-01-18 -- +ALTER TABLE `cms_category` DROP COLUMN `contents`; +-- 2018-02-08 -- +ALTER TABLE `sys_moudle` RENAME `sys_module`; +ALTER TABLE `sys_role_moudle` RENAME `sys_role_module`; +ALTER TABLE `sys_role_module` CHANGE COLUMN `moudle_id` `module_id` int(11) NOT NULL COMMENT '妯″潡ID' AFTER `role_id`; +ALTER TABLE `sys_role` CHANGE COLUMN `show_all_moudle` `show_all_module` int(11) NOT NULL COMMENT '鏄剧ず鍏ㄩ儴妯″潡' AFTER `owns_all_right`; +UPDATE `sys_module` SET `authorized_url` = 'sysUser/lookup,cmsContent/recycle,cmsContent/realDelete' WHERE `id` = 117; +ALTER TABLE `sys_user` MODIFY COLUMN `last_login_ip` varchar(64) NULL DEFAULT NULL COMMENT '鏈鍚庣櫥褰昳p' AFTER `last_login_date`; +ALTER TABLE `sys_user_token` MODIFY COLUMN `login_ip` varchar(64) NOT NULL COMMENT '鐧诲綍IP' AFTER `create_date`; +-- 20180414 -- +DROP TABLE IF EXISTS `home_active`; +DROP TABLE IF EXISTS `home_article`; +DROP TABLE IF EXISTS `home_article_content`; +DROP TABLE IF EXISTS `home_attention`; +DROP TABLE IF EXISTS `home_broadcast`; +DROP TABLE IF EXISTS `home_comment`; +DROP TABLE IF EXISTS `home_comment_content`; +DROP TABLE IF EXISTS `home_directory`; +DROP TABLE IF EXISTS `home_file`; +DROP TABLE IF EXISTS `home_friend`; +DROP TABLE IF EXISTS `home_friend_apply`; +DROP TABLE IF EXISTS `home_group`; +DROP TABLE IF EXISTS `home_group_apply`; +DROP TABLE IF EXISTS `home_group_post`; +DROP TABLE IF EXISTS `home_group_post_content`; +DROP TABLE IF EXISTS `home_group_user`; +DROP TABLE IF EXISTS `home_score`; +DROP TABLE IF EXISTS `home_user`; +UPDATE `sys_module` SET `parent_id` = 149 WHERE `id` in (150,151,152,153,154); +UPDATE `sys_module` SET `parent_id` = 99 WHERE `id` in (145,146); +-- 20180504 -- +UPDATE `sys_module` SET `authorized_url` = 'cmsContent/push_content,cmsContent/push_content_list,cmsContent/push_to_content,cmsContent/push_page,cmsContent/push_page_list,cmsPlace/add,cmsPlace/save,cmsContent/related,cmsContent/unrelated,cmsPlace/delete' WHERE `id` = 23; +INSERT INTO `sys_module` VALUES ('141', '淇敼鍐呭妯″瀷', 'cmsContent/changeModelParameters', 'cmsContent/changeModel', null, '12', '0', '0'); +-- 20180605 -- +DELETE FROM `sys_module` WHERE id < 1000; +ALTER TABLE `sys_module` + MODIFY COLUMN `id` varchar(30) NOT NULL FIRST, + MODIFY COLUMN `parent_id` varchar(30) NULL DEFAULT NULL COMMENT '鐖舵ā鍧' AFTER `attached`; +ALTER TABLE `sys_role` MODIFY COLUMN `show_all_module` tinyint(1) NOT NULL COMMENT '鏄剧ず鍏ㄩ儴妯″潡' AFTER `owns_all_right`; +ALTER TABLE `sys_site` MODIFY COLUMN `id` smallint(6) NOT NULL AUTO_INCREMENT FIRST; +ALTER TABLE `cms_place` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; +ALTER TABLE `sys_role_module` MODIFY COLUMN `module_id` varchar(30) NOT NULL COMMENT '妯″潡ID' AFTER `role_id`; + +CREATE TABLE `sys_module_lang` ( + `module_id` varchar(30) NOT NULL COMMENT '妯″潡ID', + `lang` varchar(20) NOT NULL COMMENT '璇█', + `value` varchar(100) DEFAULT NULL COMMENT '鍊', + PRIMARY KEY (`module_id`,`lang`) USING BTREE +) COMMENT='妯″潡璇█'; + +INSERT INTO `sys_module_lang` SELECT `id`,'',`name` FROM `sys_module` where id >= 1000; +INSERT INTO `sys_module_lang` SELECT `id`,'en',`name` FROM `sys_module` where id >= 1000; + +INSERT INTO `sys_module_lang` VALUES ('app_add', '', '澧炲姞/淇敼'); +INSERT INTO `sys_module_lang` VALUES ('app_add', 'en', 'Add/edit'); +INSERT INTO `sys_module_lang` VALUES ('app_client_disable', '', '绂佺敤'); +INSERT INTO `sys_module_lang` VALUES ('app_client_disable', 'en', 'Disable'); +INSERT INTO `sys_module_lang` VALUES ('app_client_enable', '', '鍚敤'); +INSERT INTO `sys_module_lang` VALUES ('app_client_enable', 'en', 'Enable'); +INSERT INTO `sys_module_lang` VALUES ('app_client_list', '', '瀹㈡埛绔鐞'); +INSERT INTO `sys_module_lang` VALUES ('app_client_list', 'en', 'Application client management'); +INSERT INTO `sys_module_lang` VALUES ('app_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('app_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('app_list', '', '搴旂敤鎺堟潈'); +INSERT INTO `sys_module_lang` VALUES ('app_list', 'en', 'Application Authorization'); +INSERT INTO `sys_module_lang` VALUES ('category', '', '鍒嗙被'); +INSERT INTO `sys_module_lang` VALUES ('category', 'en', 'Category'); +INSERT INTO `sys_module_lang` VALUES ('category_add', '', '澧炲姞/淇敼'); +INSERT INTO `sys_module_lang` VALUES ('category_add', 'en', 'Add/edit'); +INSERT INTO `sys_module_lang` VALUES ('category_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('category_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('category_extend', '', '鍒嗙被鎵╁睍'); +INSERT INTO `sys_module_lang` VALUES ('category_extend', 'en', 'Category extension'); +INSERT INTO `sys_module_lang` VALUES ('category_menu', '', '鍒嗙被绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('category_menu', 'en', 'Category management'); +INSERT INTO `sys_module_lang` VALUES ('category_move', '', '绉诲姩'); +INSERT INTO `sys_module_lang` VALUES ('category_move', 'en', 'Move'); +INSERT INTO `sys_module_lang` VALUES ('category_publish', '', '鐢熸垚'); +INSERT INTO `sys_module_lang` VALUES ('category_publish', 'en', 'Publish'); +INSERT INTO `sys_module_lang` VALUES ('category_push', '', '鎺ㄨ崘'); +INSERT INTO `sys_module_lang` VALUES ('category_push', 'en', 'Push'); +INSERT INTO `sys_module_lang` VALUES ('category_type_add', '', '澧炲姞/淇敼'); +INSERT INTO `sys_module_lang` VALUES ('category_type_add', 'en', 'test'); +INSERT INTO `sys_module_lang` VALUES ('category_type_change', '', '淇敼绫诲瀷'); +INSERT INTO `sys_module_lang` VALUES ('category_type_change', 'en', 'Change category type'); +INSERT INTO `sys_module_lang` VALUES ('category_type_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('category_type_delete', 'en', 'test'); +INSERT INTO `sys_module_lang` VALUES ('category_type_list', '', '鍒嗙被绫诲瀷'); +INSERT INTO `sys_module_lang` VALUES ('category_type_list', 'en', 'Category type'); +INSERT INTO `sys_module_lang` VALUES ('clearcache', '', '鍒锋柊缂撳瓨'); +INSERT INTO `sys_module_lang` VALUES ('clearcache', 'en', 'Clear cache'); +INSERT INTO `sys_module_lang` VALUES ('config_add', '', '娣诲姞/淇敼'); +INSERT INTO `sys_module_lang` VALUES ('config_add', 'en', 'Add/edit'); +INSERT INTO `sys_module_lang` VALUES ('config_data_delete', '', '娓呯┖閰嶇疆'); +INSERT INTO `sys_module_lang` VALUES ('config_data_delete', 'en', 'Clear config data'); +INSERT INTO `sys_module_lang` VALUES ('config_data_edit', '', '淇敼'); +INSERT INTO `sys_module_lang` VALUES ('config_data_edit', 'en', 'Edit'); +INSERT INTO `sys_module_lang` VALUES ('config_data_list', '', '绔欑偣閰嶇疆'); +INSERT INTO `sys_module_lang` VALUES ('config_data_list', 'en', 'Site configuration'); +INSERT INTO `sys_module_lang` VALUES ('config_delete', '', '鍒犻櫎閰嶇疆'); +INSERT INTO `sys_module_lang` VALUES ('config_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('config_list', '', '绔欑偣閰嶇疆绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('config_list', 'en', 'Site config management'); +INSERT INTO `sys_module_lang` VALUES ('config_list_data_dictionary', '', '閫夋嫨鏁版嵁瀛楀吀'); +INSERT INTO `sys_module_lang` VALUES ('config_list_data_dictionary', 'en', 'Select data dictionary'); +INSERT INTO `sys_module_lang` VALUES ('config_menu', '', '閰嶇疆绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('config_menu', 'en', 'Configuration management'); +INSERT INTO `sys_module_lang` VALUES ('content', '', '鍐呭'); +INSERT INTO `sys_module_lang` VALUES ('content', 'en', 'Content'); +INSERT INTO `sys_module_lang` VALUES ('content_add', '', '澧炲姞/淇敼'); +INSERT INTO `sys_module_lang` VALUES ('content_add', 'en', 'Add/edit'); +INSERT INTO `sys_module_lang` VALUES ('content_check', '', '瀹℃牳'); +INSERT INTO `sys_module_lang` VALUES ('content_check', 'en', 'Check'); +INSERT INTO `sys_module_lang` VALUES ('content_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('content_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('content_extend', '', '鍐呭鎵╁睍'); +INSERT INTO `sys_module_lang` VALUES ('content_extend', 'en', 'Content extension'); +INSERT INTO `sys_module_lang` VALUES ('content_menu', '', '鍐呭绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('content_menu', 'en', 'Content management'); +INSERT INTO `sys_module_lang` VALUES ('content_move', '', '绉诲姩'); +INSERT INTO `sys_module_lang` VALUES ('content_move', 'en', 'Move'); +INSERT INTO `sys_module_lang` VALUES ('content_publish', '', '鐢熸垚'); +INSERT INTO `sys_module_lang` VALUES ('content_publish', 'en', 'Publish'); +INSERT INTO `sys_module_lang` VALUES ('content_push', '', '鎺ㄨ崘'); +INSERT INTO `sys_module_lang` VALUES ('content_push', 'en', 'Push'); +INSERT INTO `sys_module_lang` VALUES ('content_recycle_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('content_recycle_delete', 'en', 'test'); +INSERT INTO `sys_module_lang` VALUES ('content_recycle_list', '', '鍐呭鍥炴敹绔'); +INSERT INTO `sys_module_lang` VALUES ('content_recycle_list', 'en', 'Content recycle'); +INSERT INTO `sys_module_lang` VALUES ('content_recycle_recycle', '', '杩樺師'); +INSERT INTO `sys_module_lang` VALUES ('content_recycle_recycle', 'en', 'test'); +INSERT INTO `sys_module_lang` VALUES ('content_refresh', '', '鍒锋柊'); +INSERT INTO `sys_module_lang` VALUES ('content_refresh', 'en', 'Refresh'); +INSERT INTO `sys_module_lang` VALUES ('content_select_category', '', '閫夋嫨鍒嗙被'); +INSERT INTO `sys_module_lang` VALUES ('content_select_category', 'en', 'Select category'); +INSERT INTO `sys_module_lang` VALUES ('content_select_category_type', '', '閫夋嫨鍒嗙被绫诲瀷'); +INSERT INTO `sys_module_lang` VALUES ('content_select_category_type', 'en', 'Select category type'); +INSERT INTO `sys_module_lang` VALUES ('content_select_content', '', '閫夋嫨鍐呭'); +INSERT INTO `sys_module_lang` VALUES ('content_select_content', 'en', 'Select content'); +INSERT INTO `sys_module_lang` VALUES ('content_select_tag_type', '', '閫夋嫨鏍囩绫诲瀷'); +INSERT INTO `sys_module_lang` VALUES ('content_select_tag_type', 'en', 'Select tag type'); +INSERT INTO `sys_module_lang` VALUES ('content_select_template', '', '閫夋嫨妯℃澘'); +INSERT INTO `sys_module_lang` VALUES ('content_select_template', 'en', 'Select template'); +INSERT INTO `sys_module_lang` VALUES ('content_select_user', '', '閫夋嫨鐢ㄦ埛'); +INSERT INTO `sys_module_lang` VALUES ('content_select_user', 'en', 'Select user'); +INSERT INTO `sys_module_lang` VALUES ('content_sort', '', '缃《'); +INSERT INTO `sys_module_lang` VALUES ('content_sort', 'en', 'Sort'); +INSERT INTO `sys_module_lang` VALUES ('content_uncheck', '', '鎾ら攢瀹℃牳'); +INSERT INTO `sys_module_lang` VALUES ('content_uncheck', 'en', 'Uncheck'); +INSERT INTO `sys_module_lang` VALUES ('content_view', '', '鏌ョ湅'); +INSERT INTO `sys_module_lang` VALUES ('content_view', 'en', 'View'); +INSERT INTO `sys_module_lang` VALUES ('dept_add', '', '澧炲姞/淇敼'); +INSERT INTO `sys_module_lang` VALUES ('dept_add', 'en', 'Add/edit'); +INSERT INTO `sys_module_lang` VALUES ('dept_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('dept_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('dept_list', '', '閮ㄩ棬绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('dept_list', 'en', 'Department management'); +INSERT INTO `sys_module_lang` VALUES ('dept_user_list', '', '浜哄憳绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('dept_user_list', 'en', 'Department user management'); +INSERT INTO `sys_module_lang` VALUES ('develop', '', '寮鍙'); +INSERT INTO `sys_module_lang` VALUES ('develop', 'en', 'Development'); +INSERT INTO `sys_module_lang` VALUES ('dictionary_add', '', '娣诲姞/淇敼'); +INSERT INTO `sys_module_lang` VALUES ('dictionary_add', 'en', 'Add/edit'); +INSERT INTO `sys_module_lang` VALUES ('dictionary_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('dictionary_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('dictionary_list', '', '鏁版嵁瀛楀吀'); +INSERT INTO `sys_module_lang` VALUES ('dictionary_list', 'en', 'Dictionary management'); +INSERT INTO `sys_module_lang` VALUES ('domain_config', '', '淇敼'); +INSERT INTO `sys_module_lang` VALUES ('domain_config', 'en', 'Edit'); +INSERT INTO `sys_module_lang` VALUES ('domain_list', '', '缁戝畾鍩熷悕'); +INSERT INTO `sys_module_lang` VALUES ('domain_list', 'en', 'Domain management'); +INSERT INTO `sys_module_lang` VALUES ('file_menu', '', '鏂囦欢绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('file_menu', 'en', 'File maintenance'); +INSERT INTO `sys_module_lang` VALUES ('log_login', '', '鐧诲綍鏃ュ織'); +INSERT INTO `sys_module_lang` VALUES ('log_login', 'en', 'Login log'); +INSERT INTO `sys_module_lang` VALUES ('log_login_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('log_login_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('log_menu', '', '鏃ュ織绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('log_menu', 'en', 'Log management'); +INSERT INTO `sys_module_lang` VALUES ('log_operate', '', '鎿嶄綔鏃ュ織'); +INSERT INTO `sys_module_lang` VALUES ('log_operate', 'en', 'Operate log'); +INSERT INTO `sys_module_lang` VALUES ('log_operate_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('log_operate_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('log_operate_view', '', '鏌ョ湅'); +INSERT INTO `sys_module_lang` VALUES ('log_operate_view', 'en', 'View'); +INSERT INTO `sys_module_lang` VALUES ('log_task', '', '浠诲姟璁″垝鏃ュ織'); +INSERT INTO `sys_module_lang` VALUES ('log_task', 'en', 'Task log'); +INSERT INTO `sys_module_lang` VALUES ('log_task_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('log_task_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('log_task_view', '', '鏌ョ湅'); +INSERT INTO `sys_module_lang` VALUES ('log_task_view', 'en', 'View'); +INSERT INTO `sys_module_lang` VALUES ('log_upload', '', '鏂囦欢涓婁紶鏃ュ織'); +INSERT INTO `sys_module_lang` VALUES ('log_upload', 'en', 'Upload log'); +INSERT INTO `sys_module_lang` VALUES ('maintenance', '', '缁存姢'); +INSERT INTO `sys_module_lang` VALUES ('maintenance', 'en', 'Maintenance'); +INSERT INTO `sys_module_lang` VALUES ('model_add', '', '澧炲姞/淇敼'); +INSERT INTO `sys_module_lang` VALUES ('model_add', 'en', 'Add/edit'); +INSERT INTO `sys_module_lang` VALUES ('model_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('model_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('model_list', '', '鍐呭妯″瀷绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('model_list', 'en', 'Model management'); +INSERT INTO `sys_module_lang` VALUES ('myself', '', '涓汉'); +INSERT INTO `sys_module_lang` VALUES ('myself', 'en', 'Myself'); +INSERT INTO `sys_module_lang` VALUES ('myself_content', '', '鎴戠殑鍐呭'); +INSERT INTO `sys_module_lang` VALUES ('myself_content', 'en', 'My content'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_add', '', '淇敼'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_add', 'en', 'Add'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_publish', '', '鐢熸垚'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_publish', 'en', 'Publish'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_push', '', '鎺ㄨ崘'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_push', 'en', 'Push'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_refresh', '', '鍒锋柊'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_refresh', 'en', 'Refresh'); +INSERT INTO `sys_module_lang` VALUES ('myself_log_login', '', '鎴戠殑鐧诲綍鏃ュ織'); +INSERT INTO `sys_module_lang` VALUES ('myself_log_login', 'en', 'My login log'); +INSERT INTO `sys_module_lang` VALUES ('myself_log_operate', '', '鎴戠殑鎿嶄綔鏃ュ織'); +INSERT INTO `sys_module_lang` VALUES ('myself_log_operate', 'en', 'My operate log'); +INSERT INTO `sys_module_lang` VALUES ('myself_menu', '', '涓庢垜鐩稿叧'); +INSERT INTO `sys_module_lang` VALUES ('myself_menu', 'en', 'My account'); +INSERT INTO `sys_module_lang` VALUES ('myself_password', '', '淇敼瀵嗙爜'); +INSERT INTO `sys_module_lang` VALUES ('myself_password', 'en', 'Change password'); +INSERT INTO `sys_module_lang` VALUES ('myself_token', '', '鎴戠殑鐧诲綍鎺堟潈'); +INSERT INTO `sys_module_lang` VALUES ('myself_token', 'en', 'My login token'); +INSERT INTO `sys_module_lang` VALUES ('page', '', '椤甸潰'); +INSERT INTO `sys_module_lang` VALUES ('page', 'en', 'Page'); +INSERT INTO `sys_module_lang` VALUES ('page_list', '', '椤甸潰绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('page_list', 'en', 'Page management'); +INSERT INTO `sys_module_lang` VALUES ('page_menu', '', '椤甸潰缁存姢'); +INSERT INTO `sys_module_lang` VALUES ('page_menu', 'en', 'Page maintenance'); +INSERT INTO `sys_module_lang` VALUES ('page_metadata', '', '鍏冩暟鎹鐞'); +INSERT INTO `sys_module_lang` VALUES ('page_metadata', 'en', 'Metadata management'); +INSERT INTO `sys_module_lang` VALUES ('page_publish', '', '鐢熸垚椤甸潰'); +INSERT INTO `sys_module_lang` VALUES ('page_publish', 'en', 'Publish'); +INSERT INTO `sys_module_lang` VALUES ('page_save', '', '淇濆瓨椤甸潰閰嶇疆'); +INSERT INTO `sys_module_lang` VALUES ('page_save', 'en', 'Save configuration'); +INSERT INTO `sys_module_lang` VALUES ('page_select_category', '', '閫夋嫨鍒嗙被'); +INSERT INTO `sys_module_lang` VALUES ('page_select_category', 'en', 'Select category'); +INSERT INTO `sys_module_lang` VALUES ('page_select_category_type', '', '閫夋嫨鍒嗙被绫诲瀷'); +INSERT INTO `sys_module_lang` VALUES ('page_select_category_type', 'en', 'Select category type'); +INSERT INTO `sys_module_lang` VALUES ('page_select_content', '', '閫夋嫨鍐呭'); +INSERT INTO `sys_module_lang` VALUES ('page_select_content', 'en', 'Select content'); +INSERT INTO `sys_module_lang` VALUES ('page_select_tag_type', '', '閫夋嫨鏍囩绫诲瀷'); +INSERT INTO `sys_module_lang` VALUES ('page_select_tag_type', 'en', 'Select tag type'); +INSERT INTO `sys_module_lang` VALUES ('page_select_template', '', '閫夋嫨妯℃澘'); +INSERT INTO `sys_module_lang` VALUES ('page_select_template', 'en', 'Select template'); +INSERT INTO `sys_module_lang` VALUES ('page_select_user', '', '閫夋嫨鐢ㄦ埛'); +INSERT INTO `sys_module_lang` VALUES ('page_select_user', 'en', 'Select user'); +INSERT INTO `sys_module_lang` VALUES ('place_add', '', '澧炲姞/淇敼鎺ㄨ崘浣嶆暟鎹'); +INSERT INTO `sys_module_lang` VALUES ('place_add', 'en', 'Add/edit'); +INSERT INTO `sys_module_lang` VALUES ('place_check', '', '瀹℃牳鎺ㄨ崘浣嶆暟鎹'); +INSERT INTO `sys_module_lang` VALUES ('place_check', 'en', 'Check'); +INSERT INTO `sys_module_lang` VALUES ('place_clear', '', '娓呯┖鎺ㄨ崘浣嶆暟鎹'); +INSERT INTO `sys_module_lang` VALUES ('place_clear', 'en', 'Clear'); +INSERT INTO `sys_module_lang` VALUES ('place_data_list', '', '鎺ㄨ崘浣嶆暟鎹'); +INSERT INTO `sys_module_lang` VALUES ('place_data_list', 'en', 'Page fragment data'); +INSERT INTO `sys_module_lang` VALUES ('place_delete', '', '鍒犻櫎鎺ㄨ崘浣嶆暟鎹'); +INSERT INTO `sys_module_lang` VALUES ('place_delete', 'en', 'data'); +INSERT INTO `sys_module_lang` VALUES ('place_list', '', '椤甸潰鐗囨绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('place_list', 'en', 'Page fragment management'); +INSERT INTO `sys_module_lang` VALUES ('place_publish', '', '鍙戝竷'); +INSERT INTO `sys_module_lang` VALUES ('place_publish', 'en', 'Publish'); +INSERT INTO `sys_module_lang` VALUES ('place_refresh', '', '鍒锋柊鎺ㄨ崘浣嶆暟鎹'); +INSERT INTO `sys_module_lang` VALUES ('place_refresh', 'en', 'Refresh'); +INSERT INTO `sys_module_lang` VALUES ('place_template_content', '', '淇敼'); +INSERT INTO `sys_module_lang` VALUES ('place_template_content', 'en', 'Edit template'); +INSERT INTO `sys_module_lang` VALUES ('place_template_data_dictionary', '', '閫夋嫨鏁版嵁瀛楀吀'); +INSERT INTO `sys_module_lang` VALUES ('place_template_data_dictionary', 'en', 'Select data dictionary'); +INSERT INTO `sys_module_lang` VALUES ('place_template_fragment', '', '妯℃澘鐗囨'); +INSERT INTO `sys_module_lang` VALUES ('place_template_fragment', 'en', 'Template fragment'); +INSERT INTO `sys_module_lang` VALUES ('place_template_help', '', '妯℃澘甯姪'); +INSERT INTO `sys_module_lang` VALUES ('place_template_help', 'en', 'Template help'); +INSERT INTO `sys_module_lang` VALUES ('place_template_list', '', '椤甸潰鐗囨妯℃澘'); +INSERT INTO `sys_module_lang` VALUES ('place_template_list', 'en', 'Page fragment template'); +INSERT INTO `sys_module_lang` VALUES ('place_template_metadata', '', '淇敼鍏冩暟鎹'); +INSERT INTO `sys_module_lang` VALUES ('place_template_metadata', 'en', 'Edit metadata'); +INSERT INTO `sys_module_lang` VALUES ('place_template_place', '', '椤甸潰鐗囨'); +INSERT INTO `sys_module_lang` VALUES ('place_template_place', 'en', 'Page fragment'); +INSERT INTO `sys_module_lang` VALUES ('place_template_webfile', '', '缃戠珯鏂囦欢'); +INSERT INTO `sys_module_lang` VALUES ('place_template_webfile', 'en', 'Website file'); +INSERT INTO `sys_module_lang` VALUES ('place_view', '', '鏌ョ湅鎺ㄨ崘浣嶆暟鎹'); +INSERT INTO `sys_module_lang` VALUES ('place_view', 'en', 'View'); +INSERT INTO `sys_module_lang` VALUES ('report_user', '', '鐢ㄦ埛鏁版嵁鐩戞帶'); +INSERT INTO `sys_module_lang` VALUES ('report_user', 'en', 'User report'); +INSERT INTO `sys_module_lang` VALUES ('role_add', '', '澧炲姞/淇敼'); +INSERT INTO `sys_module_lang` VALUES ('role_add', 'en', 'Add/edit'); +INSERT INTO `sys_module_lang` VALUES ('role_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('role_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('role_list', '', '瑙掕壊绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('role_list', 'en', 'Role management'); +INSERT INTO `sys_module_lang` VALUES ('system_menu', '', '绯荤粺缁存姢'); +INSERT INTO `sys_module_lang` VALUES ('system_menu', 'en', 'System maintenance'); +INSERT INTO `sys_module_lang` VALUES ('tag_add', '', '澧炲姞/淇敼'); +INSERT INTO `sys_module_lang` VALUES ('tag_add', 'en', 'Add/edit'); +INSERT INTO `sys_module_lang` VALUES ('tag_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('tag_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('tag_list', '', '鏍囩绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('tag_list', 'en', 'Tag management'); +INSERT INTO `sys_module_lang` VALUES ('tag_type_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('tag_type_delete', 'en', 'test'); +INSERT INTO `sys_module_lang` VALUES ('tag_type_list', '', '鏍囩鍒嗙被'); +INSERT INTO `sys_module_lang` VALUES ('tag_type_list', 'en', 'Tag type'); +INSERT INTO `sys_module_lang` VALUES ('tag_type_save', '', '澧炲姞/淇敼'); +INSERT INTO `sys_module_lang` VALUES ('tag_type_save', 'en', 'test'); +INSERT INTO `sys_module_lang` VALUES ('task_add', '', '澧炲姞/淇敼'); +INSERT INTO `sys_module_lang` VALUES ('task_add', 'en', 'Add/edit'); +INSERT INTO `sys_module_lang` VALUES ('task_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('task_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('task_list', '', '浠诲姟璁″垝'); +INSERT INTO `sys_module_lang` VALUES ('task_list', 'en', 'Task management'); +INSERT INTO `sys_module_lang` VALUES ('task_pause', '', '鏆傚仠'); +INSERT INTO `sys_module_lang` VALUES ('task_pause', 'en', 'Pause'); +INSERT INTO `sys_module_lang` VALUES ('task_recreate', '', '閲嶆柊鍒濆鍖'); +INSERT INTO `sys_module_lang` VALUES ('task_recreate', 'en', 'Recreate'); +INSERT INTO `sys_module_lang` VALUES ('task_resume', '', '鎭㈠'); +INSERT INTO `sys_module_lang` VALUES ('task_resume', 'en', 'Resume'); +INSERT INTO `sys_module_lang` VALUES ('task_runonce', '', '绔嬪埢鎵ц'); +INSERT INTO `sys_module_lang` VALUES ('task_runonce', 'en', 'Run once'); +INSERT INTO `sys_module_lang` VALUES ('task_template_content', '', '淇敼'); +INSERT INTO `sys_module_lang` VALUES ('task_template_content', 'en', 'Edit'); +INSERT INTO `sys_module_lang` VALUES ('task_template_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('task_template_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('task_template_fragment', '', '浠诲姟璁″垝鑴氭湰鐗囨'); +INSERT INTO `sys_module_lang` VALUES ('task_template_fragment', 'en', 'Task script fragment'); +INSERT INTO `sys_module_lang` VALUES ('task_template_help', '', '甯姪'); +INSERT INTO `sys_module_lang` VALUES ('task_template_help', 'en', 'help'); +INSERT INTO `sys_module_lang` VALUES ('task_template_list', '', '浠诲姟璁″垝鑴氭湰'); +INSERT INTO `sys_module_lang` VALUES ('task_template_list', 'en', 'Task template management'); +INSERT INTO `sys_module_lang` VALUES ('template_content', '', '淇敼'); +INSERT INTO `sys_module_lang` VALUES ('template_content', 'en', 'Edit'); +INSERT INTO `sys_module_lang` VALUES ('template_content-type', '', '閫夋嫨content-type'); +INSERT INTO `sys_module_lang` VALUES ('template_content-type', 'en', 'Select content-type'); +INSERT INTO `sys_module_lang` VALUES ('template_content_form', '', '鍐呭鎶曠ǹ琛ㄥ崟'); +INSERT INTO `sys_module_lang` VALUES ('template_content_form', 'en', 'Content contribute form'); +INSERT INTO `sys_module_lang` VALUES ('template_data_dictionary', '', '閫夋嫨鏁版嵁瀛楀吀'); +INSERT INTO `sys_module_lang` VALUES ('template_data_dictionary', 'en', 'Select data dictionary'); +INSERT INTO `sys_module_lang` VALUES ('template_delete', '', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('template_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('template_demo', '', '妯℃澘绀轰緥'); +INSERT INTO `sys_module_lang` VALUES ('template_demo', 'en', 'Template example'); +INSERT INTO `sys_module_lang` VALUES ('template_fragment', '', '妯℃澘鐗囨'); +INSERT INTO `sys_module_lang` VALUES ('template_fragment', 'en', 'Template fragment'); +INSERT INTO `sys_module_lang` VALUES ('template_help', '', '妯℃澘甯姪'); +INSERT INTO `sys_module_lang` VALUES ('template_help', 'en', 'Template help'); +INSERT INTO `sys_module_lang` VALUES ('template_list', '', '妯℃澘鏂囦欢绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('template_list', 'en', 'Template management'); +INSERT INTO `sys_module_lang` VALUES ('template_metadata', '', '淇敼鍏冩暟鎹'); +INSERT INTO `sys_module_lang` VALUES ('template_metadata', 'en', 'Edit metadata'); +INSERT INTO `sys_module_lang` VALUES ('template_place', '', '椤甸潰鐗囨'); +INSERT INTO `sys_module_lang` VALUES ('template_place', 'en', 'Page fragment'); +INSERT INTO `sys_module_lang` VALUES ('template_place_form', '', '椤甸潰鐗囨鎶曠ǹ琛ㄥ崟'); +INSERT INTO `sys_module_lang` VALUES ('template_place_form', 'en', 'Page fragment data contribute form'); +INSERT INTO `sys_module_lang` VALUES ('template_upload', '', '涓婁紶妯℃澘'); +INSERT INTO `sys_module_lang` VALUES ('template_upload', 'en', 'Upload template'); +INSERT INTO `sys_module_lang` VALUES ('template_website_file', '', '缃戠珯鏂囦欢'); +INSERT INTO `sys_module_lang` VALUES ('template_website_file', 'en', 'Website file'); +INSERT INTO `sys_module_lang` VALUES ('user_add', '', '澧炲姞/淇敼'); +INSERT INTO `sys_module_lang` VALUES ('user_add', 'en', 'Add/edit'); +INSERT INTO `sys_module_lang` VALUES ('user_disable', '', '绂佺敤'); +INSERT INTO `sys_module_lang` VALUES ('user_disable', 'en', 'Disable'); +INSERT INTO `sys_module_lang` VALUES ('user_enable', '', '鍚敤'); +INSERT INTO `sys_module_lang` VALUES ('user_enable', 'en', 'Enable'); +INSERT INTO `sys_module_lang` VALUES ('user_list', '', '鐢ㄦ埛绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('user_list', 'en', 'User management'); +INSERT INTO `sys_module_lang` VALUES ('user_menu', '', '鐢ㄦ埛绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('user_menu', 'en', 'User maintenance'); +INSERT INTO `sys_module_lang` VALUES ('webfile_content', '', '淇敼鏂囦欢'); +INSERT INTO `sys_module_lang` VALUES ('webfile_content', 'en', 'Edit file'); +INSERT INTO `sys_module_lang` VALUES ('webfile_directory', '', '鏂板缓鐩綍'); +INSERT INTO `sys_module_lang` VALUES ('webfile_directory', 'en', 'Create Directory'); +INSERT INTO `sys_module_lang` VALUES ('webfile_list', '', '缃戠珯鏂囦欢绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('webfile_list', 'en', 'Website file management'); +INSERT INTO `sys_module_lang` VALUES ('webfile_unzip', '', '瑙e帇缂'); +INSERT INTO `sys_module_lang` VALUES ('webfile_unzip', 'en', 'Decompress'); +INSERT INTO `sys_module_lang` VALUES ('webfile_upload', '', '涓婁紶'); +INSERT INTO `sys_module_lang` VALUES ('webfile_upload', 'en', 'Upload'); +INSERT INTO `sys_module_lang` VALUES ('webfile_zip', '', '鍘嬬缉'); +INSERT INTO `sys_module_lang` VALUES ('webfile_zip', 'en', 'Compress'); +INSERT INTO `sys_module_lang` VALUES ('word_list', '', '鎼滅储璇嶇鐞'); +INSERT INTO `sys_module_lang` VALUES ('word_list', 'en', 'Search word management'); + +ALTER TABLE `sys_module` DROP COLUMN `name`, + DROP INDEX `parent_id`, + DROP INDEX `url`, + ADD INDEX `parent_id`(`parent_id`, `menu`); + +INSERT INTO `sys_module` VALUES ('app_add', 'sysApp/add', 'sysApp/save', NULL, 'app_list', 0, 0); +INSERT INTO `sys_module` VALUES ('app_client_disable', NULL, 'sysAppClient/disable', NULL, 'app_client_list', 0, 0); +INSERT INTO `sys_module` VALUES ('app_client_enable', NULL, 'sysAppClient/enable', NULL, 'app_client_list', 0, 0); +INSERT INTO `sys_module` VALUES ('app_client_list', 'sysAppClient/list', NULL, '', 'user_menu', 1, 4); +INSERT INTO `sys_module` VALUES ('app_delete', NULL, 'sysApp/delete', NULL, 'app_list', 0, 0); +INSERT INTO `sys_module` VALUES ('app_list', 'sysApp/list', NULL, '', 'system_menu', 1, 5); +INSERT INTO `sys_module` VALUES ('category', NULL, NULL, '', NULL, 1, 5); +INSERT INTO `sys_module` VALUES ('category_add', 'cmsCategory/add', 'cmsCategory/addMore,cmsTemplate/lookup,cmsCategory/categoryPath,cmsCategory/contentPath,file/doUpload,cmsCategory/save', '', 'category_menu', 0, 0); +INSERT INTO `sys_module` VALUES ('category_delete', NULL, 'cmsCategory/delete', '', 'category_menu', 0, 0); +INSERT INTO `sys_module` VALUES ('category_extend', NULL, NULL, '', 'category', 1, 2); +INSERT INTO `sys_module` VALUES ('category_menu', 'cmsCategory/list', NULL, '', 'category', 1, 1); +INSERT INTO `sys_module` VALUES ('category_move', 'cmsCategory/moveParameters', 'cmsCategory/move,cmsCategory/lookup', '', 'category_menu', 0, 0); +INSERT INTO `sys_module` VALUES ('category_publish', 'cmsCategory/publishParameters', 'cmsCategory/publish', '', 'category_menu', 0, 0); +INSERT INTO `sys_module` VALUES ('category_push', 'cmsCategory/push_page', 'cmsPlace/push,cmsPlace/add,cmsPlace/save', '', 'category_menu', 0, 0); +INSERT INTO `sys_module` VALUES ('category_type_add', 'cmsCategoryType/add', 'cmsCategoryType/save', NULL, 'category_type_list', 0, 0); +INSERT INTO `sys_module` VALUES ('category_type_change', 'cmsCategory/changeTypeParameters', 'cmsCategory/changeType', '', 'category_menu', 0, 0); +INSERT INTO `sys_module` VALUES ('category_type_delete', NULL, 'cmsCategoryType/delete', NULL, 'category_type_list', 0, 0); +INSERT INTO `sys_module` VALUES ('category_type_list', 'cmsCategoryType/list', NULL, '', 'category_extend', 1, 1); +INSERT INTO `sys_module` VALUES ('clearcache', NULL, 'clearCache', '', NULL, 0, 10); +INSERT INTO `sys_module` VALUES ('config_add', 'sysConfig/add', 'sysConfig/save', NULL, 'config_list', 0, 0); +INSERT INTO `sys_module` VALUES ('config_data_delete', NULL, 'sysConfigData/delete', NULL, 'config_data_list', 0, 0); +INSERT INTO `sys_module` VALUES ('config_data_edit', 'sysConfigData/edit', 'sysConfigData/save', NULL, 'config_data_list', 0, 0); +INSERT INTO `sys_module` VALUES ('config_data_list', 'sysConfigData/list', NULL, '', 'system_menu', 1, 1); +INSERT INTO `sys_module` VALUES ('config_delete', NULL, 'sysConfig/delete', NULL, 'config_list', 0, 0); +INSERT INTO `sys_module` VALUES ('config_list', 'sysConfig/list', NULL, '', 'config_menu', 1, 2); +INSERT INTO `sys_module` VALUES ('config_list_data_dictionary', 'cmsDictionary/lookup', NULL, NULL, 'config_list', 0, 0); +INSERT INTO `sys_module` VALUES ('config_menu', NULL, NULL, '', 'develop', 1, 2); +INSERT INTO `sys_module` VALUES ('content', NULL, NULL, '', NULL, 1, 2); +INSERT INTO `sys_module` VALUES ('content_add', 'cmsContent/add', 'cmsContent/addMore,cmsContent/save,ueditor', '', 'content_menu', 1, 0); +INSERT INTO `sys_module` VALUES ('content_check', NULL, 'cmsContent/check', '', 'content_menu', 1, 0); +INSERT INTO `sys_module` VALUES ('content_delete', NULL, 'cmsContent/delete', '', 'content_menu', 1, 0); +INSERT INTO `sys_module` VALUES ('content_extend', NULL, NULL, '', 'content', 1, 1); +INSERT INTO `sys_module` VALUES ('content_menu', 'cmsContent/list', 'sysUser/lookup', '', 'content', 1, 0); +INSERT INTO `sys_module` VALUES ('content_move', 'cmsContent/moveParameters', 'cmsContent/move', '', 'content_menu', 1, 0); +INSERT INTO `sys_module` VALUES ('content_publish', NULL, 'cmsContent/publish', '', 'content_menu', 1, 0); +INSERT INTO `sys_module` VALUES ('content_push', 'cmsContent/push', 'cmsContent/push_content,cmsContent/push_content_list,cmsContent/push_to_content,cmsContent/push_page,cmsContent/push_page_list,cmsPlace/add,cmsPlace/save,cmsContent/related,cmsContent/unrelated,cmsPlace/delete', '', 'content_menu', 1, 0); +INSERT INTO `sys_module` VALUES ('content_recycle_delete', NULL, 'cmsContent/realDelete', NULL, 'content_recycle_list', 0, 0); +INSERT INTO `sys_module` VALUES ('content_recycle_list', 'cmsRecycleContent/list', 'sysUser/lookup', '', 'content_extend', 1, 3); +INSERT INTO `sys_module` VALUES ('content_recycle_recycle', NULL, 'cmsContent/recycle', NULL, 'content_recycle_list', 0, 0); +INSERT INTO `sys_module` VALUES ('content_refresh', NULL, 'cmsContent/refresh', '', 'content_menu', 1, 0); +INSERT INTO `sys_module` VALUES ('content_select_category', 'cmsCategory/lookup', NULL, NULL, 'content_add', 0, 0); +INSERT INTO `sys_module` VALUES ('content_select_category_type', 'cmsCategoryType/lookup', NULL, NULL, 'content_add', 0, 0); +INSERT INTO `sys_module` VALUES ('content_select_content', 'cmsContent/lookup', 'cmsContent/lookup_list', NULL, 'content_add', 0, 0); +INSERT INTO `sys_module` VALUES ('content_select_tag_type', 'cmsTagType/lookup', NULL, NULL, 'content_add', 0, 0); +INSERT INTO `sys_module` VALUES ('content_select_template', 'cmsTemplate/lookup', NULL, NULL, 'content_add', 0, 0); +INSERT INTO `sys_module` VALUES ('content_select_user', 'sysUser/lookup', NULL, NULL, 'content_add', 0, 0); +INSERT INTO `sys_module` VALUES ('content_sort', 'cmsContent/sortParameters', 'cmsContent/sort', '', 'content_menu', 0, 0); +INSERT INTO `sys_module` VALUES ('content_uncheck', NULL, 'cmsContent/uncheck', '', 'content_menu', 0, 0); +INSERT INTO `sys_module` VALUES ('content_view', 'cmsContent/view', NULL, '', 'content_menu', 0, 0); +INSERT INTO `sys_module` VALUES ('dept_add', 'sysDept/add', 'sysDept/lookup,sysUser/lookup,sysDept/save', NULL, 'dept_list', 0, 0); +INSERT INTO `sys_module` VALUES ('dept_delete', NULL, 'sysDept/delete', NULL, 'dept_list', 0, 0); +INSERT INTO `sys_module` VALUES ('dept_list', 'sysDept/list', 'sysDept/lookup,sysUser/lookup', '', 'user_menu', 1, 2); +INSERT INTO `sys_module` VALUES ('dept_user_list', 'sysDept/userList', 'sysDept/addUser,sysDept/saveUser,sysDept/enableUser,sysDept/disableUser', NULL, 'dept_list', 0, 0); +INSERT INTO `sys_module` VALUES ('develop', NULL, NULL, '', NULL, 1, 7); +INSERT INTO `sys_module` VALUES ('dictionary_add', 'cmsDictionary/add', 'cmsDictionary/save', NULL, 'dictionary_list', 0, 0); +INSERT INTO `sys_module` VALUES ('dictionary_delete', NULL, 'cmsDictionary/delete', NULL, 'dictionary_list', 0, 0); +INSERT INTO `sys_module` VALUES ('dictionary_list', 'cmsDictionary/list', NULL, '', 'system_menu', 1, 4); +INSERT INTO `sys_module` VALUES ('domain_config', 'sysDomain/config', 'sysDomain/saveConfig,cmsTemplate/directoryLookup,cmsTemplate/lookup', NULL, 'domain_list', 0, 0); +INSERT INTO `sys_module` VALUES ('domain_list', 'sysDomain/domainList', NULL, '', 'system_menu', 1, 3); +INSERT INTO `sys_module` VALUES ('file_menu', NULL, NULL, '', 'develop', 1, 1); +INSERT INTO `sys_module` VALUES ('log_login', 'log/login', 'sysUser/lookup', '', 'log_menu', 1, 3); +INSERT INTO `sys_module` VALUES ('log_login_delete', NULL, 'logLogin/delete', NULL, 'log_login', 0, 0); +INSERT INTO `sys_module` VALUES ('log_menu', NULL, NULL, '', 'maintenance', 1, 3); +INSERT INTO `sys_module` VALUES ('log_operate', 'log/operate', 'sysUser/lookup', '', 'log_menu', 1, 2); +INSERT INTO `sys_module` VALUES ('log_operate_delete', NULL, 'logOperate/delete', NULL, 'log_operate', 0, 0); +INSERT INTO `sys_module` VALUES ('log_operate_view', 'log/operateView', NULL, NULL, 'log_operate', 0, 0); +INSERT INTO `sys_module` VALUES ('log_task', 'log/task', 'sysUser/lookup', '', 'log_menu', 1, 4); +INSERT INTO `sys_module` VALUES ('log_task_delete', NULL, 'logTask/delete', NULL, 'log_task', 0, 0); +INSERT INTO `sys_module` VALUES ('log_task_view', 'log/taskView', NULL, NULL, 'log_task', 0, 0); +INSERT INTO `sys_module` VALUES ('log_upload', 'log/upload', 'sysUser/lookup', '', 'log_menu', 1, 1); +INSERT INTO `sys_module` VALUES ('maintenance', NULL, NULL, '', NULL, 1, 6); +INSERT INTO `sys_module` VALUES ('model_add', 'cmsModel/add', 'cmsModel/save,cmsTemplate/lookup', NULL, 'model_list', 0, 0); +INSERT INTO `sys_module` VALUES ('model_delete', NULL, 'cmsModel/delete', NULL, 'model_list', 0, 0); +INSERT INTO `sys_module` VALUES ('model_list', 'cmsModel/list', NULL, '', 'config_menu', 1, 1); +INSERT INTO `sys_module` VALUES ('myself', NULL, NULL, '', NULL, 1, 1); +INSERT INTO `sys_module` VALUES ('myself_content', 'myself/contentList', NULL, '', 'myself_menu', 1, 2); +INSERT INTO `sys_module` VALUES ('myself_content_add', 'cmsContent/add', 'cmsContent/addMore,file/doUpload,cmsContent/lookup,cmsContent/lookup_list,cmsContent/save,ueditor,ckeditor/upload', NULL, 'myself_content', 0, 0); +INSERT INTO `sys_module` VALUES ('myself_content_delete', NULL, 'cmsContent/delete', NULL, 'myself_content', 0, 0); +INSERT INTO `sys_module` VALUES ('myself_content_publish', NULL, 'cmsContent/publish', NULL, 'myself_content', 0, 0); +INSERT INTO `sys_module` VALUES ('myself_content_push', 'cmsContent/push', 'cmsContent/push_content,cmsContent/push_content_list,cmsContent/push_to_content,cmsContent/push_page,cmsContent/push_page_list,cmsContent/push_to_place,cmsContent/related', NULL, 'myself_content', 0, 0); +INSERT INTO `sys_module` VALUES ('myself_content_refresh', NULL, 'cmsContent/refresh', NULL, 'myself_content', 0, 0); +INSERT INTO `sys_module` VALUES ('myself_log_login', 'myself/logLogin', NULL, '', 'myself_menu', 1, 4); +INSERT INTO `sys_module` VALUES ('myself_log_operate', 'myself/logOperate', NULL, '', 'myself_menu', 1, 3); +INSERT INTO `sys_module` VALUES ('myself_menu', NULL, NULL, '', 'myself', 1, 0); +INSERT INTO `sys_module` VALUES ('myself_password', 'myself/password', 'changePassword', '', 'myself_menu', 1, 1); +INSERT INTO `sys_module` VALUES ('myself_token', 'myself/userTokenList', NULL, '', 'myself_menu', 1, 5); +INSERT INTO `sys_module` VALUES ('page', NULL, NULL, '', NULL, 1, 3); +INSERT INTO `sys_module` VALUES ('page_list', 'cmsPage/list', 'cmsPage/metadata,sysUser/lookup,cmsContent/lookup,cmsContent/lookup_list,cmsCategory/lookup', '', 'page_menu', 1, 1); +INSERT INTO `sys_module` VALUES ('page_menu', NULL, NULL, '', 'page', 1, 0); +INSERT INTO `sys_module` VALUES ('page_metadata', 'cmsPage/metadata', 'cmsPage/save', NULL, 'page_list', 0, 0); +INSERT INTO `sys_module` VALUES ('page_publish', NULL, 'cmsTemplate/publish', NULL, 'page_list', 0, 0); +INSERT INTO `sys_module` VALUES ('page_save', NULL, 'cmsPage/save,file/doUpload,cmsPage/clearCache', NULL, 'page_list', 0, 0); +INSERT INTO `sys_module` VALUES ('page_select_category', 'cmsCategory/lookup', NULL, NULL, 'page_list', 0, 0); +INSERT INTO `sys_module` VALUES ('page_select_category_type', 'cmsCategoryType/lookup', NULL, NULL, 'page_list', 0, 0); +INSERT INTO `sys_module` VALUES ('page_select_content', 'cmsContent/lookup', 'cmsContent/lookup_list', NULL, 'page_list', 0, 0); +INSERT INTO `sys_module` VALUES ('page_select_tag_type', 'cmsTagType/lookup', NULL, NULL, 'page_list', 0, 0); +INSERT INTO `sys_module` VALUES ('page_select_template', 'cmsTemplate/lookup', NULL, NULL, 'page_list', 0, 0); +INSERT INTO `sys_module` VALUES ('page_select_user', 'sysUser/lookup', NULL, NULL, 'page_list', 0, 0); +INSERT INTO `sys_module` VALUES ('place_add', 'cmsPlace/add', 'cmsContent/lookup,cmsPlace/lookup,cmsPlace/lookup_content_list,file/doUpload,cmsPlace/save', NULL, 'place_list', 0, 0); +INSERT INTO `sys_module` VALUES ('place_check', NULL, 'cmsPlace/check', NULL, 'place_list', 0, 0); +INSERT INTO `sys_module` VALUES ('place_clear', NULL, 'cmsPlace/clear', NULL, 'place_list', 0, 0); +INSERT INTO `sys_module` VALUES ('place_data_list', 'cmsPlace/dataList', NULL, NULL, 'place_list', 0, 1); +INSERT INTO `sys_module` VALUES ('place_delete', NULL, 'cmsPlace/delete', NULL, 'place_list', 0, 0); +INSERT INTO `sys_module` VALUES ('place_list', 'cmsPlace/list', 'sysUser/lookup,cmsPlace/data_list', '', 'page_menu', 1, 1); +INSERT INTO `sys_module` VALUES ('place_publish', 'cmsPlace/publish_place', 'cmsTemplate/publishPlace', NULL, 'place_list', 0, 0); +INSERT INTO `sys_module` VALUES ('place_refresh', NULL, 'cmsPlace/refresh', NULL, 'place_list', 0, 0); +INSERT INTO `sys_module` VALUES ('place_template_content', 'placeTemplate/content', 'cmsTemplate/help,cmsTemplate/chipLookup,cmsWebFile/lookup,cmsWebFile/contentForm,placeTemplate/form', NULL, 'place_template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('place_template_data_dictionary', 'cmsDictionary/lookup', NULL, NULL, 'place_template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('place_template_fragment', 'cmsTemplate/ftlLookup', NULL, NULL, 'place_template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('place_template_help', 'cmsTemplate/help', NULL, NULL, 'place_template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('place_template_list', 'placeTemplate/list', NULL, '', 'file_menu', 1, 2); +INSERT INTO `sys_module` VALUES ('place_template_metadata', 'placeTemplate/metadata', 'cmsTemplate/savePlaceMetaData', NULL, 'place_template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('place_template_place', 'placeTemplate/lookup', NULL, NULL, 'place_template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('place_template_webfile', 'cmsWebFile/lookup', NULL, NULL, 'place_template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('place_view', 'cmsPlace/view', NULL, NULL, 'place_list', 0, 0); +INSERT INTO `sys_module` VALUES ('report_user', 'report/user', NULL, '', 'user_menu', 1, 5); +INSERT INTO `sys_module` VALUES ('role_add', 'sysRole/add', 'sysRole/save', NULL, 'role_list', 0, 0); +INSERT INTO `sys_module` VALUES ('role_delete', NULL, 'sysRole/delete', NULL, 'role_list', 0, 0); +INSERT INTO `sys_module` VALUES ('role_list', 'sysRole/list', NULL, '', 'user_menu', 1, 3); +INSERT INTO `sys_module` VALUES ('system_menu', NULL, NULL, '', 'maintenance', 1, 2); +INSERT INTO `sys_module` VALUES ('tag_add', 'cmsTag/add', 'cmsTagType/lookup,cmsTag/save', NULL, 'tag_list', 0, 0); +INSERT INTO `sys_module` VALUES ('tag_delete', NULL, 'cmsTag/delete', NULL, 'tag_list', 0, 0); +INSERT INTO `sys_module` VALUES ('tag_list', 'cmsTag/list', 'cmsTagType/lookup', '', 'content_extend', 1, 1); +INSERT INTO `sys_module` VALUES ('tag_type_delete', NULL, 'cmsTagType/delete', NULL, 'tag_type_list', 0, 0); +INSERT INTO `sys_module` VALUES ('tag_type_list', 'cmsTagType/list', NULL, '', 'category_extend', 1, 2); +INSERT INTO `sys_module` VALUES ('tag_type_save', 'cmsTagType/add', 'cmsTagType/save', NULL, 'tag_type_list', 0, 0); +INSERT INTO `sys_module` VALUES ('task_add', 'sysTask/add', 'sysTask/save,sysTask/example,taskTemplate/lookup', NULL, 'task_list', 0, 0); +INSERT INTO `sys_module` VALUES ('task_delete', NULL, 'sysTask/delete', NULL, 'task_list', 0, 0); +INSERT INTO `sys_module` VALUES ('task_list', 'sysTask/list', NULL, '', 'system_menu', 1, 2); +INSERT INTO `sys_module` VALUES ('task_pause', NULL, 'sysTask/pause', NULL, 'task_list', 0, 0); +INSERT INTO `sys_module` VALUES ('task_recreate', NULL, 'sysTask/recreate', NULL, 'task_list', 0, 0); +INSERT INTO `sys_module` VALUES ('task_resume', NULL, 'sysTask/resume', NULL, 'task_list', 0, 0); +INSERT INTO `sys_module` VALUES ('task_runonce', NULL, 'sysTask/runOnce', NULL, 'task_list', 0, 0); +INSERT INTO `sys_module` VALUES ('task_template_content', 'taskTemplate/content', 'taskTemplate/save,taskTemplate/chipLookup,cmsTemplate/help,placeTemplate/form,cmsWebFile/contentForm', NULL, 'task_template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('task_template_delete', NULL, 'taskTemplate/delete', NULL, 'task_template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('task_template_fragment', 'taskTemplate/chipLookup', NULL, NULL, 'task_template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('task_template_help', 'cmsTemplate/help', NULL, NULL, 'task_template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('task_template_list', 'taskTemplate/list', NULL, '', 'file_menu', 1, 3); +INSERT INTO `sys_module` VALUES ('template_content', 'cmsTemplate/content', 'cmsTemplate/save,cmsTemplate/chipLookup,cmsWebFile/lookup,placeTemplate/form,cmsWebFile/contentForm,cmsTemplate/demo,cmsTemplate/help,cmsTemplate/upload,cmsTemplate/doUpload', NULL, 'template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('template_content-type', 'cmsTemplate/contentTypeLookup', NULL, NULL, 'template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('template_content_form', 'cmsTemplate/contentForm', NULL, NULL, 'template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('template_data_dictionary', 'cmsDictionary/lookup', NULL, NULL, 'template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('template_delete', NULL, 'cmsTemplate/delete', NULL, 'template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('template_demo', 'cmsTemplate/demo', NULL, NULL, 'template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('template_fragment', 'cmsTemplate/ftlLookup', NULL, NULL, 'template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('template_help', 'cmsTemplate/help', NULL, NULL, 'template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('template_list', 'cmsTemplate/list', 'cmsTemplate/directory', '', 'file_menu', 1, 1); +INSERT INTO `sys_module` VALUES ('template_metadata', 'cmsTemplate/metadata', 'cmsTemplate/saveMetadata', NULL, 'template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('template_place', 'placeTemplate/lookup', NULL, NULL, 'template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('template_place_form', 'placeTemplate/form', NULL, NULL, 'template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('template_upload', 'cmsTemplate/upload', 'cmsTemplate/doUpload', NULL, 'template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('template_website_file', 'cmsWebFile/lookup', NULL, NULL, 'template_list', 0, 0); +INSERT INTO `sys_module` VALUES ('user_add', 'sysUser/add', 'sysDept/lookup,sysUser/save', NULL, 'user_list', 0, 0); +INSERT INTO `sys_module` VALUES ('user_disable', NULL, 'sysUser/disable', NULL, 'user_list', 0, 0); +INSERT INTO `sys_module` VALUES ('user_enable', NULL, 'sysUser/enable', NULL, 'user_list', 0, 0); +INSERT INTO `sys_module` VALUES ('user_list', 'sysUser/list', NULL, '', 'user_menu', 1, 1); +INSERT INTO `sys_module` VALUES ('user_menu', NULL, NULL, '', 'maintenance', 1, 1); +INSERT INTO `sys_module` VALUES ('webfile_content', 'cmsWebFile/content', 'cmsWebFile/save', NULL, 'webfile_list', 0, 0); +INSERT INTO `sys_module` VALUES ('webfile_directory', 'cmsWebFile/directory', 'cmsWebFile/createDirectory', NULL, 'webfile_list', 0, 0); +INSERT INTO `sys_module` VALUES ('webfile_list', 'cmsWebFile/list', NULL, '', 'file_menu', 1, 4); +INSERT INTO `sys_module` VALUES ('webfile_unzip', NULL, 'cmsWebFile/unzip,cmsWebFile/unzipHere', NULL, 'webfile_list', 0, 0); +INSERT INTO `sys_module` VALUES ('webfile_upload', 'cmsWebFile/upload', 'cmsWebFile/doUpload', NULL, 'webfile_list', 0, 0); +INSERT INTO `sys_module` VALUES ('webfile_zip', NULL, 'cmsWebFile/zip', NULL, 'webfile_list', 0, 0); +INSERT INTO `sys_module` VALUES ('word_list', 'cmsWord/list', NULL, '', 'content_extend', 1, 2); + +-- 20180609 -- +ALTER TABLE `log_upload` + CHANGE COLUMN `image` `file_type` varchar(20) NOT NULL COMMENT '鏂囦欢绫诲瀷' AFTER `channel`, + ADD COLUMN `original_name` varchar(255) NULL COMMENT '鍘熸枃浠跺悕' AFTER `channel`, + DROP INDEX `image`, + ADD INDEX `file_type`(`file_type`); +UPDATE `log_upload` SET file_type = 'image' WHERE file_type = '1'; +UPDATE `log_upload` SET file_type = 'image' WHERE file_path like '%.png' or file_path like '%.jpg' or file_path like '%.gif' or file_path like '%.bmp'; +UPDATE `log_upload` SET file_type = 'video' WHERE file_path like '%.mp4' or file_path like '%.3gp'; +UPDATE `log_upload` SET file_type = 'other' WHERE file_type = '0'; +-- 20180612 -- +DROP TABLE IF EXISTS `cms_lottery`; +DROP TABLE IF EXISTS `cms_lottery_user`; +DROP TABLE IF EXISTS `cms_vote`; +DROP TABLE IF EXISTS `cms_vote_item`; +DROP TABLE IF EXISTS `cms_vote_user`; +-- 20180622 -- +ALTER TABLE `cms_dictionary` + ADD COLUMN `site_id` smallint(6) NOT NULL DEFAULT 1 COMMENT '绔欑偣ID' AFTER `id`, + DROP INDEX `multiple`, + ADD INDEX `site_id`(`site_id`, `multiple`); +-- 20180706 -- +ALTER TABLE `sys_extend_field` MODIFY COLUMN `dictionary_id` bigint(20) NULL DEFAULT NULL COMMENT '鏁版嵁瀛楀吀ID' AFTER `default_value`; +ALTER TABLE `sys_extend_field` DROP COLUMN `dictionary_type`; +-- 20180711 -- +ALTER TABLE `sys_site` + ADD COLUMN `parent_id` smallint(6) DEFAULT NULL COMMENT '鐖剁珯鐐笽D' AFTER `id`, + MODIFY COLUMN `name` varchar(50) NOT NULL COMMENT '绔欑偣鍚' AFTER `parent_id`; +-- 20180714 -- +UPDATE `sys_module` SET `authorized_url` = 'cmsContent/addMore,file/doUpload,cmsContent/lookup,cmsContent/lookup_list,cmsContent/save,ueditor,ckeditor/upload,kindeditor/upload' WHERE `id` ='content_add'; +UPDATE `sys_module` SET `authorized_url` = 'cmsContent/addMore,file/doUpload,cmsContent/lookup,cmsContent/lookup_list,cmsContent/save,ueditor,ckeditor/upload,kindeditor/upload' WHERE `id` ='myself_content_add'; +UPDATE `sys_module` SET `authorized_url` = 'sysConfigData/save,sysConfigData/edit',url = NULL WHERE `id` ='config_data_edit'; +-- 20180811 -- +ALTER TABLE `sys_dept` ADD COLUMN `owns_all_config` tinyint(1) NOT NULL DEFAULT 1 COMMENT '鎷ユ湁鍏ㄩ儴閰嶇疆鏉冮檺' AFTER `owns_all_page`; +CREATE TABLE `sys_dept_config` ( + `dept_id` int(11) NOT NULL COMMENT '閮ㄩ棬ID', + `config` varchar(100) NOT NULL COMMENT '閰嶇疆', + PRIMARY KEY (`dept_id`,`config`) +) COMMENT='閮ㄩ棬閰嶇疆'; +ALTER TABLE `sys_user` ADD COLUMN `owns_all_content` tinyint(1) NOT NULL DEFAULT 1 COMMENT '鎷ユ湁鎵鏈夊唴瀹规潈闄' AFTER `dept_id`; +UPDATE `sys_user` SET `owns_all_content` = '0' WHERE `superuser_access` = '0'; +-- 20180813 -- +UPDATE `sys_module` SET `authorized_url` = 'cmsWebFile/unzip',url = 'cmsWebFile/unzipParameters' WHERE `id` ='webfile_unzip'; +-- 20180820 -- +UPDATE `sys_module` SET `authorized_url` = 'cmsPlace/check,cmsPlace/uncheck' WHERE `id` ='place_check'; +-- 20180821 -- +UPDATE `sys_module` SET `authorized_url` = 'cmsTemplate/help,cmsTemplate/savePlace,cmsTemplate/chipLookup,cmsWebFile/lookup,cmsWebFile/contentForm,placeTemplate/form' WHERE `id` ='place_template_content'; +DELETE FROM `sys_email_token`; +ALTER TABLE `sys_email_token` ADD COLUMN `expiry_date` datetime(0) NOT NULL COMMENT '杩囨湡鏃ユ湡' AFTER `create_date`; +ALTER TABLE `sys_user_token` ADD COLUMN `expiry_date` datetime(0) DEFAULT NULL COMMENT '杩囨湡鏃ユ湡' AFTER `create_date`; +ALTER TABLE `sys_app_token` ADD COLUMN `expiry_date` datetime(0) DEFAULT NULL COMMENT '杩囨湡鏃ユ湡' AFTER `create_date`; +ALTER TABLE `sys_app` ADD COLUMN `expiry_minutes` int(0) NULL COMMENT '杩囨湡鏃堕棿' AFTER `authorized_apis`; +UPDATE `sys_user_token` SET `expiry_date` = date_add(`create_date`, interval 30 day); +UPDATE `sys_app_token` SET `expiry_date` = date_add(`create_date`, interval 30 minute); +UPDATE `sys_app` SET `expiry_minutes` = '30'; +INSERT INTO `sys_module` VALUES ('app_issue', 'sysApp/issueParameters', 'sysAppToken/issue', NULL, 'app_list', 0, 0); +INSERT INTO `sys_module_lang` VALUES ('app_issue', '', '棰佸彂鎺堟潈'); +INSERT INTO `sys_module_lang` VALUES ('app_issue', 'en', 'Issue authorization'); +UPDATE `sys_module` SET `attached` = '' WHERE `id` ='myself'; +UPDATE `sys_module` SET `attached` = '' WHERE `id` ='content'; +UPDATE `sys_module` SET `attached` = '' WHERE `id` ='category'; +UPDATE `sys_module` SET `attached` = '' WHERE `id` ='develop'; +UPDATE `sys_module` SET `attached` = '' WHERE `id` ='page'; +UPDATE `sys_module_lang` SET `value` = 'Add' WHERE `lang` ='en' and module_id = 'myself_content_add'; +UPDATE `sys_module_lang` SET `value` = 'Delete' WHERE `lang` ='en' and module_id = 'myself_content_delete'; +UPDATE `sys_module_lang` SET `value` = 'Publish' WHERE `lang` ='en' and module_id = 'myself_content_publish'; +UPDATE `sys_module_lang` SET `value` = 'Push' WHERE `lang` ='en' and module_id = 'myself_content_push'; +UPDATE `sys_module_lang` SET `value` = 'Refresh' WHERE `lang` ='en' and module_id = 'myself_content_refresh'; +-- 20181022 -- +UPDATE `sys_module_lang` SET `lang` = 'zh' WHERE `lang` =''; +INSERT INTO `sys_module_lang` VALUES ('app_add', 'ja', '杩藉姞/澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('app_client_disable', 'ja', '绂佹'); +INSERT INTO `sys_module_lang` VALUES ('app_client_enable', 'ja', '銈兂'); +INSERT INTO `sys_module_lang` VALUES ('app_client_list', 'ja', '銈儵銈ゃ偄銉炽儓绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('app_issue', 'ja', '鐧鸿妯╅檺'); +INSERT INTO `sys_module_lang` VALUES ('app_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('app_list', 'ja', 'app妯╅檺'); +INSERT INTO `sys_module_lang` VALUES ('category', 'ja', '鍒嗛'); +INSERT INTO `sys_module_lang` VALUES ('category_add', 'ja', '杩藉姞/澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('category_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('category_extend', 'ja', '鍒嗛鎷″嫉'); +INSERT INTO `sys_module_lang` VALUES ('category_menu', 'ja', '鍒嗛绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('category_move', 'ja', '绉诲嫊'); +INSERT INTO `sys_module_lang` VALUES ('category_publish', 'ja', '鐢熸垚'); +INSERT INTO `sys_module_lang` VALUES ('category_push', 'ja', '銇娿仚銇欍倎'); +INSERT INTO `sys_module_lang` VALUES ('category_type_add', 'ja', '杩藉姞/澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('category_type_change', 'ja', '銈裤偆銉楀鏇'); +INSERT INTO `sys_module_lang` VALUES ('category_type_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('category_type_list', 'ja', '鍒嗛銈裤偆銉'); +INSERT INTO `sys_module_lang` VALUES ('clearcache', 'ja', '銈儯銉冦偡銉ャ倰銉儠銉儍銈枫儱銇欍倠'); +INSERT INTO `sys_module_lang` VALUES ('config_add', 'ja', '杩藉姞/澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('config_data_delete', 'ja', '銉囥兗銈裤倰銈儶銈'); +INSERT INTO `sys_module_lang` VALUES ('config_data_edit', 'ja', '澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('config_data_list', 'ja', '銈点偆銉堣ō瀹'); +INSERT INTO `sys_module_lang` VALUES ('config_delete', 'ja', '瑷畾銈掑墛闄'); +INSERT INTO `sys_module_lang` VALUES ('config_list', 'ja', '銈点偆銉堣ō瀹氱鐞'); +INSERT INTO `sys_module_lang` VALUES ('config_list_data_dictionary', 'ja', '銉囥兗銈胯緸鏇搞倰閬告姙'); +INSERT INTO `sys_module_lang` VALUES ('config_menu', 'ja', '瑷畾绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('content', 'ja', '銈炽兂銉嗐兂銉'); +INSERT INTO `sys_module_lang` VALUES ('content_add', 'ja', '杩藉姞/澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('content_check', 'ja', '瀵╂熁'); +INSERT INTO `sys_module_lang` VALUES ('content_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('content_extend', 'ja', '銈炽兂銉嗐兂銉勬嫛寮'); +INSERT INTO `sys_module_lang` VALUES ('content_menu', 'ja', '銈炽兂銉嗐兂銉勭鐞'); +INSERT INTO `sys_module_lang` VALUES ('content_move', 'ja', '绉诲嫊'); +INSERT INTO `sys_module_lang` VALUES ('content_publish', 'ja', '鐢熸垚'); +INSERT INTO `sys_module_lang` VALUES ('content_push', 'ja', '銇娿仚銇欍倎'); +INSERT INTO `sys_module_lang` VALUES ('content_recycle_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('content_recycle_list', 'ja', '銈炽兂銉嗐兂銉勩仈銇跨'); +INSERT INTO `sys_module_lang` VALUES ('content_recycle_recycle', 'ja', '鍙栥倞鎴汇仐'); +INSERT INTO `sys_module_lang` VALUES ('content_refresh', 'ja', '銉儠銉儍銈枫儱'); +INSERT INTO `sys_module_lang` VALUES ('content_select_category', 'ja', '鍒嗛銈掗伕鎶'); +INSERT INTO `sys_module_lang` VALUES ('content_select_category_type', 'ja', '鍒嗛銈裤偆銉椼倰閬告姙'); +INSERT INTO `sys_module_lang` VALUES ('content_select_content', 'ja', '銈炽兂銉嗐兂銉勩倰閬告姙'); +INSERT INTO `sys_module_lang` VALUES ('content_select_tag_type', 'ja', '銈裤偘銇ó椤炪倰閬告姙'); +INSERT INTO `sys_module_lang` VALUES ('content_select_template', 'ja', '銉嗐兂銉椼儸銉笺儓銈掗伕鎶'); +INSERT INTO `sys_module_lang` VALUES ('content_select_user', 'ja', '銉︺兗銈躲兗銈掗伕鎶'); +INSERT INTO `sys_module_lang` VALUES ('content_sort', 'ja', '銉堛儍銉斻兂銈'); +INSERT INTO `sys_module_lang` VALUES ('content_uncheck', 'ja', '瀵╂熁銈掑彇銈婃秷銇'); +INSERT INTO `sys_module_lang` VALUES ('content_view', 'ja', '瑕嬨倠'); +INSERT INTO `sys_module_lang` VALUES ('dept_add', 'ja', '杩藉姞/澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('dept_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('dept_list', 'ja', '閮ㄩ杸绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('dept_user_list', 'ja', '浜轰簨绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('develop', 'ja', '闁嬬櫤'); +INSERT INTO `sys_module_lang` VALUES ('dictionary_add', 'ja', '杩藉姞/澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('dictionary_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('dictionary_list', 'ja', '銉囥兗銈胯緸鏇'); +INSERT INTO `sys_module_lang` VALUES ('domain_config', 'ja', '澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('domain_list', 'ja', '銉夈儭銈ゃ兂鍚嶃倰銉愩偆銉炽儔'); +INSERT INTO `sys_module_lang` VALUES ('file_menu', 'ja', '銉曘偂銈ゃ儷绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('log_login', 'ja', '銉偘銈ゃ兂銉偘'); +INSERT INTO `sys_module_lang` VALUES ('log_login_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('log_menu', 'ja', '銉偘绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('log_operate', 'ja', '鎿嶄綔銉偘'); +INSERT INTO `sys_module_lang` VALUES ('log_operate_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('log_operate_view', 'ja', '瑕嬨倠'); +INSERT INTO `sys_module_lang` VALUES ('log_task', 'ja', '銈裤偣銈▓鐢汇儹銈'); +INSERT INTO `sys_module_lang` VALUES ('log_task_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('log_task_view', 'ja', '瑕嬨倠'); +INSERT INTO `sys_module_lang` VALUES ('log_upload', 'ja', '銉曘偂銈ゃ儷銈€儍銉椼儹銉笺儔銉偘'); +INSERT INTO `sys_module_lang` VALUES ('maintenance', 'ja', '缍寔'); +INSERT INTO `sys_module_lang` VALUES ('model_add', 'ja', '杩藉姞/澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('model_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('model_list', 'ja', '銈炽兂銉嗐兂銉勩儮銉囥儷绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('myself', 'ja', '鍊嬩汉'); +INSERT INTO `sys_module_lang` VALUES ('myself_content', 'ja', '銉炪偆銈炽兂銉嗐兂銉'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_add', 'ja', '澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_publish', 'ja', '鐢熸垚'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_push', 'ja', '銇娿仚銇欍倎'); +INSERT INTO `sys_module_lang` VALUES ('myself_content_refresh', 'ja', '銉儠銉儍銈枫儱'); +INSERT INTO `sys_module_lang` VALUES ('myself_log_login', 'ja', '銉炪偆銉偘銈ゃ兂銉偘'); +INSERT INTO `sys_module_lang` VALUES ('myself_log_operate', 'ja', '銉炪偆鎿嶄綔銉偘'); +INSERT INTO `sys_module_lang` VALUES ('myself_menu', 'ja', '绉併伀闁㈤c仚銈嬫儏鍫'); +INSERT INTO `sys_module_lang` VALUES ('myself_password', 'ja', '銉戙偣銉兗銉夈倰澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('myself_token', 'ja', '绉併伄銉偘銈ゃ兂鎺堟ī'); +INSERT INTO `sys_module_lang` VALUES ('page', 'ja', '銉氥兗銈'); +INSERT INTO `sys_module_lang` VALUES ('page_list', 'ja', '銉氥兗銈哥鐞'); +INSERT INTO `sys_module_lang` VALUES ('page_menu', 'ja', '銉氥兗銈搞伄銉°兂銉嗐儕銉炽偣'); +INSERT INTO `sys_module_lang` VALUES ('page_metadata', 'ja', '銉°偪銉囥兗銈跨鐞'); +INSERT INTO `sys_module_lang` VALUES ('page_publish', 'ja', '銉氥兗銈搞倰鐢熸垚銇欍倠'); +INSERT INTO `sys_module_lang` VALUES ('page_save', 'ja', '銉氥兗銈歌ō瀹氥倰淇濆瓨'); +INSERT INTO `sys_module_lang` VALUES ('page_select_category', 'ja', '鍒嗛銈掗伕鎶'); +INSERT INTO `sys_module_lang` VALUES ('page_select_category_type', 'ja', '鍒嗛銈裤偆銉椼倰閬告姙'); +INSERT INTO `sys_module_lang` VALUES ('page_select_content', 'ja', '銈炽兂銉嗐兂銉勩倰閬告姙'); +INSERT INTO `sys_module_lang` VALUES ('page_select_tag_type', 'ja', '銈裤偘銇ó椤炪倰閬告姙'); +INSERT INTO `sys_module_lang` VALUES ('page_select_template', 'ja', '閫夋嫨妯℃澘銉嗐兂銉椼儸銉笺儓銈掗伕鎶'); +INSERT INTO `sys_module_lang` VALUES ('page_select_user', 'ja', '銉︺兗銈躲兗銈掗伕鎶'); +INSERT INTO `sys_module_lang` VALUES ('place_add', 'ja', '鎺ㄥエ銉撱儍銉堛儑銉笺偪銇拷鍔/澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('place_check', 'ja', '鎺ㄥエ銉撱儍銉堛儑銉笺偪銈掔⒑瑾嶃仚銈'); +INSERT INTO `sys_module_lang` VALUES ('place_clear', 'ja', '鎺ㄥエ銉撱儍銉堛儑銉笺偪銇偗銉偄'); +INSERT INTO `sys_module_lang` VALUES ('place_data_list', 'ja', '鎺ㄥエ銉撱儍銉堛儑銉笺偪'); +INSERT INTO `sys_module_lang` VALUES ('place_delete', 'ja', '鎺ㄥエ銉撱儍銉堛儑銉笺偪銈掑墛闄ゃ仚銈'); +INSERT INTO `sys_module_lang` VALUES ('place_list', 'ja', '銉氥兗銈搞儠銉┿偘銉°兂銉堢鐞'); +INSERT INTO `sys_module_lang` VALUES ('place_publish', 'ja', '銉儶銉笺偣'); +INSERT INTO `sys_module_lang` VALUES ('place_refresh', 'ja', '鍒锋柊鎺ㄨ崘浣嶆暟鎹帹濂ㄣ儞銉冦儓銉囥兗銈裤倰銉儠銉儍銈枫儱銇欍倠'); +INSERT INTO `sys_module_lang` VALUES ('place_template_content', 'ja', '澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('place_template_data_dictionary', 'ja', '銉囥兗銈胯緸鏇搞倰閬告姙'); +INSERT INTO `sys_module_lang` VALUES ('place_template_fragment', 'ja', '銉嗐兂銉椼儸銉笺儓銉曘儵銈般儭銉炽儓'); +INSERT INTO `sys_module_lang` VALUES ('place_template_help', 'ja', '銉嗐兂銉椼儸銉笺儓銇儤銉儣'); +INSERT INTO `sys_module_lang` VALUES ('place_template_list', 'ja', '銉氥兗銈搞儠銉┿偘銉°兂銉堛儐銉炽儣銉兗銉'); +INSERT INTO `sys_module_lang` VALUES ('place_template_metadata', 'ja', '銉°偪銉囥兗銈裤伄澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('place_template_place', 'ja', '銉氥兗銈搞儠銉┿偘銉°兂銉'); +INSERT INTO `sys_module_lang` VALUES ('place_template_webfile', 'ja', '銈︺偋銉栥偟銈ゃ儓銉曘偂銈ゃ儷'); +INSERT INTO `sys_module_lang` VALUES ('place_view', 'ja', '鎺ㄥエ銉撱儍銉堛儑銉笺偪銈掕銈'); +INSERT INTO `sys_module_lang` VALUES ('report_user', 'ja', '銉︺兗銈躲兗銉囥兗銈裤伄鐩h'); +INSERT INTO `sys_module_lang` VALUES ('role_add', 'ja', '杩藉姞/澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('role_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('role_list', 'ja', '褰瑰壊绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('system_menu', 'ja', '銈枫偣銉嗐儬銉°兂銉嗐儕銉炽偣'); +INSERT INTO `sys_module_lang` VALUES ('tag_add', 'ja', '杩藉姞/澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('tag_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('tag_list', 'ja', '銉┿儥銉鐞'); +INSERT INTO `sys_module_lang` VALUES ('tag_type_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('tag_type_list', 'ja', '銈裤偘銇垎椤'); +INSERT INTO `sys_module_lang` VALUES ('tag_type_save', 'ja', '杩藉姞/澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('task_add', 'ja', '杩藉姞/澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('task_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('task_list', 'ja', '銈裤偣銈▓鐢'); +INSERT INTO `sys_module_lang` VALUES ('task_pause', 'ja', '鍋滄'); +INSERT INTO `sys_module_lang` VALUES ('task_recreate', 'ja', '銉偦銉冦儓'); +INSERT INTO `sys_module_lang` VALUES ('task_resume', 'ja', '鍥炲京'); +INSERT INTO `sys_module_lang` VALUES ('task_runonce', 'ja', '瀹熻'); +INSERT INTO `sys_module_lang` VALUES ('task_template_content', 'ja', '澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('task_template_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('task_template_fragment', 'ja', '銈裤偣銈▓鐢汇偣銈儶銉椼儓鏂墖'); +INSERT INTO `sys_module_lang` VALUES ('task_template_help', 'ja', '銉樸儷銉'); +INSERT INTO `sys_module_lang` VALUES ('task_template_list', 'ja', '銈裤偣銈▓鐢汇偣銈儶銉椼儓'); +INSERT INTO `sys_module_lang` VALUES ('template_content', 'ja', '澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('template_content-type', 'ja', 'content-type銈掗伕鎶'); +INSERT INTO `sys_module_lang` VALUES ('template_content_form', 'ja', '銈炽兂銉嗐兂銉勯佷俊銉曘偐銉笺儬'); +INSERT INTO `sys_module_lang` VALUES ('template_data_dictionary', 'ja', '銉囥兗銈胯緸鏇搞倰閬告姙'); +INSERT INTO `sys_module_lang` VALUES ('template_delete', 'ja', '鍓婇櫎'); +INSERT INTO `sys_module_lang` VALUES ('template_demo', 'ja', '銉嗐兂銉椼儸銉笺儓銇緥'); +INSERT INTO `sys_module_lang` VALUES ('template_fragment', 'ja', '銉嗐兂銉椼儸銉笺儓銉曘儵銈般儭銉炽儓'); +INSERT INTO `sys_module_lang` VALUES ('template_help', 'ja', '銉嗐兂銉椼儸銉笺儓銉樸儷銉'); +INSERT INTO `sys_module_lang` VALUES ('template_list', 'ja', '銉嗐兂銉椼儸銉笺儓銉曘偂銈ゃ儷绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('template_metadata', 'ja', '銉°偪銉囥兗銈裤伄澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('template_place', 'ja', '銉氥兗銈搞儠銉┿偘銉°兂銉'); +INSERT INTO `sys_module_lang` VALUES ('template_place_form', 'ja', '銉氥兗銈搞儠銉┿偘銉°兂銉堟彁鍑恒儠銈┿兗銉'); +INSERT INTO `sys_module_lang` VALUES ('template_upload', 'ja', '銉嗐兂銉椼儸銉笺儓銈掋偄銉冦儣銉兗銉夈仚銈'); +INSERT INTO `sys_module_lang` VALUES ('template_website_file', 'ja', '銈︺偋銉栥偟銈ゃ儓銉曘偂銈ゃ儷'); +INSERT INTO `sys_module_lang` VALUES ('user_add', 'ja', '杩藉姞/澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('user_disable', 'ja', '绂佹'); +INSERT INTO `sys_module_lang` VALUES ('user_enable', 'ja', '銈兂'); +INSERT INTO `sys_module_lang` VALUES ('user_list', 'ja', '銉︺兗銈躲兗绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('user_menu', 'ja', '銉︺兗銈躲兗绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('webfile_content', 'ja', '銉曘偂銈ゃ儷銇鏇'); +INSERT INTO `sys_module_lang` VALUES ('webfile_directory', 'ja', '鐩尣銈掍綔鎴'); +INSERT INTO `sys_module_lang` VALUES ('webfile_list', 'ja', '銈︺偋銉栥偟銈ゃ儓銇儠銈°偆銉鐞'); +INSERT INTO `sys_module_lang` VALUES ('webfile_unzip', 'ja', '瑙e噸'); +INSERT INTO `sys_module_lang` VALUES ('webfile_upload', 'ja', '銈€儍銉椼儹銉笺儔'); +INSERT INTO `sys_module_lang` VALUES ('webfile_zip', 'ja', '鍦х府'); +INSERT INTO `sys_module_lang` VALUES ('word_list', 'ja', '妞滅储銉兗銉夌鐞'); +-- 2018-11-06 -- +ALTER TABLE `cms_category` + MODIFY COLUMN `path` varchar(1000) DEFAULT NULL COMMENT '棣栭〉璺緞' AFTER `template_path`, + MODIFY COLUMN `url` varchar(1000) DEFAULT NULL COMMENT '棣栭〉鍦板潃' AFTER `has_static`, + MODIFY COLUMN `content_path` varchar(1000) DEFAULT NULL COMMENT '鍐呭璺緞' AFTER `url`; +ALTER TABLE `cms_content` + MODIFY COLUMN `url` varchar(1000) DEFAULT NULL COMMENT '鍦板潃' AFTER `has_static`; +ALTER TABLE `cms_content_attribute` + MODIFY COLUMN `source_url` varchar(1000) DEFAULT NULL COMMENT '鏉ユ簮鍦板潃' AFTER `source`; +ALTER TABLE `cms_place` + MODIFY COLUMN `url` varchar(1000) default NULL COMMENT '瓒呴摼鎺' AFTER `title`; +ALTER TABLE `cms_content_related` + MODIFY COLUMN `url` varchar(1000) default NULL COMMENT '鎺ㄨ崘閾炬帴鍦板潃' AFTER `user_id`; +-- 2018-11-07 -- +CREATE TABLE `cms_comment` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID', + `user_id` bigint(20) NOT NULL COMMENT '鐢ㄦ埛ID', + `content_id` bigint(20) NOT NULL COMMENT '鏂囩珷鍐呭', + `check_user_id` bigint(20) DEFAULT NULL COMMENT '瀹℃牳鐢ㄦ埛', + `check_date` datetime DEFAULT NULL COMMENT '瀹℃牳鏃ユ湡', + `update_date` datetime DEFAULT NULL COMMENT '鏇存柊鏃ユ湡', + `create_date` datetime NOT NULL COMMENT '鍒涘缓鏃ユ湡', + `status` int(11) NOT NULL COMMENT '鐘舵侊細1銆佸凡鍙戝竷 2銆佸緟瀹℃牳', + `disabled` tinyint(1) NOT NULL COMMENT '宸茬鐢', + `text` text COMMENT '鍐呭', + PRIMARY KEY (`id`), + KEY `site_id` (`site_id`,`content_id`,`status`,`disabled`, `create_date`) +) COMMENT='璇勮'; +INSERT INTO `sys_module` VALUES ('comment_list', 'cmsComment/list', 'sysUser/lookup', '', 'content_extend', 1, 4); +INSERT INTO `sys_module` VALUES ('comment_check', NULL, 'cmsComment/check', NULL, 'comment_list', 0, 0); +INSERT INTO `sys_module` VALUES ('comment_uncheck', NULL, 'cmsComment/uncheck', NULL, 'comment_list', 0, 0); +INSERT INTO `sys_module` VALUES ('comment_delete', NULL, 'cmsComment/delete', NULL, 'comment_list', 0, 0); + +INSERT INTO `sys_module_lang` VALUES ('comment_list', 'zh', '璇勮绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('comment_list', 'en', 'Comment management'); +INSERT INTO `sys_module_lang` VALUES ('comment_list', 'ja', '銈炽儭銉炽儓绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('comment_check', 'zh', '瀹℃牳'); +INSERT INTO `sys_module_lang` VALUES ('comment_check', 'en', 'Check'); +INSERT INTO `sys_module_lang` VALUES ('comment_check', 'ja', '瀵╂熁'); +INSERT INTO `sys_module_lang` VALUES ('comment_uncheck', 'zh', '鍙栨秷瀹℃牳'); +INSERT INTO `sys_module_lang` VALUES ('comment_uncheck', 'en', 'Uncheck'); +INSERT INTO `sys_module_lang` VALUES ('comment_uncheck', 'ja', '瀵╂熁銈掑彇銈婃秷銇'); +INSERT INTO `sys_module_lang` VALUES ('comment_delete', 'zh', '鍒犻櫎'); +INSERT INTO `sys_module_lang` VALUES ('comment_delete', 'en', 'Delete'); +INSERT INTO `sys_module_lang` VALUES ('comment_delete', 'ja', '鍓婇櫎'); +-- 2018-11-09 -- +UPDATE `sys_module` SET `attached` = replace(replace(`attached`,'',''); +ALTER TABLE `sys_module` + MODIFY COLUMN `attached` varchar(50) default NULL COMMENT '鏍囬闄勫姞' AFTER `authorized_url`; +ALTER TABLE `sys_user` + ADD COLUMN `salt` varchar(20) NULL COMMENT '娣锋穯鐮,涓虹┖鏃跺垯瀵嗙爜涓簃d5,涓10浣嶆椂sha512(sha512(password)+salt)' AFTER `password`, + ADD COLUMN `weak_password` tinyint(1) NOT NULL DEFAULT 0 COMMENT '寮卞瘑鐮' AFTER `salt`, + MODIFY COLUMN `password` varchar(128) NOT NULL COMMENT '瀵嗙爜' AFTER `name`; +-- 2018-12-07 -- +ALTER TABLE `cms_content_file` + CHANGE COLUMN `image` `file_type` varchar(20) NOT NULL COMMENT '鏂囦欢绫诲瀷' AFTER `file_path`, + CHANGE COLUMN `size` `file_size` bigint(20) NOT NULL COMMENT '鏂囦欢澶у皬' AFTER `file_type`, + DROP INDEX `image`, + DROP INDEX `size`, + ADD INDEX `file_type`(`file_type`), + ADD INDEX `file_size` (`file_size`); +UPDATE `cms_content_file` SET file_type = 'image' WHERE file_type = '1'; +UPDATE `cms_content_file` SET file_type = 'image' WHERE file_path like '%.png' or file_path like '%.jpg' or file_path like '%.gif' or file_path like '%.bmp'; +UPDATE `cms_content_file` SET file_type = 'video' WHERE file_path like '%.mp4' or file_path like '%.3gp'; +UPDATE `cms_content_file` SET file_type = 'other' WHERE file_type = '0'; +-- 2018-12-20 -- +INSERT INTO `sys_module` VALUES ('content_export', NULL, 'cmsContent/export', '', 'content_menu', 1, 0); +INSERT INTO `sys_module_lang` VALUES ('content_export', 'ja', '杓稿嚭'); +INSERT INTO `sys_module_lang` VALUES ('content_export', 'zh', '瀵煎嚭'); +INSERT INTO `sys_module_lang` VALUES ('content_export', 'en', 'Export'); +ALTER TABLE `cms_place` ADD COLUMN `check_user_id` bigint(20) NULL COMMENT '瀹℃牳鐢ㄦ埛' AFTER `user_id`; +ALTER TABLE `cms_place` + DROP INDEX `publish_date`, + DROP INDEX `site_id`, + DROP INDEX `item_type`, + DROP INDEX `user_id`, + DROP INDEX `path`, + DROP INDEX `disabled`, + DROP INDEX `create_date`, + DROP INDEX `status`, + DROP INDEX `item_id`, + ADD INDEX `publish_date`(`publish_date`, `create_date`) , + ADD INDEX `site_id`(`site_id`, `path`, `status`, `disabled`), + ADD INDEX `item_type`(`item_type`, `item_id`) , + ADD INDEX `user_id`(`user_id`, `check_user_id`) ; +UPDATE `sys_module` SET `authorized_url` = 'cmsPlace/dataList,cmsPlace/export' WHERE `id` ='place_data_list'; +UPDATE `sys_module` SET `authorized_url` = 'sysUser/lookup' WHERE `id` ='place_list'; +-- 2018-12-22 -- +ALTER TABLE `cms_comment` + ADD COLUMN `reply_id` bigint(20) NULL COMMENT '鍥炲ID' AFTER `user_id`, + DROP INDEX `site_id`, + ADD INDEX `site_id`(`site_id`, `content_id`, `status`, `disabled`), + ADD INDEX `update_date`(`update_date`, `create_date`), + ADD INDEX `reply_id`(`site_id`, `reply_id`); +ALTER TABLE `cms_comment` + ADD COLUMN `reply_user_id` bigint(20) NULL COMMENT '鍥炲鐢ㄦ埛ID' AFTER `reply_id`, + DROP INDEX `reply_id`, + ADD INDEX `reply_id`(`site_id`, `reply_user_id`, `reply_id`); +-- 2018-12-28 -- +ALTER TABLE `cms_content` DROP INDEX `status`, + ADD COLUMN `expiry_date` datetime NULL COMMENT '杩囨湡鏃ユ湡' AFTER `publish_date`, + ADD INDEX `status` (`site_id`,`status`,`category_id`,`disabled`,`model_id`,`parent_id`,`sort`,`publish_date`,`expiry_date`); +ALTER TABLE `cms_place` DROP INDEX `publish_date`, + ADD COLUMN `expiry_date` datetime NULL COMMENT '杩囨湡鏃ユ湡' AFTER `publish_date`, + ADD INDEX `publish_date` (`publish_date`,`create_date`,`expiry_date`); +-- 2019-01-01 -- +update cms_category set code=CONCAT(code,id) where (site_id,code) in ( + select * from ( + SELECT site_id,code FROM `cms_category` group by site_id,code having count(*) > 1 + ) a +) and id not in ( + select * from ( + select min(id) from cms_category where (site_id,code) in ( + SELECT site_id,code FROM `cms_category` group by site_id,code having count(*) > 1 + ) group by site_id,code + ) b +); +ALTER TABLE `cms_category` + MODIFY COLUMN `code` varchar(50) NOT NULL COMMENT '缂栫爜' AFTER `tag_type_ids`, + DROP INDEX `site_id`, + DROP INDEX `parent_id`, + DROP INDEX `disabled`, + DROP INDEX `type_id`, + DROP INDEX `allow_contribute`, + DROP INDEX `hidden`, + ADD INDEX `type_id`(`type_id`, `allow_contribute`), + ADD INDEX `site_id`(`site_id`, `parent_id`, `hidden`, `disabled`), + ADD UNIQUE INDEX `code`(`site_id`, `code`); +ALTER TABLE `cms_content` + ADD COLUMN `quote_content_id` bigint(20) NULL COMMENT '寮曠敤鍐呭ID' AFTER `parent_id`, + ADD INDEX `quote_content_id`(`site_id`, `quote_content_id`); +-- 2019-01-11 -- +UPDATE `sys_module` SET `authorized_url` = 'cmsWebFile/doUpload,cmsWebFile/check' WHERE `id` ='webfile_upload'; +-- 2019-01-22 -- +ALTER TABLE `cms_content` + ADD COLUMN `dictionar_values` text default NULL COMMENT '鏁版嵁瀛楀吀鍊' AFTER `tag_ids`; +-- 2019-01-24 -- +ALTER TABLE `cms_dictionary` + MODIFY COLUMN `id` varchar(20) NOT NULL FIRST, + DROP PRIMARY KEY, + ADD PRIMARY KEY (`id`, `site_id`); +ALTER TABLE `cms_dictionary_data` + MODIFY COLUMN `dictionary_id` varchar(20) NOT NULL COMMENT '瀛楀吀' FIRST, + ADD COLUMN `site_id` smallint(0) NOT NULL COMMENT '绔欑偣ID' AFTER `dictionary_id`, + DROP PRIMARY KEY, + ADD PRIMARY KEY (`dictionary_id`, `site_id`, `value`); +update cms_dictionary_data a set a.site_id = (select site_id from cms_dictionary b where a.dictionary_id = b.id); +ALTER TABLE `sys_extend_field` + MODIFY COLUMN `dictionary_id` varchar(20) NULL DEFAULT NULL COMMENT '鏁版嵁瀛楀吀ID' AFTER `default_value`; +-- 2019-01-24 -- +UPDATE `sys_module` SET `authorized_url` = 'cmsCategory/addMore,cmsCategory/virify,cmsTemplate/lookup,cmsCategory/categoryPath,cmsCategory/contentPath,file/doUpload,cmsCategory/save' WHERE `id` ='category_add'; +UPDATE `sys_module` SET `authorized_url` = 'cmsDictionary/save,cmsDictionary/virify' WHERE `id` ='dictionary_add'; +-- 2019-01-29 -- +INSERT INTO `sys_module` VALUES ('myself_device', 'myself/userDeviceList', 'sysAppClient/enable,sysAppClient/disable', 'icon-linux', 'myself_menu', 1, 5); +UPDATE `sys_module` SET `authorized_url` = 'sysUserToken/delete' WHERE `id` ='myself_token'; +INSERT INTO `sys_module_lang`(`module_id`, `lang`, `value`) VALUES ('myself_device', 'en', 'My device'); +INSERT INTO `sys_module_lang`(`module_id`, `lang`, `value`) VALUES ('myself_device', 'ja', '绉併伄绔湯'); +INSERT INTO `sys_module_lang`(`module_id`, `lang`, `value`) VALUES ('myself_device', 'zh', '鎴戠殑璁惧'); +ALTER TABLE `sys_app_client` + ADD COLUMN `id` bigint(20) NOT NULL AUTO_INCREMENT FIRST, + DROP PRIMARY KEY, + ADD PRIMARY KEY (`id`), + ADD UNIQUE INDEX(`site_id`, `channel`, `uuid`); +-- 2019-02-15 -- +ALTER TABLE `cms_place` + MODIFY COLUMN `path` varchar(100) NOT NULL COMMENT '妯℃澘璺緞' AFTER `site_id`; +DELETE FROM `cms_word` WHERE LENGTH(name) > 100; +ALTER TABLE `cms_word` + MODIFY COLUMN `name` varchar(100) NOT NULL COMMENT '鍚嶇О' AFTER `site_id`; +ALTER TABLE `sys_dept_page` + MODIFY COLUMN `page` varchar(100) NOT NULL COMMENT '椤甸潰' AFTER `dept_id`; +ALTER TABLE `sys_domain` + MODIFY COLUMN `name` varchar(100) NOT NULL COMMENT '鍩熷悕' FIRST, + MODIFY COLUMN `path` varchar(100) NULL DEFAULT NULL COMMENT '璺緞' AFTER `wild`; +ALTER TABLE `sys_role_authorized` + MODIFY COLUMN `url` varchar(100) NOT NULL COMMENT '鎺堟潈鍦板潃' AFTER `role_id`; +-- 2019-02-19 -- +ALTER TABLE `cms_content_attribute` + ADD COLUMN `search_text` longtext NULL COMMENT '鍏ㄦ枃绱㈠紩鏂囨湰' AFTER `data`; +ALTER TABLE `sys_extend_field` + ADD COLUMN `searchable` tinyint(1) NOT NULL COMMENT '鏄惁鍙悳绱' AFTER `required`, + MODIFY COLUMN `maxlength` int(11) NULL DEFAULT NULL COMMENT '鏈澶ч暱搴' AFTER `searchable`; +-- 2019-02-22 -- +UPDATE `sys_module` SET `parent_id` = 'config_menu' where id = 'domain_list'; +UPDATE `sys_module` SET `authorized_url` = 'cmsPlace/export',`url` = 'cmsPlace/dataList' WHERE `id` ='place_data_list'; \ No newline at end of file diff --git a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V2017.0708-V4.0.20180210.sql b/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V2017.0708-V4.0.20180210.sql deleted file mode 100644 index dd0c20a22..000000000 --- a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V2017.0708-V4.0.20180210.sql +++ /dev/null @@ -1,106 +0,0 @@ --- 20170715 -- -INSERT INTO `sys_moudle` VALUES ('125', '鎾ら攢瀹℃牳', null, 'cmsContent/uncheck', null, '12', '0', '0'); -DROP TABLE IF EXISTS `home_dialog`; -DROP TABLE IF EXISTS `home_message`; -DROP TABLE IF EXISTS `home_group_active`; --- 20170804 -- -UPDATE sys_moudle SET `parent_id` = 117 WHERE `sys_moudle`.`id` in(118,119); --- 20170812 -- -INSERT INTO `sys_moudle` VALUES ('126', '鏂囦欢', null, null, '', null, '1', '1'); -UPDATE sys_moudle SET `parent_id` = 126 WHERE `sys_moudle`.`id` = 38; -UPDATE `sys_moudle` SET `name` = '绔欑偣閰嶇疆' WHERE `sys_moudle`.`id` = 140; -UPDATE `sys_moudle` SET `name` = '鏁版嵁瀛楀吀' WHERE `sys_moudle`.`id` = 122; -ALTER TABLE `cms_content` - ADD COLUMN `check_date` datetime default NULL COMMENT '瀹℃牳鏃ユ湡' AFTER `publish_date`, - ADD COLUMN `update_date` datetime default NULL COMMENT '鏇存柊鏃ユ湡' AFTER `check_date`, - DROP INDEX `publish_date`, - DROP INDEX `user_id`, - DROP INDEX `category_id`, - DROP INDEX `model_id`, - DROP INDEX `parent_id`, - DROP INDEX `status`, - DROP INDEX `childs`, - DROP INDEX `scores`, - DROP INDEX `comments`, - DROP INDEX `clicks`, - DROP INDEX `title`, - DROP INDEX `check_user_id`, - DROP INDEX `site_id`, - DROP INDEX `has_files`, - DROP INDEX `has_images`, - DROP INDEX `only_url`, - DROP INDEX `sort`, - ADD INDEX `check_date` (`check_date`,`update_date`), - ADD INDEX `scores` (`scores`,`comments`,`clicks`), - ADD INDEX `status` (`site_id`,`status`,`category_id`,`disabled`,`model_id`,`parent_id`,`sort`,`publish_date`), - ADD INDEX `only_url` (`only_url`,`has_images`,`has_files`,`user_id`); -UPDATE `cms_content` SET `check_date` = `publish_date`; --- 20170905 -- -UPDATE `sys_moudle` SET `url` = 'cmsPlace/publish_place' WHERE `sys_moudle`.`id` = 53; --- 20170922 -- -UPDATE `sys_moudle` SET `parent_id` = 5 WHERE `sys_moudle`.`id` = 63; -UPDATE `sys_moudle` SET `authorized_url` = 'cmsContent/addMore,file/doUpload,cmsContent/lookup,cmsContent/lookup_list,cmsContent/save,ueditor,ckeditor/upload' WHERE `sys_moudle`.`id` = 102; --- 20170922 -- -INSERT INTO `sys_moudle` VALUES ('127', '鎺ㄨ崘浣嶆暟鎹', 'cmsPlace/dataList', null, null , '107', '1', '1'); -INSERT INTO `sys_moudle` VALUES ('128', '鐢ㄦ埛鏁版嵁鐩戞帶', 'report/user', NULL, '', '46', '1', '0'); -ALTER TABLE `sys_moudle` ORDER BY `id`; -DELETE FROM `sys_moudle` WHERE id = 130; --- 20171103 -- -UPDATE `sys_user` SET roles = '2' where id = 2 and site_id = 2; --- 20171216 -- -ALTER TABLE `cms_place` MODIFY COLUMN `item_id` bigint(20) default NULL COMMENT '鎺ㄨ崘椤圭洰ID' AFTER `item_type`; -ALTER TABLE `cms_category` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `cms_category_type` CHANGE COLUMN `siteId` `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`, DROP INDEX `siteId`,ADD INDEX `site_id`(`site_id`) USING BTREE; -ALTER TABLE `cms_content` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `cms_lottery` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `cms_tag` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `cms_tag_type` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `cms_vote` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `cms_word` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `home_article` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `home_broadcast` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `home_comment` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `home_directory` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `home_file` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `home_group` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `home_group_post` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `home_score` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `home_user` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `user_id`; -ALTER TABLE `log_login` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `log_operate` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `log_task` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `log_upload` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `sys_app` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `sys_app_client` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' FIRST; -ALTER TABLE `sys_config_data` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' FIRST; -ALTER TABLE `sys_dept` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `sys_domain` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `name`; -ALTER TABLE `sys_role` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `sys_task` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `sys_user` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `id`; -ALTER TABLE `sys_user_token` MODIFY COLUMN `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID' AFTER `auth_token`; -ALTER TABLE `cms_category_type` COMMENT = '鍒嗙被绫诲瀷'; -ALTER TABLE `cms_lottery` COMMENT = '鎶藉'; -ALTER TABLE `cms_lottery_user` COMMENT = '鎶藉鐢ㄦ埛'; -ALTER TABLE `cms_lottery_user_attribute` COMMENT = '鎶藉鐢ㄦ埛鎵╁睍鏁版嵁'; -ALTER TABLE `cms_vote` COMMENT = '鎶曠エ'; -ALTER TABLE `cms_vote_item` COMMENT = '鎶曠エ閫夐」'; -ALTER TABLE `cms_vote_user` COMMENT = '鎶曠エ鐢ㄦ埛'; -ALTER TABLE `cms_word` COMMENT = '鎼滅储璇'; -ALTER TABLE `sys_app` COMMENT = '搴旂敤'; -ALTER TABLE `sys_app_client` COMMENT = '搴旂敤瀹㈡埛绔'; -ALTER TABLE `sys_app_token` COMMENT = '搴旂敤鎺堟潈'; -ALTER TABLE `sys_extend` COMMENT = '鎵╁睍'; -ALTER TABLE `sys_extend_field` COMMENT = '鎵╁睍瀛楁'; --- 2017-12-24 -- -ALTER TABLE `cms_lottery` DROP COLUMN `interval_hour`,DROP COLUMN `gift`,DROP COLUMN `extend_id`; -ALTER TABLE `cms_vote` DROP COLUMN `anonymous`,DROP COLUMN `interval_hour`,DROP COLUMN `item_extend_id` , DROP INDEX `disabled`, ADD INDEX `disabled` (`site_id`,`end_date`,`disabled`); -DROP TABLE IF EXISTS `cms_vote_item_attribute`; -DROP TABLE IF EXISTS `cms_lottery_user_attribute`; --- 2018-01-18 -- -ALTER TABLE `cms_category` DROP COLUMN `contents`; --- 2018-02-08 -- -ALTER TABLE `sys_moudle` RENAME `sys_module`; -ALTER TABLE `sys_role_moudle` RENAME `sys_role_module`; -ALTER TABLE `sys_role_module` CHANGE COLUMN `moudle_id` `module_id` int(11) NOT NULL COMMENT '妯″潡ID' AFTER `role_id`; -ALTER TABLE `sys_role` CHANGE COLUMN `show_all_moudle` `show_all_module` int(11) NOT NULL COMMENT '鏄剧ず鍏ㄩ儴妯″潡' AFTER `owns_all_right`; diff --git a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.190312-V4.0.202004.sql b/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V2019-V2021.sql similarity index 59% rename from publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.190312-V4.0.202004.sql rename to publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V2019-V2021.sql index 5fcf7f2d5..c872bbb54 100644 --- a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.190312-V4.0.202004.sql +++ b/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V2019-V2021.sql @@ -525,3 +525,274 @@ ALTER TABLE `sys_user` MODIFY COLUMN `last_login_ip` varchar(130) DEFAULT NULL COMMENT '鏈鍚庣櫥褰昳p' AFTER `last_login_date`; ALTER TABLE `sys_app_client` MODIFY COLUMN `last_login_ip` varchar(130) DEFAULT NULL COMMENT '涓婃鐧诲綍IP' AFTER `last_login_date`; + +-- 2020-06-23 -- +ALTER TABLE `cms_tag` + DROP INDEX `cms_tag_site_id`, + ADD INDEX `cms_tag_site_id`(`site_id`, `name`), + ADD INDEX `cms_tag_type_id` (`type_id`); +ALTER TABLE `cms_tag_type` + DROP INDEX `cms_tag_type_site_id`, + ADD INDEX `cms_tag_type_site_id` (`site_id`,`name`); +-- 2020-07-27 -- +DELETE FROM `sys_module` WHERE id = 'category'; +DELETE FROM `sys_module_lang` WHERE module_id = 'category'; +UPDATE `sys_module` SET `parent_id` = 'content' WHERE `id` ='category_extend'; +UPDATE `sys_module` SET `id` = 'category_list', `parent_id` = 'content_menu',`sort` = '1' WHERE `id` ='category_menu'; +UPDATE `sys_module_lang` SET `module_id` = 'category_list' WHERE `module_id` ='category_menu'; +UPDATE `sys_module` SET `parent_id` = 'category_list' WHERE `parent_id` ='category_menu'; +UPDATE `sys_module` SET `parent_id` = 'content_list' WHERE `parent_id` ='content_menu'; +UPDATE `sys_module` SET `parent_id` = 'content_menu' WHERE `parent_id` ='content_extend'; +DELETE FROM `sys_module_lang` WHERE `module_id` = 'content_extend'; +DELETE FROM `sys_module` WHERE `id` = 'content_extend'; +UPDATE `sys_module` SET `parent_id` = 'content_menu', `sort` = '2' WHERE `id` ='category_list'; +UPDATE `sys_module` SET `authorized_url` = NULL, `url` = NULL WHERE `id` ='content_menu'; +INSERT INTO `sys_module` VALUES ('content_list', 'cmsContent/list', 'sysUser/lookup', 'icon-book', 'content_menu', 1, 0); +UPDATE `sys_module` SET `sort` = '1' where `id` = 'comment_list'; +UPDATE `sys_module` SET `sort` = '3' where `id` = 'tag_list'; +UPDATE `sys_module` SET `sort` = '4' where `id` = 'word_list'; +UPDATE `sys_module` SET `sort` = '5' where `id` = 'content_vote'; +UPDATE `sys_module` SET `sort` = '6' where `id` = 'content_recycle_list'; +UPDATE `sys_module` SET `attached` = NULL where `id` = 'content_add'; +UPDATE `sys_module` SET `menu` = '0' where `parent_id` = 'content_list'; +UPDATE `sys_module` SET `sort` = '1' where `id` = 'category_extend'; +INSERT INTO `sys_module_lang` VALUES ('content_list', 'en', 'Content management'); +INSERT INTO `sys_module_lang` VALUES ('content_list', 'ja', '銈炽兂銉嗐兂銉勭鐞'); +INSERT INTO `sys_module_lang` VALUES ('content_list', 'zh', '鍐呭绠$悊'); +ALTER TABLE `cms_content` DROP INDEX `cms_content_quote_content_id`; +UPDATE `sys_module_lang` SET `value` = '绉併伄' where `module_id` = 'myself' and `lang` = 'ja'; +UPDATE `sys_module_lang` SET `value` = '鎴戠殑' where `module_id` = 'myself' and `lang` = 'zh'; +-- 2021-01-14 -- +ALTER TABLE `cms_content` + ADD INDEX `cms_content_quote_content_id`(`site_id`, `quote_content_id`); +CREATE TABLE `log_visit` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `site_id` smallint(6) NOT NULL COMMENT '绔欑偣', + `session_id` varchar(50) NOT NULL COMMENT '浼氳瘽', + `visit_date` date NOT NULL COMMENT '璁块棶鏃ユ湡', + `visit_hour` tinyint(4) NOT NULL COMMENT '璁块棶灏忔椂', + `ip` varchar(130) NOT NULL COMMENT 'IP', + `user_agent` varchar(500) DEFAULT NULL COMMENT 'User Agent', + `url` varchar(2048) NOT NULL COMMENT '璁块棶璺緞', + `title` varchar(255) DEFAULT NULL COMMENT '鏍囬', + `screen_width` int(11) DEFAULT NULL COMMENT '灞忓箷瀹藉害', + `screen_height` int(11) DEFAULT NULL COMMENT '灞忓箷楂樺害', + `referer_url` varchar(2048) DEFAULT NULL COMMENT '鏉ユ簮URL', + `item_type` varchar(50) DEFAULT NULL COMMENT '椤圭洰绫诲瀷', + `item_id` varchar(50) DEFAULT NULL COMMENT '椤圭洰', + `create_date` datetime NOT NULL COMMENT '鍒涘缓鏃ユ湡', + PRIMARY KEY (`id`), + KEY `log_visit_visit_date` (`site_id`,`visit_date`,`visit_hour`), + KEY `log_visit_session_id` (`site_id`,`session_id`,`visit_date`,`create_date`,`ip`) +) COMMENT='璁块棶鏃ュ織'; + +CREATE TABLE `log_visit_day` ( + `site_id` smallint(6) NOT NULL COMMENT '绔欑偣', + `visit_date` date NOT NULL COMMENT '鏃ユ湡', + `visit_hour` tinyint(4) NOT NULL COMMENT '灏忔椂', + `pv` bigint(20) NOT NULL COMMENT 'Page Views', + `uv` bigint(20) DEFAULT NULL COMMENT 'User Views', + `ipviews` bigint(20) DEFAULT NULL COMMENT 'IP鏁', + PRIMARY KEY (`site_id`,`visit_date`,`visit_hour`), + KEY `log_visit_session_id` (`site_id`,`visit_date`) +) COMMENT = '璁块棶姹囨'; + +CREATE TABLE `log_visit_session` ( + `site_id` smallint(6) NOT NULL COMMENT '绔欑偣', + `session_id` varchar(50) NOT NULL COMMENT '浼氳瘽', + `visit_date` date NOT NULL COMMENT '鏃ユ湡', + `last_visit_date` datetime DEFAULT NULL COMMENT '涓婃璁块棶鏃ユ湡', + `first_visit_date` datetime DEFAULT NULL COMMENT '棣栨璁块棶鏃ユ湡', + `ip` varchar(130) NOT NULL COMMENT 'IP', + `pv` bigint(20) NOT NULL COMMENT 'PV', + PRIMARY KEY (`site_id`,`session_id`,`visit_date`), + KEY `log_visit_visit_date` (`site_id`,`visit_date`,`ip`) +) COMMENT = '璁块棶浼氳瘽'; + +-- 2021-03-25 -- +UPDATE `sys_module` SET `authorized_url` = 'cmsContent/push_content,cmsContent/push_content_list,cmsContent/push_to_content,cmsContent/push_page,cmsContent/push_page_list,cmsPlace/add,cmsPlace/save,cmsContent/related,cmsContent/unrelated,cmsPlace/delete,cmsPlace/push' WHERE `id` ='content_push'; +-- 20210329 -- +ALTER TABLE `log_login` MODIFY COLUMN `error_password` varchar(255) default NULL COMMENT '閿欒瀵嗙爜' AFTER `create_date`; +-- 2021-05-26 -- +INSERT INTO `sys_module` VALUES ('log_visit', 'log/visit', 'log/visitView', 'icon-bolt', 'log_menu', 1, 5); +INSERT INTO `sys_module` VALUES ('log_visit_day', 'log/visitDay', NULL, 'icon-calendar', 'log_menu', 1, 7); +INSERT INTO `sys_module` VALUES ('log_visit_session', 'log/visitSession', NULL, 'icon-comment-alt', 'log_menu', 1, 6); +INSERT INTO `sys_module_lang` VALUES ('log_visit', 'en', 'Visit log'); +INSERT INTO `sys_module_lang` VALUES ('log_visit', 'ja', '銈€偗銈汇偣銉偘'); +INSERT INTO `sys_module_lang` VALUES ('log_visit', 'zh', '璁块棶鏃ュ織'); +INSERT INTO `sys_module_lang` VALUES ('log_visit_day', 'en', 'Daily visit log'); +INSERT INTO `sys_module_lang` VALUES ('log_visit_day', 'ja', '姣庢棩銇í鍟忋儹銈'); +INSERT INTO `sys_module_lang` VALUES ('log_visit_day', 'zh', '鏃ヨ闂棩蹇'); +INSERT INTO `sys_module_lang` VALUES ('log_visit_session', 'en', 'Visit session'); +INSERT INTO `sys_module_lang` VALUES ('log_visit_session', 'ja', '銈€偗銈汇偣銈汇儍銈枫儳銉'); +INSERT INTO `sys_module_lang` VALUES ('log_visit_session', 'zh', '璁块棶鏃ュ織浼氳瘽'); +-- 2021-06-25 -- +UPDATE `sys_module` SET `authorized_url` = 'tradeOrder/refund' WHERE `id` ='refund_refund'; +UPDATE `sys_module` SET `authorized_url` = 'cmsTemplate/save,cmsTemplate/chipLookup,cmsWebFile/lookup,placeTemplate/form,cmsTemplate/contentForm,cmsCategory/contributeForm,cmsTemplate/demo,cmsTemplate/help,cmsTemplate/upload,cmsTemplate/doUpload,cmsTemplate/export' WHERE `id` ='template_content'; +UPDATE `sys_module` SET `authorized_url` = 'taskTemplate/save,taskTemplate/upload,taskTemplate/doUpload,taskTemplate/export,taskTemplate/chipLookup,cmsTemplate/help' WHERE `id` ='task_template_content'; +-- 2021-06026 -- +CREATE TABLE `cms_content_product` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `site_id` smallint(6) NOT NULL COMMENT '绔欑偣', + `content_id` bigint(20) NOT NULL COMMENT '鍐呭', + `user_id` bigint(20) NOT NULL COMMENT '鐢ㄦ埛', + `cover` varchar(255) DEFAULT NULL COMMENT '灏侀潰鍥', + `title` varchar(100) NOT NULL COMMENT '鏍囬', + `price` decimal(10,2) NOT NULL COMMENT '浠锋牸', + `min_quantity` int(11) DEFAULT NULL COMMENT '鏈灏忚喘涔版暟閲', + `max_quantity` int(11) DEFAULT NULL COMMENT '鏈澶ц喘涔版暟閲', + `inventory` int(11) NOT NULL COMMENT '搴撳瓨', + `sales` int(11) NOT NULL COMMENT '閿閲', + PRIMARY KEY (`id`), + KEY `cms_content_product_content_id` (`site_id`, `content_id`), + KEY `cms_content_product_user_id` (`site_id`, `user_id`), + KEY `cms_content_product_sales` (`site_id`, `sales`), + KEY `cms_content_product_inventory` (`site_id`, `inventory`), + KEY `cms_content_product_price` (`site_id`, `price`) +) COMMENT='鍐呭鍟嗗搧'; +INSERT INTO `sys_module` VALUES ('product_list', 'cmsContentProduct/list', NULL, 'icon-truck', 'content_menu', 1, 4); +INSERT INTO `sys_module` VALUES ('product_add', 'cmsContentProduct/add', 'cmsContentProduct/save', NULL, 'product_list', 1, 0); +INSERT INTO `sys_module_lang` VALUES ('product_list', 'en', 'Product management'); +INSERT INTO `sys_module_lang` VALUES ('product_list', 'ja', '瑁藉搧绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('product_list', 'zh', '浜у搧绠$悊'); +INSERT INTO `sys_module_lang` VALUES ('product_add', 'en', 'Edit'); +INSERT INTO `sys_module_lang` VALUES ('product_add', 'ja', '澶夋洿'); +INSERT INTO `sys_module_lang` VALUES ('product_add', 'zh', '淇敼'); +UPDATE `sys_module` SET `sort` = '6' WHERE `id` = 'word_list'; +UPDATE `sys_module` SET `sort` = '7' WHERE `id` = 'content_recycle_list'; +RENAME TABLE `trade_order` TO `trade_payment`; +RENAME TABLE `trade_order_history` TO `trade_payment_history`; +ALTER TABLE `trade_refund` + CHANGE COLUMN `order_id` `payment_id` bigint(20) NOT NULL COMMENT '璁㈠崟' AFTER `id`; +ALTER TABLE `trade_payment_history` CHANGE COLUMN `order_id` `payment_id` bigint(20) NOT NULL COMMENT '璁㈠崟' AFTER `site_id`; +ALTER TABLE `trade_payment` + DROP INDEX `trade_order_account_type`, + DROP INDEX `trade_order_site_id`, + DROP INDEX `trade_order_trade_type`, + DROP INDEX `trade_order_create_date`, + ADD INDEX `trade_payment_account_type`(`account_type`, `account_serial_number`) , + ADD INDEX `trade_payment_site_id`(`site_id`, `user_id`, `status`) , + ADD INDEX `trade_payment_trade_type`(`trade_type`, `serial_number`) , + ADD INDEX `trade_payment_create_date`(`create_date`); +ALTER TABLE `trade_payment_history` + DROP INDEX `trade_order_history_site_id`, + DROP INDEX `trade_order_history_create_date`, + ADD INDEX `trade_payment_history_site_id`(`site_id`, `payment_id`, `operate`), + ADD INDEX `trade_payment_history_create_date`(`create_date`); +CREATE TABLE `trade_order` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `site_id` smallint(6) NOT NULL COMMENT '绔欑偣', + `user_id` bigint(20) NOT NULL COMMENT '鐢ㄦ埛', + `amount` decimal(10,2) NOT NULL COMMENT '鎬婚噾棰', + `payment_id` bigint(20) DEFAULT NULL COMMENT '鏀粯璁㈠崟', + `address` varchar(255) DEFAULT NULL COMMENT '鍦板潃', + `addressee` varchar(100) DEFAULT NULL COMMENT '鏀朵欢浜', + `telephone` varchar(100) DEFAULT NULL COMMENT '鐢佃瘽', + `ip` varchar(130) NOT NULL COMMENT 'IP鍦板潃', + `remark` varchar(255) DEFAULT NULL COMMENT '澶囨敞', + `status` int(11) NOT NULL COMMENT '鐘舵:0寰呯‘璁,1鏃犳晥璁㈠崟,2宸蹭粯娆,3宸查娆,4宸插叧闂', + `confirmed` tinyint(1) NOT NULL COMMENT '宸茬‘璁', + `processed` tinyint(1) NOT NULL COMMENT '宸插鐞', + `process_info` varchar(255) DEFAULT NULL COMMENT '澶勭悊淇℃伅', + `update_date` datetime DEFAULT NULL COMMENT '鏇存柊鏃ユ湡', + `create_date` datetime NOT NULL COMMENT '鍒涘缓鏃ユ湡', + `process_date` datetime DEFAULT NULL COMMENT '澶勭悊鏃ユ湡', + `payment_date` datetime DEFAULT NULL COMMENT '鏀粯鏃ユ湡', + PRIMARY KEY (`id`), + KEY `trade_order_site_id` (`site_id`,`user_id`,`status`), + KEY `trade_order_create_date` (`create_date`), + KEY `trade_order_payment_id` (`site_id`,`payment_id`) +) COMMENT='浜у搧璁㈠崟'; +CREATE TABLE `trade_order_history` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `site_id` smallint(6) NOT NULL COMMENT '绔欑偣', + `order_id` bigint(20) NOT NULL COMMENT '璁㈠崟', + `create_date` datetime NOT NULL COMMENT '鍒涘缓鏃ユ湡', + `operate` varchar(100) NOT NULL COMMENT '鎿嶄綔', + `content` text COMMENT '鍐呭', + PRIMARY KEY (`id`), + KEY `trade_order_history_site_id` (`site_id`,`order_id`,`operate`), + KEY `trade_order_history_create_date` (`create_date`) +) COMMENT='璁㈠崟娴佹按'; +CREATE TABLE `trade_order_product` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `site_id` smallint(6) NOT NULL COMMENT '绔欑偣', + `order_id` bigint(20) NOT NULL COMMENT '鐢ㄦ埛', + `content_id` bigint(20) NOT NULL COMMENT '鍐呭', + `product_id` bigint(20) NOT NULL COMMENT '浜у搧', + `price` decimal(10,2) NOT NULL COMMENT '浠锋牸', + `quantity` int(11) NOT NULL COMMENT '鏁伴噺', + `amount` decimal(10,2) NOT NULL COMMENT '鎬婚噾棰', + `remark` varchar(255) DEFAULT NULL COMMENT '澶囨敞', + PRIMARY KEY (`id`), + KEY `trade_order_product_site_id` (`site_id`,`order_id`) +) COMMENT='浜у搧璁㈠崟'; +ALTER TABLE `cms_content` + ADD COLUMN `has_products` tinyint(1) NOT NULL COMMENT '鎷ユ湁浜у搧鍒楄〃' AFTER `has_files`, + DROP INDEX `cms_content_only_url`, + ADD INDEX `cms_content_only_url`(`only_url`, `has_images`, `has_files`, `has_products`, `user_id`) ; +ALTER TABLE `trade_payment` + ADD COLUMN `process_user_id` bigint(20) NULL COMMENT '澶勭悊鐢ㄦ埛' AFTER `processed`; +ALTER TABLE `trade_order` + ADD COLUMN `process_user_id` bigint(20) NULL COMMENT '澶勭悊鐢ㄦ埛' AFTER `processed`; +-- 2021-06-28 -- +ALTER TABLE `trade_refund` + ADD COLUMN `site_id` smallint(0) NOT NULL COMMENT '绔欑偣' AFTER `id`, + ADD COLUMN `user_id` bigint(20) NOT NULL COMMENT '鐢ㄦ埛' AFTER `payment_id`, + DROP INDEX `trade_refund_order_id`; +ALTER TABLE `cms_content_related` + DROP INDEX `cms_content_related_user_id`, + ADD INDEX `cms_content_related_content_id`(`content_id`, `sort`); +ALTER TABLE `trade_refund` + ADD INDEX `trade_refund_user_id`(`user_id`, `payment_id`, `status`); +-- 2021-06-30 -- +UPDATE `sys_module` SET `sort` = '7' WHERE `id` = 'account_history_list'; +UPDATE `sys_module` SET `sort` = '6' WHERE `id` = 'account_list'; +UPDATE `sys_module` SET `sort` = '5' WHERE `id` = 'refund_list'; +INSERT INTO `sys_module` VALUES ('payment_history_list', 'tradePaymentHistory/list', NULL, 'icon-exchange', 'trade_menu', 1, 4); +INSERT INTO `sys_module_lang` VALUES ('payment_history_list', 'en', 'Payment history'); +INSERT INTO `sys_module_lang` VALUES ('payment_history_list', 'ja', '鏀墪姝'); +INSERT INTO `sys_module_lang` VALUES ('payment_history_list', 'zh', '鏀粯鍘嗗彶'); +ALTER TABLE `trade_payment` + CHANGE COLUMN `status` `status` int(11) NOT NULL COMMENT '鐘舵:0寰呮敮浠,1宸叉敮浠,2寰呴娆,3宸查娆,4宸插叧闂' after `ip`; +-- 2021-07-01 -- +ALTER TABLE `trade_order` + ADD COLUMN `title` varchar(255) NOT NULL COMMENT '鏍囬' AFTER `user_id`; +-- 2021-07-03 -- +UPDATE `sys_module` SET `authorized_url` = 'tradeAccount/save,sysUser/lookup' WHERE `id` ='account_add'; +INSERT INTO `sys_module` VALUES ('order_confirm', 'tradeOrder/confirmParameters', 'tradeOrder/confirm', NULL, 'order_list', 0, 0); +INSERT INTO `sys_module` VALUES ('order_process', 'tradeOrder/processParameters', 'tradeOrder/process', NULL, 'order_list', 0, 0); +INSERT INTO `sys_module` VALUES ('order_view', 'tradeOrder/view', NULL, NULL, 'order_list', 0, 0); +INSERT INTO `sys_module_lang` VALUES ('order_confirm', 'en', 'Confirm order'); +INSERT INTO `sys_module_lang` VALUES ('order_confirm', 'ja', '娉ㄦ枃銇⒑瑾'); +INSERT INTO `sys_module_lang` VALUES ('order_confirm', 'zh', '纭璁㈠崟'); +INSERT INTO `sys_module_lang` VALUES ('order_process', 'en', 'Process order'); +INSERT INTO `sys_module_lang` VALUES ('order_process', 'ja', '銉椼儹銈汇偣銈兗銉銉'); +INSERT INTO `sys_module_lang` VALUES ('order_process', 'zh', '澶勭悊璁㈠崟'); +INSERT INTO `sys_module_lang` VALUES ('order_view', 'en', 'View'); +INSERT INTO `sys_module_lang` VALUES ('order_view', 'ja', '瑕嬨倠'); +INSERT INTO `sys_module_lang` VALUES ('order_view', 'zh', '鏌ョ湅'); +INSERT INTO `sys_module` VALUES ('payment_list', 'tradePayment/list', 'sysUser/lookup', 'icon-money', 'trade_menu', 1, 3); +INSERT INTO `sys_module_lang` VALUES ('payment_list', 'en', 'Payment management'); +INSERT INTO `sys_module_lang` VALUES ('payment_list', 'ja', '鏀墪銇勭鐞'); +INSERT INTO `sys_module_lang` VALUES ('payment_list', 'zh', '鏀粯绠$悊'); +UPDATE `sys_module` SET `authorized_url` = 'tradePaymentHistory/view' WHERE `id` ='payment_history_list'; +INSERT INTO `sys_module` VALUES ('refund_refuse', 'tradeRefund/refuseParameters', 'tradeOrder/refuse', '', 'refund_list', 0, 0); +INSERT INTO `sys_module_lang` VALUES ('refund_refuse', 'en', 'Refuse'); +INSERT INTO `sys_module_lang` VALUES ('refund_refuse', 'ja', '銇斻伩'); +INSERT INTO `sys_module_lang` VALUES ('refund_refuse', 'zh', '鎷掔粷'); +-- 2021-07-04 -- +UPDATE `sys_module` SET `menu` = '1' WHERE `id` ='trade_menu'; +-- 2021-06-08 -- +DELETE FROM `sys_module` WHERE `id` ='repo_sync'; +DELETE FROM `sys_module_lang` WHERE `module_id` ='repo_sync'; +-- 2021-07-09 -- +ALTER TABLE `sys_extend_field` + ADD INDEX `sys_extend_field_input_type` (`extend_id`, `input_type`,`searchable`); +-- 2021-07-11 -- +INSERT INTO `sys_module` VALUES ('report_visit', 'report/visit', NULL, 'icon-bolt', 'user_menu', 1, 6); +INSERT INTO `sys_module_lang` VALUES ('report_visit', 'en', 'Visit report'); +INSERT INTO `sys_module_lang` VALUES ('report_visit', 'ja', '銈€偗銈汇偣鐩h'); +INSERT INTO `sys_module_lang` VALUES ('report_visit', 'zh', '缃戠珯璁块棶鐩戞帶'); +-- 221-07-20 -- +ALTER TABLE `trade_payment_history` COMMENT = '鏀粯璁㈠崟娴佹按'; \ No newline at end of file diff --git a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.180707-V4.0.180825.sql b/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.180707-V4.0.180825.sql deleted file mode 100644 index 061802d1e..000000000 --- a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.180707-V4.0.180825.sql +++ /dev/null @@ -1,39 +0,0 @@ --- 20180711 -- -ALTER TABLE `sys_site` - ADD COLUMN `parent_id` smallint(6) DEFAULT NULL COMMENT '鐖剁珯鐐笽D' AFTER `id`, - MODIFY COLUMN `name` varchar(50) NOT NULL COMMENT '绔欑偣鍚' AFTER `parent_id`; --- 20180714 -- -UPDATE `sys_module` SET `authorized_url` = 'cmsContent/addMore,file/doUpload,cmsContent/lookup,cmsContent/lookup_list,cmsContent/save,ueditor,ckeditor/upload,kindeditor/upload' WHERE `id` ='content_add'; -UPDATE `sys_module` SET `authorized_url` = 'cmsContent/addMore,file/doUpload,cmsContent/lookup,cmsContent/lookup_list,cmsContent/save,ueditor,ckeditor/upload,kindeditor/upload' WHERE `id` ='myself_content_add'; -UPDATE `sys_module` SET `authorized_url` = 'sysConfigData/save,sysConfigData/edit',url = NULL WHERE `id` ='config_data_edit'; --- 20180811 -- -ALTER TABLE `sys_dept` ADD COLUMN `owns_all_config` tinyint(1) NOT NULL DEFAULT 1 COMMENT '鎷ユ湁鍏ㄩ儴閰嶇疆鏉冮檺' AFTER `owns_all_page`; -CREATE TABLE `sys_dept_config` ( - `dept_id` int(11) NOT NULL COMMENT '閮ㄩ棬ID', - `config` varchar(100) NOT NULL COMMENT '閰嶇疆', - PRIMARY KEY (`dept_id`,`config`) -) COMMENT='閮ㄩ棬閰嶇疆'; -ALTER TABLE `sys_user` ADD COLUMN `owns_all_content` tinyint(1) NOT NULL DEFAULT 1 COMMENT '鎷ユ湁鎵鏈夊唴瀹规潈闄' AFTER `dept_id`; -UPDATE `sys_user` SET `owns_all_content` = '0' WHERE `superuser_access` = '0'; --- 20180813 -- -UPDATE `sys_module` SET `authorized_url` = 'cmsWebFile/unzip',url = 'cmsWebFile/unzipParameters' WHERE `id` ='webfile_unzip'; --- 20180820 -- -UPDATE `sys_module` SET `authorized_url` = 'cmsPlace/check,cmsPlace/uncheck' WHERE `id` ='place_check'; --- 20180821 -- -UPDATE `sys_module` SET `authorized_url` = 'cmsTemplate/help,cmsTemplate/savePlace,cmsTemplate/chipLookup,cmsWebFile/lookup,cmsWebFile/contentForm,placeTemplate/form' WHERE `id` ='place_template_content'; -DELETE FROM `sys_email_token`; -ALTER TABLE `sys_email_token` ADD COLUMN `expiry_date` datetime(0) NOT NULL COMMENT '杩囨湡鏃ユ湡' AFTER `create_date`; -ALTER TABLE `sys_user_token` ADD COLUMN `expiry_date` datetime(0) DEFAULT NULL COMMENT '杩囨湡鏃ユ湡' AFTER `create_date`; -ALTER TABLE `sys_app_token` ADD COLUMN `expiry_date` datetime(0) DEFAULT NULL COMMENT '杩囨湡鏃ユ湡' AFTER `create_date`; -ALTER TABLE `sys_app` ADD COLUMN `expiry_minutes` int(0) NULL COMMENT '杩囨湡鏃堕棿' AFTER `authorized_apis`; -UPDATE `sys_user_token` SET `expiry_date` = date_add(`create_date`, interval 30 day); -UPDATE `sys_app_token` SET `expiry_date` = date_add(`create_date`, interval 30 minute); -UPDATE `sys_app` SET `expiry_minutes` = '30'; -INSERT INTO `sys_module` VALUES ('app_issue', 'sysApp/issueParameters', 'sysAppToken/issue', NULL, 'app_list', 0, 0); -INSERT INTO `sys_module_lang` VALUES ('app_issue', '', '棰佸彂鎺堟潈'); -INSERT INTO `sys_module_lang` VALUES ('app_issue', 'en', 'Issue authorization'); -UPDATE `sys_module` SET `attached` = '' WHERE `id` ='myself'; -UPDATE `sys_module` SET `attached` = '' WHERE `id` ='content'; -UPDATE `sys_module` SET `attached` = '' WHERE `id` ='category'; -UPDATE `sys_module` SET `attached` = '' WHERE `id` ='develop'; -UPDATE `sys_module` SET `attached` = '' WHERE `id` ='page'; \ No newline at end of file diff --git a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.180825-V4.0.181024.sql b/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.180825-V4.0.181024.sql deleted file mode 100644 index 56bfc74ce..000000000 --- a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.180825-V4.0.181024.sql +++ /dev/null @@ -1,172 +0,0 @@ -UPDATE `sys_module_lang` SET `value` = 'Add' WHERE `lang` ='en' and module_id = 'myself_content_add'; -UPDATE `sys_module_lang` SET `value` = 'Delete' WHERE `lang` ='en' and module_id = 'myself_content_delete'; -UPDATE `sys_module_lang` SET `value` = 'Publish' WHERE `lang` ='en' and module_id = 'myself_content_publish'; -UPDATE `sys_module_lang` SET `value` = 'Push' WHERE `lang` ='en' and module_id = 'myself_content_push'; -UPDATE `sys_module_lang` SET `value` = 'Refresh' WHERE `lang` ='en' and module_id = 'myself_content_refresh'; --- 20181022 -- -UPDATE `sys_module_lang` SET `lang` = 'zh' WHERE `lang` =''; -INSERT INTO `sys_module_lang` VALUES ('app_add', 'ja', '杩藉姞/澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('app_client_disable', 'ja', '绂佹'); -INSERT INTO `sys_module_lang` VALUES ('app_client_enable', 'ja', '銈兂'); -INSERT INTO `sys_module_lang` VALUES ('app_client_list', 'ja', '銈儵銈ゃ偄銉炽儓绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('app_issue', 'ja', '鐧鸿妯╅檺'); -INSERT INTO `sys_module_lang` VALUES ('app_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('app_list', 'ja', 'app妯╅檺'); -INSERT INTO `sys_module_lang` VALUES ('category', 'ja', '鍒嗛'); -INSERT INTO `sys_module_lang` VALUES ('category_add', 'ja', '杩藉姞/澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('category_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('category_extend', 'ja', '鍒嗛鎷″嫉'); -INSERT INTO `sys_module_lang` VALUES ('category_menu', 'ja', '鍒嗛绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('category_move', 'ja', '绉诲嫊'); -INSERT INTO `sys_module_lang` VALUES ('category_publish', 'ja', '鐢熸垚'); -INSERT INTO `sys_module_lang` VALUES ('category_push', 'ja', '銇娿仚銇欍倎'); -INSERT INTO `sys_module_lang` VALUES ('category_type_add', 'ja', '杩藉姞/澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('category_type_change', 'ja', '銈裤偆銉楀鏇'); -INSERT INTO `sys_module_lang` VALUES ('category_type_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('category_type_list', 'ja', '鍒嗛銈裤偆銉'); -INSERT INTO `sys_module_lang` VALUES ('clearcache', 'ja', '銈儯銉冦偡銉ャ倰銉儠銉儍銈枫儱銇欍倠'); -INSERT INTO `sys_module_lang` VALUES ('config_add', 'ja', '杩藉姞/澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('config_data_delete', 'ja', '銉囥兗銈裤倰銈儶銈'); -INSERT INTO `sys_module_lang` VALUES ('config_data_edit', 'ja', '澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('config_data_list', 'ja', '銈点偆銉堣ō瀹'); -INSERT INTO `sys_module_lang` VALUES ('config_delete', 'ja', '瑷畾銈掑墛闄'); -INSERT INTO `sys_module_lang` VALUES ('config_list', 'ja', '銈点偆銉堣ō瀹氱鐞'); -INSERT INTO `sys_module_lang` VALUES ('config_list_data_dictionary', 'ja', '銉囥兗銈胯緸鏇搞倰閬告姙'); -INSERT INTO `sys_module_lang` VALUES ('config_menu', 'ja', '瑷畾绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('content', 'ja', '銈炽兂銉嗐兂銉'); -INSERT INTO `sys_module_lang` VALUES ('content_add', 'ja', '杩藉姞/澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('content_check', 'ja', '瀵╂熁'); -INSERT INTO `sys_module_lang` VALUES ('content_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('content_extend', 'ja', '銈炽兂銉嗐兂銉勬嫛寮'); -INSERT INTO `sys_module_lang` VALUES ('content_menu', 'ja', '銈炽兂銉嗐兂銉勭鐞'); -INSERT INTO `sys_module_lang` VALUES ('content_move', 'ja', '绉诲嫊'); -INSERT INTO `sys_module_lang` VALUES ('content_publish', 'ja', '鐢熸垚'); -INSERT INTO `sys_module_lang` VALUES ('content_push', 'ja', '銇娿仚銇欍倎'); -INSERT INTO `sys_module_lang` VALUES ('content_recycle_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('content_recycle_list', 'ja', '銈炽兂銉嗐兂銉勩仈銇跨'); -INSERT INTO `sys_module_lang` VALUES ('content_recycle_recycle', 'ja', '鍙栥倞鎴汇仐'); -INSERT INTO `sys_module_lang` VALUES ('content_refresh', 'ja', '銉儠銉儍銈枫儱'); -INSERT INTO `sys_module_lang` VALUES ('content_select_category', 'ja', '鍒嗛銈掗伕鎶'); -INSERT INTO `sys_module_lang` VALUES ('content_select_category_type', 'ja', '鍒嗛銈裤偆銉椼倰閬告姙'); -INSERT INTO `sys_module_lang` VALUES ('content_select_content', 'ja', '銈炽兂銉嗐兂銉勩倰閬告姙'); -INSERT INTO `sys_module_lang` VALUES ('content_select_tag_type', 'ja', '銈裤偘銇ó椤炪倰閬告姙'); -INSERT INTO `sys_module_lang` VALUES ('content_select_template', 'ja', '銉嗐兂銉椼儸銉笺儓銈掗伕鎶'); -INSERT INTO `sys_module_lang` VALUES ('content_select_user', 'ja', '銉︺兗銈躲兗銈掗伕鎶'); -INSERT INTO `sys_module_lang` VALUES ('content_sort', 'ja', '銉堛儍銉斻兂銈'); -INSERT INTO `sys_module_lang` VALUES ('content_uncheck', 'ja', '瀵╂熁銈掑彇銈婃秷銇'); -INSERT INTO `sys_module_lang` VALUES ('content_view', 'ja', '瑕嬨倠'); -INSERT INTO `sys_module_lang` VALUES ('dept_add', 'ja', '杩藉姞/澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('dept_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('dept_list', 'ja', '閮ㄩ杸绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('dept_user_list', 'ja', '浜轰簨绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('develop', 'ja', '闁嬬櫤'); -INSERT INTO `sys_module_lang` VALUES ('dictionary_add', 'ja', '杩藉姞/澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('dictionary_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('dictionary_list', 'ja', '銉囥兗銈胯緸鏇'); -INSERT INTO `sys_module_lang` VALUES ('domain_config', 'ja', '澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('domain_list', 'ja', '銉夈儭銈ゃ兂鍚嶃倰銉愩偆銉炽儔'); -INSERT INTO `sys_module_lang` VALUES ('file_menu', 'ja', '銉曘偂銈ゃ儷绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('log_login', 'ja', '銉偘銈ゃ兂銉偘'); -INSERT INTO `sys_module_lang` VALUES ('log_login_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('log_menu', 'ja', '銉偘绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('log_operate', 'ja', '鎿嶄綔銉偘'); -INSERT INTO `sys_module_lang` VALUES ('log_operate_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('log_operate_view', 'ja', '瑕嬨倠'); -INSERT INTO `sys_module_lang` VALUES ('log_task', 'ja', '銈裤偣銈▓鐢汇儹銈'); -INSERT INTO `sys_module_lang` VALUES ('log_task_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('log_task_view', 'ja', '瑕嬨倠'); -INSERT INTO `sys_module_lang` VALUES ('log_upload', 'ja', '銉曘偂銈ゃ儷銈€儍銉椼儹銉笺儔銉偘'); -INSERT INTO `sys_module_lang` VALUES ('maintenance', 'ja', '缍寔'); -INSERT INTO `sys_module_lang` VALUES ('model_add', 'ja', '杩藉姞/澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('model_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('model_list', 'ja', '銈炽兂銉嗐兂銉勩儮銉囥儷绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('myself', 'ja', '鍊嬩汉'); -INSERT INTO `sys_module_lang` VALUES ('myself_content', 'ja', '銉炪偆銈炽兂銉嗐兂銉'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_add', 'ja', '澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_publish', 'ja', '鐢熸垚'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_push', 'ja', '銇娿仚銇欍倎'); -INSERT INTO `sys_module_lang` VALUES ('myself_content_refresh', 'ja', '銉儠銉儍銈枫儱'); -INSERT INTO `sys_module_lang` VALUES ('myself_log_login', 'ja', '銉炪偆銉偘銈ゃ兂銉偘'); -INSERT INTO `sys_module_lang` VALUES ('myself_log_operate', 'ja', '銉炪偆鎿嶄綔銉偘'); -INSERT INTO `sys_module_lang` VALUES ('myself_menu', 'ja', '绉併伀闁㈤c仚銈嬫儏鍫'); -INSERT INTO `sys_module_lang` VALUES ('myself_password', 'ja', '銉戙偣銉兗銉夈倰澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('myself_token', 'ja', '绉併伄銉偘銈ゃ兂鎺堟ī'); -INSERT INTO `sys_module_lang` VALUES ('page', 'ja', '銉氥兗銈'); -INSERT INTO `sys_module_lang` VALUES ('page_list', 'ja', '銉氥兗銈哥鐞'); -INSERT INTO `sys_module_lang` VALUES ('page_menu', 'ja', '銉氥兗銈搞伄銉°兂銉嗐儕銉炽偣'); -INSERT INTO `sys_module_lang` VALUES ('page_metadata', 'ja', '銉°偪銉囥兗銈跨鐞'); -INSERT INTO `sys_module_lang` VALUES ('page_publish', 'ja', '銉氥兗銈搞倰鐢熸垚銇欍倠'); -INSERT INTO `sys_module_lang` VALUES ('page_save', 'ja', '銉氥兗銈歌ō瀹氥倰淇濆瓨'); -INSERT INTO `sys_module_lang` VALUES ('page_select_category', 'ja', '鍒嗛銈掗伕鎶'); -INSERT INTO `sys_module_lang` VALUES ('page_select_category_type', 'ja', '鍒嗛銈裤偆銉椼倰閬告姙'); -INSERT INTO `sys_module_lang` VALUES ('page_select_content', 'ja', '銈炽兂銉嗐兂銉勩倰閬告姙'); -INSERT INTO `sys_module_lang` VALUES ('page_select_tag_type', 'ja', '銈裤偘銇ó椤炪倰閬告姙'); -INSERT INTO `sys_module_lang` VALUES ('page_select_template', 'ja', '閫夋嫨妯℃澘銉嗐兂銉椼儸銉笺儓銈掗伕鎶'); -INSERT INTO `sys_module_lang` VALUES ('page_select_user', 'ja', '銉︺兗銈躲兗銈掗伕鎶'); -INSERT INTO `sys_module_lang` VALUES ('place_add', 'ja', '鎺ㄥエ銉撱儍銉堛儑銉笺偪銇拷鍔/澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('place_check', 'ja', '鎺ㄥエ銉撱儍銉堛儑銉笺偪銈掔⒑瑾嶃仚銈'); -INSERT INTO `sys_module_lang` VALUES ('place_clear', 'ja', '鎺ㄥエ銉撱儍銉堛儑銉笺偪銇偗銉偄'); -INSERT INTO `sys_module_lang` VALUES ('place_data_list', 'ja', '鎺ㄥエ銉撱儍銉堛儑銉笺偪'); -INSERT INTO `sys_module_lang` VALUES ('place_delete', 'ja', '鎺ㄥエ銉撱儍銉堛儑銉笺偪銈掑墛闄ゃ仚銈'); -INSERT INTO `sys_module_lang` VALUES ('place_list', 'ja', '銉氥兗銈搞儠銉┿偘銉°兂銉堢鐞'); -INSERT INTO `sys_module_lang` VALUES ('place_publish', 'ja', '銉儶銉笺偣'); -INSERT INTO `sys_module_lang` VALUES ('place_refresh', 'ja', '鍒锋柊鎺ㄨ崘浣嶆暟鎹帹濂ㄣ儞銉冦儓銉囥兗銈裤倰銉儠銉儍銈枫儱銇欍倠'); -INSERT INTO `sys_module_lang` VALUES ('place_template_content', 'ja', '澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('place_template_data_dictionary', 'ja', '銉囥兗銈胯緸鏇搞倰閬告姙'); -INSERT INTO `sys_module_lang` VALUES ('place_template_fragment', 'ja', '銉嗐兂銉椼儸銉笺儓銉曘儵銈般儭銉炽儓'); -INSERT INTO `sys_module_lang` VALUES ('place_template_help', 'ja', '銉嗐兂銉椼儸銉笺儓銇儤銉儣'); -INSERT INTO `sys_module_lang` VALUES ('place_template_list', 'ja', '銉氥兗銈搞儠銉┿偘銉°兂銉堛儐銉炽儣銉兗銉'); -INSERT INTO `sys_module_lang` VALUES ('place_template_metadata', 'ja', '銉°偪銉囥兗銈裤伄澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('place_template_place', 'ja', '銉氥兗銈搞儠銉┿偘銉°兂銉'); -INSERT INTO `sys_module_lang` VALUES ('place_template_webfile', 'ja', '銈︺偋銉栥偟銈ゃ儓銉曘偂銈ゃ儷'); -INSERT INTO `sys_module_lang` VALUES ('place_view', 'ja', '鎺ㄥエ銉撱儍銉堛儑銉笺偪銈掕銈'); -INSERT INTO `sys_module_lang` VALUES ('report_user', 'ja', '銉︺兗銈躲兗銉囥兗銈裤伄鐩h'); -INSERT INTO `sys_module_lang` VALUES ('role_add', 'ja', '杩藉姞/澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('role_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('role_list', 'ja', '褰瑰壊绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('system_menu', 'ja', '銈枫偣銉嗐儬銉°兂銉嗐儕銉炽偣'); -INSERT INTO `sys_module_lang` VALUES ('tag_add', 'ja', '杩藉姞/澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('tag_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('tag_list', 'ja', '銉┿儥銉鐞'); -INSERT INTO `sys_module_lang` VALUES ('tag_type_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('tag_type_list', 'ja', '銈裤偘銇垎椤'); -INSERT INTO `sys_module_lang` VALUES ('tag_type_save', 'ja', '杩藉姞/澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('task_add', 'ja', '杩藉姞/澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('task_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('task_list', 'ja', '銈裤偣銈▓鐢'); -INSERT INTO `sys_module_lang` VALUES ('task_pause', 'ja', '鍋滄'); -INSERT INTO `sys_module_lang` VALUES ('task_recreate', 'ja', '銉偦銉冦儓'); -INSERT INTO `sys_module_lang` VALUES ('task_resume', 'ja', '鍥炲京'); -INSERT INTO `sys_module_lang` VALUES ('task_runonce', 'ja', '瀹熻'); -INSERT INTO `sys_module_lang` VALUES ('task_template_content', 'ja', '澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('task_template_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('task_template_fragment', 'ja', '銈裤偣銈▓鐢汇偣銈儶銉椼儓鏂墖'); -INSERT INTO `sys_module_lang` VALUES ('task_template_help', 'ja', '銉樸儷銉'); -INSERT INTO `sys_module_lang` VALUES ('task_template_list', 'ja', '銈裤偣銈▓鐢汇偣銈儶銉椼儓'); -INSERT INTO `sys_module_lang` VALUES ('template_content', 'ja', '澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('template_content-type', 'ja', 'content-type銈掗伕鎶'); -INSERT INTO `sys_module_lang` VALUES ('template_content_form', 'ja', '銈炽兂銉嗐兂銉勯佷俊銉曘偐銉笺儬'); -INSERT INTO `sys_module_lang` VALUES ('template_data_dictionary', 'ja', '銉囥兗銈胯緸鏇搞倰閬告姙'); -INSERT INTO `sys_module_lang` VALUES ('template_delete', 'ja', '鍓婇櫎'); -INSERT INTO `sys_module_lang` VALUES ('template_demo', 'ja', '銉嗐兂銉椼儸銉笺儓銇緥'); -INSERT INTO `sys_module_lang` VALUES ('template_fragment', 'ja', '銉嗐兂銉椼儸銉笺儓銉曘儵銈般儭銉炽儓'); -INSERT INTO `sys_module_lang` VALUES ('template_help', 'ja', '銉嗐兂銉椼儸銉笺儓銉樸儷銉'); -INSERT INTO `sys_module_lang` VALUES ('template_list', 'ja', '銉嗐兂銉椼儸銉笺儓銉曘偂銈ゃ儷绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('template_metadata', 'ja', '銉°偪銉囥兗銈裤伄澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('template_place', 'ja', '銉氥兗銈搞儠銉┿偘銉°兂銉'); -INSERT INTO `sys_module_lang` VALUES ('template_place_form', 'ja', '銉氥兗銈搞儠銉┿偘銉°兂銉堟彁鍑恒儠銈┿兗銉'); -INSERT INTO `sys_module_lang` VALUES ('template_upload', 'ja', '銉嗐兂銉椼儸銉笺儓銈掋偄銉冦儣銉兗銉夈仚銈'); -INSERT INTO `sys_module_lang` VALUES ('template_website_file', 'ja', '銈︺偋銉栥偟銈ゃ儓銉曘偂銈ゃ儷'); -INSERT INTO `sys_module_lang` VALUES ('user_add', 'ja', '杩藉姞/澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('user_disable', 'ja', '绂佹'); -INSERT INTO `sys_module_lang` VALUES ('user_enable', 'ja', '銈兂'); -INSERT INTO `sys_module_lang` VALUES ('user_list', 'ja', '銉︺兗銈躲兗绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('user_menu', 'ja', '銉︺兗銈躲兗绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('webfile_content', 'ja', '銉曘偂銈ゃ儷銇鏇'); -INSERT INTO `sys_module_lang` VALUES ('webfile_directory', 'ja', '鐩尣銈掍綔鎴'); -INSERT INTO `sys_module_lang` VALUES ('webfile_list', 'ja', '銈︺偋銉栥偟銈ゃ儓銇儠銈°偆銉鐞'); -INSERT INTO `sys_module_lang` VALUES ('webfile_unzip', 'ja', '瑙e噸'); -INSERT INTO `sys_module_lang` VALUES ('webfile_upload', 'ja', '銈€儍銉椼儹銉笺儔'); -INSERT INTO `sys_module_lang` VALUES ('webfile_zip', 'ja', '鍦х府'); -INSERT INTO `sys_module_lang` VALUES ('word_list', 'ja', '妞滅储銉兗銉夌鐞'); \ No newline at end of file diff --git a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.181024-V4.0.190312.sql b/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.181024-V4.0.190312.sql deleted file mode 100644 index 985ed7f95..000000000 --- a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.181024-V4.0.190312.sql +++ /dev/null @@ -1,186 +0,0 @@ --- 2018-11-06 -- -ALTER TABLE `cms_category` - MODIFY COLUMN `path` varchar(1000) DEFAULT NULL COMMENT '棣栭〉璺緞' AFTER `template_path`, - MODIFY COLUMN `url` varchar(1000) DEFAULT NULL COMMENT '棣栭〉鍦板潃' AFTER `has_static`, - MODIFY COLUMN `content_path` varchar(1000) DEFAULT NULL COMMENT '鍐呭璺緞' AFTER `url`; -ALTER TABLE `cms_content` - MODIFY COLUMN `url` varchar(1000) DEFAULT NULL COMMENT '鍦板潃' AFTER `has_static`; -ALTER TABLE `cms_content_attribute` - MODIFY COLUMN `source_url` varchar(1000) DEFAULT NULL COMMENT '鏉ユ簮鍦板潃' AFTER `source`; -ALTER TABLE `cms_place` - MODIFY COLUMN `url` varchar(1000) default NULL COMMENT '瓒呴摼鎺' AFTER `title`; -ALTER TABLE `cms_content_related` - MODIFY COLUMN `url` varchar(1000) default NULL COMMENT '鎺ㄨ崘閾炬帴鍦板潃' AFTER `user_id`; --- 2018-11-07 -- -CREATE TABLE `cms_comment` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `site_id` smallint(6) NOT NULL COMMENT '绔欑偣ID', - `user_id` bigint(20) NOT NULL COMMENT '鐢ㄦ埛ID', - `content_id` bigint(20) NOT NULL COMMENT '鏂囩珷鍐呭', - `check_user_id` bigint(20) DEFAULT NULL COMMENT '瀹℃牳鐢ㄦ埛', - `check_date` datetime DEFAULT NULL COMMENT '瀹℃牳鏃ユ湡', - `update_date` datetime DEFAULT NULL COMMENT '鏇存柊鏃ユ湡', - `create_date` datetime NOT NULL COMMENT '鍒涘缓鏃ユ湡', - `status` int(11) NOT NULL COMMENT '鐘舵侊細1銆佸凡鍙戝竷 2銆佸緟瀹℃牳', - `disabled` tinyint(1) NOT NULL COMMENT '宸茬鐢', - `text` text COMMENT '鍐呭', - PRIMARY KEY (`id`), - KEY `site_id` (`site_id`,`content_id`,`status`,`disabled`, `create_date`) -) COMMENT='璇勮'; -INSERT INTO `sys_module` VALUES ('comment_list', 'cmsComment/list', 'sysUser/lookup', '', 'content_extend', 1, 4); -INSERT INTO `sys_module` VALUES ('comment_check', NULL, 'cmsComment/check', NULL, 'comment_list', 0, 0); -INSERT INTO `sys_module` VALUES ('comment_uncheck', NULL, 'cmsComment/uncheck', NULL, 'comment_list', 0, 0); -INSERT INTO `sys_module` VALUES ('comment_delete', NULL, 'cmsComment/delete', NULL, 'comment_list', 0, 0); - -INSERT INTO `sys_module_lang` VALUES ('comment_list', 'zh', '璇勮绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('comment_list', 'en', 'Comment management'); -INSERT INTO `sys_module_lang` VALUES ('comment_list', 'ja', '銈炽儭銉炽儓绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('comment_check', 'zh', '瀹℃牳'); -INSERT INTO `sys_module_lang` VALUES ('comment_check', 'en', 'Check'); -INSERT INTO `sys_module_lang` VALUES ('comment_check', 'ja', '瀵╂熁'); -INSERT INTO `sys_module_lang` VALUES ('comment_uncheck', 'zh', '鍙栨秷瀹℃牳'); -INSERT INTO `sys_module_lang` VALUES ('comment_uncheck', 'en', 'Uncheck'); -INSERT INTO `sys_module_lang` VALUES ('comment_uncheck', 'ja', '瀵╂熁銈掑彇銈婃秷銇'); -INSERT INTO `sys_module_lang` VALUES ('comment_delete', 'zh', '鍒犻櫎'); -INSERT INTO `sys_module_lang` VALUES ('comment_delete', 'en', 'Delete'); -INSERT INTO `sys_module_lang` VALUES ('comment_delete', 'ja', '鍓婇櫎'); --- 2018-11-09 -- -UPDATE `sys_module` SET `attached` = replace(replace(`attached`,'',''); -ALTER TABLE `sys_module` - MODIFY COLUMN `attached` varchar(50) default NULL COMMENT '鏍囬闄勫姞' AFTER `authorized_url`; -ALTER TABLE `sys_user` - ADD COLUMN `salt` varchar(20) NULL COMMENT '娣锋穯鐮,涓虹┖鏃跺垯瀵嗙爜涓簃d5,涓10浣嶆椂sha512(sha512(password)+salt)' AFTER `password`, - ADD COLUMN `weak_password` tinyint(1) NOT NULL DEFAULT 0 COMMENT '寮卞瘑鐮' AFTER `salt`, - MODIFY COLUMN `password` varchar(128) NOT NULL COMMENT '瀵嗙爜' AFTER `name`; --- 2018-12-07 -- -ALTER TABLE `cms_content_file` - CHANGE COLUMN `image` `file_type` varchar(20) NOT NULL COMMENT '鏂囦欢绫诲瀷' AFTER `file_path`, - CHANGE COLUMN `size` `file_size` bigint(20) NOT NULL COMMENT '鏂囦欢澶у皬' AFTER `file_type`, - DROP INDEX `image`, - DROP INDEX `size`, - ADD INDEX `file_type`(`file_type`), - ADD INDEX `file_size` (`file_size`); -UPDATE `cms_content_file` SET file_type = 'image' WHERE file_type = '1'; -UPDATE `cms_content_file` SET file_type = 'image' WHERE file_path like '%.png' or file_path like '%.jpg' or file_path like '%.gif' or file_path like '%.bmp'; -UPDATE `cms_content_file` SET file_type = 'video' WHERE file_path like '%.mp4' or file_path like '%.3gp'; -UPDATE `cms_content_file` SET file_type = 'other' WHERE file_type = '0'; --- 2018-12-20 -- -INSERT INTO `sys_module` VALUES ('content_export', NULL, 'cmsContent/export', '', 'content_menu', 1, 0); -INSERT INTO `sys_module_lang` VALUES ('content_export', 'ja', '杓稿嚭'); -INSERT INTO `sys_module_lang` VALUES ('content_export', 'zh', '瀵煎嚭'); -INSERT INTO `sys_module_lang` VALUES ('content_export', 'en', 'Export'); -ALTER TABLE `cms_place` ADD COLUMN `check_user_id` bigint(20) NULL COMMENT '瀹℃牳鐢ㄦ埛' AFTER `user_id`; -ALTER TABLE `cms_place` - DROP INDEX `publish_date`, - DROP INDEX `site_id`, - DROP INDEX `item_type`, - DROP INDEX `user_id`, - DROP INDEX `path`, - DROP INDEX `disabled`, - DROP INDEX `create_date`, - DROP INDEX `status`, - DROP INDEX `item_id`, - ADD INDEX `publish_date`(`publish_date`, `create_date`) , - ADD INDEX `site_id`(`site_id`, `path`, `status`, `disabled`), - ADD INDEX `item_type`(`item_type`, `item_id`) , - ADD INDEX `user_id`(`user_id`, `check_user_id`) ; -UPDATE `sys_module` SET `authorized_url` = 'cmsPlace/dataList,cmsPlace/export' WHERE `id` ='place_data_list'; -UPDATE `sys_module` SET `authorized_url` = 'sysUser/lookup' WHERE `id` ='place_list'; --- 2018-12-22 -- -ALTER TABLE `cms_comment` - ADD COLUMN `reply_id` bigint(20) NULL COMMENT '鍥炲ID' AFTER `user_id`, - DROP INDEX `site_id`, - ADD INDEX `site_id`(`site_id`, `content_id`, `status`, `disabled`), - ADD INDEX `update_date`(`update_date`, `create_date`), - ADD INDEX `reply_id`(`site_id`, `reply_id`); -ALTER TABLE `cms_comment` - ADD COLUMN `reply_user_id` bigint(20) NULL COMMENT '鍥炲鐢ㄦ埛ID' AFTER `reply_id`, - DROP INDEX `reply_id`, - ADD INDEX `reply_id`(`site_id`, `reply_user_id`, `reply_id`); --- 2018-12-28 -- -ALTER TABLE `cms_content` DROP INDEX `status`, - ADD COLUMN `expiry_date` datetime NULL COMMENT '杩囨湡鏃ユ湡' AFTER `publish_date`, - ADD INDEX `status` (`site_id`,`status`,`category_id`,`disabled`,`model_id`,`parent_id`,`sort`,`publish_date`,`expiry_date`); -ALTER TABLE `cms_place` DROP INDEX `publish_date`, - ADD COLUMN `expiry_date` datetime NULL COMMENT '杩囨湡鏃ユ湡' AFTER `publish_date`, - ADD INDEX `publish_date` (`publish_date`,`create_date`,`expiry_date`); --- 2019-01-01 -- -update cms_category set code=CONCAT(code,id) where (site_id,code) in ( - select * from ( - SELECT site_id,code FROM `cms_category` group by site_id,code having count(*) > 1 - ) a -) and id not in ( - select * from ( - select min(id) from cms_category where (site_id,code) in ( - SELECT site_id,code FROM `cms_category` group by site_id,code having count(*) > 1 - ) group by site_id,code - ) b -); -ALTER TABLE `cms_category` - MODIFY COLUMN `code` varchar(50) NOT NULL COMMENT '缂栫爜' AFTER `tag_type_ids`, - DROP INDEX `site_id`, - DROP INDEX `parent_id`, - DROP INDEX `disabled`, - DROP INDEX `type_id`, - DROP INDEX `allow_contribute`, - DROP INDEX `hidden`, - ADD INDEX `type_id`(`type_id`, `allow_contribute`), - ADD INDEX `site_id`(`site_id`, `parent_id`, `hidden`, `disabled`), - ADD UNIQUE INDEX `code`(`site_id`, `code`); -ALTER TABLE `cms_content` - ADD COLUMN `quote_content_id` bigint(20) NULL COMMENT '寮曠敤鍐呭ID' AFTER `parent_id`, - ADD INDEX `quote_content_id`(`site_id`, `quote_content_id`); --- 2019-01-11 -- -UPDATE `sys_module` SET `authorized_url` = 'cmsWebFile/doUpload,cmsWebFile/check' WHERE `id` ='webfile_upload'; --- 2019-01-22 -- -ALTER TABLE `cms_content` - ADD COLUMN `dictionar_values` text default NULL COMMENT '鏁版嵁瀛楀吀鍊' AFTER `tag_ids`; --- 2019-01-24 -- -ALTER TABLE `cms_dictionary` - MODIFY COLUMN `id` varchar(20) NOT NULL FIRST, - DROP PRIMARY KEY, - ADD PRIMARY KEY (`id`, `site_id`); -ALTER TABLE `cms_dictionary_data` - MODIFY COLUMN `dictionary_id` varchar(20) NOT NULL COMMENT '瀛楀吀' FIRST, - ADD COLUMN `site_id` smallint(0) NOT NULL COMMENT '绔欑偣ID' AFTER `dictionary_id`, - DROP PRIMARY KEY, - ADD PRIMARY KEY (`dictionary_id`, `site_id`, `value`); -update cms_dictionary_data a set a.site_id = (select site_id from cms_dictionary b where a.dictionary_id = b.id); -ALTER TABLE `sys_extend_field` - MODIFY COLUMN `dictionary_id` varchar(20) NULL DEFAULT NULL COMMENT '鏁版嵁瀛楀吀ID' AFTER `default_value`; --- 2019-01-24 -- -UPDATE `sys_module` SET `authorized_url` = 'cmsCategory/addMore,cmsCategory/virify,cmsTemplate/lookup,cmsCategory/categoryPath,cmsCategory/contentPath,file/doUpload,cmsCategory/save' WHERE `id` ='category_add'; -UPDATE `sys_module` SET `authorized_url` = 'cmsDictionary/save,cmsDictionary/virify' WHERE `id` ='dictionary_add'; --- 2019-01-29 -- -INSERT INTO `sys_module` VALUES ('myself_device', 'myself/userDeviceList', 'sysAppClient/enable,sysAppClient/disable', 'icon-linux', 'myself_menu', 1, 5); -UPDATE `sys_module` SET `authorized_url` = 'sysUserToken/delete' WHERE `id` ='myself_token'; -INSERT INTO `sys_module_lang`(`module_id`, `lang`, `value`) VALUES ('myself_device', 'en', 'My device'); -INSERT INTO `sys_module_lang`(`module_id`, `lang`, `value`) VALUES ('myself_device', 'ja', '绉併伄绔湯'); -INSERT INTO `sys_module_lang`(`module_id`, `lang`, `value`) VALUES ('myself_device', 'zh', '鎴戠殑璁惧'); -ALTER TABLE `sys_app_client` - ADD COLUMN `id` bigint(20) NOT NULL AUTO_INCREMENT FIRST, - DROP PRIMARY KEY, - ADD PRIMARY KEY (`id`), - ADD UNIQUE INDEX(`site_id`, `channel`, `uuid`); --- 2019-02-15 -- -ALTER TABLE `cms_place` - MODIFY COLUMN `path` varchar(100) NOT NULL COMMENT '妯℃澘璺緞' AFTER `site_id`; -DELETE FROM `cms_word` WHERE LENGTH(name) > 100; -ALTER TABLE `cms_word` - MODIFY COLUMN `name` varchar(100) NOT NULL COMMENT '鍚嶇О' AFTER `site_id`; -ALTER TABLE `sys_dept_page` - MODIFY COLUMN `page` varchar(100) NOT NULL COMMENT '椤甸潰' AFTER `dept_id`; -ALTER TABLE `sys_domain` - MODIFY COLUMN `name` varchar(100) NOT NULL COMMENT '鍩熷悕' FIRST, - MODIFY COLUMN `path` varchar(100) NULL DEFAULT NULL COMMENT '璺緞' AFTER `wild`; -ALTER TABLE `sys_role_authorized` - MODIFY COLUMN `url` varchar(100) NOT NULL COMMENT '鎺堟潈鍦板潃' AFTER `role_id`; --- 2019-02-19 -- -ALTER TABLE `cms_content_attribute` - ADD COLUMN `search_text` longtext NULL COMMENT '鍏ㄦ枃绱㈠紩鏂囨湰' AFTER `data`; -ALTER TABLE `sys_extend_field` - ADD COLUMN `searchable` tinyint(1) NOT NULL COMMENT '鏄惁鍙悳绱' AFTER `required`, - MODIFY COLUMN `maxlength` int(11) NULL DEFAULT NULL COMMENT '鏈澶ч暱搴' AFTER `searchable`; --- 2019-02-22 -- -UPDATE `sys_module` SET `parent_id` = 'config_menu' where id = 'domain_list'; -UPDATE `sys_module` SET `authorized_url` = 'cmsPlace/export',`url` = 'cmsPlace/dataList' WHERE `id` ='place_data_list'; \ No newline at end of file diff --git a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.202004-V4.0.202011.sql b/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.202004-V4.0.202011.sql deleted file mode 100644 index 551ad3827..000000000 --- a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.202004-V4.0.202011.sql +++ /dev/null @@ -1,36 +0,0 @@ --- 2020-06-23 -- -ALTER TABLE `cms_tag` - DROP INDEX `cms_tag_site_id`, - ADD INDEX `cms_tag_site_id`(`site_id`, `name`), - ADD INDEX `cms_tag_type_id` (`type_id`); -ALTER TABLE `cms_tag_type` - DROP INDEX `cms_tag_type_site_id`, - ADD INDEX `cms_tag_type_site_id` (`site_id`,`name`); --- 2020-07-27 -- -DELETE FROM `sys_module` WHERE id = 'category'; -DELETE FROM `sys_module_lang` WHERE module_id = 'category'; -UPDATE `sys_module` SET `parent_id` = 'content' WHERE `id` ='category_extend'; -UPDATE `sys_module` SET `id` = 'category_list', `parent_id` = 'content_menu',`sort` = '1' WHERE `id` ='category_menu'; -UPDATE `sys_module_lang` SET `module_id` = 'category_list' WHERE `module_id` ='category_menu'; -UPDATE `sys_module` SET `parent_id` = 'category_list' WHERE `parent_id` ='category_menu'; -UPDATE `sys_module` SET `parent_id` = 'content_list' WHERE `parent_id` ='content_menu'; -UPDATE `sys_module` SET `parent_id` = 'content_menu' WHERE `parent_id` ='content_extend'; -DELETE FROM `sys_module_lang` WHERE `module_id` = 'content_extend'; -DELETE FROM `sys_module` WHERE `id` = 'content_extend'; -UPDATE `sys_module` SET `parent_id` = 'content_menu', `sort` = '2' WHERE `id` ='category_list'; -UPDATE `sys_module` SET `authorized_url` = NULL, `url` = NULL WHERE `id` ='content_menu'; -INSERT INTO `sys_module` VALUES ('content_list', 'cmsContent/list', 'sysUser/lookup', 'icon-book', 'content_menu', 1, 0); -UPDATE `sys_module` SET `sort` = '1' where `id` = 'comment_list'; -UPDATE `sys_module` SET `sort` = '3' where `id` = 'tag_list'; -UPDATE `sys_module` SET `sort` = '4' where `id` = 'word_list'; -UPDATE `sys_module` SET `sort` = '5' where `id` = 'content_vote'; -UPDATE `sys_module` SET `sort` = '6' where `id` = 'content_recycle_list'; -UPDATE `sys_module` SET `attached` = NULL where `id` = 'content_add'; -UPDATE `sys_module` SET `menu` = '0' where `parent_id` = 'content_list'; -UPDATE `sys_module` SET `sort` = '1' where `id` = 'category_extend'; -INSERT INTO `sys_module_lang` VALUES ('content_list', 'en', 'Content management'); -INSERT INTO `sys_module_lang` VALUES ('content_list', 'ja', '銈炽兂銉嗐兂銉勭鐞'); -INSERT INTO `sys_module_lang` VALUES ('content_list', 'zh', '鍐呭绠$悊'); -ALTER TABLE `cms_content` DROP INDEX `cms_content_quote_content_id`; -UPDATE `sys_module_lang` SET `value` = '绉併伄' where `module_id` = 'myself' and `lang` = 'ja'; -UPDATE `sys_module_lang` SET `value` = '鎴戠殑' where `module_id` = 'myself' and `lang` = 'zh'; \ No newline at end of file diff --git a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.202011-V4.0.202107.sql b/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.202011-V4.0.202107.sql deleted file mode 100644 index 3660b6c2c..000000000 --- a/publiccms-parent/publiccms-core/src/main/resources/initialization/upgrade/V4.0.202011-V4.0.202107.sql +++ /dev/null @@ -1,234 +0,0 @@ --- 2021-01-14 -- -ALTER TABLE `cms_content` - ADD INDEX `cms_content_quote_content_id`(`site_id`, `quote_content_id`); -CREATE TABLE `log_visit` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `site_id` smallint(6) NOT NULL COMMENT '绔欑偣', - `session_id` varchar(50) NOT NULL COMMENT '浼氳瘽', - `visit_date` date NOT NULL COMMENT '璁块棶鏃ユ湡', - `visit_hour` tinyint(4) NOT NULL COMMENT '璁块棶灏忔椂', - `ip` varchar(130) NOT NULL COMMENT 'IP', - `user_agent` varchar(500) DEFAULT NULL COMMENT 'User Agent', - `url` varchar(2048) NOT NULL COMMENT '璁块棶璺緞', - `title` varchar(255) DEFAULT NULL COMMENT '鏍囬', - `screen_width` int(11) DEFAULT NULL COMMENT '灞忓箷瀹藉害', - `screen_height` int(11) DEFAULT NULL COMMENT '灞忓箷楂樺害', - `referer_url` varchar(2048) DEFAULT NULL COMMENT '鏉ユ簮URL', - `item_type` varchar(50) DEFAULT NULL COMMENT '椤圭洰绫诲瀷', - `item_id` varchar(50) DEFAULT NULL COMMENT '椤圭洰', - `create_date` datetime NOT NULL COMMENT '鍒涘缓鏃ユ湡', - PRIMARY KEY (`id`), - KEY `log_visit_visit_date` (`site_id`,`visit_date`,`visit_hour`), - KEY `log_visit_session_id` (`site_id`,`session_id`,`visit_date`,`create_date`,`ip`) -) COMMENT='璁块棶鏃ュ織'; - -CREATE TABLE `log_visit_day` ( - `site_id` smallint(6) NOT NULL COMMENT '绔欑偣', - `visit_date` date NOT NULL COMMENT '鏃ユ湡', - `visit_hour` tinyint(4) NOT NULL COMMENT '灏忔椂', - `pv` bigint(20) NOT NULL COMMENT 'Page Views', - `uv` bigint(20) DEFAULT NULL COMMENT 'User Views', - `ipviews` bigint(20) DEFAULT NULL COMMENT 'IP鏁', - PRIMARY KEY (`site_id`,`visit_date`,`visit_hour`), - KEY `log_visit_session_id` (`site_id`,`visit_date`) -) COMMENT = '璁块棶姹囨'; - -CREATE TABLE `log_visit_session` ( - `site_id` smallint(6) NOT NULL COMMENT '绔欑偣', - `session_id` varchar(50) NOT NULL COMMENT '浼氳瘽', - `visit_date` date NOT NULL COMMENT '鏃ユ湡', - `last_visit_date` datetime DEFAULT NULL COMMENT '涓婃璁块棶鏃ユ湡', - `first_visit_date` datetime DEFAULT NULL COMMENT '棣栨璁块棶鏃ユ湡', - `ip` varchar(130) NOT NULL COMMENT 'IP', - `pv` bigint(20) NOT NULL COMMENT 'PV', - PRIMARY KEY (`site_id`,`session_id`,`visit_date`), - KEY `log_visit_visit_date` (`site_id`,`visit_date`,`ip`) -) COMMENT = '璁块棶浼氳瘽'; - --- 2021-03-25 -- -UPDATE `sys_module` SET `authorized_url` = 'cmsContent/push_content,cmsContent/push_content_list,cmsContent/push_to_content,cmsContent/push_page,cmsContent/push_page_list,cmsPlace/add,cmsPlace/save,cmsContent/related,cmsContent/unrelated,cmsPlace/delete,cmsPlace/push' WHERE `id` ='content_push'; --- 20210329 -- -ALTER TABLE `log_login` MODIFY COLUMN `error_password` varchar(255) default NULL COMMENT '閿欒瀵嗙爜' AFTER `create_date`; --- 2021-05-26 -- -INSERT INTO `sys_module` VALUES ('log_visit', 'log/visit', 'log/visitView', 'icon-bolt', 'log_menu', 1, 5); -INSERT INTO `sys_module` VALUES ('log_visit_day', 'log/visitDay', NULL, 'icon-calendar', 'log_menu', 1, 7); -INSERT INTO `sys_module` VALUES ('log_visit_session', 'log/visitSession', NULL, 'icon-comment-alt', 'log_menu', 1, 6); -INSERT INTO `sys_module_lang` VALUES ('log_visit', 'en', 'Visit log'); -INSERT INTO `sys_module_lang` VALUES ('log_visit', 'ja', '銈€偗銈汇偣銉偘'); -INSERT INTO `sys_module_lang` VALUES ('log_visit', 'zh', '璁块棶鏃ュ織'); -INSERT INTO `sys_module_lang` VALUES ('log_visit_day', 'en', 'Daily visit log'); -INSERT INTO `sys_module_lang` VALUES ('log_visit_day', 'ja', '姣庢棩銇í鍟忋儹銈'); -INSERT INTO `sys_module_lang` VALUES ('log_visit_day', 'zh', '鏃ヨ闂棩蹇'); -INSERT INTO `sys_module_lang` VALUES ('log_visit_session', 'en', 'Visit session'); -INSERT INTO `sys_module_lang` VALUES ('log_visit_session', 'ja', '銈€偗銈汇偣銈汇儍銈枫儳銉'); -INSERT INTO `sys_module_lang` VALUES ('log_visit_session', 'zh', '璁块棶鏃ュ織浼氳瘽'); --- 2021-06-25 -- -UPDATE `sys_module` SET `authorized_url` = 'tradeOrder/refund' WHERE `id` ='refund_refund'; -UPDATE `sys_module` SET `authorized_url` = 'cmsTemplate/save,cmsTemplate/chipLookup,cmsWebFile/lookup,placeTemplate/form,cmsTemplate/contentForm,cmsCategory/contributeForm,cmsTemplate/demo,cmsTemplate/help,cmsTemplate/upload,cmsTemplate/doUpload,cmsTemplate/export' WHERE `id` ='template_content'; -UPDATE `sys_module` SET `authorized_url` = 'taskTemplate/save,taskTemplate/upload,taskTemplate/doUpload,taskTemplate/export,taskTemplate/chipLookup,cmsTemplate/help' WHERE `id` ='task_template_content'; --- 2021-06026 -- -CREATE TABLE `cms_content_product` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `site_id` smallint(6) NOT NULL COMMENT '绔欑偣', - `content_id` bigint(20) NOT NULL COMMENT '鍐呭', - `user_id` bigint(20) NOT NULL COMMENT '鐢ㄦ埛', - `cover` varchar(255) DEFAULT NULL COMMENT '灏侀潰鍥', - `title` varchar(100) NOT NULL COMMENT '鏍囬', - `price` decimal(10,2) NOT NULL COMMENT '浠锋牸', - `min_quantity` int(11) DEFAULT NULL COMMENT '鏈灏忚喘涔版暟閲', - `max_quantity` int(11) DEFAULT NULL COMMENT '鏈澶ц喘涔版暟閲', - `inventory` int(11) NOT NULL COMMENT '搴撳瓨', - `sales` int(11) NOT NULL COMMENT '閿閲', - PRIMARY KEY (`id`), - KEY `cms_content_product_content_id` (`site_id`, `content_id`), - KEY `cms_content_product_user_id` (`site_id`, `user_id`), - KEY `cms_content_product_sales` (`site_id`, `sales`), - KEY `cms_content_product_inventory` (`site_id`, `inventory`), - KEY `cms_content_product_price` (`site_id`, `price`) -) COMMENT='鍐呭鍟嗗搧'; -INSERT INTO `sys_module` VALUES ('product_list', 'cmsContentProduct/list', NULL, 'icon-truck', 'content_menu', 1, 4); -INSERT INTO `sys_module` VALUES ('product_add', 'cmsContentProduct/add', 'cmsContentProduct/save', NULL, 'product_list', 1, 0); -INSERT INTO `sys_module_lang` VALUES ('product_list', 'en', 'Product management'); -INSERT INTO `sys_module_lang` VALUES ('product_list', 'ja', '瑁藉搧绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('product_list', 'zh', '浜у搧绠$悊'); -INSERT INTO `sys_module_lang` VALUES ('product_add', 'en', 'Edit'); -INSERT INTO `sys_module_lang` VALUES ('product_add', 'ja', '澶夋洿'); -INSERT INTO `sys_module_lang` VALUES ('product_add', 'zh', '淇敼'); -UPDATE `sys_module` SET `sort` = '6' WHERE `id` = 'word_list'; -UPDATE `sys_module` SET `sort` = '7' WHERE `id` = 'content_recycle_list'; -RENAME TABLE `trade_order` TO `trade_payment`; -RENAME TABLE `trade_order_history` TO `trade_payment_history`; -ALTER TABLE `trade_refund` - CHANGE COLUMN `order_id` `payment_id` bigint(20) NOT NULL COMMENT '璁㈠崟' AFTER `id`; -ALTER TABLE `trade_payment_history` CHANGE COLUMN `order_id` `payment_id` bigint(20) NOT NULL COMMENT '璁㈠崟' AFTER `site_id`; -ALTER TABLE `trade_payment` - DROP INDEX `trade_order_account_type`, - DROP INDEX `trade_order_site_id`, - DROP INDEX `trade_order_trade_type`, - DROP INDEX `trade_order_create_date`, - ADD INDEX `trade_payment_account_type`(`account_type`, `account_serial_number`) , - ADD INDEX `trade_payment_site_id`(`site_id`, `user_id`, `status`) , - ADD INDEX `trade_payment_trade_type`(`trade_type`, `serial_number`) , - ADD INDEX `trade_payment_create_date`(`create_date`); -ALTER TABLE `trade_payment_history` - DROP INDEX `trade_order_history_site_id`, - DROP INDEX `trade_order_history_create_date`, - ADD INDEX `trade_payment_history_site_id`(`site_id`, `payment_id`, `operate`), - ADD INDEX `trade_payment_history_create_date`(`create_date`); -CREATE TABLE `trade_order` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `site_id` smallint(6) NOT NULL COMMENT '绔欑偣', - `user_id` bigint(20) NOT NULL COMMENT '鐢ㄦ埛', - `amount` decimal(10,2) NOT NULL COMMENT '鎬婚噾棰', - `payment_id` bigint(20) DEFAULT NULL COMMENT '鏀粯璁㈠崟', - `address` varchar(255) DEFAULT NULL COMMENT '鍦板潃', - `addressee` varchar(100) DEFAULT NULL COMMENT '鏀朵欢浜', - `telephone` varchar(100) DEFAULT NULL COMMENT '鐢佃瘽', - `ip` varchar(130) NOT NULL COMMENT 'IP鍦板潃', - `remark` varchar(255) DEFAULT NULL COMMENT '澶囨敞', - `status` int(11) NOT NULL COMMENT '鐘舵:0寰呯‘璁,1鏃犳晥璁㈠崟,2宸蹭粯娆,3宸查娆,4宸插叧闂', - `confirmed` tinyint(1) NOT NULL COMMENT '宸茬‘璁', - `processed` tinyint(1) NOT NULL COMMENT '宸插鐞', - `process_info` varchar(255) DEFAULT NULL COMMENT '澶勭悊淇℃伅', - `update_date` datetime DEFAULT NULL COMMENT '鏇存柊鏃ユ湡', - `create_date` datetime NOT NULL COMMENT '鍒涘缓鏃ユ湡', - `process_date` datetime DEFAULT NULL COMMENT '澶勭悊鏃ユ湡', - `payment_date` datetime DEFAULT NULL COMMENT '鏀粯鏃ユ湡', - PRIMARY KEY (`id`), - KEY `trade_order_site_id` (`site_id`,`user_id`,`status`), - KEY `trade_order_create_date` (`create_date`), - KEY `trade_order_payment_id` (`site_id`,`payment_id`) -) COMMENT='浜у搧璁㈠崟'; -CREATE TABLE `trade_order_history` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `site_id` smallint(6) NOT NULL COMMENT '绔欑偣', - `order_id` bigint(20) NOT NULL COMMENT '璁㈠崟', - `create_date` datetime NOT NULL COMMENT '鍒涘缓鏃ユ湡', - `operate` varchar(100) NOT NULL COMMENT '鎿嶄綔', - `content` text COMMENT '鍐呭', - PRIMARY KEY (`id`), - KEY `trade_order_history_site_id` (`site_id`,`order_id`,`operate`), - KEY `trade_order_history_create_date` (`create_date`) -) COMMENT='璁㈠崟娴佹按'; -CREATE TABLE `trade_order_product` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `site_id` smallint(6) NOT NULL COMMENT '绔欑偣', - `order_id` bigint(20) NOT NULL COMMENT '鐢ㄦ埛', - `content_id` bigint(20) NOT NULL COMMENT '鍐呭', - `product_id` bigint(20) NOT NULL COMMENT '浜у搧', - `price` decimal(10,2) NOT NULL COMMENT '浠锋牸', - `quantity` int(11) NOT NULL COMMENT '鏁伴噺', - `amount` decimal(10,2) NOT NULL COMMENT '鎬婚噾棰', - `remark` varchar(255) DEFAULT NULL COMMENT '澶囨敞', - PRIMARY KEY (`id`), - KEY `trade_order_product_site_id` (`site_id`,`order_id`) -) COMMENT='浜у搧璁㈠崟'; -ALTER TABLE `cms_content` - ADD COLUMN `has_products` tinyint(1) NOT NULL COMMENT '鎷ユ湁浜у搧鍒楄〃' AFTER `has_files`, - DROP INDEX `cms_content_only_url`, - ADD INDEX `cms_content_only_url`(`only_url`, `has_images`, `has_files`, `has_products`, `user_id`) ; -ALTER TABLE `trade_payment` - ADD COLUMN `process_user_id` bigint(20) NULL COMMENT '澶勭悊鐢ㄦ埛' AFTER `processed`; -ALTER TABLE `trade_order` - ADD COLUMN `process_user_id` bigint(20) NULL COMMENT '澶勭悊鐢ㄦ埛' AFTER `processed`; --- 2021-06-28 -- -ALTER TABLE `trade_refund` - ADD COLUMN `site_id` smallint(0) NOT NULL COMMENT '绔欑偣' AFTER `id`, - ADD COLUMN `user_id` bigint(20) NOT NULL COMMENT '鐢ㄦ埛' AFTER `payment_id`, - DROP INDEX `trade_refund_order_id`; -ALTER TABLE `cms_content_related` - DROP INDEX `cms_content_related_user_id`, - ADD INDEX `cms_content_related_content_id`(`content_id`, `sort`); -ALTER TABLE `trade_refund` - ADD INDEX `trade_refund_user_id`(`user_id`, `payment_id`, `status`); --- 2021-06-30 -- -UPDATE `sys_module` SET `sort` = '7' WHERE `id` = 'account_history_list'; -UPDATE `sys_module` SET `sort` = '6' WHERE `id` = 'account_list'; -UPDATE `sys_module` SET `sort` = '5' WHERE `id` = 'refund_list'; -INSERT INTO `sys_module` VALUES ('payment_history_list', 'tradePaymentHistory/list', NULL, 'icon-exchange', 'trade_menu', 1, 4); -INSERT INTO `sys_module_lang` VALUES ('payment_history_list', 'en', 'Payment history'); -INSERT INTO `sys_module_lang` VALUES ('payment_history_list', 'ja', '鏀墪姝'); -INSERT INTO `sys_module_lang` VALUES ('payment_history_list', 'zh', '鏀粯鍘嗗彶'); -ALTER TABLE `trade_payment` - CHANGE COLUMN `status` `status` int(11) NOT NULL COMMENT '鐘舵:0寰呮敮浠,1宸叉敮浠,2寰呴娆,3宸查娆,4宸插叧闂' after `ip`; --- 2021-07-01 -- -ALTER TABLE `trade_order` - ADD COLUMN `title` varchar(255) NOT NULL COMMENT '鏍囬' AFTER `user_id`; --- 2021-07-03 -- -UPDATE `sys_module` SET `authorized_url` = 'tradeAccount/save,sysUser/lookup' WHERE `id` ='account_add'; -INSERT INTO `sys_module` VALUES ('order_confirm', 'tradeOrder/confirmParameters', 'tradeOrder/confirm', NULL, 'order_list', 0, 0); -INSERT INTO `sys_module` VALUES ('order_process', 'tradeOrder/processParameters', 'tradeOrder/process', NULL, 'order_list', 0, 0); -INSERT INTO `sys_module` VALUES ('order_view', 'tradeOrder/view', NULL, NULL, 'order_list', 0, 0); -INSERT INTO `sys_module_lang` VALUES ('order_confirm', 'en', 'Confirm order'); -INSERT INTO `sys_module_lang` VALUES ('order_confirm', 'ja', '娉ㄦ枃銇⒑瑾'); -INSERT INTO `sys_module_lang` VALUES ('order_confirm', 'zh', '纭璁㈠崟'); -INSERT INTO `sys_module_lang` VALUES ('order_process', 'en', 'Process order'); -INSERT INTO `sys_module_lang` VALUES ('order_process', 'ja', '銉椼儹銈汇偣銈兗銉銉'); -INSERT INTO `sys_module_lang` VALUES ('order_process', 'zh', '澶勭悊璁㈠崟'); -INSERT INTO `sys_module_lang` VALUES ('order_view', 'en', 'View'); -INSERT INTO `sys_module_lang` VALUES ('order_view', 'ja', '瑕嬨倠'); -INSERT INTO `sys_module_lang` VALUES ('order_view', 'zh', '鏌ョ湅'); -INSERT INTO `sys_module` VALUES ('payment_list', 'tradePayment/list', 'sysUser/lookup', 'icon-money', 'trade_menu', 1, 3); -INSERT INTO `sys_module_lang` VALUES ('payment_list', 'en', 'Payment management'); -INSERT INTO `sys_module_lang` VALUES ('payment_list', 'ja', '鏀墪銇勭鐞'); -INSERT INTO `sys_module_lang` VALUES ('payment_list', 'zh', '鏀粯绠$悊'); -UPDATE `sys_module` SET `authorized_url` = 'tradePaymentHistory/view' WHERE `id` ='payment_history_list'; -INSERT INTO `sys_module` VALUES ('refund_refuse', 'tradeRefund/refuseParameters', 'tradeOrder/refuse', '', 'refund_list', 0, 0); -INSERT INTO `sys_module_lang` VALUES ('refund_refuse', 'en', 'Refuse'); -INSERT INTO `sys_module_lang` VALUES ('refund_refuse', 'ja', '銇斻伩'); -INSERT INTO `sys_module_lang` VALUES ('refund_refuse', 'zh', '鎷掔粷'); --- 2021-07-04 -- -UPDATE `sys_module` SET `menu` = '1' WHERE `id` ='trade_menu'; --- 2021-06-08 -- -DELETE FROM `sys_module` WHERE `id` ='repo_sync'; -DELETE FROM `sys_module_lang` WHERE `module_id` ='repo_sync'; --- 2021-07-09 -- -ALTER TABLE `sys_extend_field` - ADD INDEX `sys_extend_field_input_type` (`extend_id`, `input_type`,`searchable`); --- 2021-07-11 -- -INSERT INTO `sys_module` VALUES ('report_visit', 'report/visit', NULL, 'icon-bolt', 'user_menu', 1, 6); -INSERT INTO `sys_module_lang` VALUES ('report_visit', 'en', 'Visit report'); -INSERT INTO `sys_module_lang` VALUES ('report_visit', 'ja', '銈€偗銈汇偣鐩h'); -INSERT INTO `sys_module_lang` VALUES ('report_visit', 'zh', '缃戠珯璁块棶鐩戞帶'); --- 221-07-20 -- -ALTER TABLE `trade_payment_history` COMMENT = '鏀粯璁㈠崟娴佹按'; \ No newline at end of file diff --git a/publiccms-parent/publiccms/pom.xml b/publiccms-parent/publiccms/pom.xml index 663b26651..c63ff8a0c 100644 --- a/publiccms-parent/publiccms/pom.xml +++ b/publiccms-parent/publiccms/pom.xml @@ -5,6 +5,7 @@ 4.0.0 publiccms war + com.publiccms publiccms-parent diff --git a/publiccms-parent/publiccms/src/main/java/boot/SpringBootApplication.java b/publiccms-parent/publiccms/src/main/java/boot/SpringBootApplication.java index 430482ae2..16b87f99a 100644 --- a/publiccms-parent/publiccms/src/main/java/boot/SpringBootApplication.java +++ b/publiccms-parent/publiccms/src/main/java/boot/SpringBootApplication.java @@ -33,7 +33,12 @@ @Import(CmsConfig.class) public class SpringBootApplication { - /** + /** + * 鍦╥dea涓氳繃main鏂规硶鍚姩闇瑕佸皢宸ヤ綔鐩綍鏀逛负 publiccms 妯″潡鎵鍦ㄧ殑璺緞锛屽惁鍒欓潤鎬佽祫婧愪笉鑳藉姞杞 + * idea銇甿ain銉°偨銉冦儔銇嬨倝濮嬨倎銈嬨伀銇佷綔妤儑銈c儸銈儓銉倰publiccms銉€偢銉ャ兗銉亴閰嶇疆銇曘倢銇︺亜銈嬨儜銈广伀澶夋洿銇欍倠蹇呰銇屻亗銈娿併仢銇嗐仐銇亜銇ㄩ潤鐨勩儶銈姐兗銈广倰銉兗銉夈仹銇嶃伨銇涖倱 + * To start through the main method in idea, you need to change the working directory to the path where the publiccms module is located, otherwise the static resources cannot be loaded + * https://www.publiccms.com/question/2018/02-13/376.html + * * @param args */ public static void main(String[] args) { diff --git a/publiccms-parent/publiccms/src/main/resources/language/menu_en.properties b/publiccms-parent/publiccms/src/main/resources/language/menu_en.properties index 9f7da1547..e5cbef629 100644 --- a/publiccms-parent/publiccms/src/main/resources/language/menu_en.properties +++ b/publiccms-parent/publiccms/src/main/resources/language/menu_en.properties @@ -9,6 +9,5 @@ menu.dict=Custom dictionary menu.site_script=Execute script menu.monitor=System monitor menu.cluster=Cluster management -menu.license=Product license menu.official=PublicCMS menu.official_website=PublicCMS website \ No newline at end of file diff --git a/publiccms-parent/publiccms/src/main/resources/language/menu_ja.properties b/publiccms-parent/publiccms/src/main/resources/language/menu_ja.properties index 89f175c1a..2b7b78320 100644 --- a/publiccms-parent/publiccms/src/main/resources/language/menu_ja.properties +++ b/publiccms-parent/publiccms/src/main/resources/language/menu_ja.properties @@ -9,6 +9,5 @@ menu.dict=\u30AB\u30B9\u30BF\u30E0\u8F9E\u66F8 menu.site_script=\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C\u3059\u308B menu.monitor=\u30B7\u30B9\u30C6\u30E0\u76E3\u8996 menu.cluster=\u30CE\u30FC\u30C9\u7BA1\u7406 -menu.license=\u5546\u54C1\u30E9\u30A4\u30BB\u30F3\u30B9 menu.official=PublicCMS menu.official_website=PublicCMS\u516C\u5F0F\u30B5\u30A4\u30C8 \ No newline at end of file diff --git a/publiccms-parent/publiccms/src/main/resources/language/menu_zh.properties b/publiccms-parent/publiccms/src/main/resources/language/menu_zh.properties index b86d75db4..44a09958b 100644 --- a/publiccms-parent/publiccms/src/main/resources/language/menu_zh.properties +++ b/publiccms-parent/publiccms/src/main/resources/language/menu_zh.properties @@ -9,6 +9,5 @@ menu.dict=\u81EA\u5B9A\u4E49\u8BCD\u5178 menu.site_script=\u6267\u884C\u811A\u672C menu.monitor=\u7CFB\u7EDF\u76D1\u63A7 menu.cluster=\u8282\u70B9\u7BA1\u7406 -menu.license=\u4EA7\u54C1\u6388\u6743\u8BB8\u53EF menu.official=PublicCMS menu.official_website=PublicCMS\u5B98\u7F51 \ No newline at end of file diff --git a/publiccms-parent/publiccms/src/main/resources/language/message_en.properties b/publiccms-parent/publiccms/src/main/resources/language/message_en.properties index cd4e94a30..ae1de55da 100644 --- a/publiccms-parent/publiccms/src/main/resources/language/message_en.properties +++ b/publiccms-parent/publiccms/src/main/resources/language/message_en.properties @@ -39,8 +39,6 @@ verify.user.notAdmin=Not an administrator verify.user.notEnablie=User has been disabled verify.custom.static=Generate static page failed verify.custom.noright=No permissions -verify.custom.needAuthorizationEdition=Requires authorization file -verify.custom.unauthorizedDomain=The domain name is not authorized verify.custom.notExist.template=Template does not exist verify.custom.contribute=Do not allow front side submission verify.custom.anonymousContribute=Do not allow anonymous submission diff --git a/publiccms-parent/publiccms/src/main/resources/language/message_ja.properties b/publiccms-parent/publiccms/src/main/resources/language/message_ja.properties index e861fbff2..252612a1a 100644 --- a/publiccms-parent/publiccms/src/main/resources/language/message_ja.properties +++ b/publiccms-parent/publiccms/src/main/resources/language/message_ja.properties @@ -39,8 +39,6 @@ verify.user.notAdmin=\u7BA1\u7406\u8005\u3067\u306F\u3042\u308A\u307E\u305B\u309 verify.user.notEnablie=\u30E6\u30FC\u30B6\u30FC\u306F\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u307E\u3057\u305F\u3002 verify.custom.static=\u30B9\u30BF\u30C6\u30A3\u30C3\u30AF\u30DA\u30FC\u30B8\u306E\u751F\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F verify.custom.noright=\u8A31\u53EF\u306A\u3057 -verify.custom.needAuthorizationEdition=\u5546\u54C1\u306E\u6388\u6A29\u30A2\u30AF\u30BB\u30B9\u304C\u5FC5\u8981 -verify.custom.unauthorizedDomain=\u30C9\u30E1\u30A4\u30F3\u540D\u306F\u6388\u6A29\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 verify.custom.notExist.template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u5B58\u5728\u3057\u307E\u305B\u3093 verify.custom.contribute=\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9\u63D0\u51FA\u306F\u8A31\u53EF\u3057\u307E\u305B\u3093\u3002 verify.custom.anonymousContribute=\u533F\u540D\u63D0\u51FA\u306F\u8A31\u53EF\u3057\u307E\u305B\u3093 diff --git a/publiccms-parent/publiccms/src/main/resources/language/message_zh.properties b/publiccms-parent/publiccms/src/main/resources/language/message_zh.properties index 9bdc50d7b..6670e2ef3 100644 --- a/publiccms-parent/publiccms/src/main/resources/language/message_zh.properties +++ b/publiccms-parent/publiccms/src/main/resources/language/message_zh.properties @@ -39,8 +39,6 @@ verify.user.notAdmin=\u4e0d\u662f\u7ba1\u7406\u5458 verify.user.notEnablie=\u7528\u6237\u5df2\u88ab\u7981\u7528 verify.custom.static=\u751F\u6210\u9759\u6001\u9875\u9762\u5931\u8D25 verify.custom.noright=\u6CA1\u6709\u6743\u9650 -verify.custom.needAuthorizationEdition=\u9700\u8981\u4EA7\u54C1\u6388\u6743\u8BB8\u53EF -verify.custom.unauthorizedDomain=\u57DF\u540D\u672A\u901A\u8FC7\u6388\u6743 verify.custom.notExist.template=\u6A21\u677F\u4E0D\u5B58\u5728 verify.custom.contribute=\u4E0D\u5141\u8BB8\u524D\u53F0\u63D0\u4EA4 verify.custom.anonymousContribute=\u4E0D\u5141\u8BB8\u533F\u540D\u63D0\u4EA4 diff --git a/publiccms-parent/publiccms/src/main/resources/templates/admin/common/license.html b/publiccms-parent/publiccms/src/main/resources/templates/admin/common/license.html deleted file mode 100644 index a749bb017..000000000 --- a/publiccms-parent/publiccms/src/main/resources/templates/admin/common/license.html +++ /dev/null @@ -1,51 +0,0 @@ -
-<#assign license = getLicense()/> -<#if license?has_content> -
-
<@t.page 'version'/>:
-
${license.version!}
-
-
-
<@t.page 'license.authorization'/>:
-
${license.authorization!}
-
-
-
<@t.page 'license.organization'/>:
-
${license.organization!}
-
-
-
<@t.page 'license.domain'/>:
-
${license.domain!}
-
-
-
<@t.page 'license.start_date'/>:
-
${license.startDate!}
-
-
-
<@t.page 'license.end_date'/>:
-
${license.endDate!}
-
-
-
<@t.page 'license.issue'/>:
-
${license.issue!}
-
-
-
<@t.page 'license.verify_on_line'/>:
-
-
- - -
-
-
    -
  • -
-
\ No newline at end of file diff --git a/publiccms-parent/publiccms/src/main/resources/templates/admin/index.html b/publiccms-parent/publiccms/src/main/resources/templates/admin/index.html index ba75e330d..38ab954dc 100644 --- a/publiccms-parent/publiccms/src/main/resources/templates/admin/index.html +++ b/publiccms-parent/publiccms/src/main/resources/templates/admin/index.html @@ -108,18 +108,6 @@ -<@_version> - <#if authorizationEdition> -
<@t.page 'license'/>: ${getLicense().authorization!} - <#else> - <@t.page 'license.no'/> - <@_masterSite> - <@_sysAuthorized roleIds=admin.roles url='sysSite/uploadLicense'> - <@t.page 'license.upgrade'/> - - - - Copyright © ${.now?string('yyyy')}
  • diff --git a/publiccms-parent/publiccms/src/main/resources/templates/admin/sysSite/menu.html b/publiccms-parent/publiccms/src/main/resources/templates/admin/sysSite/menu.html index f3706e4b1..e97ccbc3f 100644 --- a/publiccms-parent/publiccms/src/main/resources/templates/admin/sysSite/menu.html +++ b/publiccms-parent/publiccms/src/main/resources/templates/admin/sysSite/menu.html @@ -33,9 +33,6 @@

    <@t.menu 'site_menu'/> <@t.menu 'cluster'/> -
  • - <@t.menu 'license'/> -
diff --git a/publiccms-parent/publiccms/src/main/resources/templates/admin/sysSite/uploadLicense.html b/publiccms-parent/publiccms/src/main/resources/templates/admin/sysSite/uploadLicense.html deleted file mode 100644 index 4c76633d7..000000000 --- a/publiccms-parent/publiccms/src/main/resources/templates/admin/sysSite/uploadLicense.html +++ /dev/null @@ -1,35 +0,0 @@ -
- -
-
    -
  • -
  • -
-
-
-
-
<@t.page 'license.award'/>:
-
- <@t.menu 'official_website'/> -
-
-
-
<@t.page 'license.status'/>:
-
- <@_version> - <#if authorizationEdition> - <@t.page 'license'/>: ${getLicense().authorization!} - <#else> - <@t.page 'license.no'/> - - -
-
-
-
<@t.page 'license.file'/>:
-
- -
-
-
-
\ No newline at end of file diff --git a/publiccms-parent/publiccms/src/main/webapp/error/500.jsp b/publiccms-parent/publiccms/src/main/webapp/error/500.jsp index 35d77c8ca..3f05cf359 100644 --- a/publiccms-parent/publiccms/src/main/webapp/error/500.jsp +++ b/publiccms-parent/publiccms/src/main/webapp/error/500.jsp @@ -30,7 +30,7 @@ try{ -