From b475629ee9c778a48022ee26186ac4290aa2348e Mon Sep 17 00:00:00 2001
From: Karson <karsonzhang@163.com>
Date: Sun, 23 Apr 2017 20:38:54 +0800
Subject: [PATCH] 新增后台分类管理 新增后台多语言切换 新增后台最新日志更新 修复后台移动端列表无法滚动的BUG 修复后台部分语言文字

---
 README.md                                             |  1 +
 application/admin/command/Crud/stubs/index.stub       |  4 ++--
 application/admin/controller/Ajax.php                 |  4 ++--
 application/admin/controller/Category.php             | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/lang/zh-cn.php                      |  2 ++
 application/admin/model/Page.php                      | 16 ----------------
 application/admin/view/category/add.html              | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/view/category/edit.html             | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/view/category/index.html            | 25 +++++++++++++++++++++++++
 application/admin/view/common/header.html             | 33 +++++++++++++++++----------------
 application/admin/view/general/attachment/index.html  |  4 ++--
 application/admin/view/general/configvalue/index.html |  4 ++--
 application/admin/view/general/crontab/index.html     |  4 ++--
 application/admin/view/page/index.html                |  4 ++--
 application/admin/view/user/third/index.phtml         |  4 ++--
 application/admin/view/user/user/index.phtml          |  4 ++--
 application/admin/view/wechat/autoreply/index.html    |  4 ++--
 application/common/controller/Backend.php             |  2 +-
 application/common/model/Category.php                 | 22 ++++++++++++++++++++++
 application/common/model/Page.php                     |  8 ++++----
 application/config.php                                |  2 +-
 public/assets/js/backend/category.js                  | 21 +++++++++++++--------
 public/assets/js/backend/index.js                     | 14 ++++++++++++++
 public/assets/js/require-table.js                     |  2 +-
 24 files changed, 301 insertions(+), 65 deletions(-)
 create mode 100644 application/admin/controller/Category.php
 delete mode 100644 application/admin/model/Page.php
 create mode 100644 application/admin/view/category/add.html
 create mode 100644 application/admin/view/category/edit.html
 create mode 100644 application/admin/view/category/index.html

diff --git a/README.md b/README.md
index f33583d..4376bfc 100644
--- a/README.md
+++ b/README.md
@@ -15,6 +15,7 @@ FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台管理系统。
     * 基于`Less`进行样式开发
     * 基于`Bower`进行前端组件包管理
 * 数据库表一键生成`CRUD`,包括控制器、模型、视图、JS、语言包
+* 一键压缩打包JS和CSS文件
 * 多语言支持,服务端及客户端支持
 * 无缝整合又拍云上传功能
 * 第三方登录(QQ、微信、微博)整合
diff --git a/application/admin/command/Crud/stubs/index.stub b/application/admin/command/Crud/stubs/index.stub
index f9ca18d..d3eefa4 100644
--- a/application/admin/command/Crud/stubs/index.stub
+++ b/application/admin/command/Crud/stubs/index.stub
@@ -10,8 +10,8 @@
                         <div class="dropdown btn-group">
                             <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
                             <ul class="dropdown-menu text-left" role="menu">
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> 设为正常</a></li>
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> 设为隐藏</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
                             </ul>
                         </div>
                     </div>
diff --git a/application/admin/controller/Ajax.php b/application/admin/controller/Ajax.php
index 92f5279..2933540 100644
--- a/application/admin/controller/Ajax.php
+++ b/application/admin/controller/Ajax.php
@@ -71,8 +71,8 @@ class Ajax extends Backend
         $controllername = input("controllername");
         Lang::load(APP_PATH . $modulename . '/lang/' . Lang::detect() . '/' . str_replace('.', '/', $controllername) . '.php');
         //强制输出JSON Object
