qq vor 6 Jahren
Commit
887f510f16
100 geänderte Dateien mit 39582 neuen und 0 gelöschten Zeilen
  1. 1 0
      .example.env
  2. 5 0
      .gitignore
  3. 42 0
      .travis.yml
  4. 32 0
      LICENSE.txt
  5. 52 0
      README.md
  6. 1 0
      app/.htaccess
  7. 103 0
      app/BaseController.php
  8. 172 0
      app/Cgf/definition/article.php
  9. 274 0
      app/Cgf/definition/user.php
  10. 1802 0
      app/CgfController.php
  11. 68 0
      app/ExceptionHandle.php
  12. 17 0
      app/Request.php
  13. 263 0
      app/common.php
  14. 583 0
      app/common/taglib/Html.php
  15. 15 0
      app/controller/Article.php
  16. 426 0
      app/controller/Cgf/definition/article.php
  17. 10 0
      app/controller/Error.php
  18. 10 0
      app/controller/GoodsOrder.php
  19. 346 0
      app/controller/Index.php
  20. 151 0
      app/controller/Sms.php
  21. 12 0
      app/controller/User.php
  22. 27 0
      app/event.php
  23. 12 0
      app/middleware.php
  24. 19 0
      app/provider.php
  25. 1 0
      app/view/README.md
  26. 204 0
      app/view/article/add.html
  27. 217 0
      app/view/article/index.html
  28. 66 0
      app/view/index/pay.html
  29. 3 0
      app/view/layout.html
  30. 24 0
      app/view/public/add.html
  31. 74 0
      app/view/public/add_public.html
  32. 41 0
      app/view/public/detail.html
  33. 71 0
      app/view/public/edit.html
  34. 67 0
      app/view/public/footer.html
  35. 2 0
      app/view/public/footer2.html
  36. 9 0
      app/view/public/footer_cgf.html
  37. 24 0
      app/view/public/footer_new.html
  38. 714 0
      app/view/public/header.html
  39. 8 0
      app/view/public/header2.html
  40. 232 0
      app/view/public/header_cgf.html
  41. 163 0
      app/view/public/header_new.html
  42. 55 0
      app/view/public/index.html
  43. 356 0
      app/view/public/layout_course.html
  44. 3 0
      app/view/public/lists.html
  45. 275 0
      app/view/public/login.html
  46. 15 0
      app/view/public/login1.html
  47. 232 0
      app/view/public/loginout.html
  48. 220 0
      app/view/public/register.html
  49. 15 0
      app/view/public/register2.html
  50. 44 0
      app/view/public/top.html
  51. 113 0
      app/view/user/add.html
  52. 116 0
      app/view/user/index.html
  53. 26 0
      build.example.php
  54. 44 0
      composer.json
  55. 1356 0
      composer.lock
  56. 48 0
      config/app.php
  57. 39 0
      config/cache.php
  58. 21 0
      config/console.php
  59. 28 0
      config/cookie.php
  60. 72 0
      config/database.php
  61. 20 0
      config/filesystem.php
  62. 37 0
      config/lang.php
  63. 55 0
      config/log.php
  64. 63 0
      config/route.php
  65. 27 0
      config/session.php
  66. 33 0
      config/template.php
  67. 20 0
      config/trace.php
  68. 2 0
      extend/.gitignore
  69. 8888 0
      public/'.32d49b093ac80c39b290c4027d6354e6.'.css
  70. 8 0
      public/.htaccess
  71. 287 0
      public/32d49b093ac80c39b290c4027d6354e6.js
  72. 275 0
      public/PCASClass.js
  73. 5773 0
      public/Plugin/bootstrap/bootstrap-ie6.css
  74. 1 0
      public/Plugin/bootstrap/bootstrap-ie6.min.css
  75. 1109 0
      public/Plugin/bootstrap/bootstrap-responsive.css
  76. 9 0
      public/Plugin/bootstrap/bootstrap-responsive.min.css
  77. 6158 0
      public/Plugin/bootstrap/bootstrap.css
  78. 2268 0
      public/Plugin/bootstrap/bootstrap.js
  79. 9 0
      public/Plugin/bootstrap/bootstrap.min.css
  80. 6 0
      public/Plugin/bootstrap/bootstrap.min.js
  81. BIN
      public/Plugin/bootstrap/glyphicons-halflings-white.png
  82. BIN
      public/Plugin/bootstrap/glyphicons-halflings.png
  83. 59 0
      public/Plugin/bootstrap/ie.css
  84. 6 0
      public/Plugin/cropper-2.3/css/bootstrap.min.css
  85. 4 0
      public/Plugin/cropper-2.3/css/font-awesome.min.css
  86. 237 0
      public/Plugin/cropper-2.3/css/main.css
  87. 415 0
      public/Plugin/cropper-2.3/css/qunit.css
  88. 375 0
      public/Plugin/cropper-2.3/dist/cropper.css
  89. 3005 0
      public/Plugin/cropper-2.3/dist/cropper.js
  90. 9 0
      public/Plugin/cropper-2.3/dist/cropper.min.css
  91. 10 0
      public/Plugin/cropper-2.3/dist/cropper.min.js
  92. BIN
      public/Plugin/cropper-2.3/fonts/FontAwesome.otf
  93. BIN
      public/Plugin/cropper-2.3/fonts/fontawesome-webfont.eot
  94. 685 0
      public/Plugin/cropper-2.3/fonts/fontawesome-webfont.svg
  95. BIN
      public/Plugin/cropper-2.3/fonts/fontawesome-webfont.ttf
  96. BIN
      public/Plugin/cropper-2.3/fonts/fontawesome-webfont.woff
  97. BIN
      public/Plugin/cropper-2.3/fonts/fontawesome-webfont.woff2
  98. BIN
      public/Plugin/cropper-2.3/fonts/glyphicons-halflings-regular.eot
  99. 288 0
      public/Plugin/cropper-2.3/fonts/glyphicons-halflings-regular.svg
  100. 0 0
      public/Plugin/cropper-2.3/fonts/glyphicons-halflings-regular.ttf

+ 1 - 0
.example.env

@@ -0,0 +1 @@
+APP_DEBUG = true

[APP]
DEFAULT_TIMEZONE = Asia/Shanghai

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = test
USERNAME = username
PASSWORD = password
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true

[LANG]
default_lang = zh-cn

+ 5 - 0
.gitignore

@@ -0,0 +1,5 @@
+/.idea
+/.vscode
+/vendor
+*.log
+.env

Datei-Diff unterdrückt, da er zu groß ist
+ 42 - 0
.travis.yml


+ 32 - 0
LICENSE.txt

@@ -0,0 +1,32 @@
+
+ThinkPHP遵循Apache2开源协议发布,并提供免费使用。
+版权所有Copyright © 2006-2016 by ThinkPHP (http://thinkphp.cn)
+All rights reserved。
+ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。
+
+Apache Licence是著名的非盈利开源组织Apache采用的协议。
+该协议和BSD类似,鼓励代码共享和尊重原作者的著作权,
+允许代码修改,再作为开源或商业软件发布。需要满足
+的条件: 
+1. 需要给代码的用户一份Apache Licence ;
+2. 如果你修改了代码,需要在被修改的文件中说明;
+3. 在延伸的代码中(修改和有源代码衍生的代码中)需要
+带有原来代码中的协议,商标,专利声明和其他原来作者规
+定需要包含的说明;
+4. 如果再发布的产品中包含一个Notice文件,则在Notice文
+件中需要带有本协议内容。你可以在Notice中增加自己的
+许可,但不可以表现为对Apache Licence构成更改。 
+具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.

+ 52 - 0
README.md

@@ -0,0 +1,52 @@
+ThinkPHP 6.0
+===============
+
+> 运行环境要求PHP7.1+。
+
+## 主要新特性
+
+* 采用`PHP7`强类型(严格模式)
+* 支持更多的`PSR`规范
+* 原生多应用支持
+* 更强大和易用的查询
+* 全新的事件系统
+* 模型事件和数据库事件统一纳入事件系统
+* 模板引擎分离出核心
+* 内部功能中间件化
+* SESSION/Cookie机制改进
+* 对Swoole以及协程支持改进
+* 对IDE更加友好
+* 统一和精简大量用法
+
+## 安装
+
+~~~
+composer create-project topthink/think tp 6.0.*-dev
+~~~
+
+如果需要更新框架使用
+~~~
+composer update topthink/framework
+~~~
+
+## 文档
+
+[完全开发手册](https://www.kancloud.cn/manual/thinkphp6_0/content)
+
+## 参与开发
+
+请参阅 [ThinkPHP 核心框架包](https://github.com/top-think/framework)。
+
+## 版权信息
+
+ThinkPHP遵循Apache2开源协议发布,并提供免费使用。
+
+本项目包含的第三方源码和二进制文件之版权信息另行标注。
+
+版权所有Copyright © 2006-2019 by ThinkPHP (http://thinkphp.cn)
+
+All rights reserved。
+
+ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。
+
+更多细节参阅 [LICENSE.txt](LICENSE.txt)

+ 1 - 0
app/.htaccess

@@ -0,0 +1 @@
+deny from all

+ 103 - 0
app/BaseController.php

@@ -0,0 +1,103 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2019 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+declare (strict_types = 1);
+
+namespace app;
+
+use think\App;
+use think\exception\ValidateException;
+use think\Validate;
+
+/**
+ * 控制器基础类
+ */
+abstract class BaseController
+{
+    /**
+     * Request实例
+     * @var \think\Request
+     */
+    protected $request;
+
+    /**
+     * 应用实例
+     * @var \think\App
+     */
+    protected $app;
+
+    /**
+     * 是否批量验证
+     * @var bool
+     */
+    protected $batchValidate = false;
+
+    /**
+     * 控制器中间件
+     * @var array
+     */
+    protected $middleware = [];
+
+    /**
+     * 构造方法
+     * @access public
+     * @param  App  $app  应用对象
+     */
+    public function __construct(App $app)
+    {
+        $this->app     = $app;
+        $this->request = $this->app->request;
+
+        // 控制器初始化
+        $this->initialize();
+    }
+
+    // 初始化
+    protected function initialize()
+    {}
+
+    /**
+     * 验证数据
+     * @access protected
+     * @param  array        $data     数据
+     * @param  string|array $validate 验证器名或者验证规则数组
+     * @param  array        $message  提示信息
+     * @param  bool         $batch    是否批量验证
+     * @return array|string|true
+     * @throws ValidateException
+     */
+    protected function validate(array $data, $validate, array $message = [], bool $batch = false)
+    {
+        if (is_array($validate)) {
+            $v = new Validate();
+            $v->rule($validate);
+        } else {
+            if (strpos($validate, '.')) {
+                // 支持场景
+                list($validate, $scene) = explode('.', $validate);
+            }
+            $class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate);
+            $v     = new $class();
+            if (!empty($scene)) {
+                $v->scene($scene);
+            }
+        }
+
+        $v->message($message);
+
+        // 是否批量验证
+        if ($batch || $this->batchValidate) {
+            $v->batch(true);
+        }
+
+        return $v->failException(true)->check($data);
+    }
+
+}

+ 172 - 0
app/Cgf/definition/article.php

@@ -0,0 +1,172 @@
+<?php 
+ return array (
+  'base' => 
+  array (
+    'id' => 
+    array (
+      'name' => 'id',
+      'type' => 'text',
+      'size' => 10,
+      'zh' => 'ID',
+    ),
+    'cate_id' => 
+    array (
+      'name' => 'cate_id',
+      'type' => 'text',
+      'size' => 10,
+      'zh' => '栏目',
+    ),
+    'title' => 
+    array (
+      'name' => 'title',
+      'type' => 'text',
+      'size' => 30,
+      'zh' => '标题',
+    ),
+    'title_style' => 
+    array (
+      'name' => 'title_style',
+      'type' => 'text',
+      'size' => 30,
+      'zh' => '标题样式',
+    ),
+    'thumb' => 
+    array (
+      'name' => 'thumb',
+      'type' => 'text',
+      'size' => 30,
+      'zh' => '缩略图',
+    ),
+    'keywords' => 
+    array (
+      'name' => 'keywords',
+      'type' => 'text',
+      'size' => 30,
+      'zh' => '关键词',
+    ),
+    'description' => 
+    array (
+      'name' => 'description',
+      'type' => 'textarea',
+      'row' => 10,
+      'zh' => 'SEO简介',
+    ),
+    'content' => 
+    array (
+      'name' => 'content',
+      'type' => 'textarea',
+      'row' => 10,
+      'zh' => '内容',
+    ),
+    'template' => 
+    array (
+      'name' => 'template',
+      'type' => 'text',
+      'size' => 30,
+      'zh' => '模板',
+    ),
+    'status' => 
+    array (
+      'name' => 'status',
+      'type' => 'text',
+      'size' => 10,
+      'zh' => '状态',
+    ),
+    'sort' => 
+    array (
+      'name' => 'sort',
+      'type' => 'text',
+      'size' => 10,
+      'zh' => '排序',
+    ),
+    'hits' => 
+    array (
+      'name' => 'hits',
+      'type' => 'text',
+      'size' => 10,
+      'zh' => '点击次数',
+    ),
+    'create_time' => 
+    array (
+      'name' => 'create_time',
+      'type' => 'text',
+      'size' => 10,
+      'zh' => '创建时间',
+    ),
+    'update_time' => 
+    array (
+      'name' => 'update_time',
+      'type' => 'text',
+      'size' => 10,
+      'zh' => '更新时间',
+    ),
+    'image' => 
+    array (
+      'name' => 'image',
+      'type' => 'text',
+      'size' => 30,
+      'zh' => '缩略图',
+    ),
+    'images' => 
+    array (
+      'name' => 'images',
+      'type' => 'textarea',
+      'row' => 10,
+      'zh' => '图片集',
+    ),
+    'download' => 
+    array (
+      'name' => 'download',
+      'type' => 'text',
+      'size' => 30,
+      'zh' => '文件下载',
+    ),
+    'author' => 
+    array (
+      'name' => 'author',
+      'type' => 'text',
+      'size' => 30,
+      'zh' => '作者',
+    ),
+    'source' => 
+    array (
+      'name' => 'source',
+      'type' => 'text',
+      'size' => 30,
+      'zh' => '来源',
+    ),
+    'summary' => 
+    array (
+      'name' => 'summary',
+      'type' => 'textarea',
+      'row' => 10,
+      'zh' => '摘要',
+    ),
+    'tags' => 
+    array (
+      'name' => 'tags',
+      'type' => 'text',
+      'size' => 30,
+      'zh' => 'TAG',
+    ),
+  ),
+  'tableInfo' => 
+  array (
+    'function' => 'function_name',
+    'pageButton' => 
+    array (
+      0 => 'export',
+      1 => 'showMenu',
+      2 => 'add',
+    ),
+    'sort' => 
+    array (
+      0 => 'create_time',
+      1 => 'desc',
+    ),
+    'action' => 'edit:编辑:id,del:删除:id',
+    'property' => 'none',
+    'title' => '文章',
+    'name' => 'article',
+  ),
+);

+ 274 - 0
app/Cgf/definition/user.php

@@ -0,0 +1,274 @@
+<?php 
+ return array (
+  'base' => 
+  array (
+    'id' => 
+    array (
+      'name' => 'id',
+      'type' => 'hidden',
+      'size' => 10,
+      'zh' => '编号',
+    ),
+    'username' => 
+    array (
+      'name' => 'username',
+      'type' => '',
+      'size' => 30,
+      'arrRules' => 
+      array (
+        0 => 
+        array (
+          'type' => 'require',
+          'msg' => '用户名必须填写',
+        ),
+        1 => 
+        array (
+          'type' => 'unique',
+        ),
+        2 => 
+        array (
+          'type' => 'reg',
+          'reg' => '/\\w{3,6}/i',
+          'msg' => '用户名不合法',
+        ),
+      ),
+      'tips' => '用户名为字符',
+      'zh' => '用户名',
+    ),
+    'password' => 
+    array (
+      'name' => 'password',
+      'type' => 'password',
+      'size' => 30,
+      'arrRules' => 
+      array (
+        0 => 
+        array (
+          'type' => 'require',
+          'msg' => '密码必须填写',
+        ),
+      ),
+      'zh' => '密码',
+    ),
+    'email' => 
+    array (
+      'name' => 'email',
+      'type' => 'text',
+      'size' => 30,
+      'arrRules' => 
+      array (
+        0 => 
+        array (
+          'type' => 'require',
+          'msg' => '邮箱必须填写',
+        ),
+        1 => 
+        array (
+          'type' => 'email',
+          'msg' => '邮箱格式不正确',
+        ),
+      ),
+      'zh' => '邮箱',
+    ),
+    'avatar' => 
+    array (
+      'name' => 'avatar',
+      'type' => 'image',
+      'size' => 30,
+      'zh' => '头像',
+    ),
+    'birthday' => 
+    array (
+      'name' => 'birthday',
+      'type' => 'date',
+      'arrRules' => 
+      array (
+        0 => 
+        array (
+          'type' => 'require',
+          'msg' => '密码必须填写',
+        ),
+      ),
+      'zh' => '生日',
+    ),
+    'status' => 
+    array (
+      'name' => 'status',
+      'type' => 'select',
+      'size' => 10,
+      'rawOption' => '0:禁用,1:正常,2:审核中',
+      'options' => 
+      array (
+        0 => '禁用',
+        1 => '正常',
+        2 => '审核中',
+      ),
+      'arrRules' => 
+      array (
+        0 => 
+        array (
+          'type' => 'require',
+        ),
+      ),
+      'tips' => '禁用则不显示',
+      'zh' => '状态',
+      'show_text' => 'status_text',
+    ),
+    'create_time' => 
+    array (
+      'name' => 'create_time',
+      'type' => 'time',
+      'zh' => '创建时间',
+    ),
+    'flag' => 
+    array (
+      'name' => 'flag',
+      'type' => 'select',
+      'size' => 30,
+      'function' => 'tpl_function=img()',
+      'rawOption' => 'function=flag_options()',
+      'options' => 
+      array (
+        'function' => 'flag_options()',
+      ),
+      'arrRules' => 
+      array (
+        0 => 
+        array (
+          'type' => 'require',
+        ),
+      ),
+      'zh' => '标记',
+      'show_text' => 'flag_text',
+    ),
+    'intro' => 
+    array (
+      'name' => 'intro',
+      'type' => 'editor',
+      'row' => 10,
+      'zh' => '用户介绍',
+    ),
+    'resume' => 
+    array (
+      'name' => 'resume',
+      'type' => 'file',
+      'size' => 30,
+      'zh' => '简历',
+    ),
+  ),
+  'edit' => 
+  array (
+    'id' => 
+    array (
+    ),
+    'username' => 
+    array (
+    ),
+    'password' => 
+    array (
+    ),
+    'email' => 
+    array (
+    ),
+    'avatar' => 
+    array (
+    ),
+    'birthday' => 
+    array (
+    ),
+    'status' => 
+    array (
+    ),
+    'flag' => 
+    array (
+    ),
+    'intro' => 
+    array (
+    ),
+    'resume' => 
+    array (
+    ),
+  ),
+  'list' => 
+  array (
+    'id' => 
+    array (
+    ),
+    'username' => 
+    array (
+    ),
+    'email' => 
+    array (
+    ),
+    'birthday' => 
+    array (
+    ),
+    'status' => 
+    array (
+    ),
+    'create_time' => 
+    array (
+    ),
+  ),
+  'search' => 
+  array (
+    'id' => 
+    array (
+    ),
+    'username' => 
+    array (
+    ),
+    'email' => 
+    array (
+    ),
+    'birthday' => 
+    array (
+    ),
+    'status' => 
+    array (
+    ),
+  ),
+  'add' => 
+  array (
+    'username' => 
+    array (
+    ),
+    'password' => 
+    array (
+    ),
+    'email' => 
+    array (
+    ),
+    'avatar' => 
+    array (
+    ),
+    'birthday' => 
+    array (
+    ),
+    'status' => 
+    array (
+    ),
+    'flag' => 
+    array (
+    ),
+    'intro' => 
+    array (
+    ),
+    'resume' => 
+    array (
+    ),
+  ),
+  'tableInfo' => 
+  array (
+    'sort' => 
+    array (
+      0 => 'add',
+      1 => 'export',
+      2 => 'showMenu',
+    ),
+    'action' => '编辑:id,查看用户浏览记录:id',
+    'property' => 'lock-birthday',
+    'title' => '用户表',
+    'name' => 'user',
+  ),
+);

Datei-Diff unterdrückt, da er zu groß ist
+ 1802 - 0
app/CgfController.php


+ 68 - 0
app/ExceptionHandle.php

@@ -0,0 +1,68 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2019 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+namespace app;
+
+use think\db\exception\DataNotFoundException;
+use think\db\exception\ModelNotFoundException;
+use think\exception\Handle;
+use think\exception\HttpException;
+use think\exception\HttpResponseException;
+use think\exception\ValidateException;
+use think\Response;
+use Throwable;
+
+/**
+ * 应用异常处理类
+ */
+class ExceptionHandle extends Handle
+{
+    /**
+     * 不需要记录信息(日志)的异常类列表
+     * @var array
+     */
+    protected $ignoreReport = [
+        HttpException::class,
+        HttpResponseException::class,
+        ModelNotFoundException::class,
+        DataNotFoundException::class,
+        ValidateException::class,
+    ];
+
+    /**
+     * 记录异常信息(包括日志或者其它方式记录)
+     *
+     * @access public
+     * @param  Throwable $exception
+     * @return void
+     */
+    public function report(Throwable $exception): void
+    {
+        // 使用内置的方式记录异常日志
+        parent::report($exception);
+    }
+
+    /**
+     * Render an exception into an HTTP response.
+     *
+     * @access public
+     * @param \think\Request   $request
+     * @param Throwable $e
+     * @return Response
+     */
+    public function render($request, Throwable $e): Response
+    {
+        // 添加自定义异常处理机制
+
+        // 其他错误交给系统处理
+        return parent::render($request, $e);
+    }
+}

+ 17 - 0
app/Request.php

@@ -0,0 +1,17 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2019 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+namespace app;
+
+class Request extends \think\Request
+{
+
+}

+ 263 - 0
app/common.php

@@ -0,0 +1,263 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: 流年 <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+// 应用公共文件
+function flag_options()
+{
+    return ['a' => 'a', 'b' => 'b'];
+}
+
+function post_json_data($url, $data_string)
+{
+    $ch = curl_init();
+    curl_setopt($ch, CURLOPT_POST, 1);
+    curl_setopt($ch, CURLOPT_URL, $url);
+    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
+    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
+            'Content-Type: application/json; charset=utf-8',
+            'Content-Length: ' . strlen($data_string))
+    );
+    ob_start();
+    curl_exec($ch);
+    $return_content = ob_get_contents();
+    ob_end_clean();
+    $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+    return array('code' => $return_code, 'result' => $return_content);
+}
+
+$arr = array('a' => '555', 'b' => 56454564);
+//dump(post_json_data('http://192.168.211.1/html/dump.php',json_encode($arr)));
+
+
+/**
+ * curl
+ *
+ * @param
+ *            string url
+ * @param
+ *            array 数据
+ * @param
+ *            int 请求超时时间
+ * @param
+ *            bool HTTPS时是否进行严格认证
+ * @return string
+ */
+function curl_post_json($url, $data,$timeout=100){
+
+    $CA = false;
+
+    // $url = "http://www.baidu.com";
+    $cacert = getcwd() . '/cacert.pem'; // CA根证书
+    $SSL    = substr($url, 0, 8) == "https://" ? true : false;
+
+    $ch     = curl_init();
+    curl_setopt($ch, CURLOPT_POST, true);
+    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
+    //var_dump($data);exit;
+    curl_setopt($ch, CURLOPT_URL, $url);
+    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
+    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout - 2);
+    //curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;cli-test)');
+    if ($SSL && $CA) {
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // 只信任CA颁布的证书
+        curl_setopt($ch, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布)
+        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配
+    } else if ($SSL && !$CA) {
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
+        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 检查证书中是否设置域名
+    }
+    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //不输出内容到页面
+//    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
+//        'Expect:'
+//    ));
+    // var_dump($data);
+
+    date_default_timezone_set("UTC");
+    $nonce          = '66C92B11FF8A425FB8D4CCFE';
+    //$nonce = $nonce1          = mt_rand(100000,9999999999);
+    $time           = time();
+    $created        = date('Y-m-d', $time) . 'T' . date('H:i:s', $time) . 'Z';
+    //$created        = '2019-07-10T15:02:08Z';
+    $password       = '33ab0a75ee246f85e41f2c15d867ca5d';
+    $nonce = base64_encode($nonce);// . $created . $password;
+    $signRawString = $nonce . $created . $password;//;//
+//    echo "明文:", $signRawString,"\n";
+//    echo "明文:", $signRawString,"\n";
+    //$signRawString = '66C92B11FF8A425FB8D4CCFE2019-07-08T17:56:46Z33ab0a75ee246f85e41f2c15d867ca5d';
+    //$signRawString='a';
+    //var_dump(hash('sha256',$signRawString,true));exit;
+    $passwordDigest = base64_encode(hash('sha256',$signRawString,true));
+    
+    //echo "明文: $signRawString \n";
+    //echo "密文: $passwordDigest \n";
+    //exit;
+
+
+    $headerArr[] = 'Authorization: WSSE realm="SDP", profile="UsernameToken", type="Appkey"';
+    $headerArr[] = 'X-WSSE:UsernameToken Username="d9c3190120db4b2ab078a543d59ba47d",PasswordDigest="' . $passwordDigest . '",Nonce="' . $nonce . '",Created="' . $created . '"';
+    $headerArr[] = 'Content-Type: application/json; charset=UTF-8';
+    curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArr);
+    //var_dump(C('test_proxy'));exit;
+    //if(C('test_proxy')) {
+    //curl_setopt($ch, CURLOPT_PROXY, '192.168.1.211:8888');
+    //}
+    $ret = curl_exec($ch);
+    if (empty($ret)) {
+        var_dump(curl_error($ch)); // 查看报错信息
+    }
+    // exit('x');
+    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+
+    if ($httpCode != 200) {
+
+    }
+    curl_close($ch);
+    //var_dump($ret);
+    return $ret;
+}
+
+function curl_post_json_pay($url, $data,$headers=[],$timeout=100){
+
+
+    $CA = false;
+
+    $cacert = getcwd() . '/cacert.pem'; // CA根证书
+    $SSL    = substr($url, 0, 8) == "https://" ? true : false;
+
+    $ch     = curl_init();
+    curl_setopt($ch, CURLOPT_POST, true);
+
+    if(!empty($data))   curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
+    //var_dump($data);exit;
+    curl_setopt($ch, CURLOPT_URL, $url);
+    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
+    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout - 2);
+    //curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;cli-test)');
+    if ($SSL && $CA) {
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // 只信任CA颁布的证书
+        curl_setopt($ch, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布)
+        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配
+    } else if ($SSL && !$CA) {
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
+        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 检查证书中是否设置域名
+    }
+
+    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //不输出内容到页面
+
+    date_default_timezone_set("UTC");
+
+
+
+    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
+    //var_dump(C('test_proxy'));exit;
+    //if(C('test_proxy')) {
+    //curl_setopt($ch, CURLOPT_PROXY, '192.168.16.96:8888');
+    //}
+    $ret = curl_exec($ch);
+    if (empty($ret)) {
+        var_dump(curl_error($ch)); // 查看报错信息
+    }
+
+    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+//
+//    if ($httpCode != 200) {
+//        $tmp              = array();
+//        $tmp['http_code'] = $httpCode;
+//        $tmp['data']      = $ret;
+//
+//        //echo "\n服务器错误:$httpCode";
+//        //echo $ret;
+//        $ret = json_encode($tmp);
+//    }
+    curl_close($ch);
+    //var_dump($ret);
+    return $ret;
+}
+
+
+
+
+/**
+ * curl
+ *
+ * @param
+ *            string url
+ * @param
+ *            array 数据
+ * @param
+ *            int 请求超时时间
+ * @param
+ *            bool HTTPS时是否进行严格认证
+ * @return string
+ */
+function curl_post_json_sdk($url, $data,$timeout=100){
+
+    $CA = false;
+
+    // $url = "http://www.baidu.com";
+    $cacert = getcwd() . '/cacert.pem'; // CA根证书
+    $SSL    = substr($url, 0, 8) == "https://" ? true : false;
+
+    $ch     = curl_init();
+    curl_setopt($ch, CURLOPT_POST, true);
+    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
+    //var_dump($data);exit;
+    curl_setopt($ch, CURLOPT_URL, $url);
+    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
+    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout - 2);
+    //curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;cli-test)');
+    if ($SSL && $CA) {
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // 只信任CA颁布的证书
+        curl_setopt($ch, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布)
+        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配
+    } else if ($SSL && !$CA) {
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
+        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 检查证书中是否设置域名
+    }
+    //curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+//    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
+//        'Expect:'
+//    ));
+    // var_dump($data);
+
+
+    $headerArr=[];
+
+    curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArr);
+    //var_dump(C('test_proxy'));exit;
+    //if(C('test_proxy')) {
+    curl_setopt($ch, CURLOPT_PROXY, '192.168.16.96:8888');
+    //}
+    $ret = curl_exec($ch);
+    if (empty($ret)) {
+        var_dump(curl_error($ch)); // 查看报错信息
+    }
+    // var_dump($ret);
+    // exit('x');
+    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+
+    if ($httpCode != 200) {
+        $tmp              = array();
+        $tmp['http_code'] = $httpCode;
+        $tmp['data']      = $ret;
+
+        //echo "\n服务器错误:$httpCode";
+        //echo $ret;
+        $ret = json_encode($tmp);
+    }
+    curl_close($ch);
+    //var_dump($ret);
+    return $ret;
+}
+
+function I(string $key = '', $default = null, $filter = ''){
+    return input($key,$default,$filter);
+}

