From ae971f32c8da7d730a9bcf63bf2292a408e2fb18 Mon Sep 17 00:00:00 2001 From: eacoo <981248356@qq.com> Date: Thu, 11 Oct 2018 10:39:36 +0800 Subject: [PATCH 01/60] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) mode change 100755 => 100644 README.md diff --git a/README.md b/README.md old mode 100755 new mode 100644 index 4ee0b85..4b01d36 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ EacooPHP是基于ThinkPHP5.0.21开发的一套轻量级WEB产品开发框架, 使用EacooPHP框架开发定制您的系统前,建议熟悉官方的tp5.0完全开发手册。 -![eacoophp封面图](https://github.com/fengdou902/EacooPHP/blob/master/screenshot.jpeg) +![eacoophp封面图](https://gitee.com/ZhaoJunfeng/EacooPHP/raw/master/screenshot.jpeg) ### 功能特性 - **严谨规范:** 提供一套有利于团队协作的结构设计、编码、数据等规范。 @@ -80,7 +80,7 @@ return builder('list') ->fetch(); ``` ### 效果图 -![效果图](https://github.com/fengdou902/EacooPHP/blob/dev/eacoophp-demo-builderlist-1.png) +![效果图](https://gitee.com/ZhaoJunfeng/EacooPHP/raw/master/eacoophp-demo-builderlist-1.png) ### 表单构建器 ``` @@ -122,7 +122,7 @@ return Builder('Form') ->fetch(); ``` ### 效果图: -![效果图](https://github.com/fengdou902/EacooPHP/blob/dev/eacoophp-demo-builderform-1.png) +![效果图](https://gitee.com/ZhaoJunfeng/EacooPHP/raw/master/eacoophp-demo-builderform-1.png) #### 更多神级操作,高并发,读写分离,分库分表,大数据量解决方案。 @@ -148,4 +148,4 @@ GitHub:[https://github.com/fengdou902/EacooPHP.git](https://github.com/fengdou EacooPHP遵循Apache2开源协议发布,并提供免费使用。 本项目包含的第三方源码和二进制文件之版权信息另行标注。 版权所有Copyright © 2017-2018 by EacooPHP (http://www.eacoophp.com) -All rights reserved。 +All rights reserved。 \ No newline at end of file -- Gitee From c11c3cdff39849dc1145ebddb703ffc10d38360c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=9C=E8=9E=BA=E5=93=A5?= Date: Fri, 12 Oct 2018 10:11:35 +0800 Subject: [PATCH 02/60] update readme --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4b01d36..d2ff820 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ EacooPHP v1.3.0 =============== ### 介绍 +我计划用这个框架开发一个民族网站 + EacooPHP是基于ThinkPHP5.0.21开发的一套轻量级WEB产品开发框架,追求高效,简单,灵活。 具有完善并灵活的模块化和插件机制,模块式开发,大大降低开发成本。命令行管理应用 @@ -148,4 +150,4 @@ GitHub:[https://github.com/fengdou902/EacooPHP.git](https://github.com/fengdou EacooPHP遵循Apache2开源协议发布,并提供免费使用。 本项目包含的第三方源码和二进制文件之版权信息另行标注。 版权所有Copyright © 2017-2018 by EacooPHP (http://www.eacoophp.com) -All rights reserved。 \ No newline at end of file +All rights reserved。 -- Gitee From 11920148d36c7401ef019668f8be89210ca247a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=9C=E8=9E=BA=E5=93=A5?= Date: Tue, 16 Oct 2018 17:15:47 +0800 Subject: [PATCH 03/60] =?UTF-8?q?=E5=88=B6=E4=BD=9C=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E7=BD=91=E7=AB=99=EF=BC=8C=E4=B8=80=E5=8D=8A=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/cms/__MACOSX/install/._install.sql | Bin 0 -> 176 bytes apps/cms/__MACOSX/static/._logo.png | Bin 0 -> 281 bytes .../cms/__MACOSX/view/admin/posts/._edit.html | Bin 0 -> 176 bytes apps/cms/__MACOSX/widget/._Hooks.php | Bin 0 -> 176 bytes apps/cms/admin/Category.php | 219 + apps/cms/admin/Document.php | 301 + apps/cms/admin/Page.php | 203 + apps/cms/admin/Posts.php | 304 + apps/cms/admin/Tag.php | 38 + apps/cms/admin/Type.php | 41 + apps/cms/common.php | 11 + apps/cms/controller/.DS_Store | Bin 0 -> 6148 bytes apps/cms/controller/Index.php | 83 + apps/cms/controller/Page.php | 56 + apps/cms/install/info.json | 17 + apps/cms/install/install.sql | 63 + apps/cms/install/menus.php | 90 + apps/cms/install/options.php | 48 + apps/cms/install/uninstall.sql | 3 + apps/cms/logic/Base.php | 46 + apps/cms/logic/Category.php | 156 + apps/cms/logic/Posts.php | 27 + apps/cms/logic/Tag.php | 30 + apps/cms/model/.DS_Store | Bin 0 -> 6148 bytes apps/cms/model/Category.php | 21 + apps/cms/model/Postmeta.php | 124 + apps/cms/model/Posts.php | 95 + apps/cms/model/Tag.php | 35 + apps/cms/static/.DS_Store | Bin 0 -> 8196 bytes apps/cms/static/css/admin.css | 3 + apps/cms/static/logo.png | Bin 0 -> 20419 bytes apps/cms/validate/Post.php | 52 + apps/cms/view/.DS_Store | Bin 0 -> 6148 bytes apps/cms/view/admin/.DS_Store | Bin 0 -> 8196 bytes apps/cms/view/admin/posts/.DS_Store | Bin 0 -> 6148 bytes apps/cms/view/admin/posts/edit.html | 252 + .../view/admin/widget/hooks/latestList.html | 37 + apps/cms/view/admin/widget/hooks/tool.html | 56 + apps/cms/view/index/detail.html | 56 + apps/cms/view/index/index.html | 58 + apps/cms/view/page/index.html | 58 + apps/cms/view/sidebar.html | 38 + apps/cms/widget/Hooks.php | 73 + apps/home/controller/Index.php | 1 + public/static/cms/.DS_Store | Bin 0 -> 8196 bytes public/static/cms/css/admin.css | 3 + public/static/cms/logo.png | Bin 0 -> 20419 bytes public/themes/Simple-white/__MACOSX/._cms | Bin 0 -> 176 bytes .../themes/Simple-white/__MACOSX/._cover.jpg | Bin 0 -> 268 bytes public/themes/Simple-white/__MACOSX/._home | Bin 0 -> 176 bytes public/themes/Simple-white/__MACOSX/._install | Bin 0 -> 176 bytes public/themes/Simple-white/__MACOSX/._public | Bin 0 -> 176 bytes .../themes/Simple-white/__MACOSX/cms/._Index | Bin 0 -> 176 bytes .../Simple-white/__MACOSX/cms/._sidebar.html | Bin 0 -> 212 bytes .../__MACOSX/cms/Index/._detail.html | Bin 0 -> 212 bytes .../__MACOSX/cms/Index/._index.html | Bin 0 -> 212 bytes .../themes/Simple-white/__MACOSX/home/._index | Bin 0 -> 176 bytes .../__MACOSX/home/index/._index.html | Bin 0 -> 212 bytes .../Simple-white/__MACOSX/install/._info.json | Bin 0 -> 268 bytes .../themes/Simple-white/__MACOSX/public/._css | Bin 0 -> 176 bytes .../themes/Simple-white/__MACOSX/public/._img | Bin 0 -> 176 bytes .../themes/Simple-white/__MACOSX/public/._js | Bin 0 -> 176 bytes .../__MACOSX/public/._layout.html | Bin 0 -> 212 bytes .../__MACOSX/public/css/._animate.css | Bin 0 -> 212 bytes .../__MACOSX/public/css/._common.css | Bin 0 -> 212 bytes .../__MACOSX/public/css/._iconfont.css | Bin 0 -> 212 bytes .../__MACOSX/public/css/._style.css | Bin 0 -> 212 bytes .../__MACOSX/public/img/._112648.png | Bin 0 -> 212 bytes .../__MACOSX/public/img/._297462.png | Bin 0 -> 212 bytes .../__MACOSX/public/img/._about.jpg | Bin 0 -> 212 bytes .../__MACOSX/public/img/._bg1.jpg | Bin 0 -> 212 bytes .../__MACOSX/public/img/._blog_img.jpg | Bin 0 -> 212 bytes .../__MACOSX/public/img/._crumb.png | Bin 0 -> 212 bytes .../public/img/._eacoophp_logo_v1.png | Bin 0 -> 212 bytes .../__MACOSX/public/img/._owl-login-arm.png | Bin 0 -> 212 bytes .../__MACOSX/public/img/._owl-login.png | Bin 0 -> 212 bytes .../__MACOSX/public/img/._qq2.png | Bin 0 -> 212 bytes .../__MACOSX/public/img/._slide1.jpg | Bin 0 -> 212 bytes .../__MACOSX/public/img/._slide2.jpg | Bin 0 -> 212 bytes .../__MACOSX/public/img/._top.png | Bin 0 -> 212 bytes .../__MACOSX/public/img/._topup.png | Bin 0 -> 212 bytes .../__MACOSX/public/js/._SuperSlide.js | Bin 0 -> 212 bytes .../__MACOSX/public/js/._common.js | Bin 0 -> 212 bytes .../__MACOSX/public/js/._jquery.cookie.js | Bin 0 -> 212 bytes .../__MACOSX/public/js/._jquery.lazyload.js | Bin 0 -> 212 bytes .../__MACOSX/public/js/._swiper.js | Bin 0 -> 212 bytes .../Simple-white/__MACOSX/public/js/._wow.js | Bin 0 -> 212 bytes .../themes/Simple-white/cms/Index/detail.html | 48 + .../themes/Simple-white/cms/Index/index.html | 57 + public/themes/Simple-white/cms/sidebar.html | 38 + public/themes/Simple-white/cover.jpg | Bin 0 -> 152152 bytes .../themes/Simple-white/home/index/index.html | 157 + public/themes/Simple-white/install/info.json | 7 + .../Simple-white/public/css/animate.cssbak | 2771 +++++++ .../Simple-white/public/css/common.cssbak | 0 .../Simple-white/public/css/googlefonts.css | 408 + .../Simple-white/public/css/iconfont.cssbak | 294 + .../public/css/lib/animate/animate.css | 1579 ++++ .../public/css/lib/animate/animate.min.css | 11 + .../public/css/lib/appear/jquery.appear.js | 151 + .../css/lib/bootstrap/css/bootstrap.css | 6757 +++++++++++++++++ .../css/lib/bootstrap/css/bootstrap.min.css | 6 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../public/css/lib/bootstrap/js/bootstrap.js | 2377 ++++++ .../css/lib/bootstrap/js/bootstrap.min.js | 7 + .../public/css/lib/easing/easing.js | 168 + .../public/css/lib/easing/easing.min.js | 1 + .../css/lib/font-awesome/css/font-awesome.css | 2337 ++++++ .../lib/font-awesome/css/font-awesome.min.css | 4 + .../lib/font-awesome/fonts/FontAwesome.otf | Bin 0 -> 134808 bytes .../fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../fonts/fontawesome-webfont.svg | 2671 +++++++ .../fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes .../fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes .../public/css/lib/isotope/isotope.pkgd.js | 3561 +++++++++ .../css/lib/isotope/isotope.pkgd.min.js | 12 + .../public/css/lib/jquery/jquery.min.js | 5 + .../public/css/lib/knob/jquery.knob.js | 805 ++ .../css/lib/nivo-slider/css/nivo-slider.css | 347 + .../css/lib/nivo-slider/img/arrow_left.svg | 10 + .../css/lib/nivo-slider/img/arrow_right.svg | 10 + .../css/lib/nivo-slider/img/arrows-2.png | Bin 0 -> 3088 bytes .../public/css/lib/nivo-slider/img/arrows.png | Bin 0 -> 824 bytes .../css/lib/nivo-slider/img/bullets-2.png | Bin 0 -> 3146 bytes .../css/lib/nivo-slider/img/bullets.png | Bin 0 -> 1281 bytes .../css/lib/nivo-slider/img/loading-2.gif | Bin 0 -> 1737 bytes .../css/lib/nivo-slider/img/loading.gif | Bin 0 -> 1737 bytes .../lib/nivo-slider/js/jquery.nivo.slider.js | 1323 ++++ .../css/lib/owlcarousel/owl.carousel.css | 216 + .../css/lib/owlcarousel/owl.carousel.min.js | 2 + .../css/lib/owlcarousel/owl.transitions.css | 163 + .../public/css/lib/parallax/parallax.js | 69 + .../public/css/lib/venobox/venobox.css | 227 + .../public/css/lib/venobox/venobox.min.js | 12 + .../Simple-white/public/css/lib/wow/wow.js | 542 ++ .../public/css/lib/wow/wow.min.js | 3 + .../public/css/nivo-slider-theme.css | 400 + .../Simple-white/public/css/responsive.css | 299 + .../themes/Simple-white/public/css/style.css | 2338 ++++++ public/themes/Simple-white/public/img/1.jpg | Bin 0 -> 82522 bytes .../themes/Simple-white/public/img/112648.png | Bin 0 -> 41382 bytes public/themes/Simple-white/public/img/2.jpg | Bin 0 -> 59337 bytes .../themes/Simple-white/public/img/297462.png | Bin 0 -> 59273 bytes public/themes/Simple-white/public/img/3.jpg | Bin 0 -> 41527 bytes public/themes/Simple-white/public/img/4.jpg | Bin 0 -> 69886 bytes public/themes/Simple-white/public/img/5.jpg | Bin 0 -> 81968 bytes public/themes/Simple-white/public/img/6.jpg | Bin 0 -> 117401 bytes .../themes/Simple-white/public/img/about.jpg | Bin 0 -> 47084 bytes public/themes/Simple-white/public/img/bg1.jpg | Bin 0 -> 85573 bytes .../Simple-white/public/img/blog_img.jpg | Bin 0 -> 311694 bytes .../themes/Simple-white/public/img/crumb.png | Bin 0 -> 3121 bytes .../public/img/eacoophp_logo_v1.png | Bin 0 -> 25398 bytes public/themes/Simple-white/public/img/map.png | Bin 0 -> 98394 bytes .../Simple-white/public/img/owl-login-arm.png | Bin 0 -> 1849 bytes .../Simple-white/public/img/owl-login.png | Bin 0 -> 4894 bytes .../Simple-white/public/img/preloader.gif | Bin 0 -> 24953 bytes public/themes/Simple-white/public/img/qq2.png | Bin 0 -> 468 bytes .../themes/Simple-white/public/img/slide1.jpg | Bin 0 -> 90210 bytes .../themes/Simple-white/public/img/slide2.jpg | Bin 0 -> 144428 bytes .../themes/Simple-white/public/img/slide3.jpg | Bin 0 -> 195554 bytes public/themes/Simple-white/public/img/top.png | Bin 0 -> 7947 bytes .../themes/Simple-white/public/img/topup.png | Bin 0 -> 3627 bytes .../Simple-white/public/js/SuperSlide.js | 15 + .../themes/Simple-white/public/js/common.js | 133 + .../Simple-white/public/js/contactform.js | 114 + .../Simple-white/public/js/jquery.cookie.js | 1 + .../Simple-white/public/js/jquery.lazyload.js | 260 + public/themes/Simple-white/public/js/main.js | 233 + .../themes/Simple-white/public/js/swiper.js | 4 + public/themes/Simple-white/public/js/wow.js | 513 ++ public/themes/Simple-white/public/layout.html | 347 + .../Simple-white/public/layout_bak.html | 151 + 177 files changed, 34950 insertions(+) create mode 100644 apps/cms/__MACOSX/install/._install.sql create mode 100644 apps/cms/__MACOSX/static/._logo.png create mode 100644 apps/cms/__MACOSX/view/admin/posts/._edit.html create mode 100644 apps/cms/__MACOSX/widget/._Hooks.php create mode 100644 apps/cms/admin/Category.php create mode 100644 apps/cms/admin/Document.php create mode 100644 apps/cms/admin/Page.php create mode 100644 apps/cms/admin/Posts.php create mode 100644 apps/cms/admin/Tag.php create mode 100644 apps/cms/admin/Type.php create mode 100644 apps/cms/common.php create mode 100644 apps/cms/controller/.DS_Store create mode 100644 apps/cms/controller/Index.php create mode 100644 apps/cms/controller/Page.php create mode 100644 apps/cms/install/info.json create mode 100644 apps/cms/install/install.sql create mode 100644 apps/cms/install/menus.php create mode 100644 apps/cms/install/options.php create mode 100644 apps/cms/install/uninstall.sql create mode 100644 apps/cms/logic/Base.php create mode 100644 apps/cms/logic/Category.php create mode 100644 apps/cms/logic/Posts.php create mode 100644 apps/cms/logic/Tag.php create mode 100644 apps/cms/model/.DS_Store create mode 100644 apps/cms/model/Category.php create mode 100644 apps/cms/model/Postmeta.php create mode 100644 apps/cms/model/Posts.php create mode 100644 apps/cms/model/Tag.php create mode 100644 apps/cms/static/.DS_Store create mode 100644 apps/cms/static/css/admin.css create mode 100644 apps/cms/static/logo.png create mode 100644 apps/cms/validate/Post.php create mode 100644 apps/cms/view/.DS_Store create mode 100644 apps/cms/view/admin/.DS_Store create mode 100644 apps/cms/view/admin/posts/.DS_Store create mode 100644 apps/cms/view/admin/posts/edit.html create mode 100644 apps/cms/view/admin/widget/hooks/latestList.html create mode 100644 apps/cms/view/admin/widget/hooks/tool.html create mode 100644 apps/cms/view/index/detail.html create mode 100644 apps/cms/view/index/index.html create mode 100644 apps/cms/view/page/index.html create mode 100644 apps/cms/view/sidebar.html create mode 100644 apps/cms/widget/Hooks.php create mode 100644 public/static/cms/.DS_Store create mode 100644 public/static/cms/css/admin.css create mode 100644 public/static/cms/logo.png create mode 100644 public/themes/Simple-white/__MACOSX/._cms create mode 100644 public/themes/Simple-white/__MACOSX/._cover.jpg create mode 100644 public/themes/Simple-white/__MACOSX/._home create mode 100644 public/themes/Simple-white/__MACOSX/._install create mode 100644 public/themes/Simple-white/__MACOSX/._public create mode 100644 public/themes/Simple-white/__MACOSX/cms/._Index create mode 100644 public/themes/Simple-white/__MACOSX/cms/._sidebar.html create mode 100644 public/themes/Simple-white/__MACOSX/cms/Index/._detail.html create mode 100644 public/themes/Simple-white/__MACOSX/cms/Index/._index.html create mode 100644 public/themes/Simple-white/__MACOSX/home/._index create mode 100644 public/themes/Simple-white/__MACOSX/home/index/._index.html create mode 100644 public/themes/Simple-white/__MACOSX/install/._info.json create mode 100644 public/themes/Simple-white/__MACOSX/public/._css create mode 100644 public/themes/Simple-white/__MACOSX/public/._img create mode 100644 public/themes/Simple-white/__MACOSX/public/._js create mode 100644 public/themes/Simple-white/__MACOSX/public/._layout.html create mode 100644 public/themes/Simple-white/__MACOSX/public/css/._animate.css create mode 100644 public/themes/Simple-white/__MACOSX/public/css/._common.css create mode 100644 public/themes/Simple-white/__MACOSX/public/css/._iconfont.css create mode 100644 public/themes/Simple-white/__MACOSX/public/css/._style.css create mode 100644 public/themes/Simple-white/__MACOSX/public/img/._112648.png create mode 100644 public/themes/Simple-white/__MACOSX/public/img/._297462.png create mode 100644 public/themes/Simple-white/__MACOSX/public/img/._about.jpg create mode 100644 public/themes/Simple-white/__MACOSX/public/img/._bg1.jpg create mode 100644 public/themes/Simple-white/__MACOSX/public/img/._blog_img.jpg create mode 100644 public/themes/Simple-white/__MACOSX/public/img/._crumb.png create mode 100644 public/themes/Simple-white/__MACOSX/public/img/._eacoophp_logo_v1.png create mode 100644 public/themes/Simple-white/__MACOSX/public/img/._owl-login-arm.png create mode 100644 public/themes/Simple-white/__MACOSX/public/img/._owl-login.png create mode 100644 public/themes/Simple-white/__MACOSX/public/img/._qq2.png create mode 100644 public/themes/Simple-white/__MACOSX/public/img/._slide1.jpg create mode 100644 public/themes/Simple-white/__MACOSX/public/img/._slide2.jpg create mode 100644 public/themes/Simple-white/__MACOSX/public/img/._top.png create mode 100644 public/themes/Simple-white/__MACOSX/public/img/._topup.png create mode 100644 public/themes/Simple-white/__MACOSX/public/js/._SuperSlide.js create mode 100644 public/themes/Simple-white/__MACOSX/public/js/._common.js create mode 100644 public/themes/Simple-white/__MACOSX/public/js/._jquery.cookie.js create mode 100644 public/themes/Simple-white/__MACOSX/public/js/._jquery.lazyload.js create mode 100644 public/themes/Simple-white/__MACOSX/public/js/._swiper.js create mode 100644 public/themes/Simple-white/__MACOSX/public/js/._wow.js create mode 100644 public/themes/Simple-white/cms/Index/detail.html create mode 100644 public/themes/Simple-white/cms/Index/index.html create mode 100644 public/themes/Simple-white/cms/sidebar.html create mode 100644 public/themes/Simple-white/cover.jpg create mode 100644 public/themes/Simple-white/home/index/index.html create mode 100644 public/themes/Simple-white/install/info.json create mode 100644 public/themes/Simple-white/public/css/animate.cssbak create mode 100644 public/themes/Simple-white/public/css/common.cssbak create mode 100644 public/themes/Simple-white/public/css/googlefonts.css create mode 100644 public/themes/Simple-white/public/css/iconfont.cssbak create mode 100644 public/themes/Simple-white/public/css/lib/animate/animate.css create mode 100644 public/themes/Simple-white/public/css/lib/animate/animate.min.css create mode 100644 public/themes/Simple-white/public/css/lib/appear/jquery.appear.js create mode 100644 public/themes/Simple-white/public/css/lib/bootstrap/css/bootstrap.css create mode 100644 public/themes/Simple-white/public/css/lib/bootstrap/css/bootstrap.min.css create mode 100644 public/themes/Simple-white/public/css/lib/bootstrap/fonts/glyphicons-halflings-regular.eot create mode 100644 public/themes/Simple-white/public/css/lib/bootstrap/fonts/glyphicons-halflings-regular.svg create mode 100644 public/themes/Simple-white/public/css/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf create mode 100644 public/themes/Simple-white/public/css/lib/bootstrap/fonts/glyphicons-halflings-regular.woff create mode 100644 public/themes/Simple-white/public/css/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 create mode 100644 public/themes/Simple-white/public/css/lib/bootstrap/js/bootstrap.js create mode 100644 public/themes/Simple-white/public/css/lib/bootstrap/js/bootstrap.min.js create mode 100644 public/themes/Simple-white/public/css/lib/easing/easing.js create mode 100644 public/themes/Simple-white/public/css/lib/easing/easing.min.js create mode 100644 public/themes/Simple-white/public/css/lib/font-awesome/css/font-awesome.css create mode 100644 public/themes/Simple-white/public/css/lib/font-awesome/css/font-awesome.min.css create mode 100644 public/themes/Simple-white/public/css/lib/font-awesome/fonts/FontAwesome.otf create mode 100644 public/themes/Simple-white/public/css/lib/font-awesome/fonts/fontawesome-webfont.eot create mode 100644 public/themes/Simple-white/public/css/lib/font-awesome/fonts/fontawesome-webfont.svg create mode 100644 public/themes/Simple-white/public/css/lib/font-awesome/fonts/fontawesome-webfont.ttf create mode 100644 public/themes/Simple-white/public/css/lib/font-awesome/fonts/fontawesome-webfont.woff create mode 100644 public/themes/Simple-white/public/css/lib/font-awesome/fonts/fontawesome-webfont.woff2 create mode 100644 public/themes/Simple-white/public/css/lib/isotope/isotope.pkgd.js create mode 100644 public/themes/Simple-white/public/css/lib/isotope/isotope.pkgd.min.js create mode 100644 public/themes/Simple-white/public/css/lib/jquery/jquery.min.js create mode 100644 public/themes/Simple-white/public/css/lib/knob/jquery.knob.js create mode 100644 public/themes/Simple-white/public/css/lib/nivo-slider/css/nivo-slider.css create mode 100644 public/themes/Simple-white/public/css/lib/nivo-slider/img/arrow_left.svg create mode 100644 public/themes/Simple-white/public/css/lib/nivo-slider/img/arrow_right.svg create mode 100644 public/themes/Simple-white/public/css/lib/nivo-slider/img/arrows-2.png create mode 100644 public/themes/Simple-white/public/css/lib/nivo-slider/img/arrows.png create mode 100644 public/themes/Simple-white/public/css/lib/nivo-slider/img/bullets-2.png create mode 100644 public/themes/Simple-white/public/css/lib/nivo-slider/img/bullets.png create mode 100644 public/themes/Simple-white/public/css/lib/nivo-slider/img/loading-2.gif create mode 100644 public/themes/Simple-white/public/css/lib/nivo-slider/img/loading.gif create mode 100644 public/themes/Simple-white/public/css/lib/nivo-slider/js/jquery.nivo.slider.js create mode 100644 public/themes/Simple-white/public/css/lib/owlcarousel/owl.carousel.css create mode 100644 public/themes/Simple-white/public/css/lib/owlcarousel/owl.carousel.min.js create mode 100644 public/themes/Simple-white/public/css/lib/owlcarousel/owl.transitions.css create mode 100644 public/themes/Simple-white/public/css/lib/parallax/parallax.js create mode 100644 public/themes/Simple-white/public/css/lib/venobox/venobox.css create mode 100644 public/themes/Simple-white/public/css/lib/venobox/venobox.min.js create mode 100644 public/themes/Simple-white/public/css/lib/wow/wow.js create mode 100644 public/themes/Simple-white/public/css/lib/wow/wow.min.js create mode 100644 public/themes/Simple-white/public/css/nivo-slider-theme.css create mode 100644 public/themes/Simple-white/public/css/responsive.css create mode 100644 public/themes/Simple-white/public/css/style.css create mode 100644 public/themes/Simple-white/public/img/1.jpg create mode 100644 public/themes/Simple-white/public/img/112648.png create mode 100644 public/themes/Simple-white/public/img/2.jpg create mode 100644 public/themes/Simple-white/public/img/297462.png create mode 100644 public/themes/Simple-white/public/img/3.jpg create mode 100644 public/themes/Simple-white/public/img/4.jpg create mode 100644 public/themes/Simple-white/public/img/5.jpg create mode 100644 public/themes/Simple-white/public/img/6.jpg create mode 100644 public/themes/Simple-white/public/img/about.jpg create mode 100644 public/themes/Simple-white/public/img/bg1.jpg create mode 100644 public/themes/Simple-white/public/img/blog_img.jpg create mode 100644 public/themes/Simple-white/public/img/crumb.png create mode 100644 public/themes/Simple-white/public/img/eacoophp_logo_v1.png create mode 100644 public/themes/Simple-white/public/img/map.png create mode 100644 public/themes/Simple-white/public/img/owl-login-arm.png create mode 100644 public/themes/Simple-white/public/img/owl-login.png create mode 100644 public/themes/Simple-white/public/img/preloader.gif create mode 100644 public/themes/Simple-white/public/img/qq2.png create mode 100644 public/themes/Simple-white/public/img/slide1.jpg create mode 100644 public/themes/Simple-white/public/img/slide2.jpg create mode 100644 public/themes/Simple-white/public/img/slide3.jpg create mode 100644 public/themes/Simple-white/public/img/top.png create mode 100644 public/themes/Simple-white/public/img/topup.png create mode 100644 public/themes/Simple-white/public/js/SuperSlide.js create mode 100644 public/themes/Simple-white/public/js/common.js create mode 100644 public/themes/Simple-white/public/js/contactform.js create mode 100644 public/themes/Simple-white/public/js/jquery.cookie.js create mode 100644 public/themes/Simple-white/public/js/jquery.lazyload.js create mode 100644 public/themes/Simple-white/public/js/main.js create mode 100644 public/themes/Simple-white/public/js/swiper.js create mode 100644 public/themes/Simple-white/public/js/wow.js create mode 100644 public/themes/Simple-white/public/layout.html create mode 100644 public/themes/Simple-white/public/layout_bak.html diff --git a/apps/cms/__MACOSX/install/._install.sql b/apps/cms/__MACOSX/install/._install.sql new file mode 100644 index 0000000000000000000000000000000000000000..b9947bcfcdd3a02ee4ac9996361d1ae4803f82a5 GIT binary patch literal 176 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c$Vqox1Ojhs@R)|o50+1L3ClDI}@pB*s@);$8G!eitBqRu;46Ne>kR6Do z4P-h$t*50Fj&9=R?EQ12%#BZG?dH0S*UMdU}0o!nv`T>W|)#} a9T*r>VPue%nOaf`Vie?*rf23^GXMZ}aV}o~ literal 0 HcmV?d00001 diff --git a/apps/cms/__MACOSX/view/admin/posts/._edit.html b/apps/cms/__MACOSX/view/admin/posts/._edit.html new file mode 100644 index 0000000000000000000000000000000000000000..fd934d9a8533513de77a9124214d804a51fcbf78 GIT binary patch literal 176 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c +// +---------------------------------------------------------------------- +namespace app\cms\admin; +use app\admin\controller\Admin; + +use app\common\model\Terms as TermsModel; +use app\common\model\TermRelationships as TermRelationshipsModel; + +use eacoo\Tree; + +class Category extends Admin { + + protected $termsModel; + + function _initialize() + { + parent::_initialize(); + $this->termsModel = new TermsModel(); + + } + + /** + * 分类管理 + * @param string $taxonomy 分类法 + * @return [type] [description] + * @date 2017-09-29 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function index(){ + + return Iframe() + ->setMetaTitle('分类管理') // 设置页面标题 + ->content($this->grid()); + } + + /** + * 列表构建 + * @return [type] [description] + * @date 2018-10-03 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function grid($taxonomy='post_category') + { + $map =[ + 'taxonomy'=>$taxonomy + ]; + + list($data_list,$total) = $this->termsModel->search('title') //添加搜索查询 + ->getListByPage($map,true,'sort desc,create_time desc'); + if (!empty($data_list)) { + foreach ($data_list as $key => &$row) { + $row['object_count'] = logic('common/Terms')->termRelationCount($row['term_id'],'posts'); + } + } + return builder('List') + ->addTopButton('addnew',['href'=>url('edit',['taxonomy'=>$taxonomy])]) // 添加新增按钮 + ->addTopButton('resume') // 添加启用按钮 + ->addTopButton('forbid') // 添加禁用按钮 + ->addTopButton('recycle') //添加回收按钮 + ->addTopButton('delete') //添加回收按钮 + ->setTabNav(logic('cms/Base')->getBuilderTab(),$taxonomy) // 设置页面Tab导航 + ->setSearch() + ->setActionUrl(url('grid')) + ->keyListItem('term_id', 'ID') + ->keyListItem('name', '名称','link',url('index',['term_id'=>'__data_id__']))//约定分类对象 + ->keyListItem('slug', '别名') + ->keyListItem('parent', '父分类') + ->keyListItem('seo_description', '描述') + ->keyListItem('object_count', '对象数') + ->keyListItem('status', '状态', 'status') + ->keyListItem('right_button', '操作', 'btn') + ->setListPrimaryKey('term_id') + ->setListData($data_list) // 数据列表 + ->setListPage($total) // 数据列表分页 + ->addRightButton('edit',['href'=>url('edit',['term_id'=>'__data_id__','taxonomy'=>$taxonomy])])// 添加编辑按钮 + ->addRightButton('recycle')// 添加删除按钮 + ->fetch(); + } + + /** + * 分类编辑 + * @param integer $id [description] + * @param string $taxonomy [description] + * @return [type] [description] + * @date 2017-09-29 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function edit($term_id=0,$taxonomy='post_category'){ + + $title = $term_id>0 ? "编辑" : "新增"; + if (IS_POST) { + // 提交数据 + $data = $this->request->param(); + // seo标题 + if ($data['seo_title'] === '') { + $data['seo_title'] = $data['name']; + } + $data['taxonomy'] = $taxonomy; + //验证数据 + $this->validateData($data, + [ + ['name','require|chsDash','分类名称不能为空|分类名称只能是汉字和字母'], + ['taxonomy','require|alphaDash','描述只能是汉字字母数字|分类法名称只能是字母和数字,下划线符合'] + ]); + + $result = $this->termsModel->editData($data); + if ($result) { + $this->success($title.'成功', url('index',['taxonomy'=>$taxonomy])); + } else { + $this->error($this->termsModel->getError()); + } + + } else { + return Iframe() + ->setMetaTitle($title.'分类') // 设置页面标题 + ->row($this->form($term_id, $taxonomy)); + } + } + + /** + * 表单构建 + * @param integer $term_id [description] + * @param string $taxonomy [description] + * @return [type] [description] + * @date 2018-10-03 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function form($term_id = 0, $taxonomy='post_category') + { + $info = ['sort'=>99,'status'=>1]; + if ($term_id>0) { + $info = TermsModel::get($term_id); + } + $p_terms = TermsModel::where(['taxonomy'=>$taxonomy])->select(); + if ($p_terms) { + $p_terms = collection($p_terms)->toArray(); + $tree_obj = new Tree; + $p_terms = $tree_obj->toFormatTree($p_terms,'name','term_id'); + } + + foreach ($p_terms as $key => $term) { + $p_terms[$key]['id']= $term['term_id']; + } + $termTaxonomy = config('term_taxonomy');//获取所有分类法 + $p_terms = array_merge([0=>['id'=>0,'title_show'=>'顶级菜单']], $p_terms); + + return builder('Form') + ->setTabNav(logic('cms/Base')->getBuilderTab(),$taxonomy) // 设置页面Tab导航 + ->addFormItem('term_id', 'hidden', 'ID', 'ID') + ->addFormItem('name', 'text', '分类名称', '分类名称','','require') + ->addFormItem('slug', 'text', '分类别名', '分类别名','','require') + ->addFormItem('taxonomy', 'select', '分类类型', '选择一个分类法',$termTaxonomy) + ->addFormItem('pid', 'multilayer_select', '上级分类', '上级分类',$p_terms) + ->addFormItem('seo_title', 'text', 'SEO标题', '留空自动设置为分类名称') + ->addFormItem('seo_keywords', 'text', 'SEO关键字', 'SEO关键字') + ->addFormItem('seo_description', 'textarea', '描述(SEO)', '同时也作为SEO描述') + ->addFormItem('sort', 'number', '排序', '按照数值大小的倒叙进行排序,数值越小越靠前') + ->addFormItem('status', 'radio', '状态', '',[1=>'正常',0=>'禁用']) + ->setFormData($info) + //->setAjaxSubmit(false) + //->addButton('submit')->addButton('back') // 设置表单按钮 + ->fetch(); + } + + /** + * 移动分类 + */ + public function moveCategory() { + if (IS_POST) { + $ids = input('param.ids'); + $from_cid = input('param.from_cid'); + $to_cid = input('param.to_cid'); + if ($from_cid === $to_cid) { + $this->error('存在目标分类与当前分类相同'); + } + if ($to_cid) { + $map = [ + 'object_id'=>['in',$ids], + ]; + $ids = explode(',', $ids); + if (!empty($ids) && is_array($ids)) { + $data = ['term_id' => $to_cid]; + foreach ($ids as $key => $id) { + $map = [ + 'object_id' => $id, + 'table' => 'posts' + ]; + $res = TermRelationshipsModel::where($map)->count(); + if ($res>0) { + TermRelationshipsModel::where($map)->update($data); + } else{ + $data = [ + 'object_id' => $id, + 'table' => 'posts', + 'term_id' => $to_cid + ]; + TermRelationshipsModel::create($data); + } + unset($map); + } + $this->success('移动成功'); + } + + $this->error('移动失败'); + } else { + $this->error('请选择目标分类'); + } + } + } + +} \ No newline at end of file diff --git a/apps/cms/admin/Document.php b/apps/cms/admin/Document.php new file mode 100644 index 0000000..fe8286a --- /dev/null +++ b/apps/cms/admin/Document.php @@ -0,0 +1,301 @@ + +// +---------------------------------------------------------------------- +namespace app\cms\admin; +use app\admin\controller\Admin; + +use app\cms\model\Posts as PostsModel; +use app\common\model\Terms as TermsModel; + +class Document extends Admin { + + protected $postModel; + protected $postTypeGroup = []; + + function _initialize() + { + parent::_initialize(); + $this->postModel = new PostsModel(); + $post_type = config('cms_config.post_type'); + if (!empty($post_type)) { + foreach ($post_type as $key => $val) { + $this->postTypeGroup[$val['name']] = $val['title']; + } + } + } + + /** + * 文档列表 + * @return [type] [description] + * @date 2017-09-28 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function index(){ + + $optCategory = logic('cms/Category')->getOptTerms('post_category'); + $optCategory = [0=>'全部分类']+ $optCategory; + return Iframe() + ->setMetaTitle('文章管理') // 设置页面标题 + ->search([ + ['name'=>'create_time_range','type'=>'daterange','extra_attr'=>'placeholder="注册时间"'], + ['name'=>'type','type'=>'select','title'=>'类型','options'=>$this->postTypeGroup], + ['name'=>'term_id','type'=>'select','title'=>'分类','options'=>$optCategory], + ['name'=>'is_admin','type'=>'select','title'=>'是否后台用户','options'=>[1=>'是',0=>'否']], + ['name'=>'author_id','type'=>'number','title'=>'作者UID','extra_attr'=>'placeholder="请输入作者UID,区分前后台"'], + ['name'=>'istop','type'=>'select','title'=>'是否置顶','options'=>[1=>'是',0=>'否']], + ['name'=>'recommended','type'=>'select','title'=>'是否推荐','options'=>[1=>'是',0=>'否']], + ['name'=>'status','type'=>'select','title'=>'状态','options'=>[1=>'正常',0=>'待审核']], + ['name'=>'keyword','type'=>'text','extra_attr'=>'placeholder="请输入查询关键字"'], + ]) + ->content($this->grid()); + } + + /** + * 文档列表构建 + * @return [type] [description] + * @date 2018-10-03 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function grid() + { + $term_id = $this->request->param('term_id'); + // 获取所有页面列席 + $map = []; + if($term_id>0){ + $post_ids = model('TermRelationships')->where(['term_id'=>$term_id,'table'=>'posts'])->select(); + if(count($post_ids)){ + $post_ids = array_column($post_ids,'object_id'); + //$post_ids = array_merge(array($post_ids),$post_ids); + $map['id'] = ['in',$post_ids]; + } else{ + $map['id'] = 0; + } + } + + //配置高级查询 + $search_setting = $this->buildModerSearchSetting(); + //获取表格数据 + list($data_list,$total) = $this->postModel + ->search($search_setting) //添加搜索查询 + ->getListByPage($map,true,'create_time desc'); + foreach($data_list as &$row){ + $row['category_name'] = get_term_info($row['id'],'name')['name'] ? :'暂无';//获得term名称 + } + + //移动按钮属性 + $move_attr = [ + 'title' =>'移动分类', + 'icon' =>'fa fa-exchange', + 'class' =>'btn btn-info btn-sm', + 'onclick' =>'move()' + ]; + $optCategory = logic('Category')->getOptTerms('post_category'); + $optCategory = [0=>'全部分类']+ $optCategory; + $extra_html = logic('Category')->moveCategoryHtml($optCategory,$term_id);//添加移动按钮html + + return builder('List') + ->setMetaTitle('文档管理') // 设置页面标题 + ->setTabNav(logic('cms/Base')->getBuilderTab(),'index') // 设置页面Tab导航 + ->addTopButton('addnew') // 添加新增按钮 + ->addTopButton('resume') // 添加启用按钮 + ->addTopButton('forbid') // 添加禁用按钮 + ->addTopButton('recycle',['model'=>'posts']) // 添加删除按钮 + ->addTopButton('self', $move_attr) //添加移动按钮 + //->addSelect('分类','term_id',$optCategory)//添加分类筛选 + ->setSearch('搜索关键字') + ->keyListItem('id', 'ID') + ->keyListItem('title', '标题') + ->keyListItem('type', '类型','array',$this->postTypeGroup) + ->keyListItem('category_name','分类') + ->keyListItem('views','浏览量') + ->keyListItem('author','作者') + ->keyListItem('is_admin_text','后台用户','label') + ->keyListItem('publish_time','发布时间') + ->keyListItem('status', '状态', 'status') + ->keyListItem('right_button', '操作', 'btn') + ->setListData($data_list) // 数据列表 + ->setListPage($total) // 数据列表分页 + ->setExtraHtml($extra_html) + ->addRightButton('edit') // 添加编辑按钮 + ->addRightButton('recycle',['model'=>'Posts']) // 添加删除按钮 + ->fetch(); + } + + /** + * 编辑页面 + * @author + */ + public function edit($id=0) { + $title = $id>0 ? "编辑":"新增"; + if (IS_POST) { + $data = input('param.'); + if(!empty($data)){ + if ($this->postModel->editData($data)) { + $this->success($title.'成功', url('index')); + } else { + $this->error($this->postModel->getError()); + } + + } + } else { + + return Iframe() + ->setMetaTitle($title.'文档') // 设置页面标题 + ->row($this->form($id)); + } + } + + /** + * 表单构建 + * @param integer $id [description] + * @return [type] [description] + * @date 2018-10-03 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function form($id = 0) + { + $info = ['sort'=>99,'status'=>1]; + if ($id>0) { + $info = PostsModel::get($id); + } + + $authors = db('users')->where(['status'=>1])->column('nickname','uid'); + return builder('Form') + ->addFormItem('id', 'hidden', '') + ->addFormItem('title', 'text', '标题') + ->addFormItem('type', 'select', '文档类型', '',$this->postTypeGroup) + ->addFormItem('content', 'wangeditor', '内容','',['width'=>'100%','height'=>'300px','config'=>'all']) + ->addFormItem('author_id', 'select2', '作者', '',$authors) + ->addFormItem('tags', 'tags', '标签', '') + ->addFormItem('seo_keywords', 'text', 'SEO关键字', '') + ->addFormItem('excerpt', 'text', 'SEO描述', '') + ->addFormItem('sort', 'number', '排序', '按照数值大小的倒叙进行排序,数值越小越靠前') + ->addFormItem('status', 'radio', '状态', '',[1=>'正常',0=>'禁用']) + ->setFormData($info) + ->addButton('submit') + ->addButton('back') // 设置表单按钮 + ->fetch(); + } + + /** + * 构建模型搜索查询条件 + * @return [type] [description] + * @date 2018-09-30 + * @author 心云间、凝听 <981248356@qq.com> + */ + private function buildModerSearchSetting() + { + //时间范围 + $timegap = input('create_time_range'); + $extend_conditions = []; + if($timegap){ + $gap = explode('—', $timegap); + $reg_begin = $gap[0]; + $reg_end = $gap[1]; + + $extend_conditions =[ + 'create_time'=>['between',[$reg_begin.' 00:00:00',$reg_end.' 23:59:59']] + ]; + } + //自定义查询条件 + $search_setting = [ + 'keyword_condition'=>'title', + //忽略数据库不存在的字段 + 'ignore_keys' => ['create_time_range','term_id'], + //扩展的查询条件 + 'extend_conditions'=>$extend_conditions + ]; + + return $search_setting; + } + + /** + * 回收站页面 + * @author 心云间、凝听 <981248356@qq.com> + */ + function trash(){ + return Iframe() + ->setMetaTitle('回收站') // 设置页面标题 + ->row($this->trashGrid()); + } + + /** + * 回收站列表构建 + * @return [type] [description] + * @date 2018-10-03 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function trashGrid() + { + // 获取所有文章 + $map['status'] = '-1'; // 禁用和正常状态 + list($data_list,$total) = $this->postModel->getListByPage($map,'id,title,author_id,is_admin,type,publish_time,status','create_time desc'); + //遍历posts遍历的数据 + foreach($data_list as $k=>$data){ + $data_list[$k]['category_name'] = get_term_info($data['id'],'name')['name'] ? : '暂无';//获得term名称 + $data_list[$k]['author'] = get_user_info($data['author_id'],'nickname')['nickname'];//获取用户名 + } + + return builder('List') + ->addTopButton('restore',['model'=>'posts']) // 添加启用按钮 + ->addTopButton('delete',['model'=>'posts']) // 添加删除按钮 + ->setSearch() + ->setActionUrl(url('trashGrid')) + ->keyListItem('title', '标题') + ->keyListItem('category_name','分类') + ->keyListItem('type','类型','array',$this->postTypeGroup) + ->keyListItem('author','作者','author') + ->keyListItem('publish_time','发布时间') + ->keyListItem('status', '状态', 'status') + ->keyListItem('right_button', '操作', 'btn') + ->setListPrimaryKey('id') + ->setListData($data_list) // 数据列表 + ->setListPage($total) // 数据列表分页 + ->addRightButton('edit',array('href'=>url('page/edit',['id'=>'__data_id__']))) // 添加编辑按钮 + ->addRightButton('delete') // 添加删除按钮 + ->fetch(); + } + + /** + * 设置一条或者多条数据的状态 + */ + public function setStatus($model = 'Posts',$script = false) { + $ids = input('param.ids/a'); + $status = input('param.status'); + if (empty($ids)) { + $this->error('请选择要操作的数据'); + } + $map['id'] = ['in',$ids]; + switch ($status) { + case 'delete' : // 删除条目 + $map['status'] = -1; + $exist = PostsModel::get($map); + if ($exist) { + $result = $this->postModel->delete($ids); + } else { + $result = true; + } + if ($result) { + foreach ($ids as $key => $id) { + $term_id = get_term_info($id,'term_id')['term_id']; + delete_post_term($id,$term_id);//删除分类 + } + $this->success('彻底删除成功'); + + } else { + $this->error('删除失败'); + } + break; + default : + parent::setStatus($model); + break; + } + } +} \ No newline at end of file diff --git a/apps/cms/admin/Page.php b/apps/cms/admin/Page.php new file mode 100644 index 0000000..d726034 --- /dev/null +++ b/apps/cms/admin/Page.php @@ -0,0 +1,203 @@ + +// +---------------------------------------------------------------------- +namespace app\cms\admin; +use app\admin\controller\Admin; +use app\admin\controller\Terms as TermsController; + +use app\cms\model\Posts as PostsModel; + +class Page extends Admin { + + protected $postModel; + + function _initialize() + { + parent::_initialize(); + $this->postModel = new PostsModel(); + + } + + /** + * 页面列表 + * @return [type] [description] + * @date 2017-09-28 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function index(){ + + return Iframe() + ->setMetaTitle('页面管理') // 设置页面标题 + ->search([ + ['name'=>'create_time_range','type'=>'daterange','extra_attr'=>'placeholder="注册时间"'], + ['name'=>'is_admin','type'=>'select','title'=>'是否后台用户','options'=>[1=>'是',0=>'否']], + ['name'=>'author_id','type'=>'number','title'=>'作者UID','extra_attr'=>'placeholder="请输入作者UID,区分前后台"'], + ['name'=>'status','type'=>'select','title'=>'状态','options'=>[1=>'正常',0=>'待审核']], + ['name'=>'keyword','type'=>'text','extra_attr'=>'placeholder="请输入查询关键字"'], + ]) + ->content($this->grid()); + } + + /** + * 页面列表构建 + * @return [type] [description] + * @date 2018-10-03 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function grid() + { + //配置高级查询 + $search_setting = $this->buildModerSearchSetting(); + // 获取所有页面列席 + $map = [ + 'status' =>1, + 'type' =>'page' + ]; + list($data_list,$total) = $this->postModel->search($search_setting)->getListByPage($map,true,'create_time desc'); + + return builder('List') + ->addTopButton('addnew') // 添加新增按钮 + ->addTopButton('recycle',array('model'=>'posts')) // 添加删除按钮 + //->setSearch('搜索页面', url('page')) + ->keyListItem('title', '标题') + ->keyListItem('views','浏览量') + ->keyListItem('author','作者','author') + ->keyListItem('publish_time','发布时间') + ->keyListItem('status', '状态', 'status') + ->keyListItem('right_button', '操作', 'btn') + ->setListPrimaryKey('id') + ->setListData($data_list) // 数据列表 + ->setListPage($total) // 数据列表分页 + ->addRightButton('edit') // 添加编辑按钮 + ->addRightButton('recycle') // 添加删除按钮 + ->fetch(); + } + + /** + * 编辑页面 + * @author + */ + public function edit($id=0) { + $title = $id ? "编辑":"新增"; + if (IS_POST) { + $data = input('param.'); + if(!empty($data)){ + $data['type']='page'; + if ($this->postModel->editData($data)) { + $this->success($title.'成功', url('index')); + } else { + $this->error($this->postModel->getError()); + } + + } + } else { + + return Iframe() + ->setMetaTitle($title.'页面') // 设置页面标题 + ->row($this->form($id)); + } + } + + /** + * 表单构建 + * @param integer $id [description] + * @return [type] [description] + * @date 2018-10-03 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function form($id = 0) + { + if ($id>0) { + $info = PostsModel::get($id); + } else{ + $info = []; + } + $authors = db('users')->where(['status'=>1])->column('nickname','uid'); + return builder('Form') + ->addFormItem('id', 'hidden', '') + ->addFormItem('title', 'text', '标题') + ->addFormItem('content', 'wangeditor', '内容','',['width'=>'100%','height'=>'300px','config'=>'all']) + ->addFormItem('author_id', 'select2', '作者', '',$authors) + ->addFormItem('tags', 'tags', '标签', '') + ->addFormItem('seo_keywords', 'text', 'SEO关键字', '') + ->addFormItem('excerpt', 'text', 'SEO描述', '') + ->setFormData($info) + ->addButton('submit')->addButton('back') // 设置表单按钮 + ->fetch(); + } + + /** + * 构建模型搜索查询条件 + * @return [type] [description] + * @date 2018-09-30 + * @author 心云间、凝听 <981248356@qq.com> + */ + private function buildModerSearchSetting() + { + //时间范围 + $timegap = input('create_time_range'); + $extend_conditions = []; + if($timegap){ + $gap = explode('—', $timegap); + $reg_begin = $gap[0]; + $reg_end = $gap[1]; + + $extend_conditions =[ + 'create_time'=>['between',[$reg_begin.' 00:00:00',$reg_end.' 23:59:59']] + ]; + } + //自定义查询条件 + $search_setting = [ + 'keyword_condition'=>'title', + //忽略数据库不存在的字段 + 'ignore_keys' => ['create_time_range'], + //扩展的查询条件 + 'extend_conditions'=>$extend_conditions + ]; + + return $search_setting; + } + + /** + * 设置一条或者多条数据的状态 + */ + public function setStatus($model = 'Posts',$script = false) { + $ids = input('param.ids/a'); + $status = input('param.status'); + if (empty($ids)) { + $this->error('请选择要操作的数据'); + } + $map['id'] = ['in',$ids]; + switch ($status) { + case 'delete' : // 删除条目 + $map['status'] = -1; + $exist = $this->postModel->get($map); + if ($exist) { + $result = $this->postModel->delete($ids); + } else { + $result = true; + } + if ($result) { + foreach ($ids as $key => $id) { + $term_id = get_term_info($id,'term_id')['term_id']; + delete_post_term($id,$term_id);//删除分类 + } + $this->success('彻底删除成功'); + + } else { + $this->error('删除失败'); + } + break; + default : + parent::setStatus($model); + break; + } + } +} \ No newline at end of file diff --git a/apps/cms/admin/Posts.php b/apps/cms/admin/Posts.php new file mode 100644 index 0000000..ebe5e81 --- /dev/null +++ b/apps/cms/admin/Posts.php @@ -0,0 +1,304 @@ + +// +---------------------------------------------------------------------- +namespace app\cms\admin; +use app\admin\controller\Admin; +use app\admin\controller\Terms as TermsController; + +use app\cms\model\Posts as PostsModel; +use app\cms\model\Postmeta as PostmetaModel; +use app\common\model\Terms as TermsModel; +use app\common\model\TermRelationships as TermRelationshipsModel; + +class Posts extends Admin { + + protected $postModel; + protected $termsModel; + + function _initialize() + { + parent::_initialize(); + $this->postModel = new PostsModel(); + $this->termsModel = new TermsModel(); + + } + + /** + * 文章管理 + * @param integer $term_id [description] + * @return [type] [description] + * @date 2017-09-29 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function index(){ + + $optCategory = logic('cms/Category')->getOptTerms('post_category'); + $optCategory = [0=>'全部分类']+ $optCategory; + return Iframe() + ->setMetaTitle('文章管理') // 设置页面标题 + ->search([ + ['name'=>'create_time_range','type'=>'daterange','extra_attr'=>'placeholder="注册时间"'], + ['name'=>'term_id','type'=>'select','title'=>'分类','options'=>$optCategory], + ['name'=>'is_admin','type'=>'select','title'=>'是否后台用户','options'=>[1=>'是',0=>'否']], + ['name'=>'author_id','type'=>'number','title'=>'作者UID','extra_attr'=>'placeholder="请输入作者UID,区分前后台"'], + ['name'=>'istop','type'=>'select','title'=>'是否置顶','options'=>[1=>'是',0=>'否']], + ['name'=>'recommended','type'=>'select','title'=>'是否推荐','options'=>[1=>'是',0=>'否']], + ['name'=>'status','type'=>'select','title'=>'状态','options'=>[1=>'正常',0=>'待审核']], + ['name'=>'keyword','type'=>'text','extra_attr'=>'placeholder="请输入查询关键字"'], + ]) + ->content($this->grid()); + } + + /** + * 文章列表构建器 + * @return [type] [description] + * @date 2018-10-03 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function grid($term_id=0) + { + if($term_id>0){ + $post_ids = TermRelationshipsModel::where(['term_id'=>$term_id,'table'=>'posts'])->select(); + if(count($post_ids)){ + $post_ids = array_column($post_ids,'object_id'); + //$post_ids = array_merge(array($post_ids),$post_ids); + $map['id'] = ['in',$post_ids]; + } else{ + $map['id'] = 0; + } + } + // 获取所有文章 + //$map['status'] = 1; // 禁用和正常状态 + $map['type']='post'; + + //配置高级查询 + $search_setting = $this->buildPostsSearchSetting(); + //获取表格数据 + list($data_list,$total) = $this->postModel + ->search($search_setting) //添加搜索查询 + ->getListByPage($map,true,'create_time desc'); + //遍历posts遍历的数据 + foreach($data_list as &$row){ + $row['category_name'] = get_term_info($row['id'],'name')['name'] ? :'暂无';//获得term名称 + } + + + //移动按钮属性 + $move_attr = [ + 'title' =>'移动分类', + 'icon' =>'fa fa-exchange', + 'class' =>'btn btn-info btn-sm', + 'onclick' =>'move()' + ]; + + //置顶按钮属性 + $top_attr = [ + 'title' =>'置顶', + 'icon' =>'fa fa-long-arrow-up', + 'class' =>'btn btn-info btn-sm', + 'onclick' =>'' + ]; + //$extraTop_html=$this->moveCategoryHtml($optCategory,$term_id);//添加移动按钮html + //推荐按钮属性 + $recommended_attr = [ + 'title' =>'推荐', + 'icon' =>'fa fa-thumbs-o-up', + 'class' =>'btn btn-info btn-sm', + 'onclick' =>'' + ]; + //$extraTop_html=$this->moveCategoryHtml($optCategory,$term_id);//添加移动按钮html + + $optCategory = logic('cms/Category')->getOptTerms('post_category'); + $optCategory = [0=>'全部分类']+ $optCategory; + $extra_html = logic('Category')->moveCategoryHtml($optCategory,$term_id);//添加移动按钮html + + return builder('List') + ->setTabNav(logic('cms/Base')->getBuilderTab('post'),'index') // 设置页面Tab导航 + ->addTopButton('addnew',['data-pjax'=>'true']) // 添加新增按钮 + ->addTopButton('resume') // 添加启用按钮 + ->addTopButton('forbid') // 添加禁用按钮 + ->addTopButton('recycle',array('model'=>'posts')) //添加回收按钮 + ->addTopButton('self', $move_attr) //添加移动按钮 + //->addTopButton('self', $top_attr) + //->addTopButton('self', $recommended_attr) + //->addSelect('分类','term_id',$optCategory)//添加分类筛选 + //->setSearch('输入关键字','') + ->setActionUrl(url('grid')) //设置请求地址 + ->keyListItem('id', 'ID') + ->keyListItem('img','缩略图','picture') + ->keyListItem('title', '标题','link',['link'=>url('edit',['id'=>'__data_id__'])]) + ->keyListItem('category_name','分类') + ->keyListItem('views','浏览量') + ->keyListItem('author','作者','author') + ->keyListItem('publish_time','发布时间') + ->keyListItem('istop', '置顶', 'status') + ->keyListItem('sort', '排序') + ->keyListItem('status', '状态', 'status') + ->keyListItem('right_button', '操作', 'btn') + ->setListData($data_list) // 数据列表 + ->setListPage($total) // 数据列表分页 + ->setExtraHtml($extra_html) + ->addRightButton('edit') + //->addRightButton('recycle') + ->addRightButton('forbid') + ->fetch(); + } + + /** + * 新增或编辑 + * @param integer $id [description] + * @return [type] [description] + * @date 2017-10-15 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function edit($id = 0){ + + $title = $id>0 ? "编辑":"新增"; + + //修改 + if(IS_POST){ + $data = $this->request->param(); + + $data['author_id'] = is_login(); + $data['type'] = 'post'; + $data['content'] = htmlspecialchars_decode($data['content']); + //$data['fields'] =input('fields'); + + //验证数据 + $this->validateData($data,'Post.edit'); + $result = $this->postModel->editData($data); + if($result){ + $postmeta = input('param.postmeta/a'); + if (!empty($postmeta)) { + $post_meta_model = new PostmetaModel; + $meta_keys = $post_meta_model->where('post_id',$id)->column('meta_key'); + /* 提交过来的 跟数据库中比较 不存在 删除*/ + $del_metas = []; + $postmeta_keys = array_column($postmeta,'meta_key'); + if (!empty($meta_keys)) { + foreach ($meta_keys as $key => $value) { + if(!in_array($value,$postmeta_keys)) $del_metas[] = $value; + } + } + //这是元数据 + foreach ($postmeta as $key => $val) { + if (!empty($val['meta_value'])) { + $post_meta_model->setMeta($id,$val['meta_key'],$val['meta_value']); + } + + } + //删除不存在的 + foreach ($del_metas as $key => $value) { + $post_meta_model->deleteMeta($id,$value); + } + } + update_post_term($id,input('post.category_id',false)); + $this ->success($title.'成功',''); + } else{ + $this ->error($this->postModel->getError()); + } + + } else{ + $this->assign('page_config',['disable_panel'=>true,'back'=>true]); + $this->assign('meta_title',$title.'文章'); + + $info = [ + 'content'=>'', + 'img'=>'' + ]; + if ($id>0) { + $info = PostsModel::get($id); + $this->assign('category_id',get_the_category($id)); + $this->assign('tag_ids',get_the_category($id)); + $this->assign('meta_list',PostmetaModel::getMetas($id)); + } else { + $this->assign('category_id',0); + $this->assign('tag_ids',0); + } + $this->assign('info',$info); + + $this->assign('form_url',url('edit',['id'=>$id])); + + $this->assign('post_category',logic('Category')->getOptTerms('post_category')); + $this->assign('post_tags',logic('Category')->getOptTerms('post_tag')); + $this->assign('tag_id',1);//测试 + return $this->fetch(); + } + + } + + /** + * 构建模型搜索查询条件 + * @return [type] [description] + * @date 2018-09-30 + * @author 心云间、凝听 <981248356@qq.com> + */ + private function buildPostsSearchSetting() + { + //时间范围 + $timegap = input('create_time_range'); + $extend_conditions = []; + if($timegap){ + $gap = explode('—', $timegap); + $reg_begin = $gap[0]; + $reg_end = $gap[1]; + + $extend_conditions =[ + 'create_time'=>['between',[$reg_begin.' 00:00:00',$reg_end.' 23:59:59']] + ]; + } + //自定义查询条件 + $search_setting = [ + 'keyword_condition'=>'title', + //忽略数据库不存在的字段 + 'ignore_keys' => ['create_time_range','term_id'], + //扩展的查询条件 + 'extend_conditions'=>$extend_conditions + ]; + + return $search_setting; + } + + /** + * 设置一条或者多条数据的状态 + */ + public function setStatus($model = 'Posts',$script = false) { + $ids = input('param.ids/a'); + $status = input('param.status'); + if (empty($ids)) { + $this->error('请选择要操作的数据'); + } + $map['id'] = ['in',$ids]; + switch ($status) { + case 'delete' : // 删除条目 + $map['status'] = -1; + $exist = $this->postModel->where($map)->find(); + if ($exist) { + $result = $this->postModel->where($map)->delete(); + } else { + $result = true; + } + if ($result) { + foreach ($ids as $key => $id) { + $term_id = get_term_info($id,'term_id')['term_id']; + delete_post_term($id,$term_id);//删除分类 + } + $this->success('彻底删除成功'); + + } else { + $this->error('删除失败'); + } + break; + default : + parent::setStatus($model); + break; + } + } +} \ No newline at end of file diff --git a/apps/cms/admin/Tag.php b/apps/cms/admin/Tag.php new file mode 100644 index 0000000..f31b864 --- /dev/null +++ b/apps/cms/admin/Tag.php @@ -0,0 +1,38 @@ + +// +---------------------------------------------------------------------- +namespace app\cms\admin; +use app\admin\controller\Admin; + +use app\common\model\Terms as TermsModel; + +class Tag extends Admin { + + function _initialize() + { + parent::_initialize(); + + } + + /** + * 标签搜索 + * @return [type] [description] + * @date 2017-10-01 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function search() + { + $data_list = TermsModel::all(function($query){ + $query->where('taxonomy','post_tag')->select(); + }); + return json($data_list); + } + +} \ No newline at end of file diff --git a/apps/cms/admin/Type.php b/apps/cms/admin/Type.php new file mode 100644 index 0000000..80ce6bf --- /dev/null +++ b/apps/cms/admin/Type.php @@ -0,0 +1,41 @@ + +// +---------------------------------------------------------------------- +namespace app\cms\admin; +use app\admin\controller\Admin; + +class Type extends Admin { + + function _initialize() + { + parent::_initialize(); + } + + /** + * 设置类型(待定) + * @author + */ + public function index() { + if (IS_POST) { + $data = $this->request->param(); + + } else { + $info = []; + return builder('Form') + ->setMetaTitle('文档类型') + ->addFormItem('id', 'hidden', '') + ->addFormItem('title', 'text', '标题') + ->setFormData($info) + ->addButton('submit')->addButton('back') // 设置表单按钮 + ->fetch(); + } + } + +} \ No newline at end of file diff --git a/apps/cms/common.php b/apps/cms/common.php new file mode 100644 index 0000000..1f685f7 --- /dev/null +++ b/apps/cms/common.php @@ -0,0 +1,11 @@ +H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 +// +---------------------------------------------------------------------- +namespace app\cms\controller; +use app\home\controller\Home; + +use app\cms\model\Posts as PostsModel; +use app\cms\logic\Category as CategoryLogic; +use app\cms\logic\Tag as TagLogic; + +class Index extends Home { + + function _initialize() + { + parent::_initialize(); + + $this->assign('category_list',CategoryLogic::getCategories()); + $this->assign('tag_list',TagLogic::getTags()); + } + + /** + * 首页 + */ + public function index() { + + $this->pageInfo('首页','index'); + + $map = [ + 'status' =>1, + 'type' =>'post' + ]; + //分类筛选 + $cat_id = input('param.cat_id'); + if ($cat_id>0) { + $cat_post_ids = db('term_relationships')->where(['term_id'=>$cat_id])->column('object_id'); + if(!empty($cat_post_ids)) $map['id']=['in',$cat_post_ids]; + } + //标签筛选 + $tag_id = input('param.tag_id'); + if ($tag_id>0) { + $tag_post_ids = db('term_relationships')->where(['term_id'=>$tag_id])->column('object_id'); + if(!empty($tag_post_ids)){ + $map['id']=['in',$tag_post_ids]; + } elseif (empty($map['id'])) { + $map['id']=''; + } + } + if (!empty($cat_post_ids) && !empty($tag_post_ids)) { + $ids = array_unique(array_merge($cat_post_ids,$tag_post_ids)); + $map['id']=['in',$ids]; + } + $post_list = PostsModel::where($map)->order('sort desc,create_time desc,id desc')->paginate(15); + + $this->assign('post_list',$post_list); + + return $this->fetch(); + } + + /** + * 获取详情 + * @param integer $id [description] + * @return [type] [description] + * @date 2017-10-16 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function detail($id=0) + { + $info = PostsModel::get($id); + + $this->pageInfo($info['title'],'detail'); + $this->assign('info',$info); + + return $this->fetch(); + } + +} \ No newline at end of file diff --git a/apps/cms/controller/Page.php b/apps/cms/controller/Page.php new file mode 100644 index 0000000..419fd90 --- /dev/null +++ b/apps/cms/controller/Page.php @@ -0,0 +1,56 @@ + +// +---------------------------------------------------------------------- +namespace app\cms\controller; +use app\home\controller\Home; + +use app\cms\model\Posts as PostsModel; + +class Page extends Home { + + function _initialize() + { + parent::_initialize(); + + } + + /** + * 首页 + */ + public function index() { + + $this->pageInfo('首页','index'); + + $map = [ + 'status'=>1, + 'type'=>'page' + ]; + $post_list = PostsModel::where($map)->order('sort desc,create_time desc,id desc')->paginate(15); + + $this->assign('post_list',$post_list); + return $this->fetch(); + } + + /** + * 关于 + * @param integer $id [description] + * @return [type] [description] + */ + public function about() + { + $id = 1; + PostsModel::where('id',$id)->setInc('views', 1);//添加浏览次数 + $info = PostsModel::get($id); + $this->pageInfo($info['title'],'about'); + + $this->assign('info',$info); + return $this->fetch(); + } +} \ No newline at end of file diff --git a/apps/cms/install/info.json b/apps/cms/install/info.json new file mode 100644 index 0000000..55ca087 --- /dev/null +++ b/apps/cms/install/info.json @@ -0,0 +1,17 @@ +{ + "name":"cms", + "title":"内容管理系统CMS", + "description":"内容管理、CMS、文章管理、页面管理", + "author":"心云间、凝听", + "version":"1.2.3", + "dependences":{ + "core":"1.3.0", + "plugins":{ + + }, + "modules":{ + + } + }, + "database_prefix":"eacoo_" +} \ No newline at end of file diff --git a/apps/cms/install/install.sql b/apps/cms/install/install.sql new file mode 100644 index 0000000..05b3021 --- /dev/null +++ b/apps/cms/install/install.sql @@ -0,0 +1,63 @@ + +# Dump of table eacoo_postmeta +# ------------------------------------------------------------ + +CREATE TABLE IF NOT EXISTS `eacoo_postmeta` ( + `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `post_id` bigint(20) unsigned NOT NULL DEFAULT '0', + `meta_key` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `meta_value` text COLLATE utf8mb4_unicode_ci, + PRIMARY KEY (`meta_id`), + KEY `idx_postid_metakey` (`post_id`,`meta_key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS `eacoo_posts` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `title` varchar(255) NOT NULL DEFAULT '0' COMMENT '标题', + `slug` varchar(200) NOT NULL DEFAULT '', + `type` varchar(20) NOT NULL DEFAULT '' COMMENT '文章类型,post,page,product', + `source` varchar(100) DEFAULT '' COMMENT '来源标记', + `excerpt` text COMMENT '摘要', + `content` longtext NOT NULL COMMENT '内容', + `author_id` int(11) unsigned NOT NULL COMMENT '作者', + `is_admin` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否后台管理员用户创建。0否,1是', + `seo_keywords` tinytext COMMENT 'seo_keywords', + `img` int(11) unsigned DEFAULT '0' COMMENT '封面图片', + `views` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '浏览数', + `collection` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '收藏量', + `comment_count` int(11) unsigned DEFAULT '0' COMMENT '冗余评论数', + `parent` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'post的父级post id,表示post层级关系', + `password` varchar(32) NOT NULL DEFAULT '' COMMENT '密码', + `fields` varchar(300) NOT NULL DEFAULT '' COMMENT 'post的扩展字段,保存相关扩展属性,如缩略图;格式为json', + `istop` tinyint(1) unsigned DEFAULT '0' COMMENT '置顶 1置顶; 0不置顶', + `recommended` tinyint(1) DEFAULT '0' COMMENT '推荐 1推荐 0不推荐,大于1的数字可设定为不同推荐区', + `publish_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '发布时间', + `create_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '更新时间', + `sort` int(10) unsigned DEFAULT '99' COMMENT '排序号', + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 -1 删除 0审核 1为已发布', + PRIMARY KEY (`id`), + KEY `idx_type` (`type`), + KEY `idx_author_id` (`author_id`) +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='文章表'; + +INSERT INTO `eacoo_posts` (`id`, `title`, `slug`, `type`, `source`, `excerpt`, `content`, `author_id`, `is_admin`, `seo_keywords`, `img`, `views`, `collection`, `comment_count`, `parent`, `password`, `fields`, `istop`, `recommended`, `publish_time`, `create_time`, `update_time`, `sort`, `status`) +VALUES + (1, '揭秘eBay四大系统 从行为数据中寻找价值', '', 'post', NULL, '', '

喜欢海淘的朋友应该对eBay并不陌生,如果你还不了解,可以把eBay+PayPal理解为淘宝+支付宝的组合,当然eBay不仅有C2C还有B2C的模式,甚至还有二手卖家。

铺垫了一些背景,我们再来说说电子商务,现在还有没网购过的同学请举手,1、2、3……可能没有几个。虽然大家都在各种电子商务网站上购过物,但是你是否知道你在网上的一切行为都已经被记录并进行分析。

不论国外还是国内的电子商务企业,他们的相同点都是以业务为导向。eBay的做法是用数据驱动商业,其上所有的数据产品都是针对业务而生,数据部门需要对不断变化的用户需求找到解决之法,也就是从客户的行为数据中来寻找价值。

行为数据用混合的手段来处理

数据是eBay发展的基础和价值所在,所以eBay数据服务和解决方案团队从eBay成立的第一天就已经存在,从数据仓库到数据分析再到数据服务,部门的名字一直随着发展在不断变化。但万变不离其宗,数据服务和解决方案团队就是一个针对数据展开想象的部门。

eBay数据服务和解决方案团队分布在美国西雅图、圣何塞以及中国上海,而中国团队全职和外包人员总共将近有100人,其中有不同的职位和分工,包括数据科学家、数据工程师、商业需求分析师、产品经理四大类。两个区域的团队互相协作,共同开发核心数据的同时也支持不同的业务部门。


', 1, 1, '', 68, 100, 10, 0, 0, '', '', 0, 0, '2018-09-30 22:32:26', '2018-09-30 22:32:26', '2018-09-30 22:32:26', 99, 1), + (2, '谷歌数据中心安全及设计的最佳实践', '', 'post', NULL, '', '

在首次云端平台使用者大会(Google Cloud Platform Global User Conference)上,谷歌的两位领导者——数据中心的运营副总裁Joe Kava和安全隐私方面的优秀工程师Niels Provos向与会者分享了谷歌在全球范围内设计、构建、运行和保护数据中心的实践方式,其中包含一些令谷歌的数据中心独一无二的秘诀,及其对于谷歌云端平台用户的意义。\r\n\r\n安全性和数据保护sdf\r\n\r\n谷歌一直以来将重心放在数据的安全和保护上,这也是我们的关键设计准则之一。在物理安全方面,我们以分层安全模型为特色,使用了如定制的电子访问卡、警报器、车辆进出限制、围栏架设、金属探测器及生物识别技术等保障措施。数据中心的地板配备了激光束入侵探测器,并安装了高清晰度的内外监视器,全天候检测追踪入侵行为。此外为以防万一,可随时调用访问日志、活动记录以及监控录像。\r\n\r\n同时数据中心还安排了经验丰富的保安人员每日例行巡逻,他们已接受过背景调查与严格的培训(可以点击查看数据中心的360度视频)。越靠近数据中心,安全措施系数就越高,只有一条安全通道能进入数据中心,通过安全徽章和生物识别技术来实现多重访问控制,只有特定职位的员工才有权进入。在整个谷歌公司,只有不到1%的员工曾踏足此区域。\r\n\r\n我们还采用了非常严格的点对点监管链,用于储存、追踪全过程——从第一次HD输入机器直至证实其已被销毁或清除。同时,我们采用了信息安全和物理安全双管齐下的方式,由于数据通过网络传输的特性,若未经授权可随意访问的话就会非常危险。有鉴于此,谷歌将数据传输过程中的信息保护摆在优先位置上,用户设备与谷歌间的数据传输通常都是利用HTTPS/TLS(安全传输层协议)来进行加密输送。谷歌是第一个默认启用HTTPS/TLS的主要云服务提供商。

', 1, 1, '', 93, 100, 0, 0, 0, '', '', 0, 1, '2018-09-30 22:32:26', '2018-09-30 22:32:26', '2018-09-30 22:32:26', 99, 0), + (3, '机器学习专家带你实践LSTM语言模型', '', 'post', NULL, '', '

测试


', 1, 0, '', 94, 100, 13, 0, 0, '', '', 0, 0, '2018-09-30 22:32:26', '2018-09-30 22:32:26', '2018-09-30 22:32:26', 99, 1), + (4, '大撒发送大撒发送', '', 'page', NULL, '', '


这是编辑的内容就gsadfasdfasfd

', 1, 1, '', 1164, 100, 0, 0, 0, '', '', 0, 0, '2018-09-30 22:32:26', '2018-09-30 22:32:26', '2018-09-30 22:32:26', 99, -1), + (5, '贝恩:企业大数据战略指南', '', 'post', NULL, '这是摘要dgs', '

企业大数据战略指南


fsafsaf


', 1, 1, '关键字1', 88, 100, 0, 0, 0, '', '', 1, 0, '2018-09-30 22:32:26', '2018-09-30 22:32:26', '2018-09-30 22:32:26', 99, 1), + (6, '发撒范德萨', '', 'post', NULL, '', '

撒发达范德萨发送

', 1, 0, '', 27, 100, 0, 0, 0, '', '', 0, 0, '2018-09-30 22:32:26', '2018-09-30 22:32:26', '2018-09-30 22:32:26', 99, 1), + (7, '关于我们', '', 'page', NULL, NULL, '

EacooPHP是基于ThinkPHP5开发的一套轻量级WEB产品开发框架,追求高效,简单,灵活。具有完善并灵活的模块化和插件机制,模块式开发,大大降低开发成本。

', 1, 1, 'EacooPHP是基于ThinkPHP5开发的一套轻量级WEB产品开发框架', NULL, 100, 0, 0, 0, '', '', 0, 0, '2018-09-30 22:32:26', '2018-09-30 22:32:26', '2018-09-30 22:32:26', 99, 1); + + +# 安装关联分类 +INSERT INTO `eacoo_term_relationships` ( `object_id`, `term_id`, `table`, `uid`, `sort`, `status`) +VALUES + (3, 5, 'posts', 0, 0, 1), + (5, 6, 'posts', 0, 0, 1), + (2, 6, 'posts', 0, 0, 1), + (1, 6, 'posts', 0, 0, 1), + (4, 1, 'posts', 0, 0, 1), + (6, 1, 'posts', 0, 0, 1); diff --git a/apps/cms/install/menus.php b/apps/cms/install/menus.php new file mode 100644 index 0000000..a685ed9 --- /dev/null +++ b/apps/cms/install/menus.php @@ -0,0 +1,90 @@ + [ + //头部导航(位置) + 'header' =>[ + [ + 'title'=>'内容管理CMS', + 'icon' => '', + 'sub_menu'=>[ + [ + 'title' => '文章列表', + 'icon' => 'fa fa-list', + 'value' => 'cms/Index/index', + ], + [ + 'title' => '页面列表', + 'icon' => 'fa fa-list', + 'value' => 'cms/page/index', + ], + ] + + ] + + ], + //个人中心(位置) + 'my' => [ + [ + 'title' => '我的文章', + 'icon' => 'fa fa-list', + 'value' => 'cms/My/posts', + ], + ], + ], + + // 后台菜单及权限节点配置 + 'admin_menus' =>[ + [ + 'title'=>'内容管理CMS', + 'name' =>'cms/posts', + 'icon' => 'fa fa-file-text', + 'is_menu'=>1, + 'sub_menu'=>[ + [ + 'title'=>'模块设置', + 'name' => 'admin/modules/config?name=cms', + 'is_menu'=>1, + 'no_pjax'=>1, + ], + [ + 'title'=>'文档管理', + 'name' => 'cms/Document/index', + 'is_menu'=>1 + ], + [ + 'title'=>'文章列表', + 'name' => 'cms/posts/index', + 'is_menu'=>1 + ], + [ + 'title'=>'文章编辑', + 'name' => 'cms/posts/edit', + 'is_menu'=>0 + ], + [ + 'title'=>'文章分类', + 'name' => 'cms/category/index', + 'is_menu'=>1 + ], + [ + 'title'=>'文章标签', + 'name' => 'cms/category/index?taxonomy=post_tag', + 'is_menu'=>1 + ], + [ + 'title'=>'页面列表', + 'name' => 'cms/page/index', + 'is_menu'=>1 + ], + [ + 'title'=>'回收站', + 'name' => 'cms/Document/trash', + 'is_menu'=>1 + ], + ], + ] + + ], +]; \ No newline at end of file diff --git a/apps/cms/install/options.php b/apps/cms/install/options.php new file mode 100644 index 0000000..7ae44f7 --- /dev/null +++ b/apps/cms/install/options.php @@ -0,0 +1,48 @@ + [ + 'title' => '前台发布审核', + 'type' => 'radio', + 'options' => [ + 1 => '需要', + 0 => '不需要', + ], + 'value' => '0', + ], + 'toggle_comment' => [ + 'title' => '是否允许评论文档', + 'type' =>'radio', + 'options' => [ + '1' => '允许', + '0' => '不允许', + ], + 'value' => '1', + ], + 'taglib' => [ + 'title' => '加载标签库', + 'type' =>'checkbox', + 'options'=> array( + 'cms' => 'cms', + ), + 'value' => array( + '0' => 'cms', + ), + ], + 'post_type'=>[ + 'title' => '文档类型', + 'type' => 'repeater', + 'options'=>[ + 'options'=> + [ + 'name' =>['title'=>'类型名称','type'=>'text','default'=>'','placeholder'=>'只限英文'], + 'title' =>['title'=>'类型标题','type'=>'text','default'=>'','placeholder'=>'中文标题'], + ] + ], + 'value' => [ + ['name'=>'post','title'=>'文章'], + ['name'=>'page','title'=>'页面'], + ['name'=>'product','title'=>'产品'], + ] + ], +]; \ No newline at end of file diff --git a/apps/cms/install/uninstall.sql b/apps/cms/install/uninstall.sql new file mode 100644 index 0000000..e82311f --- /dev/null +++ b/apps/cms/install/uninstall.sql @@ -0,0 +1,3 @@ +DROP TABLE IF EXISTS `eacoo_posts`; +DROP TABLE IF EXISTS `eacoo_postmeta`; +DELETE FROM `eacoo_term_relationships` WHERE `table`='posts'; \ No newline at end of file diff --git a/apps/cms/logic/Base.php b/apps/cms/logic/Base.php new file mode 100644 index 0000000..295244c --- /dev/null +++ b/apps/cms/logic/Base.php @@ -0,0 +1,46 @@ + +// +---------------------------------------------------------------------- +namespace app\cms\logic; + +use think\Model; + +class Base extends Model { + + protected function _initialize() + { + parent::_initialize(); + } + + /** + * 获取后台TabList + * @return [type] [description] + * @date 2018-02-22 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function getBuilderTab($from='document') + { + if ($from=='document') { + $tab_list= [ + 'index' =>['title'=>'文档管理','href'=>url('Document/index')], + 'post_category' =>['title'=>'文档分类','href'=>url('Category/index')], + 'post_tag' =>['title'=>'标签','href'=>url('Category/index',['taxonomy'=>'post_tag'])], + ]; + } elseif($from=='post'){ + $tab_list= [ + 'index' =>['title'=>'文章管理','href'=>url('Posts/index')], + 'post_category' =>['title'=>'文章分类','href'=>url('Category/index')], + 'post_tag' =>['title'=>'标签','href'=>url('Category/index',['taxonomy'=>'post_tag'])], + ]; + } + + return $tab_list; + } +} \ No newline at end of file diff --git a/apps/cms/logic/Category.php b/apps/cms/logic/Category.php new file mode 100644 index 0000000..da30520 --- /dev/null +++ b/apps/cms/logic/Category.php @@ -0,0 +1,156 @@ + +// +---------------------------------------------------------------------- +namespace app\cms\logic; + +use app\common\model\Terms as TermsModel; +use app\common\model\TermRelationships as TermRelationshipsModel; + +use eacoo\Tree; + +class Category extends Base { + + function _initialize() + { + parent::_initialize(); + + } + + /** + * 获取分类 + * @return [type] [description] + * @date 2017-10-17 + * @author 心云间、凝听 <981248356@qq.com> + */ + public static function getCategories() + { + $map = [ + 'taxonomy'=>'post_category', + ]; + $data_list = db('terms')->where($map)->field('term_id,name,slug,pid')->limit(8)->select(); + return $data_list; + } + + /** + * 移动分类 + */ + public function moveCategory() { + if (IS_POST) { + $ids = input('param.ids'); + $from_cid = input('param.from_cid'); + $to_cid = input('param.to_cid'); + if ($from_cid === $to_cid) { + $this->error('存在目标分类与当前分类相同'); + } + if ($to_cid) { + $map = [ + 'object_id'=>['in',$ids], + ]; + $ids = explode(',', $ids); + if (!empty($ids) && is_array($ids)) { + $data = ['term_id' => $to_cid]; + foreach ($ids as $key => $id) { + $map = [ + 'object_id' => $id, + 'table' => 'posts' + ]; + $res = TermRelationshipsModel::where($map)->count(); + if ($res>0) { + TermRelationshipsModel::where($map)->update($data); + } else{ + $data = [ + 'object_id' => $id, + 'table' => 'posts', + 'term_id' => $to_cid + ]; + TermRelationshipsModel::create($data); + } + unset($map); + } + $this->success('移动成功'); + } + + $this->error('移动失败'); + } else { + $this->error('请选择目标分类'); + } + } + } + + + /** + * 构建列表移动分类按钮 + * @author 心云间、凝听 <981248356@qq.com> + */ + public static function moveCategoryHtml($optCategory,$cid){ + //构造移动文档的目标分类列表 + $options = ''; + foreach ($optCategory as $key => $val) { + $options .= ''; + } + //文档移动POST地址 + $move_url = url('category/moveCategory'); + + return << + + + +EOF; + } + + /** + * 获取分类选择项 + * @param string $taxonomy [description] + * @return [type] [description] + * @date 2018-02-22 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function getOptTerms($taxonomy='post_category') + { + $data_list = model('common/Terms')->where(['taxonomy'=>$taxonomy])->column('name','term_id'); + return $data_list; + } + +} \ No newline at end of file diff --git a/apps/cms/logic/Posts.php b/apps/cms/logic/Posts.php new file mode 100644 index 0000000..f8981cb --- /dev/null +++ b/apps/cms/logic/Posts.php @@ -0,0 +1,27 @@ + +// +---------------------------------------------------------------------- +namespace app\cms\logic; + +use app\common\model\Terms as TermsModel; +use app\common\model\TermRelationships as TermRelationshipsModel; + +use eacoo\Tree; + +class Posts extends Base { + + function _initialize() + { + parent::_initialize(); + + } + + +} \ No newline at end of file diff --git a/apps/cms/logic/Tag.php b/apps/cms/logic/Tag.php new file mode 100644 index 0000000..1ffeb39 --- /dev/null +++ b/apps/cms/logic/Tag.php @@ -0,0 +1,30 @@ + +// +---------------------------------------------------------------------- +namespace app\cms\logic; + +class Tag extends Base { + + /** + * 获取分类 + * @return [type] [description] + * @date 2017-10-17 + * @author 心云间、凝听 <981248356@qq.com> + */ + public static function getTags() + { + $map = [ + 'taxonomy'=>'post_tag', + ]; + $data_list = db('terms')->where($map)->field('term_id,name,slug,pid')->limit(8)->select(); + return $data_list; + } + +} \ No newline at end of file diff --git a/apps/cms/model/.DS_Store b/apps/cms/model/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 +// +---------------------------------------------------------------------- +namespace app\cms\model; + +use think\Model; + +class Category extends Model { + + protected $pk = 'term_id'; + protected $name = 'terms'; + + +} \ No newline at end of file diff --git a/apps/cms/model/Postmeta.php b/apps/cms/model/Postmeta.php new file mode 100644 index 0000000..0b8ae7d --- /dev/null +++ b/apps/cms/model/Postmeta.php @@ -0,0 +1,124 @@ + +// +---------------------------------------------------------------------- +namespace app\cms\model; + +use app\common\model\Base; + +class Postmeta extends Base { + + protected $pk = 'meta_id'; + + /** + * 获取文章字段值 + * @param [type] $post_id [description] + * @param [type] $meta_key [description] + * @return [type] [description] + * @date 2017-10-15 + * @author 心云间、凝听 <981248356@qq.com> + */ + public static function getMetaValue($post_id,$meta_key) + { + $map = [ + 'post_id'=>$post_id, + 'meta_key'=>$meta_key + ]; + return $value = self::where($map)->value('meta_value'); + } + + /** + * 获取文章的所有meta + * @param [type] $post_id [description] + * @return [type] [description] + * @date 2017-10-15 + * @author 心云间、凝听 <981248356@qq.com> + */ + public static function getMetas($post_id) + { + $map = [ + 'post_id'=>$post_id + ]; + return $data = self::where($map)->field('meta_id,meta_key,meta_value')->select(); + } + + /** + * 设置meta + * @param [type] $post_id [description] + * @param [type] $meta_key [description] + * @param string $meta_value [description] + * @date 2017-10-15 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function setMeta($post_id,$meta_key,$meta_value='') + { + $res = $this->where(['post_id'=>$post_id,'meta_key'=>$meta_key])->count(); + if ($res>0) { + $res = $this->updateMeta($post_id,$meta_key,$meta_value); + } else{ + $res = $this->addMeta($post_id,$meta_key,$meta_value); + } + return $res; + } + + /** + * 添加文章meta + * @param [type] $post_id [description] + * @param [type] $meta_key [description] + * @date 2017-10-15 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function addMeta($post_id,$meta_key,$meta_value='') + { + $data = [ + 'post_id'=>$post_id, + 'meta_key'=>$meta_key, + 'meta_value'=>$meta_value + ]; + $res = $this->allowField(true)->isUpdate(false)->data($data)->save(); + return $res ? $this->meta_id : false; + } + + /** + * 更新meta + * @param [type] $post_id [description] + * @param [type] $meta_key [description] + * @param string $meta_value [description] + * @return [type] [description] + * @date 2017-10-15 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function updateMeta($post_id,$meta_key,$meta_value='') + { + $map = [ + 'post_id'=>$post_id, + 'meta_key'=>$meta_key + ]; + $res = $this->where($map)->update(['meta_value'=>$meta_value]); + return $res ? true : false; + } + + /** + * 删除meta + * @param [type] $post_id [description] + * @param [type] $meta_key [description] + * @return [type] [description] + * @date 2017-10-15 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function deleteMeta($post_id,$meta_key) + { + $map = [ + 'post_id'=>$post_id, + 'meta_key'=>$meta_key + ]; + $res = $this->where($map)->delete(); + return $res ? true : false; + } +} \ No newline at end of file diff --git a/apps/cms/model/Posts.php b/apps/cms/model/Posts.php new file mode 100644 index 0000000..a77896e --- /dev/null +++ b/apps/cms/model/Posts.php @@ -0,0 +1,95 @@ + +// +---------------------------------------------------------------------- +namespace app\cms\model; + +use app\common\model\Base; + +class Posts extends Base { + + protected $insert = []; + + /** + * 获取摘要内容 + * @param [type] $post_id [description] + * @return [type] [description] + * @date 2017-10-16 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function getDigestAttr($value,$data) + { + $excerpt = $data['excerpt']; + if (empty($excerpt)) { + if(function_exists("mb_strimwidth")){ + $excerpt = mb_strimwidth(strip_tags($data['content']), 0, 280,"..."); + } else{ + $excerpt = eacoo_strimwidth(strip_tags($data['content']),0,280,'...'); + } + + } + + return $excerpt; + } + + /** + * 获取缩略图 + * @param [type] $value [description] + * @param [type] $data [description] + * @return [type] [description] + * @date 2017-10-16 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function getCoverAttr($value,$data) + { + $img = get_image($data['img']); + if (!$img) { + $img = get_first_pic($data['content']); + } + + return $img; + } + + /** + * 获取作者名 + * @param [type] $value [description] + * @param [type] $data [description] + * @return [type] [description] + * @date 2018-01-06 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function getAuthorAttr($value,$data) + { + $nickname = ''; + if ($data['author_id']>0) { + $db = db('users'); + $label = ''; + if ($data['is_admin']==1) { + $db = db('admin'); + $label = '(后台)'; + } + $nickname = $db->where('uid',$data['author_id'])->value('nickname'); + } + return !empty($nickname) ? $nickname.$label : '未知'; + } + + /** + * 是否后台用户 + * @param [type] $value [description] + * @param [type] $data [description] + * @return [type] [description] + * @date 2018-10-03 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function getIsAdminTextAttr($value,$data) + { + $status = [ 0 => '否', 1 => '是']; + return isset($status[$data['is_admin']]) ? $status[$data['is_admin']] : '未知'; + } +} \ No newline at end of file diff --git a/apps/cms/model/Tag.php b/apps/cms/model/Tag.php new file mode 100644 index 0000000..ea6a4ce --- /dev/null +++ b/apps/cms/model/Tag.php @@ -0,0 +1,35 @@ + +// +---------------------------------------------------------------------- +namespace app\cms\model; + +use think\Model; + +class Tag extends Model { + + protected $pk = 'term_id'; + protected $name = 'terms'; + + /** + * 获取分类 + * @return [type] [description] + * @date 2017-10-17 + * @author 心云间、凝听 <981248356@qq.com> + */ + public static function getTags() + { + $map = [ + 'taxonomy'=>'post_tag', + ]; + $data_list = db('terms')->where($map)->field('term_id,name,slug,pid')->limit(8)->select(); + return $data_list; + } + +} \ No newline at end of file diff --git a/apps/cms/static/.DS_Store b/apps/cms/static/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6dcf1c44c6e56ceaaf271e3a826bb55bd70ad81b GIT binary patch literal 8196 zcmeHMZEO@p7@p@^V7DuDTagwPyu*Sh*3dIp!iRA53ZWEev?d!;Q@{~40*Bs1^K zyz|b?`|L9_H*<_Jv=ogbWA%(Ni6WP(LdjJE*YkKqh=nyWNsvAB@>$!>Qt50qe?{x4 zB0?ZSAVMHQAVMHQ;95X{&TJl}Db9VNjnW8#2!Uyd0N)=H6uC@=azw~r>!2jK0+6hv z>L5^F=8s%BU1&-A;48DIB{ zUW;DX%S)ZQ-=7WhU9M}7<@M|?%N*=e=cZl9*Dc2^1jd$OQj>i>mSebsEpE{0*M z^&}5ZUUtv$a(0#`$XkRS+lP{woI5c7t)i^)N@?+y5&I&W7g&5-#zL-Al-XMQw)X8i zI{H+#=$SiBTlcM!*{b`d*QZu{1Wa4bbvg@Xi9qPdxpr~DAx%wAw{t~mY;LsejCD-3 z&J|qS?sPrNw_Im;uWuglxsG=&+EX#M;Jwc0}M#;L3%wL$7FX05|T%Rf3=tJYK}7Hi5rgS^}B8oW0{JuS(BX6a&0 z+sifSf=Q_%Nn%pVwMJRhr7n;B6*ViAq^x>!*S*A$phjD%G)t->ciVc_v_;iwWv!&P z%RMFGuBcqEq@)@&%DwbW2gn~U7`Y{_X$Sbo+jP(G$eRw$>a%coZL!uSNxQjrqhZjj z8p`}>NG%uH0E&iGlPIbDoLa=1SPR?A4zN5s${u6SvQz9`cACA%K4zb@uh<3lBm0&8 z#(rmiuuA}BRAW9CU?CRaW~{(Etj7kV(1vd8LJtl?M-B!o6yTwV5{7Ub58+`vf+z4C zp2tbNfS2()-oV><2WRjJ&S4Z^<2=5{54eb*@H76z-?56=bz+{e@`C6rI~3N>A$ghO z;d@=|nX7X=zNKx;*7nWUEXOa*;l#dv?hW(m5=)n_Sh;$AdhFXz`sCxe7m!V`DPUQd zMZu?@KwrKDw1tb5csG&JJTiINloy6Ni_=aT)#fj#kKYtuA`!vVu(&LKt3<0njRk$( z))-gR3L?B56q}MtT%AGOmV)A)&5EK{68VL8&05mVB$^BDh7@TTU!HO>lCmtmS(a4% zCu#qcvS-;jc9H!;WWB`x!VFZQ4hf=ZBbte(DWuVgP1u1B+>M>+!hReG32Vba9*2pv zLm0*b7{P;h6ps^SpTtu*L6m(FFX0qk!K*~vH}MwU#|K2-5AhK`#g`bJMAdB*sfzC| zQ+2>?Z8eI1j2@e5O9{as{O=C|rV*Y0<9@P6=YK%MX_x#1CZAxg literal 0 HcmV?d00001 diff --git a/apps/cms/static/css/admin.css b/apps/cms/static/css/admin.css new file mode 100644 index 0000000..0f2fd1b --- /dev/null +++ b/apps/cms/static/css/admin.css @@ -0,0 +1,3 @@ +label.control-label{text-align: right;} +.form-horizontal .control-label{color: #666;} +.form-group{overflow: hidden;} \ No newline at end of file diff --git a/apps/cms/static/logo.png b/apps/cms/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e72147ceffaa51af3106e7d516c9e41fba4af3fc GIT binary patch literal 20419 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 literal 0 HcmV?d00001 diff --git a/apps/cms/validate/Post.php b/apps/cms/validate/Post.php new file mode 100644 index 0000000..a2d8fc2 --- /dev/null +++ b/apps/cms/validate/Post.php @@ -0,0 +1,52 @@ + +// +---------------------------------------------------------------------- +namespace app\cms\validate; + +use think\Validate; + +class Post extends Validate +{ + // 验证规则 + protected $rule = [ + 'title' => 'require|length:1,30', + 'slug' => 'alphaDash', + 'type' => 'require|alphaDash|length:1,20', + 'source' => 'chsDash|length:1,20', + //'excerpt' => 'chsDash', + //'content' => 'require', + 'author_id' => 'number|gt:0', + 'img' => 'number|gt:0', + 'istop' => 'number', + 'recommended' => 'number', + ]; + + protected $message = [ + 'title.require' => '标题不能为空', + 'title.length' => '标题长度不正确', + 'slug.alphaDash' => '别名格式不正确', + 'type.require' => '类型不能为空', + 'type.alphaDash' => '类型格式不正确', + 'type.length' => '类型长度为1-30位', + 'source.length' => '来源长度为1-20位', + 'source.chsDash' => '来源格式不正确', + 'author_id.number' =>'作者ID必须为大于0数字', + 'author_id.gt' =>'作者ID必须为大于0数字', + 'img.number' =>'作者ID必须为大于0数字', + 'img.gt' =>'作者ID必须为大于0数字', + 'istop.number' => '是否置顶格式不正确', + 'recommended.number' => '是否推荐格式不正确', + + ]; + + protected $scene=[ + 'edit' => ['title','slug','type','source','author_id','img','istop','recommended'], + ]; +} \ No newline at end of file diff --git a/apps/cms/view/.DS_Store b/apps/cms/view/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8bde63dacc90c90288bae188b5170cb62dc15ff6 GIT binary patch literal 6148 zcmeHKJ5EDE474GUBBe=5xmVx@t0Cv^yK@*`92| zUowD=M|=PEv8P?GEGZxbq<|EV0%xc|73tOb4BxINO93hHvjY4+G&r#rj*0QzI3^+j^P~ck>eXU+(h+Z!*9*tQq?^ahIHzv*>QFpxN4!P4c~8_R z1*E`Kfy-QOSpRR}-}L`el2%ec3j8Yte6ic_ws=z2*4g7&Ya9F)&YVv;4fCL2h;j^! ia*PGb@l_;cUgI45y>LtnI^sbG>Sutu$fUquEAR!oy&56_ literal 0 HcmV?d00001 diff --git a/apps/cms/view/admin/.DS_Store b/apps/cms/view/admin/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5d9887a7dda3c76fd100874e6ad752316c720fcc GIT binary patch literal 8196 zcmeHMZEO@p7@p^7%dRZ#wjwQX8?F`vno?T9wnV|Bt(8&;)fU?FRqk$=cEjH7al6+8 zYPE>bnD9%*;4h-l7~zjGpuaF+G$ERh7;A_KCjL_Nm+>pXnE1}lUeh~1{*V}=JIT(w zJMYKLJoC)Xy?cx?v}g5Z#%dU25?x%XbEvvS;d*}ER6>4BIZ2Q|V@^Ehq~n$yzsWXe z2oMMm2oMMm2oMMmxHk}>Gn*IbHs`+326ccyfWZF}0sel7(8Xocmy<$zuMVob6o6z2 zHG75bDG%^`BEF3Ja#Bdom12tQ0lq8z6a&JY^bu}OGV04oA%#1GaA)v)hM%Fp>z(`} zo;gEQ$e<1o2oSg#0iL^;vNW@q!`y=W{bD?AnU34kbQz&pC8cGvC0Ul_xzg^wQ9IY? z#@wva9?R_Xo=n|{`}h5}ZB5_D;@eFlH>}RQ2In(-^t=jEP$#&3y?wnHJ8i;UcXw)*(J?gf8V_xiSsQeRGt#TF>U5 zEy~tGGhwIt%)`d8THz2*-SpU-F~$gmfrM>klPPCdtxUwMMAnMA#s*T z_1ccXEfjHeBXWsVu06p=zz@!qzkc^GHAk#R`Y zMVrLLZ0}H)`LP;`LU(3hgcgOQ~hioZKEUX7(2<%uygEV_Bs2CeapUQ zKeIpBpX>(v3k)(UumH8FM*~)(5v}M%7oNmMJcZrZgJFy!2^(n~z+pUxBX}N1aSX5E zH5|w5IEi=h9!}vj&fpx*;{rax7r26}xQ6fW1AfGH{EFZ3cc?5hC!~nchVq-EH$M@- zy=ePe&Y1uCE_D3XJP&W|-ndEWy61WRO*vo4`{z9{zdEwCe$|?_>pP}NP_*nb`R9>N zu*zdwo=x6z7f^Ug>;h$Rp7zDtVH=UvI4E((sk4RkgW)9-kxZ4uIFW6L=GE;cdJ_1b!bM;4D7GM?Qf+#b>yL%eY!Z*Ug1=#Wi}K z@zPG(ot=8tO)&QL`9u5@c9B-UgEl=n^MxNR@*V5Tq%1o%Ld|^Zl(8H$na)O-!QA`_ z!d(g!g=a|lsbc+%;a>QulDilBC++D0-%?*V^!)6 literal 0 HcmV?d00001 diff --git a/apps/cms/view/admin/posts/.DS_Store b/apps/cms/view/admin/posts/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 +{/block} + +{block name="main"} +
+
+
+
+
+
+

{$meta_title}

+
+
+ {notempty name="info.id"} + + {/notempty} +
+ +
+ +
+ +
+ + +
+ {:widget('common/Editor/wangeditor', + [ + [ + 'id'=>'cmscontent', + 'name'=>'content', + 'value'=>$info['content'], + 'width'=>'100%', + 'height'=>'360px', + 'config'=>'all', + 'is_load_script'=>1, + 'picturesModal' =>1 + ] + ])} +
+ + +
+
+

填写seo信息有利于搜索引擎优化

+
+ +
+ +
+ +
+
+ +
+ +

多关键词之间用英文逗号隔开

+
+ +
+
+ +
+

自定义字段可用来添加在您的主题中可用的额外元数据到您的文章。

+
+ + + + + + + + + + {notempty name="meta_list"} + {volist name="meta_list" id="row"} + + + + + + {/volist} + {else/} + + + + + + {/notempty} + +
名称操作
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+

扩展面板

+
+
+
+ +
+
+
+ +
+ +
+
+
+ +
+ 可在前台置顶显示 +
+
+
+ +
+ 作为站内推荐 +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
{:widget('common/Upload/picture',[['id'=>'img','class'=>'uploadsingleimg','name'=>'img','value'=>$info['img'],'config'=>'','width'=>false,'height'=>false]])} +
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ {notempty name="info.id"} + + {else/} + + 预览 + + {/notempty} + +
+
+
+
+
+
+{/block} + +{block name="script"} + + + + + + + +{/block} \ No newline at end of file diff --git a/apps/cms/view/admin/widget/hooks/latestList.html b/apps/cms/view/admin/widget/hooks/latestList.html new file mode 100644 index 0000000..dc47d06 --- /dev/null +++ b/apps/cms/view/admin/widget/hooks/latestList.html @@ -0,0 +1,37 @@ +
+ + +
\ No newline at end of file diff --git a/apps/cms/view/admin/widget/hooks/tool.html b/apps/cms/view/admin/widget/hooks/tool.html new file mode 100644 index 0000000..629a6ef --- /dev/null +++ b/apps/cms/view/admin/widget/hooks/tool.html @@ -0,0 +1,56 @@ +
+ + +
+
+ + +
+ 文章数 + {$generalize.postcount} +
+ +
+ +
+ +
+
+ + +
+ 页面数 + {$generalize.pagecount} +
+ +
+ +
+ +
+
+ + +
+ 评论数 + {$generalize.commentcount} +
+ +
+ +
+ +
diff --git a/apps/cms/view/index/detail.html b/apps/cms/view/index/detail.html new file mode 100644 index 0000000..c766314 --- /dev/null +++ b/apps/cms/view/index/detail.html @@ -0,0 +1,56 @@ +{extend name="$_theme_public_layout"/} +{block name="style"} + +{/block} + +{block name="main"} + +
+
+ +
+ +
+ + +
+
+
+ +
+
+

{$info.title}

+ +
+ +
+
+
+

{$info.create_time|strtotime|friendly_date}

+
+

{$info.content}

+ +
+ +
+ +
+
+ {include file="sidebar" /} +
+
+
+ +
+ + + +{/block} + +{block name="script"} + +{/block} diff --git a/apps/cms/view/index/index.html b/apps/cms/view/index/index.html new file mode 100644 index 0000000..c763549 --- /dev/null +++ b/apps/cms/view/index/index.html @@ -0,0 +1,58 @@ +{extend name="$_theme_public_layout"/} +{block name="style"} + +{/block} + +{block name="main"} + +
+
+ +
+ +
+ + +
+
+
+ {notempty name="post_list"} + {volist name="post_list" id="data"} +
+
+

{$data.title}

+ +
+ +
+
+
+
+

{$data.digest}

+ +
+ +
+ {/volist} + {else/} +

暂无内容

+ {/notempty} +
+
+ {include file="sidebar" /} +
+
+
+
+
+ + +{/block} + +{block name="script"} + +{/block} diff --git a/apps/cms/view/page/index.html b/apps/cms/view/page/index.html new file mode 100644 index 0000000..e32c091 --- /dev/null +++ b/apps/cms/view/page/index.html @@ -0,0 +1,58 @@ +{extend name="$_theme_public_layout"/} +{block name="style"} + +{/block} + +{block name="main"} + +
+
+ +
+ +
+ + +
+
+
+ {notempty name="post_list"} + {volist name="post_list" id="data"} +
+
+

{$data.title}

+ +
+ +
+
+
+
+

{$data.digest}

+ +
+ +
+ {/volist} + {else/} +

暂无内容

+ {/notempty} +
+
+ +
+
+
+
+
+ + +{/block} + +{block name="script"} + +{/block} diff --git a/apps/cms/view/sidebar.html b/apps/cms/view/sidebar.html new file mode 100644 index 0000000..682548f --- /dev/null +++ b/apps/cms/view/sidebar.html @@ -0,0 +1,38 @@ +
+
+

分类

+ +
+ +
+ +
+ +
+
+ 所有分类 + {volist name="category_list" id="category"} + {$category.name} + {/volist} +
+
+ +
+ +
+
+

标签

+ +
+ +
+ +
+ +
+ {volist name="tag_list" id="tag"} + {$tag.name} + {/volist} +
+ +
\ No newline at end of file diff --git a/apps/cms/widget/Hooks.php b/apps/cms/widget/Hooks.php new file mode 100644 index 0000000..ec8eec9 --- /dev/null +++ b/apps/cms/widget/Hooks.php @@ -0,0 +1,73 @@ + +// +---------------------------------------------------------------------- + +namespace app\cms\widget; +use app\common\controller\Widget; +use app\cms\model\Posts as PostsModel; +use app\common\model\User as UserModel; + +class Hooks extends Widget +{ + public function _initialize() { + parent::_initialize(); + + } + + /** + * @var array 模块钩子 + */ + public $hooks = [ + 'AdminIndex' + ]; + + /** + * 后台仪表盘 + * @date 2018-04-05 + * @author 心云间、凝听 <981248356@qq.com> + */ + public function AdminIndex() + { + $this->tool(); + } + + /** + * cmstool CMS工具条 + * @author:心云间、凝听 <981248356@qq.com> + */ + public function tool() + { + //概括 + $generalize = [ + 'usercount' => UserModel::where(['uid'=>['gt',0]])->count('uid'),//用户数 + 'postcount' => PostsModel::where('type','post')->count(), + 'pagecount' => PostsModel::where('type','page')->count(), + 'commentcount' => 10, + ]; + + $this->assign('generalize', $generalize); + return $this->fetch('tool'); + } + + /** + * Latest posts + * @author:心云间、凝听 <981248356@qq.com> + */ + public function latestList() + { + // 获取所有文章 + $map['status'] = array('egt', '0'); // 禁用和正常状态 + $map['type']='post'; + $paged=input('get.p'); + list($post_list,$totalCount) = model('cms/posts')->getListByPage($map,$paged,'create_time desc','id,title,create_time',6); + $this->assign('post_list', $post_list); + $this->fetch('cms@widget/latestList'); + } + +} \ No newline at end of file diff --git a/apps/home/controller/Index.php b/apps/home/controller/Index.php index 328fcd3..a875fdb 100755 --- a/apps/home/controller/Index.php +++ b/apps/home/controller/Index.php @@ -23,6 +23,7 @@ class Index extends Home { */ public function index() { + $this->assign('meta_title', '56民族大团结首页'); $this->pageInfo('首页','home'); return $this->fetch(); } diff --git a/public/static/cms/.DS_Store b/public/static/cms/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6dcf1c44c6e56ceaaf271e3a826bb55bd70ad81b GIT binary patch literal 8196 zcmeHMZEO@p7@p@^V7DuDTagwPyu*Sh*3dIp!iRA53ZWEev?d!;Q@{~40*Bs1^K zyz|b?`|L9_H*<_Jv=ogbWA%(Ni6WP(LdjJE*YkKqh=nyWNsvAB@>$!>Qt50qe?{x4 zB0?ZSAVMHQAVMHQ;95X{&TJl}Db9VNjnW8#2!Uyd0N)=H6uC@=azw~r>!2jK0+6hv z>L5^F=8s%BU1&-A;48DIB{ zUW;DX%S)ZQ-=7WhU9M}7<@M|?%N*=e=cZl9*Dc2^1jd$OQj>i>mSebsEpE{0*M z^&}5ZUUtv$a(0#`$XkRS+lP{woI5c7t)i^)N@?+y5&I&W7g&5-#zL-Al-XMQw)X8i zI{H+#=$SiBTlcM!*{b`d*QZu{1Wa4bbvg@Xi9qPdxpr~DAx%wAw{t~mY;LsejCD-3 z&J|qS?sPrNw_Im;uWuglxsG=&+EX#M;Jwc0}M#;L3%wL$7FX05|T%Rf3=tJYK}7Hi5rgS^}B8oW0{JuS(BX6a&0 z+sifSf=Q_%Nn%pVwMJRhr7n;B6*ViAq^x>!*S*A$phjD%G)t->ciVc_v_;iwWv!&P z%RMFGuBcqEq@)@&%DwbW2gn~U7`Y{_X$Sbo+jP(G$eRw$>a%coZL!uSNxQjrqhZjj z8p`}>NG%uH0E&iGlPIbDoLa=1SPR?A4zN5s${u6SvQz9`cACA%K4zb@uh<3lBm0&8 z#(rmiuuA}BRAW9CU?CRaW~{(Etj7kV(1vd8LJtl?M-B!o6yTwV5{7Ub58+`vf+z4C zp2tbNfS2()-oV><2WRjJ&S4Z^<2=5{54eb*@H76z-?56=bz+{e@`C6rI~3N>A$ghO z;d@=|nX7X=zNKx;*7nWUEXOa*;l#dv?hW(m5=)n_Sh;$AdhFXz`sCxe7m!V`DPUQd zMZu?@KwrKDw1tb5csG&JJTiINloy6Ni_=aT)#fj#kKYtuA`!vVu(&LKt3<0njRk$( z))-gR3L?B56q}MtT%AGOmV)A)&5EK{68VL8&05mVB$^BDh7@TTU!HO>lCmtmS(a4% zCu#qcvS-;jc9H!;WWB`x!VFZQ4hf=ZBbte(DWuVgP1u1B+>M>+!hReG32Vba9*2pv zLm0*b7{P;h6ps^SpTtu*L6m(FFX0qk!K*~vH}MwU#|K2-5AhK`#g`bJMAdB*sfzC| zQ+2>?Z8eI1j2@e5O9{as{O=C|rV*Y0<9@P6=YK%MX_x#1CZAxg literal 0 HcmV?d00001 diff --git a/public/static/cms/css/admin.css b/public/static/cms/css/admin.css new file mode 100644 index 0000000..0f2fd1b --- /dev/null +++ b/public/static/cms/css/admin.css @@ -0,0 +1,3 @@ +label.control-label{text-align: right;} +.form-horizontal .control-label{color: #666;} +.form-group{overflow: hidden;} \ No newline at end of file diff --git a/public/static/cms/logo.png b/public/static/cms/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e72147ceffaa51af3106e7d516c9e41fba4af3fc GIT binary patch literal 20419 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 literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/._cms b/public/themes/Simple-white/__MACOSX/._cms new file mode 100644 index 0000000000000000000000000000000000000000..1c08c56997a0c493a42052d54199d7aafc8e5757 GIT binary patch literal 176 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(lG;wCD61n vBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}@hu<*@)>!6G!eitBqRu;46Ne-knMw} z4P-h$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(lG;wCD61n vBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(lG;wCD61n vBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(lG;wCD61n vBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(lG;wCD61n vBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/cms/Index/._detail.html b/public/themes/Simple-white/__MACOSX/cms/Index/._detail.html new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/cms/Index/._index.html b/public/themes/Simple-white/__MACOSX/cms/Index/._index.html new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/home/._index b/public/themes/Simple-white/__MACOSX/home/._index new file mode 100644 index 0000000000000000000000000000000000000000..1c08c56997a0c493a42052d54199d7aafc8e5757 GIT binary patch literal 176 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(lG;wCD61n vBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/install/._info.json b/public/themes/Simple-white/__MACOSX/install/._info.json new file mode 100644 index 0000000000000000000000000000000000000000..9db0151490c48829001bff9e549439d997e080fa GIT binary patch literal 268 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@hu<*@)>!6G!eitBqRu;46Ne-knMw} z4P-h0 c*Tl`#RM*ME*-Y2m$jH^$$k@=u#m$WY0Et>Hx&QzG literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/._css b/public/themes/Simple-white/__MACOSX/public/._css new file mode 100644 index 0000000000000000000000000000000000000000..1c08c56997a0c493a42052d54199d7aafc8e5757 GIT binary patch literal 176 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(lG;wCD61n vBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(lG;wCD61n vBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(lG;wCD61n vBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/css/._animate.css b/public/themes/Simple-white/__MACOSX/public/css/._animate.css new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/css/._common.css b/public/themes/Simple-white/__MACOSX/public/css/._common.css new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/css/._iconfont.css b/public/themes/Simple-white/__MACOSX/public/css/._iconfont.css new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/css/._style.css b/public/themes/Simple-white/__MACOSX/public/css/._style.css new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/img/._112648.png b/public/themes/Simple-white/__MACOSX/public/img/._112648.png new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/img/._297462.png b/public/themes/Simple-white/__MACOSX/public/img/._297462.png new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/img/._about.jpg b/public/themes/Simple-white/__MACOSX/public/img/._about.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/img/._bg1.jpg b/public/themes/Simple-white/__MACOSX/public/img/._bg1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/img/._blog_img.jpg b/public/themes/Simple-white/__MACOSX/public/img/._blog_img.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/img/._crumb.png b/public/themes/Simple-white/__MACOSX/public/img/._crumb.png new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/img/._eacoophp_logo_v1.png b/public/themes/Simple-white/__MACOSX/public/img/._eacoophp_logo_v1.png new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/img/._owl-login-arm.png b/public/themes/Simple-white/__MACOSX/public/img/._owl-login-arm.png new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/img/._owl-login.png b/public/themes/Simple-white/__MACOSX/public/img/._owl-login.png new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/img/._qq2.png b/public/themes/Simple-white/__MACOSX/public/img/._qq2.png new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/img/._slide1.jpg b/public/themes/Simple-white/__MACOSX/public/img/._slide1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/img/._slide2.jpg b/public/themes/Simple-white/__MACOSX/public/img/._slide2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/img/._top.png b/public/themes/Simple-white/__MACOSX/public/img/._top.png new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/img/._topup.png b/public/themes/Simple-white/__MACOSX/public/img/._topup.png new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/js/._SuperSlide.js b/public/themes/Simple-white/__MACOSX/public/js/._SuperSlide.js new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/js/._common.js b/public/themes/Simple-white/__MACOSX/public/js/._common.js new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/js/._jquery.cookie.js b/public/themes/Simple-white/__MACOSX/public/js/._jquery.cookie.js new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/js/._jquery.lazyload.js b/public/themes/Simple-white/__MACOSX/public/js/._jquery.lazyload.js new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/js/._swiper.js b/public/themes/Simple-white/__MACOSX/public/js/._swiper.js new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/__MACOSX/public/js/._wow.js b/public/themes/Simple-white/__MACOSX/public/js/._wow.js new file mode 100644 index 0000000000000000000000000000000000000000..3b060cf8a0a68b4fb1aaa55be3142e17e34dbb88 GIT binary patch literal 212 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@gg7w@vi_e5x_AdBnYYuq+J^qI7A5ADWagzZ6zUroSQuNICMKJvrkN*O2PdW_7G+wSS{ND` l8CjU=T9{ZG>YBKjn(8`PIGgF38yUG88yOqAxVX770059bADjRH literal 0 HcmV?d00001 diff --git a/public/themes/Simple-white/cms/Index/detail.html b/public/themes/Simple-white/cms/Index/detail.html new file mode 100644 index 0000000..803c73f --- /dev/null +++ b/public/themes/Simple-white/cms/Index/detail.html @@ -0,0 +1,48 @@ +{extend name="$_theme_public_layout"/} +{block name="style"} + +{/block} + +{block name="main"} +
+
+ +
+ +
+ +
+
+
+
+

{$info.title}

+ + +
+
+
+

{$info.create_time|strtotime|friendly_date} +

+
+

{$info.content}

+
+ + +
+
+
+ {include file="sidebar" /} +
+
+
+
+ +{/block} + +{block name="script"} + +{/block} diff --git a/public/themes/Simple-white/cms/Index/index.html b/public/themes/Simple-white/cms/Index/index.html new file mode 100644 index 0000000..0a60032 --- /dev/null +++ b/public/themes/Simple-white/cms/Index/index.html @@ -0,0 +1,57 @@ +{extend name="$_theme_public_layout"/} + +{block name="main"} +
+
+
+ +
+ +
+
+ {notempty name="post_list"} +
    + {volist name="post_list" id="data"} +
  • +
    + + + {$data.create_time|strtotime|'Y',|date} + + {$data.create_time|strtotime|'m-d',|date} + +
    + +

    {$data.title}

    +
    +
    + {$data.digest} +
    +
    + + {$data.title} + + +
    +
  • + {/volist} +
+ {else/} +

暂无内容

+ {/notempty} +
+ +
+ {include file="sidebar" /} +
+
+
+
+ +{/block} + +{block name="script"} + +{/block} diff --git a/public/themes/Simple-white/cms/sidebar.html b/public/themes/Simple-white/cms/sidebar.html new file mode 100644 index 0000000..17ad3e1 --- /dev/null +++ b/public/themes/Simple-white/cms/sidebar.html @@ -0,0 +1,38 @@ + + + \ No newline at end of file diff --git a/public/themes/Simple-white/cover.jpg b/public/themes/Simple-white/cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4e2990cee674c1d00f1f80a5aa7adfbed81544da GIT binary patch literal 152152 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