-//        $result = 'define(' . json_encode(Lang::get(), JSON_FORCE_OBJECT | JSON_UNESCAPED_UNICODE) . ');';
-        return jsonp(Lang::get());
+        $result = 'define(' . json_encode(Lang::get(), JSON_FORCE_OBJECT | JSON_UNESCAPED_UNICODE) . ');';
+        return $result;
     }
 
     /**
diff --git a/application/admin/controller/Category.php b/application/admin/controller/Category.php
new file mode 100644
index 0000000..c0a5e81
--- /dev/null
+++ b/application/admin/controller/Category.php
@@ -0,0 +1,56 @@
+<?php
+
+namespace app\admin\controller;
+
+use app\common\controller\Backend;
+use app\common\model\Category as CategoryModel;
+use fast\Tree;
+
+/**
+ * 分类管理
+ *
+ * @icon fa fa-list
+ * @remark 用于统一管理网站的所有分类,分类可进行无限级分类
+ */
+class Category extends Backend
+{
+
+    protected $model = null;
+    protected $categorylist = [];
+
+    public function _initialize()
+    {
+        parent::_initialize();
+        $this->model = model('Category');
+
+        $tree = Tree::instance();
+        $tree->init(CategoryModel::getCategoryArray(), 'pid');
+        $this->categorylist = $tree->getTreeList($tree->getTreeArray(0), 'name');
+        $categorydata = [0 => __('None')];
+        foreach ($this->categorylist as $k => $v)
+        {
+            $categorydata[$v['id']] = $v['name'];
+        }
+        $this->view->assign("typelist", CategoryModel::getTypeList());
+        $this->view->assign("parentlist", $categorydata);
+    }
+
+    /**
+     * 查看
+     */
+    public function index()
+    {
+        if ($this->request->isAjax())
+        {
+
+            //构造父类select列表选项数据
+            $list = $this->categorylist;
+            $total = count($list);
+            $result = array("total" => $total, "rows" => $list);
+
+            return json($result);
+        }
+        return $this->view->fetch();
+    }
+
+}
diff --git a/application/admin/lang/zh-cn.php b/application/admin/lang/zh-cn.php
index 24db85d..af8992e 100644
--- a/application/admin/lang/zh-cn.php
+++ b/application/admin/lang/zh-cn.php
@@ -90,6 +90,8 @@ return [
     '%d month%s ago'                                        => '%d月前',
     '%d year%s ago'                                         => '%d年前',
     //
+    'Set to normal'                                         => '设为正常',
+    'Set to hidden'                                         => '设为隐藏',
     'Invalid parameters'                                    => '未知参数',
     'No results were found'                                 => '记录未找到',
     'Parameter %s can not be empty'                         => '参数%s不能为空',
diff --git a/application/admin/model/Page.php b/application/admin/model/Page.php
deleted file mode 100644
index fe5b682..0000000
--- a/application/admin/model/Page.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-namespace app\admin\model;
-
-use think\Model;
-
-class Page extends Model
-{
-
-    // 自动写入时间戳字段
-    protected $autoWriteTimestamp = false;
-
-    // 定义时间戳字段名
-    protected $createTime = false;
-    protected $updateTime = false;
-}
diff --git a/application/admin/view/category/add.html b/application/admin/view/category/add.html
new file mode 100644
index 0000000..08fb31d
--- /dev/null
+++ b/application/admin/view/category/add.html
@@ -0,0 +1,63 @@
+<form id="add-form" role="form" data-toggle="validator" method="POST" action="">
+    <div class="row">
+        <div class="col-xs-12 col-sm-6">
+            <div class="form-group">
+                <label for="type" class="control-label">{:__('Type')}:</label>
+                {:build_select('row[type]', $typelist, [], ['id'=>'c-type','class'=>'form-control selectpicker','required'=>''])}
+            </div>
+            <div class="form-group">
+                <label for="title" class="control-label">{:__('Name')}:</label>
+                <input type="text" class="form-control" id="name" name="row[name]" value="" required="required" />
+            </div>
+            <div class="form-group">
+                <label for="nickname" class="control-label">{:__('Nickname')}:</label>
+                <input type="text" class="form-control" id="nickname" name="row[nickname]" value="" required="required" />
+            </div>
+            <div class="form-group">
+                <label for="diyname" class="control-label">{:__('Diyname')}:</label>
+                <input type="text" class="form-control" id="diyname" name="row[diyname]" value="" required="required" />
+            </div>
+            <div class="form-group">
+                <label for="keywords" class="control-label">{:__('Keywords')}:</label>
+                <input type="text" class="form-control" id="keywords" name="row[keywords]" value="" />
+            </div>
+            <div class="form-group">
+                <label for="description" class="control-label">{:__('Description')}:</label>
+                <textarea name="row[description]" id="description" class="form-control" cols="30" rows="3"></textarea>
+            </div>
+            <div class="row">
+                <div class="col-sm-4">
+                    <div class="form-group form-inline">
+                        <label for="weigh" class="control-label">{:__('Weigh')}:</label>
+                        <input type="text" class="form-control" id="weigh" name="row[weigh]" value="0" required="required" size="3" />
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="col-xs-12 col-sm-6">
+
+            <div class="form-group">
+                <label for="pid" class="control-label">{:__('Parent')}:</label>
+                {:build_select('row[pid]', $parentlist, null, ['id'=>'c-pid','class'=>'form-control selectpicker','required'=>''])}
+            </div>
+            <div class="form-group">
+                <label for="c-flag" class="control-label">{:__('Flag')}:</label>
+                {:build_select('row[flag]', 'h,i,s', null, ['id'=>'c-flag','class'=>'form-control selectpicker','required'=>''])}
+            </div>
+            <div class="form-group">
+                <label for="content" class="control-label">{:__('Status')}:</label>
+                <div>
+                    {:build_radios('row[status]', ['normal'=>__('Normal'), 'hidden'=>__('Hidden')])}
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="form-group hidden layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</div>
+</form>
diff --git a/application/admin/view/category/edit.html b/application/admin/view/category/edit.html
new file mode 100644
index 0000000..3adec27
--- /dev/null
+++ b/application/admin/view/category/edit.html
@@ -0,0 +1,63 @@
+<form id="add-form" role="form" data-toggle="validator" method="POST" action="">
+    <div class="row">
+        <div class="col-xs-12 col-sm-6">
+            <div class="form-group">
+                <label for="type" class="control-label">{:__('Type')}:</label>
+                {:build_select('row[type]', $typelist, $row['type'], ['id'=>'c-type','class'=>'form-control selectpicker','required'=>''])}
+            </div>
+            <div class="form-group">
+                <label for="title" class="control-label">{:__('Name')}:</label>
+                <input type="text" class="form-control" id="name" name="row[name]" value="{$row.name}" required="required" />
+            </div>
+            <div class="form-group">
+                <label for="nickname" class="control-label">{:__('Nickname')}:</label>
+                <input type="text" class="form-control" id="nickname" name="row[nickname]" value="{$row.nickname}" required="required" />
+            </div>
+            <div class="form-group">
+                <label for="diyname" class="control-label">{:__('Diyname')}:</label>
+                <input type="text" class="form-control" id="diyname" name="row[diyname]" value="{$row.diyname}" required="required" />
+            </div>
+            <div class="form-group">
+                <label for="keywords" class="control-label">{:__('Keywords')}:</label>
+                <input type="text" class="form-control" id="keywords" name="row[keywords]" value="{$row.keywords}" />
+            </div>
+            <div class="form-group">
+                <label for="description" class="control-label">{:__('Description')}:</label>
+                <textarea name="row[description]" id="description" class="form-control" cols="30" rows="3">{$row.description}</textarea>
+            </div>
+            <div class="row">
+                <div class="col-sm-4">
+                    <div class="form-group form-inline">
+                        <label for="weigh" class="control-label">{:__('Weigh')}:</label>
+                        <input type="text" class="form-control" id="weigh" name="row[weigh]" value="{$row.weigh}" required="required" size="3" />
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="col-xs-12 col-sm-6">
+
+            <div class="form-group">
+                <label for="pid" class="control-label">{:__('Parent')}:</label>
+                {:build_select('row[pid]', $parentlist, $row['pid'], ['id'=>'c-pid','class'=>'form-control selectpicker','required'=>''])}
+            </div>
+            <div class="form-group">
+                <label for="c-flag" class="control-label">{:__('Flag')}:</label>
+                {:build_select('row[flag]', 'h,i,s', $row['flag'], ['id'=>'c-flag','class'=>'form-control selectpicker','required'=>''])}
+            </div>
+            <div class="form-group">
+                <label for="content" class="control-label">{:__('Status')}:</label>
+                <div>
+                    {:build_radios('row[status]', ['normal'=>__('Normal'), 'hidden'=>__('Hidden')], $row['status'])}
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="form-group hidden layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</div>
+</form>
diff --git a/application/admin/view/category/index.html b/application/admin/view/category/index.html
new file mode 100644
index 0000000..d3eefa4
--- /dev/null
+++ b/application/admin/view/category/index.html
@@ -0,0 +1,25 @@
+<div class="panel panel-default panel-intro">
+    {:build_heading()}
+
+    <div class="panel-body">
+        <div id="myTabContent" class="tab-content">
+            <div class="tab-pane fade active in" id="one">
+                <div class="widget-body no-padding">
+                    <div id="toolbar" class="toolbar">
+                        {:build_toolbar()}
+                        <div class="dropdown btn-group">
+                            <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
+                            <ul class="dropdown-menu text-left" role="menu">
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
+                            </ul>
+                        </div>
+                    </div>
+                    <table id="table" class="table table-striped table-bordered table-hover" width="100%">
+                    </table>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>
diff --git a/application/admin/view/common/header.html b/application/admin/view/common/header.html
index ce5efc7..c0ed16b 100644
--- a/application/admin/view/common/header.html
+++ b/application/admin/view/common/header.html
@@ -25,31 +25,32 @@
                 <a href="{:url('index/index/index')}" target="_blank"><i class="fa fa-home" style="font-size:14px;"></i></a>
             </li>
 
-            <!-- 通栏下拉框样式 -->
             <li class="dropdown notifications-menu">
                 <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                     <i class="fa fa-bell-o"></i>
-                    <span class="label label-warning">2</span>
+                    <span class="label label-warning"></span>
                 </a>
                 <ul class="dropdown-menu">
-                    <li class="header">You have 10 notifications</li>
+                    <li class="header">{:__('Latest news')}</li>
                     <li>
-                        <!-- 下拉条目样式 -->
+                        <!-- FastAdmin最新更新信息,你可以替换成你自己站点的信息,请注意修改public/assets/js/backend/index.js文件 -->
                         <ul class="menu">
-                            <li>
-                                <a href="#">
-                                    <i class="fa fa-users text-aqua"></i> 5 new members joined today
-                                </a>
-                            </li>
-                            <li>
-                                <a href="#">
-                                    <i class="fa fa-warning text-yellow"></i> Very long description here that may not fit into the
-                                    page and may cause design problems
-                                </a>
-                            </li>
+
                         </ul>
                     </li>
-                    <li class="footer"><a href="#">View all</a></li>
+                    <li class="footer"><a href="#" target="_blank">{:__('View all')}</a></li>
+                </ul>
+            </li>
+
+            <li>
+                <a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-language"></i></a>
+                <ul class="dropdown-menu">
+                    <li class="{$config['language']=='zh-cn'?'active':''}">
+                        <a href="?lang=zh-cn">简体中文</a>
+                    </li>
+                    <li class="{$config['language']=='en'?'active':''}">
+                        <a href="?lang=en">English</a>
+                    </li>
                 </ul>
             </li>
 
diff --git a/application/admin/view/general/attachment/index.html b/application/admin/view/general/attachment/index.html
index f9ca18d..d3eefa4 100644
--- a/application/admin/view/general/attachment/index.html
+++ b/application/admin/view/general/attachment/index.html
@@ -10,8 +10,8 @@
                         <div class="dropdown btn-group">
                             <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
                             <ul class="dropdown-menu text-left" role="menu">
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> 设为正常</a></li>
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> 设为隐藏</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
                             </ul>
                         </div>
                     </div>
diff --git a/application/admin/view/general/configvalue/index.html b/application/admin/view/general/configvalue/index.html
index f9ca18d..d3eefa4 100644
--- a/application/admin/view/general/configvalue/index.html
+++ b/application/admin/view/general/configvalue/index.html
@@ -10,8 +10,8 @@
                         <div class="dropdown btn-group">
                             <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
                             <ul class="dropdown-menu text-left" role="menu">
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> 设为正常</a></li>
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> 设为隐藏</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
                             </ul>
                         </div>
                     </div>
diff --git a/application/admin/view/general/crontab/index.html b/application/admin/view/general/crontab/index.html
index f9ca18d..d3eefa4 100644
--- a/application/admin/view/general/crontab/index.html
+++ b/application/admin/view/general/crontab/index.html
@@ -10,8 +10,8 @@
                         <div class="dropdown btn-group">
                             <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
                             <ul class="dropdown-menu text-left" role="menu">
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> 设为正常</a></li>
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> 设为隐藏</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
                             </ul>
                         </div>
                     </div>
diff --git a/application/admin/view/page/index.html b/application/admin/view/page/index.html
index f9ca18d..d3eefa4 100644
--- a/application/admin/view/page/index.html
+++ b/application/admin/view/page/index.html
@@ -10,8 +10,8 @@
                         <div class="dropdown btn-group">
                             <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
                             <ul class="dropdown-menu text-left" role="menu">
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> 设为正常</a></li>
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> 设为隐藏</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
                             </ul>
                         </div>
                     </div>
diff --git a/application/admin/view/user/third/index.phtml b/application/admin/view/user/third/index.phtml
index f9ca18d..d3eefa4 100644
--- a/application/admin/view/user/third/index.phtml
+++ b/application/admin/view/user/third/index.phtml
@@ -10,8 +10,8 @@
                         <div class="dropdown btn-group">
                             <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
                             <ul class="dropdown-menu text-left" role="menu">
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> 设为正常</a></li>
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> 设为隐藏</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
                             </ul>
                         </div>
                     </div>
diff --git a/application/admin/view/user/user/index.phtml b/application/admin/view/user/user/index.phtml
index 7a571c6..43c6636 100644
--- a/application/admin/view/user/user/index.phtml
+++ b/application/admin/view/user/user/index.phtml
@@ -10,8 +10,8 @@
                         <div class="dropdown btn-group">
                             <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
                             <ul class="dropdown-menu text-left" role="menu">
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> 设为正常</a></li>
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> 设为隐藏</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
                             </ul>
                         </div>
                     </div>
diff --git a/application/admin/view/wechat/autoreply/index.html b/application/admin/view/wechat/autoreply/index.html
index 5993ae2..f1bdef1 100644
--- a/application/admin/view/wechat/autoreply/index.html
+++ b/application/admin/view/wechat/autoreply/index.html
@@ -10,8 +10,8 @@
                         <div class="dropdown btn-group">
                             <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> <?= __('More') ?></a>
                             <ul class="dropdown-menu text-left" role="menu">
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> 设为正常</a></li>
-                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> 设为隐藏</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
                             </ul>
                         </div>
                     </div>
diff --git a/application/common/controller/Backend.php b/application/common/controller/Backend.php
index 57a3a8e..92dd6c2 100644
--- a/application/common/controller/Backend.php
+++ b/application/common/controller/Backend.php
@@ -84,7 +84,7 @@ class Backend extends Controller
         // 非选项卡时重定向
         if (!IS_AJAX && !IS_ADDTABS && $controllername != 'index' && $actionname == 'index')
         {
-            header("location:" . url('index/index#!' . urlencode($this->request->url()), '', false));
+            header("location:" . url('index/index#!' . urlencode($this->request->baseUrl()), '', false));
             exit;
         }
 
diff --git a/application/common/model/Category.php b/application/common/model/Category.php
index 30e949c..ef80cbd 100644
--- a/application/common/model/Category.php
+++ b/application/common/model/Category.php
@@ -34,4 +34,26 @@ class Category Extends Model
         return $typelist;
     }
 