Datei-Diff unterdrückt, da er zu groß ist
+ 583 - 0
app/common/taglib/Html.php


+ 15 - 0
app/controller/Article.php

@@ -0,0 +1,15 @@
+<?php
+namespace app\controller;
+
+
+
+
+
+use app\CgfController;
+
+
+class Article extends CgfController //继承cgf或引入cgf后自动实现功能
+{
+
+    
+}

+ 426 - 0
app/controller/Cgf/definition/article.php

@@ -0,0 +1,426 @@
+<?php 
+ return array (
+  'base' => 
+  array (
+    'id' => 
+    array (
+      'name' => 'id',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => 'ID',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'cate_id' => 
+    array (
+      'name' => 'cate_id',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '栏目',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'title' => 
+    array (
+      'name' => 'title',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '标题',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'title_style' => 
+    array (
+      'name' => 'title_style',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '标题样式',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'thumb' => 
+    array (
+      'name' => 'thumb',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '缩略图',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'keywords' => 
+    array (
+      'name' => 'keywords',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '关键词',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'description' => 
+    array (
+      'name' => 'description',
+      'type' => '',
+      'row' => 10,
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => 'SEO简介',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+      'size' => '',
+    ),
+    'content' => 
+    array (
+      'name' => 'content',
+      'type' => '',
+      'row' => 10,
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '内容',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+      'size' => '',
+    ),
+    'template' => 
+    array (
+      'name' => 'template',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '模板',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'status' => 
+    array (
+      'name' => 'status',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '状态',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'sort' => 
+    array (
+      'name' => 'sort',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '排序',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'hits' => 
+    array (
+      'name' => 'hits',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '点击次数',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'create_time' => 
+    array (
+      'name' => 'create_time',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '创建时间',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'update_time' => 
+    array (
+      'name' => 'update_time',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '更新时间',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'image' => 
+    array (
+      'name' => 'image',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '缩略图',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'images' => 
+    array (
+      'name' => 'images',
+      'type' => '',
+      'row' => 10,
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '图片集',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+      'size' => '',
+    ),
+    'download' => 
+    array (
+      'name' => 'download',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '文件下载',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'author' => 
+    array (
+      'name' => 'author',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '作者',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'source' => 
+    array (
+      'name' => 'source',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '来源',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+    'summary' => 
+    array (
+      'name' => 'summary',
+      'type' => '',
+      'row' => 10,
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => '摘要',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+      'size' => '',
+    ),
+    'tags' => 
+    array (
+      'name' => 'tags',
+      'type' => '',
+      'size' => '',
+      'showPage' => '',
+      'checkType' => '',
+      'options' => '',
+      'function' => '',
+      'zh' => 'TAG',
+      'tips' => '',
+      'flag' => '',
+      'arrShowPages' => 
+      array (
+      ),
+      'arrRules' => '',
+      'rawOption' => '',
+      'validation' => '',
+    ),
+  ),
+  'list' => 
+  array (
+  ),
+  'search' => 
+  array (
+  ),
+  'add' => 
+  array (
+  ),
+  'edit' => 
+  array (
+  ),
+  'tableInfo' => 
+  array (
+    'title' => '文章模型表',
+    'name' => 'article',
+  ),
+);

+ 10 - 0
app/controller/Error.php

@@ -0,0 +1,10 @@
+<?php
+namespace app\controller;
+
+class Error
+{
+    public function __call($method, $args)
+    {
+        return 'error request!';
+    }
+}

+ 10 - 0
app/controller/GoodsOrder.php

@@ -0,0 +1,10 @@
+<?php
+namespace app\controller;
+
+use app\CgfController;
+
+class GoodsOrder extends CgfController //继承cgf或引入cgf后自动实现功能
+{
+
+    
+}

Datei-Diff unterdrückt, da er zu groß ist
+ 346 - 0
app/controller/Index.php


+ 151 - 0
app/controller/Sms.php

@@ -0,0 +1,151 @@
+<?php
+
+namespace app\controller;
+
+use app\BaseController;
+use think\facade\Db;
+
+class Sms extends BaseController
+{
+
+    protected $users = [
+        [
+            'keyID'     => '123456',
+            'keySecret' => '',
+        ]
+    ];
+
+
+    /**
+     * $templateId
+     * $param
+     * $phone_number
+     * countryID
+     */
+    function send()
+    {
+
+        $headerAuthorization = I('server.HTTP_AUTHORIZATION');
+        $headerAuthorization = str_replace('"', '', $headerAuthorization);
+        $headerAuthorization = explode(',', $headerAuthorization);
+        $headerAuthorization = array_map(function ($v) {
+            return trim($v);
+        }, $headerAuthorization);
+        parse_str(implode('&', $headerAuthorization), $headerAuthorization);
+
+
+        $postDta = file_get_contents('php://input');
+        $postDta = json_decode($postDta, true);
+
+        $postNonce = $headerAuthorization['nonce'];
+        $postTime  = $headerAuthorization['time'];
+        $postKeyID = $headerAuthorization['keyID'];
+        $postSign  = $headerAuthorization['sign'];
+
+
+        $dbUserInfo = Db::name('user')->where(['key_id' => $headerAuthorization['keyID']])->find();
+        $param      = $postDta['paramValues'];
+
+        $dbUserInfo               = [];
+        $dbUserInfo['key_id']     = "123456";
+        $dbUserInfo['key_secret'] = "12345678";
+
+
+        $ret = [];
+
+        $sign = $this->makeSign($postNonce, $postTime, $dbUserInfo['key_secret']);
+        if ($sign != $postSign) {
+            $templateId  = I('template_id');
+            $templateId  = "sms_123456";
+            $phoneNumber = I('phoneNumber'); //8615812345678
+
+            $templateContent = '短信内容 {$content} [test]';
+            $smsContent      = str_replace('{$user}', $param['user'], $templateContent);
+
+            $countryID = I('countryID');
+
+            $countryID = 'CN';
+
+
+            $url                     = "https://www.huaweiita.com:17131/apiaccess/sms/sendTemplateSms/v1";
+            $params['smsTemplateId'] = '695db7b5-6d4f-4791-aea0-f733f2ef06ce';
+
+            $params['paramValues'] = $param; //        paramValues:{"user":"XXX"}
+            $params['msisdn']      = $phoneNumber;
+            $params['countryID']   = $countryID;
+            $params['operatorCode']   = $postDta['operatorCode'];
+
+
+            $retCurl = curl_post_json($url, json_encode($params));
+            $retCurl = json_decode($retCurl,true); //原始信息入库
+            if($retCurl['code'] == '0000000'){
+                $ret['code'] = 1;
+                $ret['msg']  = $retCurl['description'];
+            }else{
+                $ret['code'] = 0;
+                $ret['msg']  = $retCurl['description'];
+                $ret['error_code'] = $retCurl['code'];
+                $ret['error_msg'] = $retCurl['exErrorMessage'];
+
+                //记录原始错误消息入库
+            }
+            //var_dump($ret);exit('sb');
+
+
+        } else {
+            $ret         = [];
+            $ret['code'] = 0;
+            $ret['msg']  = 'authentication failure';
+            //return $ret;
+            //echo json_encode($ret);
+            // exit;
+
+        }
+
+        return $ret;
+
+
+        //$sign      = "";
+
+
+    }
+
+    function makeSign($nonce, $time, $key)
+    {
+        $signRawString = $nonce . $time . $key;
+        return base64_encode(hash('sha256', $signRawString));
+
+    }
+
+    /**
+     *
+     * 检测签名
+     */
+    public function CheckSign()
+    {
+
+        $sign = $this->MakeSign();
+        if ($this->GetSign() == $sign) {
+            return true;
+        }
+        throw new WxPayException("签名错误!");
+    }
+
+
+    function sendToH3c()
+    {
+        $url                     = "https://www.huaweiita.com:17131/apiaccess/sms/sendTemplateSms/v1";
+        $params                  = [];
+        $params['smsTemplateId'] = '695db7b5-6d4f-4791-aea0-f733f2ef06ce';
+        $paramValues             = [];
+        $paramValues['user']     = 'test1';
+        $params['paramValues']   = $paramValues; //        paramValues:{"user":"XXX"}
+        $params['msisdn']        = '8615821868265';
+        $params['countryID']     = 'CN';
+
+
+        $ret = curl_post_json($url, json_encode($params));
+    }
+
+
+}

+ 12 - 0
app/controller/User.php

@@ -0,0 +1,12 @@
+<?php
+namespace app\controller;
+
+
+use app\CgfController;
+
+
+class User extends CgfController
+{
+
+    
+}

+ 27 - 0
app/event.php

@@ -0,0 +1,27 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+// 事件定义文件
+return [
+    'bind'      => [
+    ],
+
+    'listen'    => [
+        'AppInit'  => [],
+        'HttpRun'  => [],
+        'HttpEnd'  => [],
+        'LogLevel' => [],
+        'LogWrite' => [],
+    ],
+
+    'subscribe' => [
+    ],
+];

+ 12 - 0
app/middleware.php

@@ -0,0 +1,12 @@
+<?php
+
+return [
+    // 全局请求缓存
+    // \think\middleware\CheckRequestCache::class,
+    // 多语言加载
+    // \think\middleware\LoadLangPack::class,
+    // Session初始化
+    // \think\middleware\SessionInit::class,
+    // 页面Trace调试
+    // \think\middleware\TraceDebug::class,
+];

+ 19 - 0
app/provider.php

@@ -0,0 +1,19 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2019 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+use app\ExceptionHandle;
+use app\Request;
+
+// 容器Provider定义文件
+return [
+    'think\Request'          => Request::class,
+    'think\exception\Handle' => ExceptionHandle::class,
+];

+ 1 - 0
app/view/README.md

@@ -0,0 +1 @@
+如果不使用模板,可以删除该目录

+ 204 - 0
app/view/article/add.html

@@ -0,0 +1,204 @@
+<script type="text/javascript" charset="utf-8" src="http://public.rrbrr.com/Plugin/ueditor-1.4.3.3/ueditor.config.js"></script>
+<script type="text/javascript" charset="utf-8" src="http://public.rrbrr.com/Plugin/ueditor-1.4.3.3/ueditor.all.min.js"> </script>
+<script type="text/javascript" charset="utf-8" src="http://public.rrbrr.com/Plugin/ueditor-1.4.3.3/lang/zh-cn/zh-cn.js"></script>
+
+
+
+
+<form class="form-horizontal" role="form"  method="post" action="__URL__/save/">
+    <div class="form-group" style="display: none" >
+    <label for="id" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> ID</label>
+    <div class="col-sm-4">
+        <input  type="hidden"  class="form-control" name="id" id="id"  value="{$vo.id}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="cate_id" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 栏目</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="cate_id" type="text" id="cate_id" size="10" value="{$vo[cate_id] ? $vo[cate_id] : $_GET[cate_id]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="title" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 标题</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="title" type="text" id="title" size="30" value="{$vo[title] ? $vo[title] : $_GET[title]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="title_style" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 标题样式</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="title_style" type="text" id="title_style" size="30" value="{$vo[title_style] ? $vo[title_style] : $_GET[title_style]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="thumb" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 缩略图</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="thumb" type="text" id="thumb" size="30" value="{$vo[thumb] ? $vo[thumb] : $_GET[thumb]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="keywords" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 关键词</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="keywords" type="text" id="keywords" size="30" value="{$vo[keywords] ? $vo[keywords] : $_GET[keywords]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="description" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> SEO简介</label>
+    <div class="col-sm-4">
+        <textarea rows="5"   class="form-control" name="description"  id="description">{$vo.description}</textarea>
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="content" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 内容</label>
+    <div class="col-sm-4">
+        <textarea rows="5"   class="form-control" name="content"  id="content">{$vo.content}</textarea>
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="template" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 模板</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="template" type="text" id="template" size="30" value="{$vo[template] ? $vo[template] : $_GET[template]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="status" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 状态</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="status" type="text" id="status" size="10" value="{$vo[status] ? $vo[status] : $_GET[status]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="sort" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 排序</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="sort" type="text" id="sort" size="10" value="{$vo[sort] ? $vo[sort] : $_GET[sort]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="hits" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 点击次数</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="hits" type="text" id="hits" size="10" value="{$vo[hits] ? $vo[hits] : $_GET[hits]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="create_time" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 创建时间</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="create_time" type="text" id="create_time" size="10" value="{$vo[create_time] ? $vo[create_time] : $_GET[create_time]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="update_time" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 更新时间</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="update_time" type="text" id="update_time" size="10" value="{$vo[update_time] ? $vo[update_time] : $_GET[update_time]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="image" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 缩略图</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="image" type="text" id="image" size="30" value="{$vo[image] ? $vo[image] : $_GET[image]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="images" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 图片集</label>
+    <div class="col-sm-4">
+        <textarea rows="5"   class="form-control" name="images"  id="images">{$vo.images}</textarea>
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="download" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 文件下载</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="download" type="text" id="download" size="30" value="{$vo[download] ? $vo[download] : $_GET[download]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="author" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 作者</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="author" type="text" id="author" size="30" value="{$vo[author] ? $vo[author] : $_GET[author]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="source" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 来源</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="source" type="text" id="source" size="30" value="{$vo[source] ? $vo[source] : $_GET[source]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="summary" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 摘要</label>
+    <div class="col-sm-4">
+        <textarea rows="5"   class="form-control" name="summary"  id="summary">{$vo.summary}</textarea>
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="tags" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> TAG</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="tags" type="text" id="tags" size="30" value="{$vo[tags] ? $vo[tags] : $_GET[tags]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+
+    <div class="form-group">
+        <div class="col-sm-offset-2 col-sm-10">
+            <button type="submit" class="btn btn-info">保存</button>
+        </div>
+    </div>
+</form>

Datei-Diff unterdrückt, da er zu groß ist
+ 217 - 0
app/view/article/index.html


+ 66 - 0
app/view/index/pay.html

@@ -0,0 +1,66 @@
+<head> 
+      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
+      <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrom=1">  
+    </head> 
+    <body> 
+     <button id="MM-button"></button>
+     <script src="https://pay.woop-woop.cn:41102/payment/js/cps-checkout.js"></script> 
+     
+        <script type="text/javascript">
+            totalPrice=1;
+        MMPay.Button.render({
+           env: 'sandbox', // Optional: specify 'sandbox' environment
+           payment: function () {
+
+               if (null == totalPrice || totalPrice <= 0)// Determine whether to select the purchased goods.
+               {
+                   alert("Payment amount must be greater than zero.");
+                   return;
+               }
+               //The merchant can customize parameters to be transferred as required.
+               var data = 
+               {
+                   env: this.evn,
+                   totalPrice: totalPrice
+               };
+                var CREATE_URL = 'http://www.tp6.com/index/create';
+                   return MMPay.payment.create(CREATE_URL, data)
+                        .then(function(res){
+                                  return res.paymentID;
+                         });
+           },
+ 
+           onAuthorize: function (data) {
+                   var EXECUTE_URL = 'https://10.93.49.141:8443/portal-service-demo/biz_pgw/demo/checkout/api/payment/execute'
+                var data =
+                {
+                    env: this.env,
+                         paymentID: data.paymentID,
+                         payerID: data.payerID,
+                         couponID: data.couponID 
+                };
+ 
+               // Make a call to your server to execute the payment
+               return MMPay.payment.execute(EXECUTE_URL, data)
+                     .then(function (res) {
+
+                           //window.location.href = "https://10.61.36.177:8443/portal-service-demo/success.jsp?paymentID="+res.paymentID;
+                });
+            },
+
+            onError:function(data)
+            {
+                  window.location.href = "https://10.93.49.141:8443/portal-service-demo/failure.jsp"; // Page to which a merchant wants to jump after a transaction fails.
+            },
+
+            onCancel:function(data)
+            {
+                  window.location.href = "https://10.93.49.141:8443/portal-service-demo/";// Page to which a merchant wants to jump after a transaction is canceled.
+            }
+
+        }, 'MM-button');
+        </script>
+        
+        </body>
+        </html>
+    

+ 3 - 0
app/view/layout.html

@@ -0,0 +1,3 @@
+<include file="public/header"/>
+{__CONTENT__}
+<include file="public/footer"/>

+ 24 - 0
app/view/public/add.html

@@ -0,0 +1,24 @@
+
+
+
+
+<div class="row-fluid sortable">
+    <div class="col-xs-12">
+        <div data-original-title="" class="box-header well"> <i class="icon-user"></i> <a href="__URL__/add" class="">添加</a>
+        </div>
+        {$form}
+    </div>
+
+</div>
+
+<script>
+    $(function () {
+        $("form").Validform({
+            tiptype:2
+        });
+    });
+
+</script>
+
+
+

+ 74 - 0
app/view/public/add_public.html

@@ -0,0 +1,74 @@
+<script>
+var CONTROLLER="__URL__";
+</script>
+<script src="__PUBLIC__/common.js"></script>
+
+<script>
+
+<empty name="isMobile">
+$(function(){
+    var editor;
+    KindEditor.ready(function(K) {
+        editor = K.create('textarea[name="preface"]', {
+            allowFileManager : true
+        });
+        
+        description = K.create('textarea[name="description"]', {
+            allowFileManager : true
+        });
+        
+        
+    });
+});
+<else /> 
+$(function(){
+    var editor;
+    KindEditor.ready(function(K) {
+        editor = K.create('textarea[name="preface"]', {
+            allowFileManager : true,
+            items : [
+                     'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
+                     'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
+                     'insertunorderedlist', '|', 'emoticons', 'image', 'link']
+        });
+        
+        description = K.create('textarea[name="description"]', {
+            allowFileManager : true,
+            items : [
+                     'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
+                     'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
+                     'insertunorderedlist', '|', 'emoticons', 'image', 'link']
+        });
+        
+        
+    });
+});
+</empty> 
+
+
+</script>
+
+
+        <div class="box-content">
+            <form class="form-horizontal" method="post" action="__URL__/save/">
+
+                <volist id="vo" name="f_add">
+                <div class="control-group">
+                    <label class="control-label" for="typeahead">{$vo.cn_name}</label>
+                    <div class="controls">
+                        <input name="{$vo.column_name}" id="{$vo.column_name}"  type="text" class="form-control" value="{$vo.title}"  placeholder="" >
+                    </div>
+                </div>
+                </volist>
+                
+                <div class="form-actions">
+                    <div class="col-sm-offset-2 col-sm-10">
+                        <button type="submit" class="btn btn-primary">保存</button>
+                        <button type="reset" class="btn">取消</button>
+                    </div>
+                </div>
+                <input type="hidden" value="{$vo.id}" name="id" id="id" />
+            </form>
+        </div>
+
+

+ 41 - 0
app/view/public/detail.html

@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>{$configs.title}</title>
+<meta name="keywords" content="{$configs.keywords}">
+<meta name="description" content="{$configs.description}">
+<script type="text/javascript" src="__PUBLIC__/Home/js/center/jquery.js"></script>
+<link href="__PUBLIC__/Home/css/center/center_core.css" type="text/css" rel="stylesheet">
+<link href="__PUBLIC__/Home/css/center/center_user.css" type="text/css" rel="stylesheet">
+</head>
+<body class="auto-1449497480730-parent" style="padding-top: 60px;">
+
+<block name="main-content">
+	
+</block>
+
+</body>
+<script type="text/javascript" charset="utf-8">
+	var p;
+	$("input[name = 'username']").blur(function()
+	{
+		var val = this.value;
+		//alert(val);
+		if(!val){
+			$("#sp1").html("你好像忘了点什么");
+			p = false;
+		}else{
+			p = true;
+		}
+	});
+
+	$("form").submit(function(){
+		$("input[name = 'username']").blur();
+		if(p){
+			return true;
+		}
+		return false;
+	});
+</script>
+</html>

+ 71 - 0
app/view/public/edit.html

@@ -0,0 +1,71 @@
+<script>
+var CONTROLLER="__URL__";
+
+</script>
+<script src="__PUBLIC__/common.js"></script>
+
+<script>
+
+<empty name="isMobile">
+$(function(){
+    var editor;
+    KindEditor.ready(function(K) {
+        editor = K.create('textarea[name="preface"]', {
+            allowFileManager : true
+        });
+        
+        description = K.create('textarea[name="description"]', {
+            allowFileManager : true
+        });
+        
+        
+    });
+});
+<else /> 
+$(function(){
+    var editor;
+    KindEditor.ready(function(K) {
+        editor = K.create('textarea[name="preface"]', {
+            allowFileManager : true,
+            items : [
+                     'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
+                     'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
+                     'insertunorderedlist', '|', 'emoticons', 'image', 'link']
+        });
+        
+        description = K.create('textarea[name="description"]', {
+            allowFileManager : true,
+            items : [
+                     'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
+                     'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
+                     'insertunorderedlist', '|', 'emoticons', 'image', 'link']
+        });
+        
+        
+    });
+});
+</empty> 
+
+
+
+</script>
+
+<div class="row-fluid sortable">
+    <div class="box span12">
+        <div data-original-title="" class="box-header well"> <i class="icon-user"></i> <a href="__URL__/add" class="">添加</a> 
+        </div>
+        <include file="add_public" />
+    </div>
+    <!--/span--> 
+    
+</div>
+<!--/row--> 
+
+<!-- content ends --> 
+
+<script>
+function autoSurname(){
+	$('#surname').val($('#ancestor').val().substring(0,1));
+}
+
+</script> 

+ 67 - 0
app/view/public/footer.html

@@ -0,0 +1,67 @@
+
+                    <!-- PAGE CONTENT ENDS -->
+                </div><!-- /.col -->
+            </div><!-- /.row -->
+        </div><!-- /.page-content -->
+    </div>
+</div><!-- /.main-content -->
+
+
+
+<div class="footer">
+    <div class="footer-inner">
+        <div class="footer-content">
+						<span class="bigger-120">
+							<span class="blue bolder"></span>
+							Application &copy; 2018-2020
+						</span>
+
+            &nbsp; &nbsp;
+            <span class="action-buttons">
+							<a href="#">
+								<i class="ace-icon fa fa-twitter-square light-blue bigger-150"></i>
+							</a>
+
+							<a href="#">
+								<i class="ace-icon fa fa-facebook-square text-primary bigger-150"></i>
+							</a>
+
+							<a href="#">
+								<i class="ace-icon fa fa-rss-square orange bigger-150"></i>
+							</a>
+						</span>
+        </div>
+    </div>
+</div>
+
+<!--页脚结束-->
+
+<a href="#" id="btn-scroll-up" class="btn-scroll-up btn btn-sm btn-inverse">
+    <i class="ace-icon fa fa-angle-double-up icon-only bigger-110"></i>
+</a>
+</div><!-- /.main-container -->
+
+
+
+
+<!-- page specific plugin scripts -->
+
+<!--[if lte IE 8]>
+<script src="__PUBLIC__/admin/assets/js/excanvas.min.js"></script>
+<![endif]-->
+<script src="__PUBLIC__/admin/assets/js/jquery-ui.custom.min.js"></script>
+<script src="__PUBLIC__/admin/assets/js/jquery.ui.touch-punch.min.js"></script>
+<script src="__PUBLIC__/admin/assets/js/jquery.easypiechart.min.js"></script>
+<script src="__PUBLIC__/admin/assets/js/jquery.sparkline.index.min.js"></script>
+<script src="__PUBLIC__/admin/assets/js/jquery.flot.min.js"></script>
+<script src="__PUBLIC__/admin/assets/js/jquery.flot.pie.min.js"></script>
+<script src="__PUBLIC__/admin/assets/js/jquery.flot.resize.min.js"></script>
+
+<!-- ace scripts -->
+<script src="__PUBLIC__/admin/assets/js/ace-elements.min.js"></script>
+<script src="__PUBLIC__/admin/assets/js/ace.min.js"></script>
+
+
+
+</body>
+</html>

+ 2 - 0
app/view/public/footer2.html

@@ -0,0 +1,2 @@
+</body>
+</html>

+ 9 - 0
app/view/public/footer_cgf.html

@@ -0,0 +1,9 @@
+
+
+</div>
+</div>
+</div>
+
+
+</body>
+</html>

+ 24 - 0
app/view/public/footer_new.html

@@ -0,0 +1,24 @@
+ </div><!--/span-->
+      </div><!--/row-->
+
+      <hr>
+            <footer>
+        <p>© Company 2016</p>
+      </footer>
+</div><!--/.fluid-container-->
+
+<!-- Le javascript
+    ================================================== -->
+    <!-- Placed at the end of the document so the pages load faster -->
+
+
+<script src="http://libs.baidu.com/bootstrap/2.3.2/js/bootstrap.min.js"></script>
+    <!--[if lte IE 6]>
+    <script type="text/javascript" src="__PUBLIC__/bootstrap/js/bootstrap-ie.js"></script>
+    <![endif]-->
+    
+<load href="__PUBLIC__/common.js" />
+<script src="__PUBLIC__/Plugin/kindeditor-4.1.7/kindeditor-min.js"></script>
+
+</body>
+</html>

+ 714 - 0
app/view/public/header.html

@@ -0,0 +1,714 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+    <meta charset="utf-8" />
+    <title>控制台-后台管理系统</title>
+
+    <meta name="description" content="overview &amp; stats" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
+
+    <!-- bootstrap & fontawesome -->
+    <link rel="stylesheet" href="__PUBLIC__/admin/assets/css/bootstrap.min.css" />
+    <link rel="stylesheet" href="__PUBLIC__/admin/assets/font-awesome/4.5.0/css/font-awesome.min.css" />
+
+    <!-- page specific plugin styles -->
+
+    <!-- text fonts -->
+    <link rel="stylesheet" href="__PUBLIC__/admin/assets/css/fonts.googleapis.com.css" />
+
+    <!-- ace styles -->
+    <link rel="stylesheet" href="__PUBLIC__/admin/assets/css/ace.min.css" class="ace-main-stylesheet" id="main-ace-style" />
+
+    <!--[if lte IE 9]>
+    <link rel="stylesheet" href="__PUBLIC__/admin/assets/css/ace-part2.min.css" class="ace-main-stylesheet" />
+    <![endif]-->
+    <link rel="stylesheet" href="__PUBLIC__/admin/assets/css/ace-skins.min.css" />
+    <link rel="stylesheet" href="__PUBLIC__/admin/assets/css/ace-rtl.min.css" />
+
+    <!--[if lte IE 9]>
+    <link rel="stylesheet" href="__PUBLIC__/admin/assets/css/ace-ie.min.css" />
+    <![endif]-->
+
+    <!-- inline styles related to this page -->
+
+    <!-- ace settings handler -->
+    <script src="__PUBLIC__/admin/assets/js/ace-extra.min.js"></script>
+
+    <!-- HTML5shiv and Respond.js for IE8 to support HTML5 elements and media queries -->
+
+    <!--[if lte IE 8]>
+    <script src="__PUBLIC__/admin/assets/js/html5shiv.min.js"></script>
+    <script src="__PUBLIC__/admin/assets/js/respond.min.js"></script>
+    <![endif]-->
+
+
+
+    <!-- basic scripts -->
+
+    <!--[if !IE]> -->
+    <script src="__PUBLIC__/admin/assets/js/jquery-2.1.4.min.js"></script>
+
+    <!-- <![endif]-->
+
+    <!--[if IE]>
+    <script src="__PUBLIC__/admin/assets/js/jquery-1.11.3.min.js"></script>
+    <![endif]-->
+    <script type="text/javascript">
+        if('ontouchstart' in document.documentElement) document.write("<script src='__PUBLIC__/admin/assets/js/jquery.mobile.custom.min.js'>"+"<"+"/script>");
+    </script>
+    <script src="__PUBLIC__/admin/assets/js/bootstrap.min.js"></script>
+
+
+
+    <!--layui-->
+    <link rel="stylesheet" href="__PUBLIC__/Plugin/layui-v2.3.0/css/layui.css" />
+    <script src="__PUBLIC__/Plugin/layui-v2.3.0/layui.all.js"></script>
+
+
+
+    <!--自定义新加的-->
+    <script>
+        var CONTROLLER="__URL__";
+        var URL_WWW = '__W__';
+
+        /*   $(".nav-list li a").each(function(index, element) {
+         if($(element).attr("href") == CONTROLLER + "/index.html"){
+         //$(element).parent(this).addClass("active");
+         }
+         });*/
+    </script>
+    <script src="__PUBLIC__/common.js"></script>
+    <script src="/Public/Plugin/kindeditor-4.1.7/kindeditor-all-min.js"></script>
+
+
+    <!--日期-->
+    <link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.7.0-RC3/css/bootstrap-datepicker.css" rel="stylesheet">
+    <script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.7.0-RC3/js/bootstrap-datepicker.min.js"></script>
+    <script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.7.0-RC3/locales/bootstrap-datepicker.zh-CN.min.js"></script>
+
+    <!--日期 支持时间-->
+    <!--  <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.js"></script>-->
+    <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment-with-locales.min.js"></script>
+    <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/locale/zh-cn.js"></script>
+    <script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/js/bootstrap-datetimepicker.min.js"></script>
+    <link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.min.css" rel="stylesheet">
+
+    <!-- <link href="//cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/e8bddc60e73c1ec2475f827be36e1957af72e2ea/build/css/bootstrap-datetimepicker.css" rel="stylesheet">
+     <script src="//cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/e8bddc60e73c1ec2475f827be36e1957af72e2ea/src/js/bootstrap-datetimepicker.js"></script>-->
+
+    <link href="__PUBLIC__/validform/validform.css" rel="stylesheet">
+    <script src="//apps.bdimg.com/libs/validform/5.3.2/validform.min.js"></script>
+
+
+    <script>
+        var laydate;
+        layui.use('laydate', function () {
+            laydate = layui.laydate;
+
+        });
+    </script>
+
+    <style type="text/css">
+        /* 分页 */
+        .page a,.page a:hover,
+        .page .current {
+            display: inline-block;
+            margin-right: 2px;
+            padding: 0 10px;
+            height: 25px;
+            line-height: 25px;
+            vertical-align: middle;
+        }
+        .page a {
+            color: #404548;
+            border: 1px solid #D7DBDC;
+            background-color: #fff;
+        }
+        .page a:hover,
+        .page .current {
+            text-decoration: none;
+            color: #FFF;
+            background-color: #397AB9;
+            vertical-align: middle;
+        }
+        .page .next,.page .prev {
+            font-family: "宋体";
+        }
+        .no-skin .nav-list>li .submenu>li> a.active{
+            color: #4B88B7;
+            background-color: #F1F5F9 ;
+        }
+    </style>
+
+</head>
+
+<body class="no-skin">
+
+<!--顶部导航开始-->
+<div id="navbar" class="navbar navbar-default          ace-save-state">
+    <div class="navbar-container ace-save-state" id="navbar-container">
+        <button type="button" class="navbar-toggle menu-toggler pull-left" id="menu-toggler" data-target="#sidebar">
+            <span class="sr-only">Toggle sidebar</span>
+
+            <span class="icon-bar"></span>
+
+            <span class="icon-bar"></span>
+
+            <span class="icon-bar"></span>
+        </button>
+
+        <div class="navbar-header pull-left">
+            <a href="/" class="navbar-brand">
+                <small>
+                    <i class="fa fa-leaf"></i>
+                    后台管理
+                </small>
+            </a>
+        </div>
+
+        <div class="navbar-buttons navbar-header pull-right" role="navigation">
+            <ul class="nav ace-nav">
+                <!--
+
+                <li class="grey dropdown-modal">
+                    <a data-toggle="dropdown" class="dropdown-toggle" href="#">
+                        <i class="ace-icon fa fa-tasks"></i>
+                        <span class="badge badge-grey">4</span>
+                    </a>
+
+                    <ul class="dropdown-menu-right dropdown-navbar dropdown-menu dropdown-caret dropdown-close">
+                        <li class="dropdown-header">
+                            <i class="ace-icon fa fa-check"></i>
+                            4 Tasks to complete
+                        </li>
+
+                        <li class="dropdown-content">
+                            <ul class="dropdown-menu dropdown-navbar">
+                                <li>
+                                    <a href="#">
+                                        <div class="clearfix">
+                                            <span class="pull-left">Software Update</span>
+                                            <span class="pull-right">65%</span>
+                                        </div>
+
+                                        <div class="progress progress-mini">
+                                            <div style="width:65%" class="progress-bar"></div>
+                                        </div>
+                                    </a>
+                                </li>
+
+                                <li>
+                                    <a href="#">
+                                        <div class="clearfix">
+                                            <span class="pull-left">Hardware Upgrade</span>
+                                            <span class="pull-right">35%</span>
+                                        </div>
+
+                                        <div class="progress progress-mini">
+                                            <div style="width:35%" class="progress-bar progress-bar-danger"></div>
+                                        </div>
+                                    </a>
+                                </li>
+
+                                <li>
+                                    <a href="#">
+                                        <div class="clearfix">
+                                            <span class="pull-left">Unit Testing</span>
+                                            <span class="pull-right">15%</span>
+                                        </div>
+
+                                        <div class="progress progress-mini">
+                                            <div style="width:15%" class="progress-bar progress-bar-warning"></div>
+                                        </div>
+                                    </a>
+                                </li>
+
+                                <li>
+                                    <a href="#">
+                                        <div class="clearfix">
+                                            <span class="pull-left">Bug Fixes</span>
+                                            <span class="pull-right">90%</span>
+                                        </div>
+
+                                        <div class="progress progress-mini progress-striped active">
+                                            <div style="width:90%" class="progress-bar progress-bar-success"></div>
+                                        </div>
+                                    </a>
+                                </li>
+                            </ul>
+                        </li>
+
+                        <li class="dropdown-footer">
+                            <a href="#">
+                                See tasks with details
+                                <i class="ace-icon fa fa-arrow-right"></i>
+                            </a>
+                        </li>
+                    </ul>
+                </li>
+
+                <li class="purple dropdown-modal">
+                    <a data-toggle="dropdown" class="dropdown-toggle" href="#">
+                        <i class="ace-icon fa fa-bell icon-animated-bell"></i>
+                        <span class="badge badge-important">8</span>
+                    </a>
+
+                    <ul class="dropdown-menu-right dropdown-navbar navbar-pink dropdown-menu dropdown-caret dropdown-close">
+                        <li class="dropdown-header">
+                            <i class="ace-icon fa fa-exclamation-triangle"></i>
+                            8 Notifications
+                        </li>
+
+                        <li class="dropdown-content">
+                            <ul class="dropdown-menu dropdown-navbar navbar-pink">
+                                <li>
+                                    <a href="#">
+                                        <div class="clearfix">
+													<span class="pull-left">
+														<i class="btn btn-xs no-hover btn-pink fa fa-comment"></i>
+														New Comments
+													</span>
+                                            <span class="pull-right badge badge-info">+12</span>
+                                        </div>
+                                    </a>
+                                </li>
+
+                                <li>
+                                    <a href="#">
+                                        <i class="btn btn-xs btn-primary fa fa-user"></i>
+                                        Bob just signed up as an editor ...
+                                    </a>
+                                </li>
+
+                                <li>
+                                    <a href="#">
+                                        <div class="clearfix">
+													<span class="pull-left">
+														<i class="btn btn-xs no-hover btn-success fa fa-shopping-cart"></i>
+														New Orders
+													</span>
+                                            <span class="pull-right badge badge-success">+8</span>
+                                        </div>
+                                    </a>
+                                </li>
+
+                                <li>
+                                    <a href="#">
+                                        <div class="clearfix">
+													<span class="pull-left">
+														<i class="btn btn-xs no-hover btn-info fa fa-twitter"></i>
+														Followers
+													</span>
+                                            <span class="pull-right badge badge-info">+11</span>
+                                        </div>
+                                    </a>
+                                </li>
+                            </ul>
+                        </li>
+
+                        <li class="dropdown-footer">
+                            <a href="#">
+                                See all notifications
+                                <i class="ace-icon fa fa-arrow-right"></i>
+                            </a>
+                        </li>
+                    </ul>
+                </li>
+
+                <li class="green dropdown-modal">
+                    <a data-toggle="dropdown" class="dropdown-toggle" href="#">
+                        <i class="ace-icon fa fa-envelope icon-animated-vertical"></i>
+                        <span class="badge badge-success">5</span>
+                    </a>
+
+                    <ul class="dropdown-menu-right dropdown-navbar dropdown-menu dropdown-caret dropdown-close">
+                        <li class="dropdown-header">
+                            <i class="ace-icon fa fa-envelope-o"></i>
+                            5 Messages
+                        </li>
+
+                        <li class="dropdown-content">
+                            <ul class="dropdown-menu dropdown-navbar">
+                                <li>
+                                    <a href="#" class="clearfix">
+                                        <img src="__PUBLIC__/admin/assets/images/avatars/avatar.png" class="msg-photo" alt="Alex's Avatar" />
+                                        <span class="msg-body">
+													<span class="msg-title">
+														<span class="blue">Alex:</span>
+														Ciao sociis natoque penatibus et auctor ...
+													</span>
+
+													<span class="msg-time">
+														<i class="ace-icon fa fa-clock-o"></i>
+														<span>a moment ago</span>
+													</span>
+												</span>
+                                    </a>
+                                </li>
+
+                                <li>
+                                    <a href="#" class="clearfix">
+                                        <img src="__PUBLIC__/admin/assets/images/avatars/avatar3.png" class="msg-photo" alt="Susan's Avatar" />
+                                        <span class="msg-body">
+													<span class="msg-title">
+														<span class="blue">Susan:</span>
+														Vestibulum id ligula porta felis euismod ...
+													</span>
+
+													<span class="msg-time">
+														<i class="ace-icon fa fa-clock-o"></i>
+														<span>20 minutes ago</span>
+													</span>
+												</span>
+                                    </a>
+                                </li>
+
+                                <li>
+                                    <a href="#" class="clearfix">
+                                        <img src="__PUBLIC__/admin/assets/images/avatars/avatar4.png" class="msg-photo" alt="Bob's Avatar" />
+                                        <span class="msg-body">
+													<span class="msg-title">
+														<span class="blue">Bob:</span>
+														Nullam quis risus eget urna mollis ornare ...
+													</span>
+
+													<span class="msg-time">
+														<i class="ace-icon fa fa-clock-o"></i>
+														<span>3:15 pm</span>
+													</span>
+												</span>
+                                    </a>
+                                </li>
+
+                                <li>
+                                    <a href="#" class="clearfix">
+                                        <img src="__PUBLIC__/admin/assets/images/avatars/avatar2.png" class="msg-photo" alt="Kate's Avatar" />
+                                        <span class="msg-body">
+													<span class="msg-title">
+														<span class="blue">Kate:</span>
+														Ciao sociis natoque eget urna mollis ornare ...
+													</span>
+
+													<span class="msg-time">
+														<i class="ace-icon fa fa-clock-o"></i>
+														<span>1:33 pm</span>
+													</span>
+												</span>
+                                    </a>
+                                </li>
+
+                                <li>
+                                    <a href="#" class="clearfix">
+                                        <img src="__PUBLIC__/admin/assets/images/avatars/avatar5.png" class="msg-photo" alt="Fred's Avatar" />
+                                        <span class="msg-body">
+													<span class="msg-title">
+														<span class="blue">Fred:</span>
+														Vestibulum id penatibus et auctor  ...
+													</span>
+
+													<span class="msg-time">
+														<i class="ace-icon fa fa-clock-o"></i>
+														<span>10:09 am</span>
+													</span>
+												</span>
+                                    </a>
+                                </li>
+                            </ul>
+                        </li>
+
+                        <li class="dropdown-footer">
+                            <a href="inbox.html">
+                                See all messages
+                                <i class="ace-icon fa fa-arrow-right"></i>
+                            </a>
+                        </li>
+                    </ul>
+                </li>
+
+                -->
+                <li class="light-blue dropdown-modal">
+                    <a data-toggle="dropdown" href="#" class="dropdown-toggle">
+                        <img class="nav-user-photo" src="__PUBLIC__/admin/assets/images/avatars/user.jpg" alt="Jason's Photo" />
+                        <span class="user-info">
+									<small>Welcome,</small>
+									{$admin_name}
+								</span>
+
+                        <i class="ace-icon fa fa-caret-down"></i>
+                    </a>
+
+                    <ul class="user-menu dropdown-menu-right dropdown-menu dropdown-yellow dropdown-caret dropdown-close">
+                        <!--<li>
+                            <a href="#">
+                                <i class="ace-icon fa fa-cog"></i>
+                                Settings
+                            </a>
+                        </li>
+-->
+                        <li>
+                            <a href="/login/login">
+                                <i class="ace-icon fa fa-user"></i>
+                                切换用户
+                            </a>
+                        </li>
+
+                        <li class="divider"></li>
+
+                        <li>
+                            <a href="/login/loginOut">
+                                <i class="ace-icon fa fa-power-off"></i>
+                                退出
+                            </a>
+                        </li>
+                    </ul>
+                </li>
+            </ul>
+        </div>
+    </div><!-- /.navbar-container -->
+</div>
+<!--顶部导航结束-->
+
+<div class="main-container ace-save-state" id="main-container">
+    <script type="text/javascript">
+        try{ace.settings.loadState('main-container')}catch(e){}
+    </script>
+    <!--左侧菜单开始-->
+    <div id="sidebar" class="sidebar                  responsive                    ace-save-state">
+        <script type="text/javascript">
+            try{ace.settings.loadState('sidebar')}catch(e){}
+        </script>
+
+        <div class="sidebar-shortcuts" id="sidebar-shortcuts">
+            <div class="sidebar-shortcuts-large" id="sidebar-shortcuts-large">
+                <button class="btn btn-success">
+                    <i class="ace-icon fa fa-signal"></i>
+                </button>
+
+                <button class="btn btn-info">
+                    <i class="ace-icon fa fa-pencil"></i>
+                </button>
+
+                <button class="btn btn-warning">
+                    <i class="ace-icon fa fa-users"></i>
+                </button>
+
+                <button class="btn btn-danger">
+                    <i class="ace-icon fa fa-cogs"></i>
+                </button>
+            </div>
+
+            <div class="sidebar-shortcuts-mini" id="sidebar-shortcuts-mini">
+                <span class="btn btn-success"></span>
+
+                <span class="btn btn-info"></span>
+
+                <span class="btn btn-warning"></span>
+
+                <span class="btn btn-danger"></span>
+            </div>
+        </div><!-- /.sidebar-shortcuts -->
+
+
+
+        <ul class="nav nav-list">
+
+
+
+            <li class="active__">
+                <a href="index.html">
+                    <i class="menu-icon fa fa-tachometer"></i>
+                    <span class="menu-text"> Dashboard </span>
+                </a>
+
+                <b class="arrow"></b>
+            </li>
+
+            <?php
+/*
+           $currentUrl = "/".CONTROLLER_NAME;
+           if(strtolower(ACTION_NAME) != 'index') $currentUrl .= '/'.ACTION_NAME;
+
+           foreach($menu as $k=>$v){
+                    foreach($v['children'] as $k2=>$v2){
+                       if(strtolower($v2['url']) == strtolower($currentUrl)) $currentMenuModuleKey = $k;
+                    }
+             }
+*/
+            ?>
+
+
+            <php>
+                if($admin_name == 'qudao'){
+                $menu = [[
+                'title' => "统计报表",
+                'url' =>'',
+                'children' =>[
+                ["title"=>'渠道统计',"url"=>'/chDataNew'],
+                ]
+                ]];
+
+
+}
+                //var_dump($menu);exit;
+            </php>
+
+
+
+            <volist id="vom" name="menu">
+
+                <li class="<php>if($key == $currentMenuModuleKey) echo 'active'</php>">
+                    <a href="#" class="dropdown-toggle">
+                        <i class="menu-icon fa fa-desktop"></i>
+                        <span class="menu-text"> {$vom.title}</span>
+
+                        <b class="arrow fa fa-angle-down"></b>
+                    </a>
+
+                    <b class="arrow"></b>
+
+                    <ul class="submenu" style="display: block;">
+                        <volist id="sub" name="vom['children']">
+
+                            <li  <?php if(strtolower($sub['url']) == strtolower($currentUrl)){echo 'class="active"';} ?>>
+
+                            <a href="{$sub.url}" >
+                                <i class="menu-icon fa fa-caret-right" <?php if(strtolower($sub['url']) == strtolower($currentUrl)){echo 'style="display: block;"';} ?> ></i>
+                                {$sub.title}
+                            </a>
+                            <b class="arrow" <?php if(strtolower($sub['url']) == strtolower($currentUrl)){echo 'style="display: block;"';} ?>  ></b>
+                            </li>
+                        </volist>
+
+
+                    </ul>
+                </li>
+
+            </volist>
+
+
+
+        </ul><!-- /.nav-list -->
+
+        <div class="sidebar-toggle sidebar-collapse" id="sidebar-collapse">
+            <i id="sidebar-toggle-icon" class="ace-icon fa fa-angle-double-left ace-save-state" data-icon1="ace-icon fa fa-angle-double-left" data-icon2="ace-icon fa fa-angle-double-right"></i>
+        </div>
+    </div>
+
+    <!--左侧菜单结束-->
+
+
+
+    <div class="main-content">
+        <div class="main-content-inner">
+            <div class="breadcrumbs ace-save-state" id="breadcrumbs">
+                <ul class="breadcrumb">
+                    <li>
+                        <i class="ace-icon fa fa-home home-icon"></i>
+                        <a href="/">Home</a>
+                    </li>
+                    <li class="active">
+                        <php>
+                            /*$currentUrl = "/".CONTROLLER_NAME;
+                            if(strtolower(ACTION_NAME) != 'index') $currentUrl .= '/'.ACTION_NAME;
+
+                            foreach($menu as $k=>$v){
+                                foreach($v['children'] as $k2=>$v2){
+                                    if(strtolower($v2['url']) == strtolower($currentUrl)) echo $v2['title'];
+                                }
+                            }*/
+                        </php>
+                    </li>
+                </ul><!-- /.breadcrumb -->
+
+                <div class="nav-search" id="nav-search">
+                    <form class="form-search">
+								<span class="input-icon">
+									<input type="text" placeholder="Search ..." class="nav-search-input" id="nav-search-input" autocomplete="off" />
+									<i class="ace-icon fa fa-search nav-search-icon"></i>
+								</span>
+                    </form>
+                </div><!-- /.nav-search -->
+            </div>
+
+            <div class="page-content">
+                <div class="ace-settings-container" id="ace-settings-container">
+                    <div class="btn btn-app btn-xs btn-warning ace-settings-btn" id="ace-settings-btn">
+                        <i class="ace-icon fa fa-cog bigger-130"></i>
+                    </div>
+
+                    <div class="ace-settings-box clearfix" id="ace-settings-box">
+                        <div class="pull-left width-50">
+                            <div class="ace-settings-item">
+                                <div class="pull-left">
+                                    <select id="skin-colorpicker" class="hide">
+                                        <option data-skin="no-skin" value="#438EB9">#438EB9</option>
+                                        <option data-skin="skin-1" value="#222A2D">#222A2D</option>
+                                        <option data-skin="skin-2" value="#C6487E">#C6487E</option>
+                                        <option data-skin="skin-3" value="#D0D0D0">#D0D0D0</option>
+                                    </select>
+                                </div>
+                                <span>&nbsp; Choose Skin</span>
+                            </div>
+
+                            <div class="ace-settings-item">
+                                <input type="checkbox" class="ace ace-checkbox-2 ace-save-state" id="ace-settings-navbar" autocomplete="off" />
+                                <label class="lbl" for="ace-settings-navbar"> Fixed Navbar</label>
+                            </div>
+
+                            <div class="ace-settings-item">
+                                <input type="checkbox" class="ace ace-checkbox-2 ace-save-state" id="ace-settings-sidebar" autocomplete="off" />
+                                <label class="lbl" for="ace-settings-sidebar"> Fixed Sidebar</label>
+                            </div>
+
+                            <div class="ace-settings-item">
+                                <input type="checkbox" class="ace ace-checkbox-2 ace-save-state" id="ace-settings-breadcrumbs" autocomplete="off" />
+                                <label class="lbl" for="ace-settings-breadcrumbs"> Fixed Breadcrumbs</label>
+                            </div>
+
+                            <div class="ace-settings-item">
+                                <input type="checkbox" class="ace ace-checkbox-2" id="ace-settings-rtl" autocomplete="off" />
+                                <label class="lbl" for="ace-settings-rtl"> Right To Left (rtl)</label>
+                            </div>
+
+                            <div class="ace-settings-item">
+                                <input type="checkbox" class="ace ace-checkbox-2 ace-save-state" id="ace-settings-add-container" autocomplete="off" />
+                                <label class="lbl" for="ace-settings-add-container">
+                                    Inside
+                                    <b>.container</b>
+                                </label>
+                            </div>
+                        </div><!-- /.pull-left -->
+
+                        <div class="pull-left width-50">
+                            <div class="ace-settings-item">
+                                <input type="checkbox" class="ace ace-checkbox-2" id="ace-settings-hover" autocomplete="off" />
+                                <label class="lbl" for="ace-settings-hover"> Submenu on Hover</label>
+                            </div>
+
+                            <div class="ace-settings-item">
+                                <input type="checkbox" class="ace ace-checkbox-2" id="ace-settings-compact" autocomplete="off" />
+                                <label class="lbl" for="ace-settings-compact"> Compact Sidebar</label>
+                            </div>
+
+                            <div class="ace-settings-item">
+                                <input type="checkbox" class="ace ace-checkbox-2" id="ace-settings-highlight" autocomplete="off" />
+                                <label class="lbl" for="ace-settings-highlight"> Alt. Active Item</label>
+                            </div>
+                        </div><!-- /.pull-left -->
+                    </div><!-- /.ace-settings-box -->
+                </div><!-- /.ace-settings-container -->
+
+               <!-- <div class="page-header">
+                    <h1>
+                        Dashboard
+                        <small>
+                            <i class="ace-icon fa fa-angle-double-right"></i>
+                            overview &amp; stats
+                        </small>
+                    </h1>
+                </div>--><!-- /.page-header -->
+
+                <div class="row">
+                    <div class="col-xs-12">
+                        <!-- PAGE CONTENT BEGINS -->

+ 8 - 0
app/view/public/header2.html

@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+

+ 232 - 0
app/view/public/header_cgf.html

@@ -0,0 +1,232 @@
+<!DOCTYPE html>
+<html>
+<head>
+
+  <title>{$Think.config.SITE_TITLE}</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+
+  <!--[if lte IE 6]>
+  <link rel="stylesheet" type="text/css" href="__PUBLIC__/Plugin/bootstrap/bootstrap-ie6.css">
+  <![endif]-->
+  <!--[if lte IE 7]>
+  <link rel="stylesheet" type="text/css" href="__PUBLIC__/Plugin/bootstrap/ie.css">
+  <![endif]-->
+
+  <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
+  <!--[if lt IE 9]>
+  <script src="__PUBLIC__/html5.js"></script>
+  <![endif]-->
+
+  <!--[if lte IE 6]>
+  <script type="text/javascript" src="__PUBLIC__/bootstrap/js/bootstrap-ie.js"></script>
+  <![endif]-->
+
+  <load href="__PUBLIC__/common.js" />
+  <script src="__PUBLIC__/Plugin/kindeditor-4.1.7/kindeditor-min.js"></script>
+
+
+  <style type="text/css">
+    body {
+      padding-top: 60px;
+      padding-bottom: 40px;
+    }
+
+  </style>
+
+
+  <script>
+      var CONTROLLER="__URL__";
+      var URL_WWW = '__W__';
+  </script>
+
+
+  <style type="text/css">
+    * {
+      padding:0;
+      margin:0;
+    }
+    li {
+      list-style:none;
+    }
+    .input_width {
+    }
+  </style>
+
+  <script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
+  <script src="http://apps.bdimg.com/libs/bootstrap/3.3.4/js/bootstrap.min.js"></script>
+  <link href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
+
+  <!--日期-->
+  <link href="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.7.0-RC3/css/bootstrap-datepicker.css" rel="stylesheet">
+  <script src="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.7.0-RC3/js/bootstrap-datepicker.min.js"></script>
+  <script src="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.7.0-RC3/locales/bootstrap-datepicker.zh-CN.min.js"></script>
+
+  <!--日期 支持时间-->
+<!--  <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.js"></script>-->
+  <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment-with-locales.min.js"></script>
+  <script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/locale/zh-cn.js"></script>
+  <script src="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/js/bootstrap-datetimepicker.min.js"></script>
+  <link href="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.min.css" rel="stylesheet">
+
+  <!-- <link href="//cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/e8bddc60e73c1ec2475f827be36e1957af72e2ea/build/css/bootstrap-datetimepicker.css" rel="stylesheet">
+   <script src="//cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/e8bddc60e73c1ec2475f827be36e1957af72e2ea/src/js/bootstrap-datetimepicker.js"></script>-->
+
+  <link href="__PUBLIC__/validform/validform.css" rel="stylesheet">
+  <script src="http://apps.bdimg.com/libs/validform/5.3.2/validform.min.js"></script>
+
+  <style type="text/css">
+    /* 分页 */
+    .page a,.page a:hover,
+    .page .current {
+      display: inline-block;
+      margin-right: 2px;
+      padding: 0 10px;
+      height: 25px;
+      line-height: 25px;
+      vertical-align: middle;
+    }
+    .page a {
+      color: #404548;
+      border: 1px solid #D7DBDC;
+      background-color: #fff;
+    }
+    .page a:hover,
+    .page .current {
+      text-decoration: none;
+      color: #FFF;
+      background-color: #397AB9;
+      vertical-align: middle;
+    }
+    .page .next,.page .prev {
+      font-family: "宋体";
+    }
+  </style>
+
+
+
+
+  <script>
+      var CONTROLLER = '__URL__';
+  </script>
+  <script src="__PUBLIC__/common.js"></script>
+
+
+  <style type="text/css">
+    div.digg {
+      margin: 3px;
+      padding: 3px;
+      text-align: center;
+    }
+    div.digg a {
+      border-color: #aaaadd;
+      border-style: solid;
+      border-width: 1px;
+      color: #000099;
+      display: inline-block;
+      margin: 2px;
+      padding: 2px 5px;
+      text-decoration: none;
+    }
+    div.digg a:hover {
+      border-color: #000099;
+      border-style: solid;
+      border-width: 1px;
+      color: #000;
+    }
+    div.digg a:active {
+      border-color: #000099;
+      border-style: solid;
+      border-width: 1px;
+      color: #000;
+    }
+    div.digg span.current {
+      background-color: #000099;
+      border-color: #000099;
+      border-style: solid;
+      border-width: 1px;
+      color: #fff;
+      font-weight: bold;
+      margin: 2px;
+      padding: 2px 5px;
+    }
+    div.digg span.disabled {
+      border-color: #eee;
+      border-style: solid;
+      border-width: 1px;
+      color: #ddd;
+      margin: 2px;
+      padding: 2px 5px;
+    }
+  </style>
+  <script>
+
+      $(".nav-list li a").each(function(index, element) {
+          if($(element).attr("href") == CONTROLLER + "/index.html"){
+              //$(element).parent(this).addClass("active");
+          }
+      });
+  </script>
+
+</head>
+<body>
+
+
+<div class="navbar navbar-inverse navbar-fixed-top">
+  <div class="navbar-inner">
+    <div class="container-fluid">
+      <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </a>
+      <a class="brand" href="__W__">{$Think.config.SITE_TITLE}首页</a>
+      <div class="nav-collapse collapse">
+        <p class="navbar-text pull-right">
+          Logged in as <a href="__U__/Login/logout">{$user.nickname} --欢迎您! 退出</a>
+        </p>
+        <ul class="nav">
+          <li class="active"><a href="__U__">用户中心 <span class="sr-only">(current)</span></a></li>
+          <li><a href="__W__/Index/help">帮助</a></li>
+        </ul>
+      </div><!--/.nav-collapse -->
+    </div>
+  </div>
+</div>
+
+<div class="container">
+  <div class="row">
+    <div class="col-md-2">
+      <div class="">
+        <ul class="nav nav-list">
+          <li class="nav-header">课程</li>
+          <li><a href="{:U('Course/lists')}"><i class="icon-edit"></i><span class="hidden-tablet">科目管理</span></a></li>
+          <li><a href="{:U('Video/lists')}"><i class="icon-edit"></i><span class="hidden-tablet">视频管理</span></a></li>
+          <li><a href="{:U('UserCourse/lists')}"><i class="icon-edit"></i><span class="hidden-tablet">购买的课程</span></a></li>
+
+          <li class="nav-header">订单</li>
+          <li><a href="{:U('order/index')}"><i class="icon-edit"></i><span class="hidden-tablet">我的订单</span></a></li>
+          <li><a href="{:U('shoppingCart/index')}"><i class="icon-edit"></i><span class="hidden-tablet">购物车</span></a></li>
+
+          <li class="nav-header">评论</li>
+          <li><a href="{:U('comment/index')}"><i class="icon-edit"></i><span class="hidden-tablet">我的评论</span></a></li>
+          <li><a href="{:U('xxx/index')}"><i class="icon-edit"></i><span class="hidden-tablet">我的评分</span></a></li>
+
+
+
+         <!-- <li class="nav-header">纪念馆</li>
+          <li><a href="{:U('Memorial/index')}"><i class="icon-edit"></i><span class="hidden-tablet">纪念馆管理</span></a></li>
+          <li><a href="{:U('Document/index')}"><i class="icon-edit"></i><span class="hidden-tablet">祭文管理</span></a></li>
+          <li><a href="{:U('Guestbook/index')}"><i class="icon-edit"></i><span class="hidden-tablet">留言管理</span></a></li>
+          <li><a href="{:U('Surname/index')}"><i class="icon-edit"></i><span class="hidden-tablet">姓氏列表</span></a></li>-->
+        </ul>
+      </div>
+
+    </div>
+    <div class="col-md-10">
+
+
+
+
+
+

+ 163 - 0
app/view/public/header_new.html

@@ -0,0 +1,163 @@
+<!DOCTYPE html>
+<html lang="zh-cn">
+<head>
+<meta charset="utf-8">
+<title>{$Think.config.SITE_TITLE}</title>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="description" content="">
+<meta name="author" content="pc">
+
+
+
+<!-- Le styles -->
+<link href="http://libs.baidu.com/bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet">
+
+
+<!--[if lte IE 6]>
+<link rel="stylesheet" type="text/css" href="__PUBLIC__/Plugin/bootstrap/bootstrap-ie6.css">
+<![endif]-->
+<!--[if lte IE 7]>
+<link rel="stylesheet" type="text/css" href="__PUBLIC__/Plugin/bootstrap/ie.css">
+<![endif]-->
+
+<style type="text/css">
+  body {
+    padding-top: 60px;
+    padding-bottom: 40px;
+  }
+
+</style>
+<link href="__PUBLIC__/Plugin/bootstrap/bootstrap-responsive.css" rel="stylesheet">
+
+<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
+<!--[if lt IE 9]>
+  <script src="__PUBLIC__/html5.js"></script>
+<![endif]-->
+
+<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
+<script>
+var CONTROLLER="__URL__";
+</script>
+
+
+<style type="text/css">
+* {
+	padding:0;
+	margin:0;
+}
+li {
+	list-style:none;
+}
+.input_width {
+}
+</style>
+</head>
+
+<body>
+
+	<div class="navbar navbar-inverse navbar-fixed-top">
+      <div class="navbar-inner">
+        <div class="container-fluid">
+          <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </a>
+          <a class="brand" href="__W__">{$Think.config.SITE_TITLE}首页</a>
+          <div class="nav-collapse collapse">
+            <p class="navbar-text pull-right">
+              Logged in as <a href="__U__/Login/logout">{$user.nickname} --欢迎您! 退出</a>
+            </p>
+            <ul class="nav">
+              <li class="active"><a href="__U__">用户中心 <span class="sr-only">(current)</span></a></li>
+              <li><a href="__W__/Index/help">帮助</a></li>
+            </ul>
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+
+
+<div class="container-fluid">
+      <div class="row-fluid">
+        <div class="span2">
+          <div class="well sidebar-nav">
+            <ul class="nav nav-list">
+            	<li class="nav-header">家</li>
+                <!-- <a  class="list-group-item active" href="#"><i class="icon-edit"></i><span class="hidden-tablet">家</span></a> -->
+        		<li><a href="{:U('Family/index')}"><i class="icon-edit"></i><span class="hidden-tablet">家谱管理</span></a></li>
+        		<li><a href="{:U('FamilyStory/index')}"><i class="icon-edit"></i><span class="hidden-tablet">成员事迹</span></a></li>
+        		<li><a href="{:U('FamilyAdmin/index')}"><i class="icon-edit"></i><span class="hidden-tablet">申请修谱的成员</span></a></li>
+        <!-- <a class="list-group-item" href="{:U('FamilyMember/index')}"><i class="icon-edit"></i><span class="hidden-tablet">家成员管理</span></a>
+        
+        <a class="list-group-item" href="/Richeng/index"><i class="icon-edit"></i><span class="hidden-tablet">日程管理</span></a>
+        -->
+    
+             
+            </ul>
+          </div><!--/.well -->
+        </div><!--/span-->
+        
+        <div class="span10">
+         
+       
+
+
+
+
+
+<style type="text/css">
+div.digg {
+	margin: 3px;
+	padding: 3px;
+	text-align: center;
+}
+div.digg a {
+	border-color: #aaaadd;
+	border-style: solid;
+	border-width: 1px;
+	color: #000099;
+	display: inline-block;
+	margin: 2px;
+	padding: 2px 5px;
+	text-decoration: none;
+}
+div.digg a:hover {
+	border-color: #000099;
+	border-style: solid;
+	border-width: 1px;
+	color: #000;
+}
+div.digg a:active {
+	border-color: #000099;
+	border-style: solid;
+	border-width: 1px;
+	color: #000;
+}
+div.digg span.current {
+	background-color: #000099;
+	border-color: #000099;
+	border-style: solid;
+	border-width: 1px;
+	color: #fff;
+	font-weight: bold;
+	margin: 2px;
+	padding: 2px 5px;
+}
+div.digg span.disabled {
+	border-color: #eee;
+	border-style: solid;
+	border-width: 1px;
+	color: #ddd;
+	margin: 2px;
+	padding: 2px 5px;
+}
+</style>
+<script>
+
+$(".nav-list li a").each(function(index, element) {
+	if($(element).attr("href") == CONTROLLER + "/index.html"){
+		//$(element).parent(this).addClass("active");
+	}
+});
+</script>

+ 55 - 0
app/view/public/index.html

@@ -0,0 +1,55 @@
+
+
+
+<div class="row-fluid sortable">
+    <div class="box span12">
+        <div data-original-title="" class="box-header well"> <i class="icon-user"></i> <a href="{$control}/add" class="">添加</a>系统</div>
+        <div class="box-content">
+            <form method='get' action="__SELF__"  class="form-inline">
+                {$html_search}
+                <button type="submit" class="btn btn-primary">搜索</button>
+            </form>
+            <br />
+
+            <!-- show="id:编号|8%,title:名称:edit,create_time|toDate='y-m-d':创建时间,status|getStatus2:状态,{$fields}"-->
+
+            <html:list id="checkList" name="vo" style="table table-striped table-bordered bootstrap-datatable datatable" checkbox="true" action="true"  datasource="list" show="{$f_list}" actionlist="{$f_action}"/>
+            <div>
+                <a href="javascript:;" onclick="del();" class="btn btn-info"> 批量禁用</a>
+                <a href="javascript:;" onclick="foreverdel();" class="btn btn-danger"> 批量删除</a>
+            </div>
+            <div class="container text-center">
+                {$page}
+                <div style="margin-top:10px;">跳转到<input type="text" style="width: 100px;" id="txt_page" name="txt_page" >页 <input id="btn_jump" type="button" value="跳转"></div>
+            </div>
+
+        </div>
+    </div>
+
+</div>
+
+<script src="__PUBLIC__/common/{$js_name}.js"></script>
+
+<script>
+    <php>
+    $params = I('get.');
+    unset($params['p']);
+    $params = http_build_query($params);
+    </php>
+
+    $(function () {
+        console.log(URL);
+
+        $('#btn_jump').click(function () {
+            goPage();
+        });
+        function goPage() {
+            var params = '{$params}';
+            var url = CONTROLLER+"/index?"+params;
+            url += "&p="+$('#txt_page').val();
+            window.location.href = url;
+
+        }
+    });
+
+</script>

Datei-Diff unterdrückt, da er zu groß ist
+ 356 - 0
app/view/public/layout_course.html


+ 3 - 0
app/view/public/lists.html

@@ -0,0 +1,3 @@
+
+{$htmlList}
+

+ 275 - 0
app/view/public/login.html

@@ -0,0 +1,275 @@
+<extend name="Public:index" />
+
+<block name="login">
+	<script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-appid="205255" data-redirecturi="__U__/Login/qq_callback" charset="utf-8"></script>
+	<script>
+        $('#kw').val('{$Think.get.kw}');
+        $('#opt').val('{$Think.get.opt}');
+
+        $('#select_surname').click(
+            function(){
+                $('#all_surname').show();
+            }
+        );
+
+
+        $(document).bind('click',function(e){
+            var e = e || window.event;
+            var elem = e.target || e.srcElement;
+            while (elem) {
+                if (elem.className && elem.className.indexOf('dialog')>-1) {
+                    return;
+                }
+                elem = elem.parentNode;
+            }
+            $('#all_surname').css('display','none');
+        });
+
+        QC.Login({
+            btnId:"qqLoginBtn",
+            size: "A_M" //A_XL| A_L| A_M| A_S|  B_M| B_S| C_S
+        });
+
+        url = "__UAPI__/User/detail?callback=?";
+        $.getJSON(url,function(data){
+            var data = data.data;
+            if(data.id){
+                userinfo = data;
+                var userBar = ' <a class=" white_color" href="__U__">欢迎:'+data.nickname+'</a>'+
+                '<a id="logout"  class="icon4 white_color" href="__U__/public/logout" target="_self">退出</a>';
+            document.getElementById("UserBar").innerHTML = userBar;
+                $('#logout').on('click',logout);
+            }
+        });
+
+        function logout(){
+            url = "__UAPI__/Login/logout?callback=?";
+            $.getJSON(url,function(data){
+                window.location.reload();
+            });
+        }
+
+	</script>
+
+	<script type="text/javascript"charset="utf-8"src="__PUBLIC__/Home/js/jquery.js"></script>
+	<script type="text/javascript"charset="utf-8"src="__PUBLIC__/Home/js/ajax.js"></script>
+
+	<link rel="stylesheet" href="__PUBLIC__/Home/css/login/global.css">
+	<link rel="stylesheet" href="__PUBLIC__/Home/css/login/skin.css">
+	<link rel="stylesheet" href="__PUBLIC__/Home/css/login/autoComplete.css">
+	<link rel="stylesheet" href="__PUBLIC__/Home/css/login/login.css">
+	<body class="s-" style="padding-top: 0px;">
+	<div class="g-doc" style="visibility: visible;">
+		<div class="g-hd">
+			<div class="g-in">
+				<div class="m-logobar">
+					<h1>
+						<a href="__APP__">
+							<em>网易用户中心</em>
+							<img src="__PUBLIC__/Home/imgs/login/logo.png" alt="网易用户中心" title="网易用户中心">
+						</a>
+					</h1>
+					<i>|</i>
+					<h2 class="f-ff1">登录</h2>
+					<div class="notice"></div>
+				</div>
+			</div>
+		</div>
+		<div class="g-bd">
+			<div class="g-in" style="position:relative; padding:46px 0;background:url('__PUBLIC__/Home/imgs/login/bg.jpg');">
+
+				<iframe id="advList" frameborder="0" scrolling="no" marginheight="0px" marginwidth="0px" style="display: block;width: 990px;height: 512px;position: absolute;bottom: 0px;left: 0px;" src="">
+				</iframe>
+
+				<div class="m-tab m-tab-small">
+					<div class="tabHd">
+						<ul class="f-cbli">
+							<li rel="#loginByAccount" class="z-on"><a href="javascript:void(0);">普通登录</a></li>
+							<li rel="#loginByCode" style="position:relative; "><a href="javascript:void(0);">二维码登录</a><span class="u-new"></span></li>
+						</ul>
+					</div>
+					<div class="tabBd">
+						<div id="loginByAccount">
+							<div id="checkAlert">
+								<p class="u-tips " style="display:none;">
+									<em>&nbsp;</em><span></span>
+								</p>
+							</div>
+							<form id="fLogin" method="post" action="__URL__/handerLogin" autocomplete="off" target="_self">
+								<div class="m-ipt">
+									<div class="u-ipt">
+										<div class="iptctn">
+											<input type="text" name="username" id="username" value="" myholder="帐号" placeholder="帐号">
+											<span id="nu"></span>
+										</div>
+									</div>
+								</div>
+								<div class="m-ipt">
+									<div class="u-ipt">
+										<div class="iptctn">
+											<input type="password" name="password" id="password" value="" maxlength="16" myholder="密码" placeholder="密码">
+											<span id="pwd"></span>
+										</div>
+									</div>
+								</div>
+								<button type="submit" id="loginBtn" class="u-btn2">登录</button>
+							</form>
+						</div>
+						<div id="loginByCode" class="f-dn">
+							<form id="codeLoginForm" method="post" action="" autocomplete="off" target="_self">
+								<input type="hidden" name="product" value="urs">
+								<input type="hidden" name="noRedirect" value="1">
+								<input type="hidden" id="ticket" name="ticket" value="">
+								<div id="qrBox">
+									<p class="qrMsg">
+										使用 <a href="" target="_blank">网易邮箱大师APP</a> 扫一扫快速登录
+									</p>
+									<div class="u-tips4 f-dn">
+										<em>&nbsp;</em><span class="f-ff1"></span>
+									</div>
+									<div id="loginQrCodeContainer">
+										<img src="" id="loginQrCode">
+										<div class="loginQrCodeCover" style="display:none;"></div>
+										<div class="loginQrCodeInfor" style="display:none;">
+											<p><strong>二维码已失效</strong><br>请刷新后重新扫描</p>
+											<a href="javascript:void(0);" class="u-btn2 reflashOrBtn"><span>刷新</span></a>
+										</div>
+									</div>
+								</div>
+							</form>
+						</div>
+
+						<div class="loginLinks">
+							<a href="__U__/public/findpwd" target="_blank">忘记密码?</a>|
+
+							<a href="__U__/public/register" >注册</a>|
+							<span id="qqLoginBtn"></span>|
+						</div>
+
+					</div>
+				</div>
+
+			</div>
+
+			<div class="ftnList">
+				<ul class="g-in f-cb f-cbli"><!--
+						--><li style="position:relative;">
+					<a href="" class="u-tips2 u-tips2-ftn1" target="_blank">
+						<em>&nbsp;</em>
+						<span>用户中心公众版<br><i>帐号保护神器,安全达人必备</i></span>
+					</a>
+					<span class="u-new"></span>
+				</li><!--
+						--><li>
+					<a href="" class="u-tips2 u-tips2-ftn0" target="_blank">
+						<em>&nbsp;</em>
+						<span>找回密码<br><i>多种方式快速找回密码</i></span>
+					</a>
+				</li><!--
+						--><li>
+					<a href="" class="u-tips2 u-tips2-ftn2" target="_blank">
+						<em>&nbsp;</em>
+						<span>锁定帐号<br><i>禁止登录,防止帐号被盗</i></span>
+					</a>
+				</li><!--
+						--><li>
+					<a href="" class="u-tips2 u-tips2-ftn3" target="_blank">
+						<em>&nbsp;</em>
+						<span>手机将军令<br><i>安全、实惠、免费、实用</i></span>
+					</a>
+				</li><!--
+						--><li>
+					<a href="" class="u-tips2 u-tips2-ftn4" target="_blank">
+						<em>&nbsp;</em>
+						<span>帐号修复<br><i>通过客服解决帐号问题</i></span>
+					</a>
+				</li><!--
+					--></ul>
+			</div>
+		</div>
+		<div class="g-ft">
+			<div class="g-in">
+				<div class="m-cp">
+					<p>
+						<a href="" target="_blank">About NetEase</a>-
+						<a href="" target="_blank">公司简介</a>-
+						<a href="" target="_blank">联系方式</a>-
+						<a href="" target="_blank">OAuth2.0认证</a>-
+						<a href="" target="_blank">招聘信息</a>-
+						<a href="" target="_blank">客户服务</a>-
+						<a href="" target="_blank">相关法律</a>-
+						<a href="" target="_blank">网络营销</a>
+					</p>
+					<p>
+						网易公司版权所有 ©1997-2015
+					</p>
+				</div>
+			</div>
+		</div>
+		<div id="codeTrigger"></div>
+	</div>
+	<div id="autoCompleteList"></div>
+	</body>
+	<script type="text/javascript" charset="utf-8">
+        var f = false;
+        var t = false;
+        $("#username").blur(function () {
+            var val = this.value;
+            if (!val) {
+                $("#nu").css("color", "red");
+                $("#nu").html("请输入用户名");
+                return f = false;
+            } else {
+                $("#nu").css("color", "green");
+                return f = true;
+            }
+        });
+        $("#password").blur(function () {
+            var val = this.value;
+            if (!val) {
+                $("#pwd").css("color", "red");
+                $("#pwd").html("请输入密码");
+                return t = false;
+            }
+            //else if (val.length < 9) {
+                // $("#pwd").css("color","red");
+                //$("#pwd").html("我估计有点短");
+                //return t=false;
+            //}
+            else {
+                $("#pwd").css("color", "green");
+                $("#pwd").html("密码格式正确");
+                return t = true;
+            }
+        });
+
+        $("form").submit(function () {
+            $("#username").blur();
+            $("#password").blur();
+            if (t && f) {
+                return true;
+            }
+            return false;
+        });
+	</script>
+</block>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 15 - 0
app/view/public/login1.html

@@ -0,0 +1,15 @@
+{__NOLAYOUT__}<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>用户注册</title>
+</head>
+<body>
+<h3><a href="__APP__">返回主页</a></h3>
+<form action="__URL__/check" method="post">
+帐号<input type="text" name="username">
+密码<input type="text" name="password">
+<input type="submit" value="登录">
+</form>
+</body>
+</html>

Datei-Diff unterdrückt, da er zu groß ist
+ 232 - 0
app/view/public/loginout.html


+ 220 - 0
app/view/public/register.html

@@ -0,0 +1,220 @@
+<extend name="Public:index" />
+<block name="reg">
+	<link rel="stylesheet" href="__PUBLIC__/Home/css/reg/global.css">
+	<link rel="stylesheet" href="__PUBLIC__/Home/css/reg/autoComplete.css">
+	<link rel="stylesheet" href="__PUBLIC__/Home/css/reg/reg.css">
+	<link rel="stylesheet" href="__PUBLIC__/Home/css/reg/popup.css">
+	<script type="text/javascript"src="__PUBLIC__/Home/js/jquery.js"></script>
+	<script type="text/javascript"src="__PUBLIC__/Home/js/ajax.js"></script>
+	<body class="s-study">
+	<div class="g-doc" style="min-width:1240px">
+		<div class="g-hd">
+			<div class="g-in">
+				<div class="m-logobar">
+					<h1>
+						<a href="#" target="_blank">
+							<em>网易用户中心</em><img src="__PUBLIC__/Home/imgs/reg/logo2.png" alt="网易用户中心" title="网易用户中心">
+						</a>
+					</h1>
+					<i>|</i>
+					<h2 class="f-ff1">注册</h2>
+				</div>
+			</div>
+		</div>
+		<div class="g-bd">
+			<div class="g-in" style="min-width:1240px">
+
+				<!-- tab模块 -->
+				<div class="m-tab">
+					<div class="tabHd">
+						<ul class="f-cbli">
+							<li class="z-on">
+								<a href="javascript:void(0);">帐号注册</a>
+							</li>
+						</ul>
+					</div>
+					<div class="tabBdNew" style="overflow:visible;">
+						<div class="tabBd" style="float:left;height:590px">
+							<form method="post" action="__URL__/handerRegister" autocomplete="off">
+								<div id="regEmail">
+									<div class="m-ipt f-mb0">
+										<div class="u-ipt">
+											<div class="iptctn">
+												<input type="username" name="username" id="username" tabindex="1" value="" autocapitalize="off" myholder="用户名" placeholder="用户名">
+												<span id="nu"></span>
+											</div>
+										</div>
+										<p class="u-tips">
+											<em>&nbsp;</em><span></span>
+										</p>
+									</div>
+									<div class="regFormSplit">
+										<a href=""></a>
+									</div>
+									<div class="m-ipt">
+										<div class="u-popup f-dn" id="j-popup">
+											<div class="pophd">
+												<p class="f-ff1 f-fwb">网易用户中心的 程序猿们建议您:</p>
+											</div>
+											<div class="popcnt">
+											</div>
+										</div>
+										<div class="u-ipt ">
+											<div class="iptctn">
+												<input type="password" name="password" id="password" tabindex="2" maxlength="16" value="" autocapitalize="off" myholder="设置密码" placeholder="设置密码"><span id="pwd"></span>
+											</div>
+										</div>
+										<p class="u-tips ">
+											<em>&nbsp;</em><span></span>
+										</p>
+									</div>
+									<div class="m-ipt">
+										<div class="u-ipt "><div class="iptctn"><input type="password" name="repassword" id="repassword" tabindex="3" value="" autocapitalize="off" maxlength="16" myholder="确认密码" placeholder="确认密码"><span id="pwd1"></span></div></div>
+										<p class="u-tips ">
+											<em>&nbsp;</em><span></span>
+										</p>
+									</div>
+									<!--<div class="m-ipt m-ipt-code">
+										<div class="u-ipt "><div class="iptctn"><input type="text" name="code" id="usercheckcode" tabindex="4" autocapitalize="off" myholder="验证码" style="width:170px;" placeholder="验证码"></div></div>
+										<img id="code" width="128" height="40" src="__CONTROLLER__/verify" alt="验证码" title="验证码">
+										<a href="javascript:void(0);" class="u-btn u-btn-img u-btn-img-code"><span><em></em></span></a>
+										<p class="u-tips ">
+											<em>&nbsp;</em><span></span>
+										</p>
+									</div>-->
+									<input type="submit" class="u-btn2" value="立即注册"/>
+								</div>
+
+								<span class="u-check">
+										<input type="checkbox" name="agree" id="agree" checked="checked">
+										<label for="agree">我同意
+											<a href="" target="_blank">" 服务条款  "</a> 和
+											<a href="" target="_blank">" 网络游戏用户隐私权保护和个人信息利用政策 "</a>
+										</label>
+									</span>
+							</form>
+						</div>
+						<!-- 广告模块 -->
+						<div class="tabBdAd">
+							<div>
+								<p class="ad_title">用网易邮箱大师</p>
+								<p class="ad_title">管理邮箱更简单</p>
+								<p class="ad_lit_title">[自动登录、再也不用记密码]</p><p class="ad_lit_title">[不用费心、所有邮箱自动收发]</p>
+							</div>
+							<div style="width: 200px;height: 257px;margin: 20px auto;">
+								<img src="__PUBLIC__/Home/imgs/reg/got2.jpg"></div>
+							<a class="f-ib" target="_blank" href="" style="width: 145px;height: 40px;background:url(/images2/got1.jpg) no-repeat"></a>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<div class="g-ft">
+			<div class="g-in">
+				<div class="m-cp">
+					<p>
+						<a href="" target="_blank">About NetEase</a>-
+						<a href="" target="_blank">公司简介</a>-<a href="" target="_blank">联系方式</a>-
+						<a href="" target="_blank">OAuth2.0认证</a>-<a href="" target="_blank">招聘信息</a>-
+						<a href="" target="_blank">客户服务</a>-<a href="" target="_blank">相关法律</a>-
+						<a href="" target="_blank">网络营销</a>
+					</p>
+					<p>
+						网易公司版权所有 ©1997- 2015
+					</p>
+				</div>
+			</div>
+		</div>
+	</div>
+	<div id="autoCompleteList"></div>
+	</body>
+	<script type="text/javascript"charset="utf-8">
+
+        var u=true;
+        $("#username").blur(function()
+        {
+            var email=this.value;
+            if(!email)
+            {
+                $("#nu").css("color","red");
+                $("#nu").html("请输入用户名");
+                return u = false;
+            }else
+            {
+                $.get("__APP__/Login/reg1?email="+email,function(b){
+                    if(b){
+                        $("#nu").css("color","red");
+                        $("#nu").html("邮箱已被注册");
+                        return u = false;
+                    }else{
+                        $("#nu").css("color","green");
+                        $("#nu").html("");
+                        return u = true;
+                    }
+                });
+
+                //$("#nu").html("");
+                //return u = true;
+            }
+        });
+
+        var p=true;
+        $("#password").blur(function(){
+            var val=this.value;
+            if(!val){
+                $("#pwd").css("color","red");
+                $("#pwd").html("请输入密码");
+                return p = false;
+            }
+           /* else if(val.length < 9){
+                $("#pwd").css("color","red");
+                $("#pwd").html("密码过短");
+                return p = false;
+            }*/
+            else{
+                $("#pwd").css("color","green");
+                $("#pwd").html("密码可用");
+                return p = true;
+            }
+        });
+
+        var p1=true;
+        $("#re_password").blur(function(){
+            var val=this.value;
+            if(!val
+            ){
+                $("#pwd1").css("color","red");
+                $("#pwd1").html("请再次输入密码");
+                return p1 = false;
+            }else if(val != $(":password").val()){
+                $("#pwd1").css("color","red");
+                $("#pwd1").html("两次输入不同");
+                return p1 = false;
+            }else{
+                $("#pwd1").css("color","green");
+                $("#pwd1").html("密码格式正确");
+                return p1 = true;
+            }
+        });
+
+        $("form").submit(function()
+        {
+            $("#username").blur();
+            $("#password").blur();
+            $("#repassword").blur();
+
+            if(u && p && p1)
+            {
+                return true;
+            }
+            return false;
+        });
+
+        $("#code").click(function(){
+            this.src = this.src+'?'+Math.random();
+        });
+
+
+
+	</script>
+</block>

+ 15 - 0
app/view/public/register2.html

@@ -0,0 +1,15 @@
+{__NOLAYOUT__}<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>用户注册</title>
+</head>
+<body>
+<h3><a href="__APP__">返回主页</a></h3>
+<form action="__URL__/saveUser" method="post">
+帐号<input type="text" name="username">
+密码<input type="text" name="password">
+<input type="submit" value="注册">
+</form>
+</body>
+</html>

+ 44 - 0
app/view/public/top.html

@@ -0,0 +1,44 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!-- saved from url=(0044)http://jinian.zupulu.com/memorial/?mid=95795 -->
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <link rel="stylesheet" type="text/css" media="all" href="__PUBLIC__/new/css/jgn_index.css">
+    <link rel="stylesheet" type="text/css" href="__PUBLIC__/new/css/qqxc.css">
+</head>
+<body dh="1" rlt="1">
+<div id="jtop">
+    <div class="jtopn" style="width:800px;  margin: auto; margin-top:6px; ">
+        <a href="#" style="float:left; color:#fff;">欢迎来到曹氏族谱录网站~</a>
+        <span class="pc_20091018_01" style="float: right; text-align:center;">
+	          <a href="#" class="red"><img src="__PUBLIC__/new/img/2_0.jpg" >【免费创建纪念馆】 <span style="color:#000;">帮助中心</span></a>
+        </span>
+    </div>
+</div>
+
+<div id="jcontainer" >
+    <div class="jtit">
+        <h1 >{$info.title}</h1>纪念馆地址:{$_SERVER['HTTP_HOST']}{:U('Memorial/index',array('id'=>$info['id']))}[将本馆转载至我的QQ空间或朋友圈]
+        <!-- <p>本馆由[张三]于2016年02月15日创建 馆长:[张三]管理员 暂无</p> -->
+    </div>
+    <ul class="jnav">
+        <li class="jnav_ed">
+            <a href="{:U('Memorial/index',array('id'=>$info['id']))}">纪念馆首页</a></li>
+        <li>
+            <a href="{:U('Memorial/sweep',array('id'=>$info['id']))}">陵园祭扫</a></li>
+        <li>
+            <a href="{:U('Document/index',array('id'=>$info['id']))}">祭文悼词</a></li>
+        <li>
+            <a href="{:U('Memorial/introduce',array('id'=>$info['id']))}">生平介绍</a></li>
+        <li>
+            <a href="{:U('File/index',array('id'=>$info['id']))}">亲情相册</a></li>
+        <li>
+            <a href="{:U('Guestbook/index',array('id'=>$info['id']))}">亲情留言</a></li>
+        <li>
+            <a href="#">纪念动态</a></li>
+        <li>
+            <a href="{:U('Memorial/manage',array('id'=>$info['id']))}">管理本馆</a></li>
+
+    </ul>

+ 113 - 0
app/view/user/add.html

@@ -0,0 +1,113 @@
+<script type="text/javascript" charset="utf-8" src="http://public.rrbrr.com/Plugin/ueditor-1.4.3.3/ueditor.config.js"></script>
+<script type="text/javascript" charset="utf-8" src="http://public.rrbrr.com/Plugin/ueditor-1.4.3.3/ueditor.all.min.js"> </script>
+<script type="text/javascript" charset="utf-8" src="http://public.rrbrr.com/Plugin/ueditor-1.4.3.3/lang/zh-cn/zh-cn.js"></script>
+
+
+
+
+<form class="form-horizontal" role="form"  method="post" action="__URL__/save/">
+    <div class="form-group" style="" >
+    <label for="username" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 用户名</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="username" type="text" id="username" size="30" value="{$vo[username] ? $vo[username] : $_GET[username]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="password" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 密码</label>
+    <div class="col-sm-4">
+        <input   type="password"  class="form-control" name="password" id="password" size="30" value="{$vo.password}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="email" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 邮箱</label>
+    <div class="col-sm-4">
+        <input  class="form-control" name="email" type="text" id="email" size="30" value="{$vo[email] ? $vo[email] : $_GET[email]}" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="avatar" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 头像</label>
+    <div class="col-sm-4">
+        <input onchange="previewImg(this,'avatar')" class="avatar-input" id="avatar"  name="avatar" type="file"><div id='preview_img_avatar'>
+                                <notempty name="vo['avatar']">
+                                <img src="{$vo.avatar|img}" width='100' />
+                                 <else />
+                                 <img src="{$Think.config.DEFAULT_IMG}" width='100' />
+                                 </notempty>
+                                 </div>
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="birthday" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 生日</label>
+    <div class="col-sm-4">
+        <div class="layui-input-inline">
+                        <input type="text" class="layui-input" id="birthday" name="birthday" size="30" placeholder=" - "
+                               value="{$Think.get.create_t}">
+                    </div>
+        <script>
+            laydate.render({
+                elem: '#birthday', 
+                type: 'date',
+                
+
+            });
+        </script>
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="status" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 状态</label>
+    <div class="col-sm-4">
+        <html:select  first="请选择" options='opt_status' selected='status_selected' name="status" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="flag" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 标记</label>
+    <div class="col-sm-4">
+        <html:select  first="请选择" options='opt_flag' selected='flag_selected' name="flag" />
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="intro" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 用户介绍</label>
+    <div class="col-sm-4">
+        <html:editor id="editor" name="intro" type="kindeditor" style="width:100%;height:400px;visibility:hidden;" >{$vo.intro}</html:editor>
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+<div class="form-group" style="" >
+    <label for="resume" class="col-sm-2 control-label"><?php if(!empty($required)){ ?><span
+            class="text-danger">*</span><?php } ?> 简历</label>
+    <div class="col-sm-4">
+        <input class="avatar-input" id="resume"  name="resume" type="file"><span>{$vo[resume] } </span>
+    </div>
+    <div class="col-sm-2 control-label " style="text-align: left;"><span class="Validform_checktip"></span></div>
+
+</div>
+
+    <div class="form-group">
+        <div class="col-sm-offset-2 col-sm-10">
+            <button type="submit" class="btn btn-info">保存</button>
+        </div>
+    </div>
+</form>

+ 116 - 0
app/view/user/index.html

@@ -0,0 +1,116 @@
+
+
+
+<div class="row-fluid sortable">
+    <div class="box span12">
+        <div data-original-title="" class="box-header well"><!-- <i class="icon-user"></i> <a href="add" class=""></a>{$pageTitle}--></div>
+        <div class="box-content">
+            <form method='get' action="{:url('index')}"  class="form-inline">
+                  <div class="form-group" >
+    <label for="id"> 编号</label>
+    
+       <input  class="form-control" name="id" type="text" id="id" size="10" value="{$vo[id] ? $vo[id] : $_GET[id]}" />
+       </div>
+   
+
+  <div class="form-group" >
+    <label for="username"> 用户名</label>
+    
+       <input  class="form-control" name="username" type="text" id="username" size="30" value="{$vo[username] ? $vo[username] : $_GET[username]}" />
+       </div>
+   
+
+  <div class="form-group" >
+    <label for="email"> 邮箱</label>
+    
+       <input  class="form-control" name="email" type="text" id="email" size="30" value="{$vo[email] ? $vo[email] : $_GET[email]}" />
+       </div>
+   
+
+  <div class="form-group" >
+    <label for="birthday"> 生日</label>
+    
+       <div class="layui-input-inline">
+                        <input type="text" class="layui-input" id="birthday" name="birthday" size="30" placeholder=" - "
+                               value="{$Think.get.create_t}">
+                    </div>
+        <script>
+            laydate.render({
+                elem: '#birthday', 
+                type: 'date',
+                
+
+            });
+        </script>
+       </div>
+   
+
+  <div class="form-group" >
+    <label for="status"> 状态</label>
+    
+       <html:select  first="请选择" options='opt_status' selected='status_selected' name="status" />
+       </div>
+   
+
+
+		      <button type="submit" class="btn btn-primary">搜索</button>
+		    </form>
+            <br />
+            <php>  $query = strstr($_SERVER["REQUEST_URI"],'?');    </php>
+
+            <php>if(0==1){</php>
+            <a href="{:url('add')}" type="button" class="btn btn-warning">添加</a>
+            <php>}</php>
+
+
+            <php>if(0==1){</php>
+            <a href="{:url('exportExcel')}" type="button" class="btn btn-warning">导出</a>
+            <php>}</php>
+
+
+           <!-- show="id:编号|8%,title:名称:edit,create_time|toDate='y-m-d':创建时间,status|getStatus2:状态,{$fields}"-->
+            <html:list id="checkList" name="vo" style="table table-striped table-bordered bootstrap-datatable datatable" checkbox="true" action="true"  datasource="list" show="id:编号::sort,username:用户名::sort,email:邮箱::sort,birthday:生日::sort,status_text:状态,create_time:创建时间::sort" actionlist="user_编辑:id,user_查看用户浏览记录:id"/>
+            <div>
+                <php>if(0==1){</php>
+                <a href="javascript:;" onclick="del();" class="btn btn-info"> 批量禁用</a>
+                <php>}</php>
+
+                <php>if(0==1){</php>
+                <a href="javascript:;" onclick="foreverdel();" class="btn btn-danger"> 批量删除</a>
+                <php>}</php>
+            </div>
+            <div class="container text-center">
+                {$page}
+                <div style="margin-top:10px;">跳转到<input type="text" style="width: 100px;" id="txt_page" name="txt_page" >页 <input id="btn_jump" type="button" value="跳转"></div>
+                </div>
+ 
+        </div>
+    </div>
+
+</div>
+
+<script src="__PUBLIC__/common/User.js"></script>
+
+<script>
+    <php>
+        $params = input('get.');
+        unset($params['p']);
+        $params = http_build_query($params);
+    </php>
+
+        $(function () {
+            console.log(URL);
+
+            $('#btn_jump').click(function () {
+                goPage();
+            });
+            function goPage() {
+                var params = '{$params}';
+                var url = CONTROLLER+"/index?"+params;
+                url += "&p="+$('#txt_page').val();
+                window.location.href = url;
+
+            }
+        });
+
+</script>

+ 26 - 0
build.example.php

@@ -0,0 +1,26 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+/**
+ * php think build 自动生成应用的目录结构的定义示例
+ */
+return [
+    // 需要自动创建的文件
+    '__file__'   => [],
+    // 需要自动创建的目录
+    '__dir__'    => ['controller', 'model', 'view'],
+    // 需要自动创建的控制器
+    'controller' => ['Index'],
+    // 需要自动创建的模型
+    'model'      => ['User'],
+    // 需要自动创建的模板
+    'view'       => ['index/index'],
+];

+ 44 - 0
composer.json

@@ -0,0 +1,44 @@
+{
+    "name": "topthink/think",
+    "description": "the new thinkphp framework",
+    "type": "project",
+    "keywords": [
+        "framework",
+        "thinkphp",
+        "ORM"
+    ],
+    "homepage": "http://thinkphp.cn/",
+    "license": "Apache-2.0",
+    "authors": [
+        {
+            "name": "liu21st",
+            "email": "liu21st@gmail.com"
+        }
+    ],
+    "require": {
+        "php": ">=7.1.0",
+        "topthink/framework": "6.0.*-dev",
+        "topthink/think-view": "^1.0",
+        "rrbrr/cgf": "dev-master"
+    },
+    "require-dev": {
+        "symfony/var-dumper": "^4.2"
+    },
+    "autoload": {
+        "psr-4": {
+            "app\\": "app"
+        },
+        "psr-0": {
+            "": "extend/"
+        }
+    },
+    "config": {
+        "preferred-install": "dist"
+    },
+    "scripts": {
+        "post-autoload-dump": [
+            "@php think service:discover",
+            "@php think vendor:publish"
+        ]
+    }
+}

Datei-Diff unterdrückt, da er zu groß ist
+ 1356 - 0
composer.lock


+ 48 - 0
config/app.php

@@ -0,0 +1,48 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+// +----------------------------------------------------------------------
+// | 应用设置
+// +----------------------------------------------------------------------
+
+use think\facade\Env;
+
+return [
+    // 应用地址
+    'app_host'         => Env::get('app.host', ''),
+    // 应用的命名空间
+    'app_namespace'    => '',
+    // 是否启用路由
+    'with_route'       => true,
+    // 是否启用事件
+    'with_event'       => true,
+    // 自动多应用模式
+    'auto_multi_app'   => false,
+    // 应用映射(自动多应用模式有效)
+    'app_map'          => [],
+    // 域名绑定(自动多应用模式有效)
+    'domain_bind'      => [],
+    // 禁止URL访问的应用列表(自动多应用模式有效)
+    'deny_app_list'    => [],
+    // 默认应用
+    'default_app'      => 'index',
+    // 默认时区
+    'default_timezone' => 'Asia/Shanghai',
+
+    // 异常页面的模板文件
+    'exception_tmpl'   => app()->getThinkPath() . 'tpl/think_exception.tpl',
+
+    // 错误显示信息,非调试模式有效
+    'error_message'    => '页面错误!请稍后再试~',
+    // 显示错误信息
+    'show_error_msg'   => false,
+   // 'default_return_type'=>'json'
+];

+ 39 - 0
config/cache.php

@@ -0,0 +1,39 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+use think\facade\Env;
+
+// +----------------------------------------------------------------------
+// | 缓存设置
+// +----------------------------------------------------------------------
+
+return [
+    // 默认缓存驱动
+    'default' => Env::get('cache.driver', 'file'),
+
+    // 缓存连接方式配置
+    'stores'  => [
+        'file' => [
+            // 驱动方式
+            'type'       => 'File',
+            // 缓存保存目录
+            'path'       => app()->getRuntimePath() . 'cache',
+            // 缓存前缀
+            'prefix'     => '',
+            // 缓存有效期 0表示永久缓存
+            'expire'     => 0,
+            // 缓存标签前缀
+            'tag_prefix' => 'tag:',
+            // 序列化机制 例如 ['serialize', 'unserialize']
+            'serialize'  => [],
+        ],
+        // 更多的缓存连接
+    ],
+];

+ 21 - 0
config/console.php

@@ -0,0 +1,21 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+// +----------------------------------------------------------------------
+// | 控制台配置
+// +----------------------------------------------------------------------
+return [
+    // 执行用户(Windows下无效)
+    'user'     => null,
+    // 指令定义
+    'commands' => [
+    ],
+];

+ 28 - 0
config/cookie.php

@@ -0,0 +1,28 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+// +----------------------------------------------------------------------
+// | Cookie设置
+// +----------------------------------------------------------------------
+return [
+    // cookie 保存时间
+    'expire'    => 0,
+    // cookie 保存路径
+    'path'      => '/',
+    // cookie 有效域名
+    'domain'    => '',
+    //  cookie 启用安全传输
+    'secure'    => false,
+    // httponly设置
+    'httponly'  => false,
+    // 是否使用 setcookie
+    'setcookie' => true,
+];

+ 72 - 0
config/database.php

@@ -0,0 +1,72 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+use think\facade\Env;
+
+return [
+    // 默认使用的数据库连接配置
+    'default'         => Env::get('database.driver', 'mysql'),
+
+    // 数据库连接配置信息
+    'connections'     => [
+        'mysql' => [
+            // 数据库类型
+            'type'            => Env::get('database.type', 'mysql'),
+            // 服务器地址
+            'hostname'        => Env::get('database.hostname', '127.0.0.1'),
+            // 数据库名
+            'database'        => Env::get('database.database', ''),
+            // 用户名
+            'username'        => Env::get('database.username', 'root'),
+            // 密码
+            'password'        => Env::get('database.password', ''),
+            // 端口
+            'hostport'        => Env::get('database.hostport', '3306'),
+            // 连接dsn
+            'dsn'             => '',
+            // 数据库连接参数
+            'params'          => [],
+            // 数据库编码默认采用utf8
+            'charset'         => Env::get('database.charset', 'utf8'),
+            // 数据库表前缀
+            'prefix'          => Env::get('database.prefix', ''),
+            // 数据库调试模式
+            'debug'           => Env::get('database.debug', true),
+            // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
+            'deploy'          => 0,
+            // 数据库读写是否分离 主从式有效
+            'rw_separate'     => false,
+            // 读写分离后 主服务器数量
+            'master_num'      => 1,
+            // 指定从服务器序号
+            'slave_no'        => '',
+            // 是否严格检查字段是否存在
+            'fields_strict'   => true,
+            // 是否需要进行SQL性能分析
+            'sql_explain'     => false,
+            // Builder类
+            'builder'         => '',
+            // Query类
+            'query'           => '',
+            // 是否需要断线重连
+            'break_reconnect' => false,
+        ],
+
+        // 更多的数据库配置信息
+    ],
+
+    // 自定义时间查询规则
+    'time_query_rule' => [],
+    // 自动写入时间戳字段
+    'auto_timestamp'  => 'timestamp',
+    // 时间字段取出后的默认时间格式
+    'datetime_format' => 'Y-m-d H:i:s',
+];

+ 20 - 0
config/filesystem.php

@@ -0,0 +1,20 @@
+<?php
+
+use think\facade\Env;
+
+return [
+    'default' => Env::get('filesystem.driver', 'local'),
+    'disks'   => [
+        'local'  => [
+            'type' => 'local',
+            'root' => app()->getRuntimePath() . 'storage',
+        ],
+        'public' => [
+            'type'       => 'local',
+            'root'       => app()->getRootPath() . 'public/storage',
+            'url'        => '/storage',
+            'visibility' => 'public',
+        ],
+        // 更多的磁盘配置信息
+    ],
+];

+ 37 - 0
config/lang.php

@@ -0,0 +1,37 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+// +----------------------------------------------------------------------
+// | 多语言设置
+// +----------------------------------------------------------------------
+
+use think\facade\Env;
+
+return [
+    // 默认语言
+    'default_lang'    => Env::get('lang.default_lang', 'zh-cn'),
+    // 允许的语言列表
+    'allow_lang_list' => [],
+    // 多语言自动侦测变量名
+    'detect_var'      => 'lang',
+    // 是否使用Cookie记录
+    'use_cookie'      => true,
+    // 多语言cookie变量
+    'cookie_var'      => 'think_lang',
+    // 扩展语言包
+    'extend_list'     => [],
+    // Accept-Language转义为对应语言包名称
+    'accept_language' => [
+        'zh-hans-cn' => 'zh-cn',
+    ],
+    // 是否支持语言分组
+    'allow_group'     => false,
+];

+ 55 - 0
config/log.php

@@ -0,0 +1,55 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+use think\facade\Env;
+
+// +----------------------------------------------------------------------
+// | 日志设置
+// +----------------------------------------------------------------------
+return [
+    // 默认日志记录通道
+    'default'      => Env::get('log.channel', 'file'),
+    // 日志记录级别
+    'level'        => [],
+    // 日志类型记录的通道 ['error'=>'email',...]
+    'type_channel' => [],
+    // 关闭全局日志写入
+    'close'        => false,
+    // 全局日志处理 支持闭包
+    'processor'    => null,
+
+    // 日志通道列表
+    'channels'     => [
+        'file' => [
+            // 日志记录方式
+            'type'           => 'File',
+            // 日志保存目录
+            'path'           => app()->getRuntimePath() . 'log',
+            // 单文件日志写入
+            'single'         => false,
+            // 独立日志级别
+            'apart_level'    => [],
+            // 最大日志文件数量
+            'max_files'      => 0,
+            // 使用JSON格式记录
+            'json'           => false,
+            // 日志处理
+            'processor'      => null,
+            // 关闭通道日志写入
+            'close'          => false,
+            // 日志输出格式化
+            'format'         => '[%s][%s] %s',
+            // 是否实时写入
+            'realtime_write' => false,
+        ],
+        // 其它日志通道配置
+    ],
+
+];

+ 63 - 0
config/route.php

@@ -0,0 +1,63 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+// +----------------------------------------------------------------------
+// | 应用设置
+// +----------------------------------------------------------------------
+
+return [
+    // pathinfo分隔符
+    'pathinfo_depr'         => '/',
+    // URL伪静态后缀
+    'url_html_suffix'       => 'html',
+    // URL普通方式参数 用于自动生成
+    'url_common_param'      => true,
+    // 是否开启路由延迟解析
+    'url_lazy_route'        => false,
+    // 是否强制使用路由
+    'url_route_must'        => false,
+    // 合并路由规则
+    'route_rule_merge'      => false,
+    // 路由是否完全匹配
+    'route_complete_match'  => false,
+    // 是否开启路由缓存
+    'route_check_cache'     => false,
+    // 路由缓存连接参数
+    'route_cache_option'    => [],
+    // 路由缓存Key
+    'route_check_cache_key' => '',
+    // 访问控制器层名称
+    'controller_layer'      => 'controller',
+    // 空控制器名
+    'empty_controller'      => 'Error',
+    // 是否使用控制器后缀
+    'controller_suffix'     => false,
+    // 默认的路由变量规则
+    'default_route_pattern' => '[\w\.]+',
+    // 是否自动转换URL中的控制器和操作名
+    'url_convert'           => true,
+    // 是否开启请求缓存 true自动缓存 支持设置请求缓存规则
+    'request_cache'         => false,
+    // 请求缓存有效期
+    'request_cache_expire'  => null,
+    // 全局请求缓存排除规则
+    'request_cache_except'  => [],
+    // 默认控制器名
+    'default_controller'    => 'Index',
+    // 默认操作名
+    'default_action'        => 'index',
+    // 操作方法后缀
+    'action_suffix'         => '',
+    // 默认JSONP格式返回的处理方法
+    'default_jsonp_handler' => 'jsonpReturn',
+    // 默认JSONP处理方法
+    'var_jsonp_handler'     => 'callback',
+];

+ 27 - 0
config/session.php

@@ -0,0 +1,27 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+// +----------------------------------------------------------------------
+// | 会话设置
+// +----------------------------------------------------------------------
+
+return [
+    // session name
+    'name'           => '',
+    // SESSION_ID的提交变量,解决flash上传跨域
+    'var_session_id' => '',
+    // 驱动方式 支持file redis memcache memcached
+    'type'           => 'file',
+    // 过期时间
+    'expire'         => 0,
+    // 前缀
+    'prefix'         => '',
+];

+ 33 - 0
config/template.php

@@ -0,0 +1,33 @@
+<?php
+// +----------------------------------------------------------------------
+// | 模板设置
+// +----------------------------------------------------------------------
+
+return [
+    // 模板引擎类型使用Think
+    'type'         => 'Think',
+    // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法
+    'auto_rule'    => 1,
+    // 模板路径
+    'view_path'    => '',
+    // 模板后缀
+    'view_suffix'  => 'html',
+    // 模板文件名分隔符
+    'view_depr'    => DIRECTORY_SEPARATOR,
+    // 模板引擎普通标签开始标记
+    'tpl_begin'    => '{',
+    // 模板引擎普通标签结束标记
+    'tpl_end'      => '}',
+    // 标签库标签开始标记
+    'taglib_begin' => '<',
+    // 标签库标签结束标记
+    'taglib_end'   => '>',
+    'taglib_pre_load'=>'app\common\taglib\html',
+
+    'layout_on'     =>  true,
+    'layout_name'   =>  'layout',
+    'tpl_replace_string'  =>  [
+        '__PUBLIC__'=>'',
+
+    ]
+];

+ 20 - 0
config/trace.php

@@ -0,0 +1,20 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+// +----------------------------------------------------------------------
+// | Trace设置 开启调试模式后有效
+// +----------------------------------------------------------------------
+return [
+    // 内置Html 支持扩展
+    'type'    => 'Html',
+    // 读取的日志通道名
+    'channel' => '',
+];

+ 2 - 0
extend/.gitignore

@@ -0,0 +1,2 @@
+*
+!.gitignore

Datei-Diff unterdrückt, da er zu groß ist
+ 8888 - 0
public/'.32d49b093ac80c39b290c4027d6354e6.'.css


+ 8 - 0
public/.htaccess

@@ -0,0 +1,8 @@
+<IfModule mod_rewrite.c>
+  Options +FollowSymlinks -Multiviews
+  RewriteEngine On
+
+  RewriteCond %{REQUEST_FILENAME} !-d
+  RewriteCond %{REQUEST_FILENAME} !-f
+  RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
+</IfModule>

Datei-Diff unterdrückt, da er zu groß ist
+ 287 - 0
public/32d49b093ac80c39b290c4027d6354e6.js


Datei-Diff unterdrückt, da er zu groß ist
+ 275 - 0
public/PCASClass.js


Datei-Diff unterdrückt, da er zu groß ist
+ 5773 - 0
public/Plugin/bootstrap/bootstrap-ie6.css


Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
public/Plugin/bootstrap/bootstrap-ie6.min.css


Datei-Diff unterdrückt, da er zu groß ist
+ 1109 - 0
public/Plugin/bootstrap/bootstrap-responsive.css


Datei-Diff unterdrückt, da er zu groß ist
+ 9 - 0
public/Plugin/bootstrap/bootstrap-responsive.min.css


Datei-Diff unterdrückt, da er zu groß ist
+ 6158 - 0
public/Plugin/bootstrap/bootstrap.css


Datei-Diff unterdrückt, da er zu groß ist
+ 2268 - 0
public/Plugin/bootstrap/bootstrap.js


Datei-Diff unterdrückt, da er zu groß ist
+ 9 - 0
public/Plugin/bootstrap/bootstrap.min.css


Datei-Diff unterdrückt, da er zu groß ist
+ 6 - 0
public/Plugin/bootstrap/bootstrap.min.js


BIN
public/Plugin/bootstrap/glyphicons-halflings-white.png


BIN
public/Plugin/bootstrap/glyphicons-halflings.png


+ 59 - 0
public/Plugin/bootstrap/ie.css

@@ -0,0 +1,59 @@
+/* NAVBAR */
+
+/* !CPU HIGH, fix for IE6 shake when scroll */
+* html,* html body {
+  _background-image:url(about:blank);
+  _background-attachment:fixed;
+}
+/* !CPU HIGH, fix for IE6 not support fixed position */
+.navbar-fixed-top {
+  _position:absolute;
+  _bottom:auto;
+  _top:expression(eval(document.documentElement.scrollTop));
+}
+/* !CPU HIGH, fix for IE6 not support fixed position */
+.navbar-fixed-bottom {
+  _position:absolute;
+  _bottom:auto;
+  _top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));
+}
+
+/* DROPDOWN */
+.dropup,
+.dropdown {
+  *zoom:1;
+}
+
+/* CLOSE */
+.close {
+  _font-size: 15px;
+}
+
+.modal-header h3 {
+  *display: inline;
+  *zoom:1;
+}
+
+/* MODALS */
+.modal-backdrop {
+  _position: absolute;
+  _top:0;
+  _margin-top:0;
+  _width:expression(eval(document.documentElement.scrollWidth));
+  _height:expression(eval(document.documentElement.scrollHeight));
+}
+.modal {
+  _position:absolute;
+  _top:0;
+  _margin-top:0;
+  _top:expression(eval(document.documentElement.scrollTop));
+}
+.modal.fade.in {
+  _filter:alpha(opacity=100);
+}
+.modal-backdrop {
+  _filter: alpha(opacity=80);
+}
+.modal-body {
+  _height:expression(this.scrollHeight > 400 ? "400px" : "auto");
+}

Datei-Diff unterdrückt, da er zu groß ist
+ 6 - 0
public/Plugin/cropper-2.3/css/bootstrap.min.css


Datei-Diff unterdrückt, da er zu groß ist
+ 4 - 0
public/Plugin/cropper-2.3/css/font-awesome.min.css


+ 237 - 0
public/Plugin/cropper-2.3/css/main.css

@@ -0,0 +1,237 @@
+/* Basic */
+
+body {
+  margin: 0;
+  overflow-x: hidden;
+}
+
+.browserupgrade {
+  margin: 0;
+  padding: .5em 1em;
+  background-color: #fcfcfc;
+  text-align: center;
+}
+
+
+/* Header */
+
+.docs-header {
+  margin-bottom: 0;
+}
+
+.navbar-toggle:hover,
+.navbar-toggle:focus {
+  border-color: #0074d9;
+}
+
+.navbar-toggle .icon-bar {
+  background-color: #0074d9;
+}
+
+
+/* Jumbotron */
+
+.docs-jumbotron {
+  background-color: #0074d9;
+  color: #fff;
+}
+
+.docs-jumbotron .version {
+  font-size: 14px;
+  color: #fff;
+  filter: alpha(opacity=50);
+  opacity: 0.5;
+}
+
+
+/* Content */
+
+.img-container,
+.img-preview {
+  background-color: #f7f7f7;
+  width: 100%;
+  text-align: center;
+}
+
+.img-container {
+  min-height: 200px;
+  max-height: 516px;
+  margin-bottom: 20px;
+}
+
+@media (min-width: 768px) {
+  .img-container {
+    min-height: 516px;
+  }
+}
+
+.img-container > img {
+  max-width: 100%;
+}
+
+.docs-preview {
+  margin-right: -15px;
+}
+
+.img-preview {
+  float: left;
+  margin-right: 10px;
+  margin-bottom: 10px;
+  overflow: hidden;
+}
+
+.img-preview > img {
+  max-width: 100%;
+}
+
+.preview-lg {
+  width: 263px;
+  height: 148px;
+}
+
+.preview-md {
+  width: 139px;
+  height: 78px;
+}
+
+.preview-sm {
+  width: 69px;
+  height: 39px;
+}
+
+.preview-xs {
+  width: 35px;
+  height: 20px;
+  margin-right: 0;
+}
+
+.docs-data > .input-group {
+  margin-bottom: 10px;
+}
+
+.docs-data > .input-group > label {
+  min-width: 80px;
+}
+
+.docs-data > .input-group > span {
+  min-width: 50px;
+}
+
+.docs-buttons > .btn,
+.docs-buttons > .btn-group,
+.docs-buttons > .form-control {
+  margin-right: 5px;
+  margin-bottom: 10px;
+}
+
+.docs-toggles > .btn,
+.docs-toggles > .btn-group,
+.docs-toggles > .dropdown {
+  margin-bottom: 10px;
+}
+
+.docs-tooltip {
+  display: block;
+  margin: -6px -12px;
+  padding: 6px 12px;
+}
+
+.docs-tooltip > .icon {
+  margin: 0 -3px;
+  vertical-align: top;
+}
+
+.tooltip-inner {
+  white-space: normal;
+}
+
+.btn-upload .tooltip-inner {
+  white-space: nowrap;
+}
+
+@media (max-width: 400px) {
+  .btn-group-crop {
+    margin-right: -15px!important;
+  }
+
+  .btn-group-crop > .btn {
+    padding-left: 5px;
+    padding-right: 5px;
+  }
+
+  .btn-group-crop .docs-tooltip {
+    margin-left: -5px;
+    margin-right: -5px;
+    padding-left: 5px;
+    padding-right: 5px;
+  }
+}
+
+.docs-options .dropdown-menu {
+  width: 100%;
+}
+
+.docs-options .dropdown-menu > li {
+  padding: 3px 20px;
+}
+
+.docs-options .dropdown-menu > li:hover {
+  background-color: #f7f7f7;
+}
+
+.docs-options .dropdown-menu > li > label {
+  display: block;
+}
+
+.docs-cropped .modal-body {
+  text-align: center;
+}
+
+.docs-cropped .modal-body > img,
+.docs-cropped .modal-body > canvas {
+  max-width: 100%;
+}
+
+
+/* Footer */
+
+.docs-footer {
+  overflow: hidden;
+}
+
+.heart {
+  position: relative;
+  display: block;
+  width: 100%;
+  height: 30px;
+  margin-top: 20px;
+  margin-bottom: 20px;
+  color: #ddd;
+  font-size: 18px;
+  line-height: 30px;
+  text-align: center;
+}
+
+.heart:hover {
+  color: #ff4136;
+}
+
+.heart:before {
+  position: absolute;
+  top: 50%;
+  right: 0;
+  left: 0;
+  display: block;
+  height: 0;
+  border-top: 1px solid #eee;
+  content: " ";
+}
+
+.heart:after {
+  position: relative;
+  z-index: 1;
+  padding-left: 8px;
+  padding-right: 8px;
+  background-color: #fff;
+  content: "♥";
+}

+ 415 - 0
public/Plugin/cropper-2.3/css/qunit.css

@@ -0,0 +1,415 @@
+/*!
+ * QUnit 2.0.1
+ * https://qunitjs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2016-07-23T19:39Z
+ */
+
+/** Font Family and Sizes */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult {
+	font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
+}
+
+#qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
+#qunit-tests { font-size: smaller; }
+
+
+/** Resets */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
+	margin: 0;
+	padding: 0;
+}
+
+
+/** Header (excluding toolbar) */
+
+#qunit-header {
+	padding: 0.5em 0 0.5em 1em;
+
+	color: #8699A4;
+	background-color: #0D3349;
+
+	font-size: 1.5em;
+	line-height: 1em;
+	font-weight: 400;
+
+	border-radius: 5px 5px 0 0;
+}
+
+#qunit-header a {
+	text-decoration: none;
+	color: #C2CCD1;
+}
+
+#qunit-header a:hover,
+#qunit-header a:focus {
+	color: #FFF;
+}
+
+#qunit-banner {
+	height: 5px;
+}
+
+#qunit-filteredTest {
+	padding: 0.5em 1em 0.5em 1em;
+	color: #366097;
+	background-color: #F4FF77;
+}
+
+#qunit-userAgent {
+	padding: 0.5em 1em 0.5em 1em;
+	color: #FFF;
+	background-color: #2B81AF;
+	text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
+}
+
+
+/** Toolbar */
+
+#qunit-testrunner-toolbar {
+	padding: 0.5em 1em 0.5em 1em;
+	color: #5E740B;
+	background-color: #EEE;
+}
+
+#qunit-testrunner-toolbar .clearfix {
+	height: 0;
+	clear: both;
+}
+
+#qunit-testrunner-toolbar label {
+	display: inline-block;
+}
+
+#qunit-testrunner-toolbar input[type=checkbox],
+#qunit-testrunner-toolbar input[type=radio] {
+	margin: 3px;
+	vertical-align: -2px;
+}
+
+#qunit-testrunner-toolbar input[type=text] {
+	box-sizing: border-box;
+	height: 1.6em;
+}
+
+.qunit-url-config,
+.qunit-filter,
+#qunit-modulefilter {
+	display: inline-block;
+	line-height: 2.1em;
+}
+
+.qunit-filter,
+#qunit-modulefilter {
+	float: right;
+	position: relative;
+	margin-left: 1em;
+}
+
+.qunit-url-config label {
+	margin-right: 0.5em;
+}
+
+#qunit-modulefilter-search {
+	box-sizing: border-box;
+	width: 400px;
+}
+
+#qunit-modulefilter-search-container:after {
+	position: absolute;
+	right: 0.3em;
+	content: "\25bc";
+	color: black;
+}
+
+#qunit-modulefilter-dropdown {
+	/* align with #qunit-modulefilter-search */
+	box-sizing: border-box;
+	width: 400px;
+	position: absolute;
+	right: 0;
+	top: 50%;
+	margin-top: 0.8em;
+
+	border: 1px solid #D3D3D3;
+	border-top: none;
+	border-radius: 0 0 .25em .25em;
+	color: #000;
+	background-color: #F5F5F5;
+	z-index: 99;
+}
+
+#qunit-modulefilter-dropdown a {
+	color: inherit;
+	text-decoration: none;
+}
+
+#qunit-modulefilter-dropdown .clickable.checked {
+	font-weight: bold;
+	color: #000;
+	background-color: #D2E0E6;
+}
+
+#qunit-modulefilter-dropdown .clickable:hover {
+	color: #FFF;
+	background-color: #0D3349;
+}
+
+#qunit-modulefilter-actions {
+	display: block;
+	overflow: auto;
+
+	/* align with #qunit-modulefilter-dropdown-list */
+	font: smaller/1.5em sans-serif;
+}
+
+#qunit-modulefilter-dropdown #qunit-modulefilter-actions > * {
+	box-sizing: border-box;
+	max-height: 2.8em;
+	display: block;
+	padding: 0.4em;
+}
+
+#qunit-modulefilter-dropdown #qunit-modulefilter-actions > button {
+	float: right;
+	font: inherit;
+}
+
+#qunit-modulefilter-dropdown #qunit-modulefilter-actions > :last-child {
+	/* insert padding to align with checkbox margins */
+	padding-left: 3px;
+}
+
+#qunit-modulefilter-dropdown-list {
+	max-height: 200px;
+	overflow-y: auto;
+	margin: 0;
+	border-top: 2px groove threedhighlight;
+	padding: 0.4em 0 0;
+	font: smaller/1.5em sans-serif;
+}
+
+#qunit-modulefilter-dropdown-list li {
+	white-space: nowrap;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+
+#qunit-modulefilter-dropdown-list .clickable {
+	display: block;
+	padding-left: 0.15em;
+}
+
+
+/** Tests: Pass/Fail */
+
+#qunit-tests {
+	list-style-position: inside;
+}
+
+#qunit-tests li {
+	padding: 0.4em 1em 0.4em 1em;
+	border-bottom: 1px solid #FFF;
+	list-style-position: inside;
+}
+
+#qunit-tests > li {
+	display: none;
+}
+
+#qunit-tests li.running,
+#qunit-tests li.pass,
+#qunit-tests li.fail,
+#qunit-tests li.skipped {
+	display: list-item;
+}
+
+#qunit-tests.hidepass {
+	position: relative;
+}
+
+#qunit-tests.hidepass li.running,
+#qunit-tests.hidepass li.pass {
+	visibility: hidden;
+	position: absolute;
+	width:   0;
+	height:  0;
+	padding: 0;
+	border:  0;
+	margin:  0;
+}
+
+#qunit-tests li strong {
+	cursor: pointer;
+}
+
+#qunit-tests li.skipped strong {
+	cursor: default;
+}
+
+#qunit-tests li a {
+	padding: 0.5em;
+	color: #C2CCD1;
+	text-decoration: none;
+}
+
+#qunit-tests li p a {
+	padding: 0.25em;
+	color: #6B6464;
+}
+#qunit-tests li a:hover,
+#qunit-tests li a:focus {
+	color: #000;
+}
+
+#qunit-tests li .runtime {
+	float: right;
+	font-size: smaller;
+}
+
+.qunit-assert-list {
+	margin-top: 0.5em;
+	padding: 0.5em;
+
+	background-color: #FFF;
+
+	border-radius: 5px;
+}
+
+.qunit-source {
+	margin: 0.6em 0 0.3em;
+}
+
+.qunit-collapsed {
+	display: none;
+}
+
+#qunit-tests table {
+	border-collapse: collapse;
+	margin-top: 0.2em;
+}
+
+#qunit-tests th {
+	text-align: right;
+	vertical-align: top;
+	padding: 0 0.5em 0 0;
+}
+
+#qunit-tests td {
+	vertical-align: top;
+}
+
+#qunit-tests pre {
+	margin: 0;
+	white-space: pre-wrap;
+	word-wrap: break-word;
+}
+
+#qunit-tests del {
+	color: #374E0C;
+	background-color: #E0F2BE;
+	text-decoration: none;
+}
+
+#qunit-tests ins {
+	color: #500;
+	background-color: #FFCACA;
+	text-decoration: none;
+}
+
+/*** Test Counts */
+
+#qunit-tests b.counts                       { color: #000; }
+#qunit-tests b.passed                       { color: #5E740B; }
+#qunit-tests b.failed                       { color: #710909; }
+
+#qunit-tests li li {
+	padding: 5px;
+	background-color: #FFF;
+	border-bottom: none;
+	list-style-position: inside;
+}
+
+/*** Passing Styles */
+
+#qunit-tests li li.pass {
+	color: #3C510C;
+	background-color: #FFF;
+	border-left: 10px solid #C6E746;
+}
+
+#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
+#qunit-tests .pass .test-name               { color: #366097; }
+
+#qunit-tests .pass .test-actual,
+#qunit-tests .pass .test-expected           { color: #999; }
+
+#qunit-banner.qunit-pass                    { background-color: #C6E746; }
+
+/*** Failing Styles */
+
+#qunit-tests li li.fail {
+	color: #710909;
+	background-color: #FFF;
+	border-left: 10px solid #EE5757;
+	white-space: pre;
+}
+
+#qunit-tests > li:last-child {
+	border-radius: 0 0 5px 5px;
+}
+
+#qunit-tests .fail                          { color: #000; background-color: #EE5757; }
+#qunit-tests .fail .test-name,
+#qunit-tests .fail .module-name             { color: #000; }
+
+#qunit-tests .fail .test-actual             { color: #EE5757; }
+#qunit-tests .fail .test-expected           { color: #008000; }
+
+#qunit-banner.qunit-fail                    { background-color: #EE5757; }
+
+/*** Skipped tests */
+
+#qunit-tests .skipped {
+	background-color: #EBECE9;
+}
+
+#qunit-tests .qunit-skipped-label {
+	background-color: #F4FF77;
+	display: inline-block;
+	font-style: normal;
+	color: #366097;
+	line-height: 1.8em;
+	padding: 0 0.5em;
+	margin: -0.4em 0.4em -0.4em 0;
+}
+
+/** Result */
+
+#qunit-testresult {
+	padding: 0.5em 1em 0.5em 1em;
+
+	color: #2B81AF;
+	background-color: #D2E0E6;
+
+	border-bottom: 1px solid #FFF;
+}
+#qunit-testresult .module-name {
+	font-weight: 700;
+}
+
+/** Fixture */
+
+#qunit-fixture {
+	position: absolute;
+	top: -10000px;
+	left: -10000px;
+	width: 1000px;
+	height: 1000px;
+}