+    /**
+     * 读取分类列表
+     * @param string $type 指定类型
+     * @param string $status 指定状态
+     * @return array
+     */
+    public static function getCategoryArray($type = NULL, $status = NULL)
+    {
+        $list = collection(self::where(function($query) use($type, $status)
+                {
+                    if (!is_null($type))
+                    {
+                        $query->where('type', '=', $type);
+                    }
+                    if (!is_null($status))
+                    {
+                        $query->where('status', '=', $status);
+                    }
+                })->order('weigh', 'desc')->select())->toArray();
+        return $list;
+    }
+
 }
diff --git a/application/common/model/Page.php b/application/common/model/Page.php
index 4f29b3e..7bba9fa 100644
--- a/application/common/model/Page.php
+++ b/application/common/model/Page.php
@@ -8,9 +8,9 @@ class Page extends Model
 {
 
     // 自动写入时间戳字段
-    protected $autoWriteTimestamp = false;
-
+    protected $autoWriteTimestamp = 'int';
     // 定义时间戳字段名
-    protected $createTime = false;
-    protected $updateTime = false;
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+
 }
diff --git a/application/config.php b/application/config.php
index 27526c7..df78ed8 100755
--- a/application/config.php
+++ b/application/config.php
@@ -41,7 +41,7 @@ return [
     // 默认时区
     'default_timezone'       => 'PRC',
     // 是否开启多语言
-    'lang_switch_on'         => false,
+    'lang_switch_on'         => true,
     // 默认全局过滤方法 用逗号分隔多个
     'default_filter'         => '',
     // 默认语言
diff --git a/public/assets/js/backend/category.js b/public/assets/js/backend/category.js
index bf07eae..99fa851 100644
--- a/public/assets/js/backend/category.js
+++ b/public/assets/js/backend/category.js
@@ -24,12 +24,12 @@ define(['jquery', 'bootstrap', 'backend', 'form', 'table'], function ($, undefin
                     [
                         {field: 'state', checkbox: true, },
                         {field: 'id', title: 'ID'},
-                        {field: 'name', title: '名称', align: 'left'},
-                        {field: 'nickname', title: '昵称'},
-                        {field: 'flag', title: '标志', formatter: Table.api.formatter.flag},
-                        {field: 'weigh', title: '权重'},
-                        {field: 'status', title: '状态', formatter: Table.api.formatter.status},
-                        {field: 'operate', title: '操作', events: Table.api.events.operate, formatter: Table.api.formatter.operate}
+                        {field: 'name', title: __('Name'), align: 'left'},
+                        {field: 'nickname', title: __('Nickname')},
+                        {field: 'flag', title: __('Flag'), formatter: Table.api.formatter.flag},
+                        {field: 'weigh', title: __('Weigh')},
+                        {field: 'status', title: __('Status'), formatter: Table.api.formatter.status},
+                        {field: 'operate', title: __('Operate'), events: Table.api.events.operate, formatter: Table.api.formatter.operate}
                     ]
                 ]
             });