+ 375 - 0
public/Plugin/cropper-2.3/dist/cropper.css

@@ -0,0 +1,375 @@
+/*!
+ * Cropper v2.3.4
+ * https://github.com/fengyuanchen/cropper
+ *
+ * Copyright (c) 2014-2016 Fengyuan Chen and contributors
+ * Released under the MIT license
+ *
+ * Date: 2016-09-03T05:50:45.412Z
+ */
+.cropper-container {
+  font-size: 0;
+  line-height: 0;
+
+  position: relative;
+
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+
+  direction: ltr !important;
+}
+
+.cropper-container img {
+  display: block;
+
+  width: 100%;
+  min-width: 0 !important;
+  max-width: none !important;
+  height: 100%;
+  min-height: 0 !important;
+  max-height: none !important;
+
+  image-orientation: 0deg !important;
+}
+
+.cropper-wrap-box,
+.cropper-canvas,
+.cropper-drag-box,
+.cropper-crop-box,
+.cropper-modal {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+}
+
+.cropper-wrap-box {
+  overflow: hidden;
+}
+
+.cropper-drag-box {
+  opacity: 0;
+  background-color: #fff;
+
+  filter: alpha(opacity=0);
+}
+
+.cropper-modal {
+  opacity: .5;
+  background-color: #000;
+
+  filter: alpha(opacity=50);
+}
+
+.cropper-view-box {
+  display: block;
+  overflow: hidden;
+
+  width: 100%;
+  height: 100%;
+
+  outline: 1px solid #39f;
+  outline-color: rgba(51, 153, 255, .75);
+}
+
+.cropper-dashed {
+  position: absolute;
+
+  display: block;
+
+  opacity: .5;
+  border: 0 dashed #eee;
+
+  filter: alpha(opacity=50);
+}
+
+.cropper-dashed.dashed-h {
+  top: 33.33333%;
+  left: 0;
+
+  width: 100%;
+  height: 33.33333%;
+
+  border-top-width: 1px;
+  border-bottom-width: 1px;
+}
+
+.cropper-dashed.dashed-v {
+  top: 0;
+  left: 33.33333%;
+
+  width: 33.33333%;
+  height: 100%;
+
+  border-right-width: 1px;
+  border-left-width: 1px;
+}
+
+.cropper-center {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+
+  display: block;
+
+  width: 0;
+  height: 0;
+
+  opacity: .75;
+
+  filter: alpha(opacity=75);
+}
+
+.cropper-center:before,
+.cropper-center:after {
+  position: absolute;
+
+  display: block;
+
+  content: ' ';
+
+  background-color: #eee;
+}
+
+.cropper-center:before {
+  top: 0;
+  left: -3px;
+
+  width: 7px;
+  height: 1px;
+}
+
+.cropper-center:after {
+  top: -3px;
+  left: 0;
+
+  width: 1px;
+  height: 7px;
+}
+
+.cropper-face,
+.cropper-line,
+.cropper-point {
+  position: absolute;
+
+  display: block;
+
+  width: 100%;
+  height: 100%;
+
+  opacity: .1;
+
+  filter: alpha(opacity=10);
+}
+
+.cropper-face {
+  top: 0;
+  left: 0;
+
+  background-color: #fff;
+}
+
+.cropper-line {
+  background-color: #39f;
+}
+
+.cropper-line.line-e {
+  top: 0;
+  right: -3px;
+
+  width: 5px;
+
+  cursor: e-resize;
+}
+
+.cropper-line.line-n {
+  top: -3px;
+  left: 0;
+
+  height: 5px;
+
+  cursor: n-resize;
+}
+
+.cropper-line.line-w {
+  top: 0;
+  left: -3px;
+
+  width: 5px;
+
+  cursor: w-resize;
+}
+
+.cropper-line.line-s {
+  bottom: -3px;
+  left: 0;
+
+  height: 5px;
+
+  cursor: s-resize;
+}
+
+.cropper-point {
+  width: 5px;
+  height: 5px;
+
+  opacity: .75;
+  background-color: #39f;
+
+  filter: alpha(opacity=75);
+}
+
+.cropper-point.point-e {
+  top: 50%;
+  right: -3px;
+
+  margin-top: -3px;
+
+  cursor: e-resize;
+}
+
+.cropper-point.point-n {
+  top: -3px;
+  left: 50%;
+
+  margin-left: -3px;
+
+  cursor: n-resize;
+}
+
+.cropper-point.point-w {
+  top: 50%;
+  left: -3px;
+
+  margin-top: -3px;
+
+  cursor: w-resize;
+}
+
+.cropper-point.point-s {
+  bottom: -3px;
+  left: 50%;
+
+  margin-left: -3px;
+
+  cursor: s-resize;
+}
+
+.cropper-point.point-ne {
+  top: -3px;
+  right: -3px;
+
+  cursor: ne-resize;
+}
+
+.cropper-point.point-nw {
+  top: -3px;
+  left: -3px;
+
+  cursor: nw-resize;
+}
+
+.cropper-point.point-sw {
+  bottom: -3px;
+  left: -3px;
+
+  cursor: sw-resize;
+}
+
+.cropper-point.point-se {
+  right: -3px;
+  bottom: -3px;
+
+  width: 20px;
+  height: 20px;
+
+  cursor: se-resize;
+
+  opacity: 1;
+
+  filter: alpha(opacity=100);
+}
+
+.cropper-point.point-se:before {
+  position: absolute;
+  right: -50%;
+  bottom: -50%;
+
+  display: block;
+
+  width: 200%;
+  height: 200%;
+
+  content: ' ';
+
+  opacity: 0;
+  background-color: #39f;
+
+  filter: alpha(opacity=0);
+}
+
+@media (min-width: 768px) {
+  .cropper-point.point-se {
+    width: 15px;
+    height: 15px;
+  }
+}
+
+@media (min-width: 992px) {
+  .cropper-point.point-se {
+    width: 10px;
+    height: 10px;
+  }
+}
+
+@media (min-width: 1200px) {
+  .cropper-point.point-se {
+    width: 5px;
+    height: 5px;
+
+    opacity: .75;
+
+    filter: alpha(opacity=75);
+  }
+}
+
+.cropper-invisible {
+  opacity: 0;
+
+  filter: alpha(opacity=0);
+}
+
+.cropper-bg {
+  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC');
+}
+
+.cropper-hide {
+  position: absolute;
+
+  display: block;
+
+  width: 0;
+  height: 0;
+}
+
+.cropper-hidden {
+  display: none !important;
+}
+
+.cropper-move {
+  cursor: move;
+}
+
+.cropper-crop {
+  cursor: crosshair;
+}
+
+.cropper-disabled .cropper-drag-box,
+.cropper-disabled .cropper-face,
+.cropper-disabled .cropper-line,
+.cropper-disabled .cropper-point {
+  cursor: not-allowed;
+}