@@ -39,10 +39,15 @@ define(['jquery', 'bootstrap', 'backend', 'form', 'table'], function ($, undefin
 
         },
         add: function () {
-            Form.api.bindevent($("form[role=form]"));
+            Controller.api.bindevent();
         },
         edit: function () {
-            Form.api.bindevent($("form[role=form]"));
+            Controller.api.bindevent();
+        },
+        api: {
+            bindevent: function () {
+                Form.api.bindevent($("form[role=form]"));
+            }
         }
 
     };
diff --git a/public/assets/js/backend/index.js b/public/assets/js/backend/index.js
index 1b77de0..082236d 100755
--- a/public/assets/js/backend/index.js
+++ b/public/assets/js/backend/index.js
@@ -15,6 +15,20 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'adminlte', 'validator'], f
                 e.stopPropagation();
             });
 
+            //读取FastAdmin的更新信息
+            $.ajax({
+                url: 'http://www.fa.com/index/index/news',
+                type: 'post',
+                dataType: 'jsonp',
+                success: function (ret) {
+                    $(".notifications-menu > a span").text(ret.new > 0 ? ret.new : '');
+                    $(".notifications-menu .footer a").attr("href", ret.url);
+                    $.each(ret.newslist, function (i, j) {
+                        var item = '<li><a href="' + j.url + '" target="_blank"><i class="' + j.icon + '"></i> ' + j.title + '</a></li>';
+                        $(item).appendTo($(".notifications-menu ul.menu"));
+                    });
+                }
+            });
 
             //切换左侧sidebar显示隐藏
             $(document).on("click", ".sidebar-menu li > a", function (e) {
diff --git a/public/assets/js/require-table.js b/public/assets/js/require-table.js
index ad46192..c8aec94 100644
--- a/public/assets/js/require-table.js
+++ b/public/assets/js/require-table.js
@@ -41,7 +41,7 @@ define(['jquery', 'bootstrap', 'backend', 'config', 'toastr', 'moment', 'bootstr
             valign: 'middle',
         },
         config: {
-            firsttd: 'tbody tr td:first-child',
+            firsttd: 'tbody tr td:first-child:not(:has(div.card-views))',
             toolbar: '.toolbar',
             refreshbtn: '.btn-refresh',
             addbtn: '.btn-add',
--
libgit2 0.24.0