Datei-Diff unterdrückt, da er zu groß ist
+ 3005 - 0
public/Plugin/cropper-2.3/dist/cropper.js


Datei-Diff unterdrückt, da er zu groß ist
+ 9 - 0
public/Plugin/cropper-2.3/dist/cropper.min.css


Datei-Diff unterdrückt, da er zu groß ist
+ 10 - 0
public/Plugin/cropper-2.3/dist/cropper.min.js


BIN
public/Plugin/cropper-2.3/fonts/FontAwesome.otf


BIN
public/Plugin/cropper-2.3/fonts/fontawesome-webfont.eot


Datei-Diff unterdrückt, da er zu groß ist
+ 685 - 0
public/Plugin/cropper-2.3/fonts/fontawesome-webfont.svg


BIN
public/Plugin/cropper-2.3/fonts/fontawesome-webfont.ttf


BIN
public/Plugin/cropper-2.3/fonts/fontawesome-webfont.woff


BIN
public/Plugin/cropper-2.3/fonts/fontawesome-webfont.woff2


BIN
public/Plugin/cropper-2.3/fonts/glyphicons-halflings-regular.eot


Datei-Diff unterdrückt, da er zu groß ist
+ 288 - 0
public/Plugin/cropper-2.3/fonts/glyphicons-halflings-regular.svg


+ 0 - 0
public/Plugin/cropper-2.3/fonts/glyphicons-halflings-regular.ttf


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.