Browse Source

feat: new

magicblack 9 months ago
parent
commit
d8e2d87802
100 changed files with 9534 additions and 77 deletions
  1. 487 77
      application/admin/controller/Index.php
  2. 14 0
      application/admin/controller/System.php
  3. 3 0
      application/admin/controller/cpu_usage.vbs
  4. 6 0
      application/admin/controller/memory_usage.vbs
  5. 26 0
      application/admin/view/index/index.html
  6. 154 0
      application/admin/view_new/actor/index.html
  7. 386 0
      application/admin/view_new/actor/info.html
  8. 56 0
      application/admin/view_new/addon/add.html
  9. 167 0
      application/admin/view_new/addon/config.html
  10. 135 0
      application/admin/view_new/addon/index.html
  11. 10 0
      application/admin/view_new/addon/info.html
  12. 80 0
      application/admin/view_new/admin/index.html
  13. 140 0
      application/admin/view_new/admin/info.html
  14. 57 0
      application/admin/view_new/annex/file.html
  15. 97 0
      application/admin/view_new/annex/index.html
  16. 172 0
      application/admin/view_new/annex/info.html
  17. 35 0
      application/admin/view_new/annex/init.html
  18. 217 0
      application/admin/view_new/art/batch.html
  19. 169 0
      application/admin/view_new/art/index.html
  20. 559 0
      application/admin/view_new/art/info.html
  21. 160 0
      application/admin/view_new/box/index.html
  22. 118 0
      application/admin/view_new/card/index.html
  23. 83 0
      application/admin/view_new/card/info.html
  24. 102 0
      application/admin/view_new/cash/index.html
  25. 10 0
      application/admin/view_new/cj/col_content.html
  26. 43 0
      application/admin/view_new/cj/col_url.html
  27. 79 0
      application/admin/view_new/cj/index.html
  28. 438 0
      application/admin/view_new/cj/info.html
  29. 49 0
      application/admin/view_new/cj/program.html
  30. 79 0
      application/admin/view_new/cj/publish.html
  31. 64 0
      application/admin/view_new/cj/show.html
  32. 29 0
      application/admin/view_new/cj/show_url.html
  33. 122 0
      application/admin/view_new/collect/actor.html
  34. 128 0
      application/admin/view_new/collect/art.html
  35. 80 0
      application/admin/view_new/collect/index.html
  36. 156 0
      application/admin/view_new/collect/info.html
  37. 122 0
      application/admin/view_new/collect/role.html
  38. 153 0
      application/admin/view_new/collect/timing.html
  39. 40 0
      application/admin/view_new/collect/union.html
  40. 128 0
      application/admin/view_new/collect/vod.html
  41. 122 0
      application/admin/view_new/collect/website.html
  42. 134 0
      application/admin/view_new/comment/index.html
  43. 71 0
      application/admin/view_new/comment/info.html
  44. 68 0
      application/admin/view_new/database/export.html
  45. 59 0
      application/admin/view_new/database/import.html
  46. 133 0
      application/admin/view_new/database/rep.html
  47. 40 0
      application/admin/view_new/database/sql.html
  48. 114 0
      application/admin/view_new/domain/index.html
  49. 19 0
      application/admin/view_new/extend/editor/ckeditor.html
  50. 19 0
      application/admin/view_new/extend/editor/kindeditor.html
  51. 34 0
      application/admin/view_new/extend/editor/tinymce.html
  52. 21 0
      application/admin/view_new/extend/editor/ueditor.html
  53. 22 0
      application/admin/view_new/extend/editor/umeditor.html
  54. 48 0
      application/admin/view_new/extend/email/phpmailer.html
  55. 27 0
      application/admin/view_new/extend/pay/alipay.html
  56. 33 0
      application/admin/view_new/extend/pay/codepay.html
  57. 26 0
      application/admin/view_new/extend/pay/epay.html
  58. 26 0
      application/admin/view_new/extend/pay/weixin.html
  59. 33 0
      application/admin/view_new/extend/pay/zhapay.html
  60. 27 0
      application/admin/view_new/extend/sms/aliyun.html
  61. 27 0
      application/admin/view_new/extend/sms/qcloud.html
  62. 9 0
      application/admin/view_new/extend/upload/alibaba.html
  63. 32 0
      application/admin/view_new/extend/upload/ftp.html
  64. 24 0
      application/admin/view_new/extend/upload/qiniu.html
  65. 28 0
      application/admin/view_new/extend/upload/uomg.html
  66. 24 0
      application/admin/view_new/extend/upload/upyun.html
  67. 37 0
      application/admin/view_new/extend/upload/weibo.html
  68. 10 0
      application/admin/view_new/extend/urlsend/baidu.html
  69. 10 0
      application/admin/view_new/extend/urlsend/baidufast.html
  70. 122 0
      application/admin/view_new/gbook/index.html
  71. 67 0
      application/admin/view_new/gbook/info.html
  72. 77 0
      application/admin/view_new/group/index.html
  73. 133 0
      application/admin/view_new/group/info.html
  74. 86 0
      application/admin/view_new/images/opt.html
  75. 111 0
      application/admin/view_new/index/index.html
  76. 243 0
      application/admin/view_new/index/login.html
  77. 28 0
      application/admin/view_new/index/quickmenu.html
  78. 44 0
      application/admin/view_new/index/update.html
  79. 1121 0
      application/admin/view_new/index/welcome.html
  80. 89 0
      application/admin/view_new/link/index.html
  81. 78 0
      application/admin/view_new/link/info.html
  82. 179 0
      application/admin/view_new/make/opt.html
  83. 34 0
      application/admin/view_new/mycj/allplayer.html
  84. 119 0
      application/admin/view_new/mycj/cjslide.html
  85. 95 0
      application/admin/view_new/mycj/index.html
  86. 51 0
      application/admin/view_new/mycj/player.html
  87. 47 0
      application/admin/view_new/mycj/type.html
  88. 93 0
      application/admin/view_new/order/index.html
  89. 95 0
      application/admin/view_new/plog/index.html
  90. 12 0
      application/admin/view_new/public/editor.html
  91. 7 0
      application/admin/view_new/public/empty.html
  92. 1 0
      application/admin/view_new/public/foot.html
  93. 18 0
      application/admin/view_new/public/head.html
  94. 49 0
      application/admin/view_new/public/jump.html
  95. 36 0
      application/admin/view_new/public/msg.html
  96. 0 0
      application/admin/view_new/public/pages.html
  97. 16 0
      application/admin/view_new/public/select_copyright.html
  98. 19 0
      application/admin/view_new/public/select_hits.html
  99. 18 0
      application/admin/view_new/public/select_level.html
  100. 16 0
      application/admin/view_new/public/select_lock.html

+ 487 - 77
application/admin/controller/Index.php

@@ -1,6 +1,10 @@
 <?php
+
 namespace app\admin\controller;
+
 use think\Hook;
+use think\Db;
+
 
 class Index extends Base
 {
@@ -11,7 +15,7 @@ class Index extends Base
 
     public function login()
     {
-        if(Request()->isPost()) {
+        if (Request()->isPost()) {
             $data = input('post.');
             $res = model('Admin')->login($data);
             if ($res['code'] > 1) {
@@ -32,14 +36,14 @@ class Index extends Base
     public function index()
     {
         $menus = @include MAC_ADMIN_COMM . 'auth.php';
+        $version = config('version');
 
-        foreach($menus as $k1=>$v1){
-            foreach($v1['sub'] as $k2=>$v2){
-                if($v2['show'] == 1) {
-                    if(strpos($v2['action'],'javascript')!==false){
+        foreach ($menus as $k1 => $v1) {
+            foreach ($v1['sub'] as $k2 => $v2) {
+                if ($v2['show'] == 1) {
+                    if (strpos($v2['action'], 'javascript') !== false) {
                         $url = $v2['action'];
-                    }
-                    else {
+                    } else {
                         $url = url('admin/' . $v2['controller'] . '/' . $v2['action']);
                     }
                     if (!empty($v2['param'])) {
@@ -50,49 +54,48 @@ class Index extends Base
                     } else {
                         unset($menus[$k1]['sub'][$k2]);
                     }
-                }
-                else{
+                } else {
                     unset($menus[$k1]['sub'][$k2]);
                 }
             }
 
-            if(empty($menus[$k1]['sub'])){
+            if (empty($menus[$k1]['sub'])) {
                 unset($menus[$k1]);
             }
         }
 
         $quickmenu = config('quickmenu');
-        if(empty($quickmenu)){
-            $quickmenu = mac_read_file( APP_PATH.'data/config/quickmenu.txt');
-            $quickmenu = explode(chr(13),$quickmenu);
+        if (empty($quickmenu)) {
+            $quickmenu = mac_read_file(APP_PATH . 'data/config/quickmenu.txt');
+            $quickmenu = explode(chr(13), $quickmenu);
         }
-        if(!empty($quickmenu)){
-            $menus[1]['sub'][13] = ['name'=>lang('admin/index/quick_tit'), 'url'=>'javascript:void(0);return false;','controller'=>'', 'action'=>'' ];
+        if (!empty($quickmenu)) {
+            $menus[1]['sub'][13] = ['name' => lang('admin/index/quick_tit'), 'url' => 'javascript:void(0);return false;', 'controller' => '', 'action' => ''];
 
-            foreach($quickmenu as $k=>$v){
-                if(empty($v)){
+            foreach ($quickmenu as $k => $v) {
+                if (empty($v)) {
                     continue;
                 }
-                $one = explode(',',trim($v));
-                if(substr($one[1],0,4)=='http' || substr($one[1],0,2)=='//'){
-
-                }
-                elseif(substr($one[1],0,1) =='/'){
-
-                }
-                elseif(strpos($one[1],'###')!==false || strpos($one[1],'javascript:')!==false){
-
-                }
-                else{
+                $one = explode(',', trim($v));
+                if (substr($one[1], 0, 4) == 'http' || substr($one[1], 0, 2) == '//') {
+                } elseif (substr($one[1], 0, 1) == '/') {
+                } elseif (strpos($one[1], '###') !== false || strpos($one[1], 'javascript:') !== false) {
+                } else {
                     $one[1] = url($one[1]);
                 }
-                $menus[1]['sub'][14 + $k] = ['name'=>$one[0], 'url'=>$one[1],'controller'=>'', 'action'=>'' ];
+                $menus[1]['sub'][14 + $k] = ['name' => $one[0], 'url' => $one[1], 'controller' => '', 'action' => ''];
             }
         }
-        $this->assign('menus',$menus);
-        $this->assign('config',config('maccms'));
-
-        $this->assign('title',lang('admin/index/title'));
+        $langs = glob('./application/lang/*.php');
+        foreach ($langs as $k => &$v) {
+            $v = str_replace(['./application/lang/','.php'],['',''],$v);
+        }
+        $config = config('maccms');
+        $this->assign('config', $config);
+        $this->assign('langs', $langs);
+        $this->assign('version', $version);
+        $this->assign('menus', $menus);
+        $this->assign('title', lang('admin/index/title'));
         return $this->fetch('admin@index/index');
     }
 
@@ -101,43 +104,44 @@ class Index extends Base
         $version = config('version');
         $update_sql = file_exists('./application/data/update/database.php');
 
-        $this->assign('version',$version);
-        $this->assign('update_sql',$update_sql);
-        $this->assign('mac_lang',config('default_lang'));
+        $this->assign('spider_data', $this->botlist());
+        $this->assign('os_data', $this->get_system_status());
+        $this->assign('version', $version);
+        $this->assign('update_sql', $update_sql);
+        $this->assign('mac_lang', config('default_lang'));
+        $this->assign('dashboard_data', $this->getAdminDashboardData());
 
-        $this->assign('admin',$this->_admin);
-        $this->assign('title',lang('admin/index/welcome/title'));
+        $this->assign('admin', $this->_admin);
+        $this->assign('title', lang('admin/index/welcome/title'));
         return $this->fetch('admin@index/welcome');
     }
 
     public function quickmenu()
     {
-        if(Request()->isPost()){
+        if (Request()->isPost()) {
             $param = input();
             $validate = \think\Loader::validate('Token');
-            if(!$validate->check($param)){
+            if (!$validate->check($param)) {
                 return $this->error($validate->getError());
             }
             $quickmenu = input('post.quickmenu');
-            $quickmenu = str_replace(chr(10),'',$quickmenu);
-            $menu_arr = explode(chr(13),$quickmenu);
+            $quickmenu = str_replace(chr(10), '', $quickmenu);
+            $menu_arr = explode(chr(13), $quickmenu);
             $res = mac_arr2file(APP_PATH . 'extra/quickmenu.php', $menu_arr);
             if ($res === false) {
                 return $this->error(lang('save_err'));
             }
             return $this->success(lang('save_ok'));
-        }
-        else{
+        } else {
             $config_menu = config('quickmenu');
-            if(empty($config_menu)){
-                $quickmenu = mac_read_file(APP_PATH.'data/config/quickmenu.txt');
-            }
-            else{
+            if (empty($config_menu)) {
+                $quickmenu = mac_read_file(APP_PATH . 'data/config/quickmenu.txt');
+            } else {
                 $quickmenu = array_values($config_menu);
-                $quickmenu = join(chr(13),$quickmenu);
+                $quickmenu = join(chr(13), $quickmenu);
             }
-            $this->assign('quickmenu',$quickmenu);
-            $this->assign('title',lang('admin/index/quickmenu/title'));
+            $this->assign('quickmenu', $quickmenu);
+            $this->assign('title', lang('admin/index/quickmenu/title'));
             return $this->fetch('admin@index/quickmenu');
         }
     }
@@ -146,7 +150,7 @@ class Index extends Base
     {
         $res = 'no';
         $r = cache('cache_data');
-        if($r=='1'){
+        if ($r == '1') {
             $res = 'haved';
         }
         echo $res;
@@ -156,7 +160,7 @@ class Index extends Base
     {
         $res = $this->_cache_clear();
         //运行缓存
-        if(!$res) {
+        if (!$res) {
             $this->error(lang('admin/index/clear_err'));
         }
         // 搜索缓存结果清理
@@ -183,7 +187,7 @@ class Index extends Base
         $param = input();
         $password = $param['password'];
 
-        if($this->_admin['admin_pwd'] != md5($password)){
+        if ($this->_admin['admin_pwd'] != md5($password)) {
             return $this->error(lang('admin/index/pass_err'));
         }
 
@@ -209,47 +213,453 @@ class Index extends Base
 
         $refresh = $param['refresh'];
 
-        if(empty($tpl) || empty($tab) || empty($col) || empty($ids) || empty($url)){
+        if (empty($tpl) || empty($tab) || empty($col) || empty($ids) || empty($url)) {
             return $this->error(lang('param_err'));
         }
 
-        if(is_array($ids)){
-            $ids = join(',',$ids);
+        if (is_array($ids)) {
+            $ids = join(',', $ids);
         }
 
-        if(empty($refresh)){
+        if (empty($refresh)) {
             $refresh = 'yes';
         }
 
         $url = url($url);
         $mid = 1;
-        if($tab=='art'){
+        if ($tab == 'art') {
             $mid = 2;
+        } elseif ($tab == 'actor') {
+            $mid = 8;
+        } elseif ($tab == 'website') {
+            $mid = 11;
         }
-        elseif($tab=='actor'){
-            $mid=8;
+        $this->assign('mid', $mid);
+
+        if ($tpl == 'select_type') {
+            $type_tree = model('Type')->getCache('type_tree');
+            $this->assign('type_tree', $type_tree);
+        } elseif ($tpl == 'select_level') {
+            $level_list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
+            $this->assign('level_list', $level_list);
         }
-        elseif($tab=='website'){
-            $mid=11;
+
+        $this->assign('refresh', $refresh);
+        $this->assign('url', $url);
+        $this->assign('tab', $tab);
+        $this->assign('col', $col);
+        $this->assign('ids', $ids);
+        $this->assign('val', $val);
+        return $this->fetch('admin@public/' . $tpl);
+    }
+
+    public function get_system_status()
+    {
+        //判斷系統
+        $os_name = strtoupper(substr(PHP_OS, 0, 3));
+        $os_data = [];
+        $os_data['os_name'] = '';
+        if ($os_name == 'WIN') {
+            $os_data['os_name'] = 'WINDOWS';
+            $os_data['disk_datas'] = $this->get_spec_disk('all');
+            $os_data['cpu_usage'] = $this->getCpuUsage();
+            $mem_arr = $this->getMemoryUsage();
+            $os_data['mem_usage'] = $mem_arr['usage'];
+            $os_data['mem_total'] = round($mem_arr['TotalVisibleMemorySize'] / 1024, 2);
+            $os_data['mem_used'] = $os_data['mem_total'] - round($mem_arr['FreePhysicalMemory'] / 1024, 2);
+        } else if ($os_name == 'LIN') {
+            $os_data['os_name'] = 'LINUX';
+            $totalSpace = disk_total_space('/');    // 获取根目录的总容量
+            $freeSpace = disk_free_space('/');      // 获取根目录的可用容量
+            $totalSpaceGB = $totalSpace / (1024 * 1024 * 1024);   // 将总容量转换为GB
+            $freeSpaceGB = $freeSpace / (1024 * 1024 * 1024);     // 将可用容量转换为GB
+            $tmp_disk_data = [];
+            $tmp_disk_data[0] = $totalSpaceGB - $freeSpaceGB;
+            $tmp_disk_data[1] = $totalSpaceGB;
+            $tmp_disk_data[2] = (100 - round(($freeSpaceGB / $totalSpaceGB) * 100, 2));
+            $os_data['disk_datas']['/'] = $tmp_disk_data;
+            $mem_arr = $this->get_linux_server_memory_usage();
+            $os_data['mem_usage'] = $mem_arr['usage'];
+            $os_data['mem_used'] = $mem_arr['used'];
+            $os_data['mem_total'] = $mem_arr['total'];
+            $os_data['cpu_usage'] = $this->get_linux_server_cpu_usage()['usage'];
+            // if (is_readable("/proc/stat")) {
+            //     $statData1 = $this->_getServerLoadLinuxData();
+            //     sleep(0.5);
+            //     $statData2 = $this->_getServerLoadLinuxData();
+            //     if (
+            //         (!is_null($statData1)) &&
+            //         (!is_null($statData2))
+            //     ) {
+            //         $statData2[0] -= $statData1[0];
+            //         $statData2[1] -= $statData1[1];
+            //         $statData2[2] -= $statData1[2];
+            //         $statData2[3] -= $statData1[3];
+
+            //         $cpuTime = $statData2[0] + $statData2[1] + $statData2[2] + $statData2[3];
+
+            //         if ($cpuTime > 0) {
+            //             $os_data['cpu_usage'] = 100 - ($statData2[3] * 100 / $cpuTime);
+            //         } else {
+            //             $os_data['cpu_usage'] = 0;
+            //         }
+            //     }
+            // }
         }
-        $this->assign('mid',$mid);
 
-        if($tpl=='select_type'){
-            $type_tree = model('Type')->getCache('type_tree');
-            $this->assign('type_tree',$type_tree);
+        return $os_data;
+    }
+
+    private function byte_format($size, $dec = 2)
+    {
+        $a = array("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB");
+        $pos = 0;
+        while ($size >= 1024) {
+            $size /= 1024;
+            $pos++;
         }
-        elseif($tpl =='select_level'){
-            $level_list = [1,2,3,4,5,6,7,8,9];
-            $this->assign('level_list',$level_list);
+        return round($size, $dec);
+    }
+
+    private function get_disk_space($letter)
+    {
+        //获取磁盘信息
+        $diskct = 0;
+        $disk = array();
+
+        $diskz = 0; //磁盘总容量
+        $diskk = 0; //磁盘剩余容量
+        $is_disk = $letter . ':';
+        if (@disk_total_space($is_disk) != NULL) {
+            $diskct++;
+            $disk[$letter][0] = $this->byte_format(@disk_free_space($is_disk));
+            $disk[$letter][1] = $this->byte_format(@disk_total_space($is_disk));
+            // $disk[$letter][2] = (100-round(((@disk_free_space($is_disk)/(1024*1024*1024))/(@disk_total_space($is_disk)/(1024*1024*1024)))*100,2));
+            $disk[$letter][2] = (round(100 - round(((@disk_free_space($is_disk) / (1024 * 1024 * 1024)) / (@disk_total_space($is_disk) / (1024 * 1024 * 1024))) * 100, 2), 2));
+            $diskk += $this->byte_format(@disk_free_space($is_disk));
+            $diskz += $this->byte_format(@disk_total_space($is_disk));
         }
+        return $disk;
+    }
 
-        $this->assign('refresh',$refresh);
-        $this->assign('url',$url);
-        $this->assign('tab',$tab);
-        $this->assign('col',$col);
-        $this->assign('ids',$ids);
-        $this->assign('val',$val);
-        return $this->fetch( 'admin@public/'.$tpl);
+    private function get_spec_disk($type = 'system')
+    {
+        $disk = array();
+        switch ($type) {
+            case 'system':
+                //strrev(array_pop(explode(':',strrev(getenv_info('SystemRoot')))));//取得系统盘符
+                $disk = $this->get_disk_space(strrev(array_pop(explode(':', strrev(getenv('SystemRoot'))))));
+                break;
+            case 'all':
+                foreach (range('b', 'z') as $letter) {
+                    $disk = array_merge($disk, $this->get_disk_space(strtoupper($letter)));
+                }
+                break;
+            default:
+                $disk = $this->get_disk_space($type);
+                break;
+        }
+        return $disk;
+    }
+
+    private function getFilePath($fileName, $content)
+    {
+        $path = dirname(__FILE__) . "\\$fileName";
+        if (!file_exists($path)) {
+            file_put_contents($path, $content);
+        }
+        return $path;
+    }
+
+    /**
+     * 获得cpu使用率vbs文件生成函数
+     * @return string 返回vbs文件路径
+     */
+    private function getCupUsageVbsPath()
+    {
+        return $this->getFilePath(
+            'cpu_usage.vbs',
+            "On Error Resume Next
+    Set objProc = GetObject(\"winmgmts:\\\\.\\root\cimv2:win32_processor='cpu0'\")
+    WScript.Echo(objProc.LoadPercentage)"
+        );
+    }
+
+    /**
+     * 获得总内存及可用物理内存JSON vbs文件生成函数
+     * @return string 返回vbs文件路径
+     */
+    private function getMemoryUsageVbsPath()
+    {
+        return $this->getFilePath(
+            'memory_usage.vbs',
+            "On Error Resume Next
+    Set objWMI = GetObject(\"winmgmts:\\\\.\\root\cimv2\")
+    Set colOS = objWMI.InstancesOf(\"Win32_OperatingSystem\")
+    For Each objOS in colOS
+     Wscript.Echo(\"{\"\"TotalVisibleMemorySize\"\":\" & objOS.TotalVisibleMemorySize & \",\"\"FreePhysicalMemory\"\":\" & objOS.FreePhysicalMemory & \"}\")
+    Next"
+        );
+    }
+
+    /**
+     * 获得CPU使用率
+     * @return Number
+     */
+    private function getCpuUsage()
+    {
+        $path = $this->getCupUsageVbsPath();
+        exec("cscript -nologo $path", $usage);
+        return $usage[0];
+    }
+
+    /**
+     * 获得内存使用率数组
+     * @return array
+     */
+    private function getMemoryUsage()
+    {
+        $path = $this->getMemoryUsageVbsPath();
+        exec("cscript -nologo $path", $usage);
+        $memory = json_decode($usage[0], true);
+        $memory['usage'] = Round((($memory['TotalVisibleMemorySize'] - $memory['FreePhysicalMemory']) / $memory['TotalVisibleMemorySize']) * 100);
+        return $memory;
     }
 
+    private function get_linux_server_memory_usage()
+    {
+        $free = shell_exec('free');
+        $free = (string)trim($free);
+        $free_arr = explode("\n", $free);
+        $mem = explode(" ", $free_arr[1]);
+        $mem = array_filter($mem);
+        $mem = array_merge($mem);
+        $memory_usage = $mem[2] / $mem[1] * 100;
+        $mem_array = [];
+        $mem_array['total'] = round($mem[1] / 1024, 2);
+        $mem_array['used'] = round($mem[2] / 1024, 2);
+        $mem_array['usage'] = round($memory_usage, 2);
+        return $mem_array;
+    }
+
+    private function get_linux_server_cpu_usage()
+    {
+        $cpu_load = shell_exec("top -bn1 | grep 'Cpu(s)'");
+
+        if (empty($cpu_load)) {
+            return ['error' => 'Failed to retrieve CPU usage.'];
+        }
+
+        preg_match('/\s([\d.]+)\s*us/', $cpu_load, $matches);
+
+        if (isset($matches[1])) {
+            $cpu_usage = (float)$matches[1];
+        } else {
+            return ['error' => 'Failed to parse CPU usage.'];
+        }
+
+        return [
+            'usage' => round($cpu_usage, 2)
+        ];
+    }
+
+    private function _getServerLoadLinuxData()
+    {
+        if (is_readable("/proc/stat")) {
+            $stats = @file_get_contents("/proc/stat");
+
+            if ($stats !== false) {
+                // Remove double spaces to make it easier to extract values with explode()
+                $stats = preg_replace("/[[:blank:]]+/", " ", $stats);
+
+                // Separate lines
+                $stats = str_replace(array("\r\n", "\n\r", "\r"), "\n", $stats);
+                $stats = explode("\n", $stats);
+
+                // Separate values and find line for main CPU load
+                foreach ($stats as $statLine) {
+                    $statLineData = explode(" ", trim($statLine));
+
+                    // Found!
+                    if (
+                        (count($statLineData) >= 5) &&
+                        ($statLineData[0] == "cpu")
+                    ) {
+                        return array(
+                            $statLineData[1],
+                            $statLineData[2],
+                            $statLineData[3],
+                            $statLineData[4],
+                        );
+                    }
+                }
+            }
+        }
+
+        return null;
+    }
+
+    private function getAdminDashboardData()
+    {
+        $result = [];
+        //已注册总用户数量
+        $result['user_count'] = model('User')->count();
+        $result['user_count'] = number_format($result['user_count'], 0, '.', ',');
+        //已审核用户数量
+        $result['user_active_count'] = model('User')->where('user_status', 1)->count();
+        $result['user_active_count'] = number_format($result['user_active_count'], 0, '.', ',');
+
+        $today_start = strtotime(date('Y-m-d 00:00:00'));
+        $today_end = $today_start + 86399;
+        //本日来客量
+        $result['today_visit_count'] = model('Visit')->where('visit_time', 'between', $today_start . ',' . $today_end)->count();
+        $result['today_visit_count'] = number_format($result['today_visit_count'], 0, '.', ',');
+        //本日总入金
+        $result['today_money_get'] = model('Order')->where('order_time', 'between', $today_start . ',' . $today_end)->where('order_status', 1)->sum('order_price');
+        $result['today_money_get'] = number_format($result['today_money_get'], 2, '.', ',');
+        //前七天 每日用户访问数
+        $tmp_arr = Db::query("select FROM_UNIXTIME(visit_time, '%Y-%c-%d' ) days,count(*) count from (SELECT * from mac_visit where visit_time >= (unix_timestamp(CURDATE())-604800)) as temp group by days");
+        $result['seven_day_visit_day'] = [];
+        $result['seven_day_visit_count'] = [];
+
+        $result['raise_visit_user_today'] = 0;
+        if (is_array($tmp_arr) && count($tmp_arr) > 1 && (strtotime(end($tmp_arr)['days']) == strtotime(date('Y-m-d')))) {
+            $yesterday_visit_count = $tmp_arr[count($tmp_arr) - 2]['count'];
+            $lastday_visit_count = end($tmp_arr)['count'];
+            $result['raise_visit_user_today'] = number_format((($lastday_visit_count - $yesterday_visit_count) / $yesterday_visit_count) * 100, 2, '.', ',');
+        }
+
+        foreach ($tmp_arr as $data) {
+            array_push($result['seven_day_visit_day'], $data['days']);
+            array_push($result['seven_day_visit_count'], $data['count']);
+        }
+
+        //近七日用户访问总量
+        $result['seven_day_visit_total_count'] = 0;
+        foreach ($result['seven_day_visit_data'] as $k => $value) {
+            $result['seven_day_visit_total_count'] = $result['seven_day_visit_total_count'] + $value['count'];
+        }
+
+        $result['seven_day_visit_total_count'] = number_format($result['seven_day_visit_total_count'], 0, '.', ',');
+        //前七天 每日用户注册数
+        $result['seven_day_reg_data'] = Db::query("select FROM_UNIXTIME(user_reg_time, '%Y-%c-%d' ) days,count(*) count from (SELECT * from mac_user where user_reg_time >= (unix_timestamp(CURDATE())-604800)) as tmp group by days");
+
+        //近七日用户注册总量
+        $result['seven_day_reg_total_count'] = 0;
+        $result['seven_day_reg_day'] = [];
+        $result['seven_day_reg_count'] = [];
+        foreach ($result['seven_day_reg_data'] as $k => $value) {
+            array_push($result['seven_day_reg_day'], $value['days']);
+            array_push($result['seven_day_reg_count'], $value['count']);
+            $result['seven_day_reg_total_count'] = $result['seven_day_reg_total_count'] + $value['count'];
+        }
+
+        //比較前一天的註冊量漲幅
+        $result['raise_reg_user_today'] = 0;
+        if (is_array($result['seven_day_reg_data']) && count($result['seven_day_reg_data']) > 1 && (strtotime(end($result['seven_day_reg_data'])['days']) == strtotime(date('Y-m-d')))) {
+            $yesterday_reg_count = $result['seven_day_reg_data'][count($result['seven_day_reg_data']) - 2]['count'];
+            $lastday_reg_count = end($result['seven_day_reg_data'])['count'];
+            $result['raise_reg_user_today'] = number_format((($lastday_reg_count - $yesterday_reg_count) / $yesterday_reg_count) * 100, 2, '.', ',');
+        }
+
+        $result['seven_day_reg_total_count'] = number_format($result['seven_day_reg_total_count'], 0, '.', ',');
+        return $result;
+    }
+
+    public function rangeDateDailyVisit()
+    {
+
+        $range_daily_visit_data = Db::query("select FROM_UNIXTIME(visit_time, '%Y-%c-%d' ) days,count(*) count from (SELECT * from mac_visit where visit_time >= " . strtotime($_POST['startDate']) . "&&  visit_time <= " . strtotime($_POST['endDate']) . " ) as temp group by days");
+        $result = [];
+        $range_visit_day = [];
+        $range_visit_count = [];
+        $range_visit_sum = 0;
+        foreach ($range_daily_visit_data as $data) {
+            $range_visit_sum = $range_visit_sum + $data['count'];
+            array_push($range_visit_day, $data['days']);
+            array_push($range_visit_count, $data['count']);
+        }
+
+        $result['days'] = $range_visit_day;
+        $result['count'] = $range_visit_count;
+        $result['sum'] = $range_visit_sum;
+        return json_encode($result);
+    }
+
+    public function botlist()
+    {
+        $day_arr = [];
+        //列出最近10天的日期
+        for ($i = 0; $i < 7; $i++) {
+            $day_arr[$i] = date('Y-m-d', time() - $i * 60 * 60 * 24);
+        }
+        $google_arr = [];
+        $baidu_arr = [];
+        $sogou_arr = [];
+        $soso_arr = [];
+        $yahoo_arr = [];
+        $msn_arr = [];
+        $msn_bot_arr = [];
+        $sohu_arr = [];
+        $yodao_arr = [];
+        $twiceler_arr = [];
+        $alexa_arr = [];
+        $bot_list = [];
+        foreach ($day_arr as $day_vo) {
+            if (file_exists(ROOT_PATH . 'runtime/log/bot/' . $day_vo . '.txt')) {
+                $bot_content = file_get_contents(ROOT_PATH . 'runtime/log/bot/' . $day_vo . '.txt');
+            } else {
+                $bot_content = '';
+            }
+            $google_arr[$day_vo] = substr_count($bot_content, 'Google');
+            $baidu_arr[$day_vo] = substr_count($bot_content, 'Baidu');
+            $sogou_arr[$day_vo] = substr_count($bot_content, 'Sogou');
+            $soso_arr[$day_vo] = substr_count($bot_content, 'SOSO');
+            $yahoo_arr[$day_vo] = substr_count($bot_content, 'Yahoo');
+            $msn_arr[$day_vo] = substr_count($bot_content, 'MSN');
+            $msn_bot_arr[$day_vo] = substr_count($bot_content, 'msnbot');
+            $sohu_arr[$day_vo] = substr_count($bot_content, 'Sohu');
+            $yodao_arr[$day_vo] = substr_count($bot_content, 'Yodao');
+            $twiceler_arr[$day_vo] = substr_count($bot_content, 'Twiceler');
+            $alexa_arr[$day_vo] = substr_count($bot_content, 'Alexa');
+        }
+        $bot_list['Google']['key'] = array_keys($google_arr);
+        $bot_list['Google']['values'] = array_values($google_arr);
+        $bot_list['Baidu']['keys'] = array_keys($baidu_arr);
+        $bot_list['Baidu']['values'] = array_values($baidu_arr);
+        $bot_list['Sogou']['keys'] = array_keys($sogou_arr);
+        $bot_list['Sogou']['values'] = array_values($sogou_arr);
+        $bot_list['SOSO']['keys'] = array_keys($soso_arr);
+        $bot_list['SOSO']['values'] = array_values($soso_arr);
+        $bot_list['Yahoo']['keys'] = array_keys($yahoo_arr);
+        $bot_list['Yahoo']['values'] = array_values($yahoo_arr);
+        $bot_list['MSN']['keys'] = array_keys($msn_arr);
+        $bot_list['MSN']['values'] = array_values($msn_arr);
+        $bot_list['msnbot']['keys'] = array_keys($msn_bot_arr);
+        $bot_list['msnbot']['values'] = array_values($msn_bot_arr);
+        $bot_list['Sohu']['keys'] = array_keys($sohu_arr);
+        $bot_list['Sohu']['values'] = array_values($sohu_arr);
+        $bot_list['Yodao']['keys'] = array_keys($yodao_arr);
+        $bot_list['Yodao']['values'] = array_values($yodao_arr);
+        $bot_list['Twiceler']['keys'] = array_keys($twiceler_arr);
+        $bot_list['Twiceler']['values'] = array_values($twiceler_arr);
+        $bot_list['Alexa']['keys'] = array_keys($alexa_arr);
+        $bot_list['Alexa']['values'] = array_values($alexa_arr);
+
+        if (!empty($_POST['category'])) {
+            return $bot_list[$_POST['category']];
+        } else {
+            return $bot_list;
+        }
+    }
+
+    public function botlog()
+    {
+        $parm = input();
+        $data = $parm['data'];
+        $bot_content = file_get_contents(ROOT_PATH . 'runtime/log/bot/' . $data . '.txt');
+        $bot_list = array_slice(array_reverse(explode("\r\n", trim($bot_content))), 0, 20);
+        $this->assign('bot_list', $bot_list);
+        return $this->fetch('admin@others/botlog');
+    }
 }

+ 14 - 0
application/admin/controller/System.php

@@ -751,4 +751,18 @@ class System extends Base
         return json(['code' => 1, 'msg' => 'ok']);
     }
 
+    public function configVersion(){
+        $param = input();
+        $config = config('maccms');
+        if (!isset($config['site'])) {
+            $config['site'] = [];
+        }
+        $config['site']['new_version'] = $param['version'];
+        $res = mac_arr2file(APP_PATH . 'extra/maccms.php', $config);
+        if ($res === false) {
+            return $this->error(lang('save_err'));
+        }
+        return json(['code' => 1, 'msg' => 'ok']);
+    }
+
 }

+ 3 - 0
application/admin/controller/cpu_usage.vbs

@@ -0,0 +1,3 @@
+On Error Resume Next
+    Set objProc = GetObject("winmgmts:\\.\root\cimv2:win32_processor='cpu0'")
+    WScript.Echo(objProc.LoadPercentage)

+ 6 - 0
application/admin/controller/memory_usage.vbs

@@ -0,0 +1,6 @@
+On Error Resume Next
+    Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
+    Set colOS = objWMI.InstancesOf("Win32_OperatingSystem")
+    For Each objOS in colOS
+     Wscript.Echo("{""TotalVisibleMemorySize"":" & objOS.TotalVisibleMemorySize & ",""FreePhysicalMemory"":" & objOS.FreePhysicalMemory & "}")
+    Next

+ 26 - 0
application/admin/view/index/index.html

@@ -20,6 +20,9 @@ foreach ($langs as $k => &$v) {
 	
 	<div class="top-logo">{:lang('admin/index/index/name')}</div>
 	<ul class="layout-right" lay-filter="">	
+        <li class="nav-item">
+            <a href="javascript:void(0);"  onclick="chanage_version()">New</a>
+        </li>
 		 <li class="nav-item">
 			<a href="__ROOT__/" target="_blank"><i class="layui-icon layui-icon-home size-14"></i></a>
 	     </li> 
@@ -72,6 +75,9 @@ foreach ($langs as $k => &$v) {
 				</li>
 				<li class="layui-nav-item layui-hide-xs">
                     <a href="__ROOT__/" target="_blank">{:lang('admin/index/index/menu_index')}</a>
+                </li>
+                <li class="layui-nav-item layui-hide-xs">
+                    <a href="javascript:void(0);"  onclick="chanage_version()">{:lang('admin/index/index/new_version')}</a>
                 </li>
 			</ul>
 		</div>
@@ -351,6 +357,26 @@ foreach ($langs as $k => &$v) {
             }
         });
     }
+    function chanage_version(){
+        $.ajax({
+                url: "{:url('system/configVersion')}",
+                type: "post",
+                dataType: "json",
+                data: {'version': 1},
+                beforeSend: function () {
+
+                },
+                error:function(r){
+                    layer.msg("configedit error",{time:1800});
+                },
+                success: function (r) {
+                    layer.msg(r.msg,{time:1800});
+                },
+                complete: function () {
+                    location.reload();
+                }
+            });
+    }
 </script>
 
 </body>

+ 154 - 0
application/admin/view_new/actor/index.html

@@ -0,0 +1,154 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box">
+        {if condition="$param.select neq 1"}
+        <div class="mb-2">
+            <form class="layui-form space-x-1 space-y-1" method="post" action="{:url('data')}">
+                <input type="hidden" value="{$param.select|mac_filter_xss}" name="select">
+                <input type="hidden" value="{$param.input|mac_filter_xss}" name="input">
+                <div class="layui-input-inline w150">
+                    <select name="type">
+                        <option value="">{:lang('select_type')}</option>
+                        {volist name="type_tree" id="vo"}
+                        {if condition="$vo.type_mid eq 8"}
+                        <option value="{$vo.type_id}" {if condition="$param['type'] eq $vo.type_id"}selected {/if}>{$vo.type_name}</option>
+                        {volist name="vo.child" id="ch"}
+                        <option value="{$ch.type_id}" {if condition="$param['type'] eq $ch.type_id"}selected {/if}>&nbsp;&nbsp;&nbsp;&nbsp;├&nbsp;{$ch.type_name}</option>
+                        {/volist}
+                        {/if}
+                        {/volist}
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="status">
+                        <option value="">{:lang('select_status')}</option>
+                        <option value="0" {if condition="$param['status'] eq '0'"}selected {/if}>{:lang('reviewed')}</option>
+                        <option value="1" {if condition="$param['status'] eq '1'"}selected {/if}>{:lang('reviewed_not')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="level">
+                        <option value="">{:lang('select_level')}</option>
+                        <option value="9" {if condition="$param['level'] eq '9'"}selected {/if}>{:lang('level')}9-{:lang('slide')}</option>
+                        <option value="1" {if condition="$param['level'] eq '1'"}selected {/if}>{:lang('level')}1</option>
+                        <option value="2" {if condition="$param['level'] eq '2'"}selected {/if}>{:lang('level')}2</option>
+                        <option value="3" {if condition="$param['level'] eq '3'"}selected {/if}>{:lang('level')}3</option>
+                        <option value="4" {if condition="$param['level'] eq '4'"}selected {/if}>{:lang('level')}4</option>
+                        <option value="5" {if condition="$param['level'] eq '5'"}selected {/if}>{:lang('level')}5</option>
+                        <option value="6" {if condition="$param['level'] eq '6'"}selected {/if}>{:lang('level')}6</option>
+                        <option value="7" {if condition="$param['level'] eq '7'"}selected {/if}>{:lang('level')}7</option>
+                        <option value="8" {if condition="$param['level'] eq '8'"}selected {/if}>{:lang('level')}8</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="pic">
+                        <option value="">{:lang('select_pic')}</option>
+                        <option value="1" {if condition="$param['pic'] eq '1'"}selected{/if}>{:lang('pic_empty')}</option>
+                        <option value="2" {if condition="$param['pic'] eq '2'"}selected{/if}>{:lang('pic_remote')}</option>
+                        <option value="3" {if condition="$param['pic'] eq '3'"}selected{/if}>{:lang('pic_sync_err')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="order">
+                        <option value="">{:lang('select_sort')}</option>
+                        <option value="actor_time" {if condition="$param['order'] eq 'actor_time'"}selected{/if}>{:lang('update_time')}</option>
+                        <option value="actor_id" {if condition="$param['order'] eq 'actor_id'"}selected{/if}>{:lang('id')}</option>
+                        <option value="actor_hits" {if condition="$param['order'] eq 'actor_hits'"}selected{/if}>{:lang('hits')}</option>
+                        <option value="actor_hits_month" {if condition="$param['order'] eq 'actor_hits_month'"}selected{/if}>{:lang('hits_month')}</option>
+                        <option value="actor_hits_week" {if condition="$param['order'] eq 'actor_hits_week'"}selected{/if}>{:lang('hits_week')}</option>
+                        <option value="actor_hits_day" {if condition="$param['order'] eq 'actor_hits_day'"}selected{/if}>{:lang('hits_day')}</option>
+                    </select>
+                </div>
+
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_filter_xss}">
+                </div>
+                <button class="layui-btn mgl-20 j-search" >{:lang('btn_search')}</button>
+            </form>
+        </div>
+        {/if}
+
+        <div class="flex gap-5 overflow-x-auto overflow-y-hidden">
+            <a data-href="{:url('info')}" data-full="1" class="layui-btn layui-btn-primary j-iframe"><i class="layui-icon">&#xe654;</i>{:lang('add')}</a>
+            <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+            <a data-href="{:url('index/select')}?tab=actor&col=type_id&tpl=select_type&url=actor/field"  data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('type')}</a>
+            <a data-href="{:url('index/select')}?tab=actor&col=actor_level&tpl=select_level&url=actor/field"  data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('level')}</a>
+            <a data-href="{:url('index/select')}?tab=actor&col=actor_hits&tpl=select_hits&url=actor/field"  data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('hits')}</a>
+            <a data-href="{:url('index/select')}?tab=actor&col=actor_status&tpl=select_status&url=actor/field"  data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('status')}</a>
+            <a class="layui-btn layui-btn-primary j-iframe" data-href="{:url('images/opt?tab=actor')}" href="javascript:;" title="{:lang('pic_sync')}"><i class="layui-icon">&#xe620;</i>{:lang('pic_sync')}</a>
+        </div>
+
+    </div>
+
+
+    <form class="layui-form " method="post" id="pageListForm">
+        <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="50">{:lang('id')}</th>
+                <th >{:lang('actor')}</th>
+                <th width="150">{:lang('area')}</th>
+                <th width="150">{:lang('sex')}</th>
+                <th width="40">{:lang('level')}</th>
+                <th width="40">{:lang('height')}</th>
+                <th width="40">{:lang('weight')}</th>
+                <th width="120">{:lang('update_time')}</th>
+                <th width="120">{:lang('opt')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.actor_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.actor_id}</td>
+                <td>[{$vo.type.type_name}] <a target="_blank" class="layui-badge-rim " href="{:mac_url_actor_detail($vo)}">{$vo.actor_name|htmlspecialchars}</a> {if condition="$vo.actor_status eq 0"} <span class="layui-badge">{:lang('reviewed_not')}</span>{/if} {if condition="$vo.actor_lock eq 1"} <span class="layui-badge">{:lang('lock')}</span>{/if}</td>
+                <td>{$vo.actor_area|htmlspecialchars}</td>
+                <td>{$vo.actor_sex|htmlspecialchars}</td>
+                <td><a data-href="{:url('index/select')}?tab=actor&col=actor_level&tpl=select_level&url=actor/field&ids={$vo.actor_id}" data-width="270" data-height="100" class=" j-select"><span class="layui-badge layui-bg-orange">{$vo.actor_level}</span></a></td>
+                <td>{$vo.actor_height|htmlspecialchars}</td>
+                <td>{$vo.actor_weight|htmlspecialchars}</td>
+                <td>{$vo.actor_time|mac_day='color'}</td>
+                <td>
+                    <a class="layui-badge-rim j-iframe" data-full="1" data-href="{:url('info?id='.$vo['actor_id'])}" href="javascript:;" title="{:lang('edit')}">{:lang('edit')}</a>
+                    <a class="layui-badge-rim j-tr-del" data-href="{:url('del?ids='.$vo['actor_id'])}" href="javascript:;" title="{:lang('del')}">{:lang('del')}</a>
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+        <div id="pages" class="center"></div>
+    </form>
+</div>
+
+
+
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    var curUrl="{:url('actor/data',$param)}";
+    layui.use(['laypage', 'layer','form'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer,
+                form = layui.form;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+
+
+    });
+</script>
+</body>
+</html>

+ 386 - 0
application/admin/view_new/actor/info.html

@@ -0,0 +1,386 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<script type="text/javascript" src="__STATIC__/js/jquery.jscolor.js"></script>
+{include file="../../../application/admin/view_new/public/editor" flag="actor_editor"/}
+<div class="page-container p10">
+    <div class="showpic" style="display:none;"><img class="showpic_img" width="120" height="160" referrerPolicy="no-referrer"></div>
+    
+    <form class="layui-form layui-form-pane" method="post" action="">
+        <input type="hidden" name="actor_id" value="{$info.actor_id}">
+
+        <div class="layui-tab">
+            <ul class="layui-tab-title ">
+                <li class="layui-this">{:lang('base_info')}</a></li>
+                <li>{:lang('other_info')}</li>
+            </ul>
+            <div class="layui-tab-content">
+
+                <div class="layui-tab-item layui-show" id="movementTable">
+                    
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('param')}:</label>
+                    <div class="layui-input-inline w150">
+                        <select name="type_id" lay-filter="type_id">
+                            <option value="">{:lang('select_type')}</option>
+                            {volist name="type_tree" id="vo"}
+                            {if condition="$vo.type_mid eq 8"}
+                            <option value="{$vo.type_id}" {if condition="$info.type_id eq $vo.type_id"}selected{/if}>{$vo.type_name}</option>
+                            {volist name="$vo.child" id="ch"}
+                            <option value="{$ch.type_id}" {if condition="$info.type_id eq $ch.type_id"}selected{/if}>&nbsp;|&nbsp;&nbsp;&nbsp;|—{$ch.type_name}</option>
+                            {/volist}
+                            {/if}
+                            {/volist}
+                        </select>
+                    </div>
+                    <div class="layui-input-inline w150">
+                            <select name="actor_level">
+                                <option value="0">{:lang('select_level')}</option>
+                                <option value="9" {if condition="$info.actor_level eq 9"}selected{/if}>{:lang('level')}9-{:lang('slide')}</option>
+                                <option value="1" {if condition="$info.actor_level eq 1"}selected{/if}>{:lang('level')}1</option>
+                                <option value="2" {if condition="$info.actor_level eq 2"}selected{/if}>{:lang('level')}2</option>
+                                <option value="3" {if condition="$info.actor_level eq 3"}selected{/if}>{:lang('level')}3</option>
+                                <option value="4" {if condition="$info.actor_level eq 4"}selected{/if}>{:lang('level')}4</option>
+                                <option value="5" {if condition="$info.actor_level eq 5"}selected{/if}>{:lang('level')}5</option>
+                                <option value="6" {if condition="$info.actor_level eq 6"}selected{/if}>{:lang('level')}6</option>
+                                <option value="7" {if condition="$info.actor_level eq 7"}selected{/if}>{:lang('level')}7</option>
+                                <option value="8" {if condition="$info.actor_level eq 8"}selected{/if}>{:lang('level')}8</option>
+                            </select>
+                    </div>
+                    <div class="layui-input-inline w150">
+                            <select name="actor_status">
+                                <option value="1">{:lang('reviewed')}</option>
+                                <option value="0" {if condition="$info.actor_status eq '0'"}selected{/if}>{:lang('reviewed_not')}</option>
+                            </select>
+                    </div>
+                    <div class="layui-input-inline w150">
+                        <select name="actor_sex">
+                            <option value="{:lang('male')}">{:lang('male')}</option>
+                            <option value="{:lang('female')}" {if condition="$info.actor_sex eq '女'"}selected{/if}>{:lang('female')}</option>
+                        </select>
+                    </div>
+                    <div class="layui-input-inline w150">
+                        <select name="actor_lock">
+                            <option value="0">{:lang('unlock')}</option>
+                            <option value="1" {if condition="$info.actor_lock eq 1"}selected{/if}>{:lang('lock')}</option>
+                        </select>
+                    </div>
+
+                    <div class="layui-input-inline">
+                        <input type="checkbox" name="uptime" title="{:lang('update_time')}" value="1" checked class="layui-checkbox checkbox-ids" lay-skin="primary">
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('actor_name')}:</label>
+                    <div class="layui-input-inline w200">
+                        <input type="text" class="layui-input" value="{$info.actor_name}" placeholder="" name="actor_name">
+                    </div>
+                    <label class="layui-form-label">{:lang('alias')}:</label>
+                    <div class="layui-input-inline w200">
+                        <input type="text" class="layui-input" value="{$info.actor_alias}" placeholder="" name="actor_alias">
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('en')}:</label>
+                    <div class="layui-input-inline w200">
+                        <input type="text" class="layui-input" value="{$info.actor_en}" placeholder="" name="actor_en">
+                    </div>
+                    <label class="layui-form-label">{:lang('letter')}:</label>
+                    <div class="layui-input-inline w200">
+                        <input type="text" class="layui-input" value="{$info.actor_letter}" placeholder="" name="actor_letter">
+                    </div>
+                    <label class="layui-form-label">{:lang('color')}:</label>
+                    <div class="layui-input-inline w200">
+                        <input type="text" class="layui-input color" value="{$info.actor_color}" placeholder="" name="actor_color">
+                    </div>
+                </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('blood')}:</label>
+                        <div class="layui-input-inline w200">
+                            <input type="text" class="layui-input" value="{$info.actor_blood}" placeholder="A,B,AB,O" name="actor_blood">
+                        </div>
+                        <label class="layui-form-label">{:lang('area')}:</label>
+                        <div class="layui-input-inline w200">
+                            <input type="text" class="layui-input" value="{$info.actor_area}" placeholder="" name="actor_area">
+                        </div>
+                        <label class="layui-form-label">{:lang('birtharea')}:</label>
+                        <div class="layui-input-inline w200">
+                            <input type="text" class="layui-input" value="{$info.actor_birtharea}" placeholder="" name="actor_birtharea">
+                        </div>
+                    </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('height')}:</label>
+                        <div class="layui-input-inline w200">
+                            <input type="text" class="layui-input" value="{$info.actor_height}" placeholder="cm" name="actor_height">
+                        </div>
+                        <label class="layui-form-label">{:lang('weight')}:</label>
+                        <div class="layui-input-inline w200">
+                            <input type="text" class="layui-input" value="{$info.actor_weight}" placeholder="kg" name="actor_weight">
+                        </div>
+                        <label class="layui-form-label">{:lang('birthday')}:</label>
+                        <div class="layui-input-inline w200">
+                            <input type="text" class="layui-input" value="{$info.actor_birthday}" placeholder="2000-01-01" name="actor_birthday">
+                        </div>
+                    </div>
+
+                    <div class="layui-form-item">
+
+                        <label class="layui-form-label">{:lang('starsign')}:</label>
+                        <div class="layui-input-inline w200">
+                            <input type="text" class="layui-input" value="{$info.actor_starsign}" placeholder="" name="actor_starsign">
+                        </div>
+                        <label class="layui-form-label">{:lang('school')}:</label>
+                        <div class="layui-input-inline w200">
+                            <input type="text" class="layui-input" value="{$info.actor_school}" placeholder="" name="actor_school">
+                        </div>
+                        <label class="layui-form-label">{:lang('remarks')}:</label>
+                        <div class="layui-input-inline w200">
+                            <input type="text" class="layui-input" value="{$info.actor_remarks}" placeholder="" name="actor_remarks" id="actor_remarks">
+                        </div>
+                    </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('works')}:</label>
+                        <div class="layui-input-inline w800">
+                            <input type="text" class="layui-input" value="{$info.actor_works}" placeholder="{:lang('multi_separate_tip')}" name="actor_works">
+                        </div>
+                    </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">TAG:</label>
+                        <div class="layui-input-inline w500">
+                            <input type="text" class="layui-input" value="{$info.actor_tag}" placeholder="" name="actor_tag">
+                        </div>
+                        <div class="layui-input-inline w120">
+                            <input type="checkbox" name="uptag" title="{:lang('auto_make')}" value="1" class="layui-checkbox checkbox-ids" lay-skin="primary">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('class')}:</label>
+                        <div class="layui-input-inline w500">
+                            <input type="text" class="layui-input" value="{$info.actor_class}" placeholder="" id="actor_class" name="actor_class">
+                        </div>
+                        <div class="layui-input-inline w500 actor_class_label">
+
+                        </div>
+                    </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('pic')}:</label>
+                    <div class="layui-input-inline w400 upload">
+                        <input type="text" class="layui-input upload-input" style="max-width:100%;" value="{$info.actor_pic}" placeholder="" id="actor_pic" name="actor_pic">
+                    </div>
+                    <div class="layui-input-inline ">
+                        <button type="button" class="layui-btn layui-upload" lay-data="" id="upload1">{:lang('upload_pic')}</button>
+                    </div>
+                </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('blurb')}:</label>
+                        <div class="layui-input-block">
+                            <textarea name="actor_blurb" cols="" rows="3" class="layui-textarea"  placeholder="{:lang('blurb_auto_tip')}" style="height:40px;">{$info.actor_blurb}</textarea>
+                        </div>
+                    </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('content')}:</label>
+                        <div class="layui-input-block">
+                            <textarea id="actor_content" name="actor_content" type="text/plain" style="width:99%;height:300px">{$info.actor_content|mac_url_content_img}</textarea>
+                        </div>
+                    </div>
+                    
+        </div>
+
+                <div class="layui-tab-item" id="movementTable">
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">{:lang('up')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.actor_up}" placeholder="" id="actor_up" name="actor_up">
+                            </div>
+                            <label class="layui-form-label">{:lang('hate')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.actor_down}" placeholder="" id="actor_down" name="actor_down">
+                            </div>
+                            <button class="layui-btn" type="button" id="btn_rnd">{:lang('rnd_make')}</button>
+                        </div>
+
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">{:lang('hits')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.actor_hits}" placeholder="" id="actor_hits" name="actor_hits">
+                            </div>
+                            <label class="layui-form-label">{:lang('hits_month')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.actor_hits_month}" placeholder="" id="actor_hits_month" name="actor_hits_month" >
+                            </div>
+                        </div>
+
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">{:lang('hits_week')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.actor_hits_week}" placeholder="" id="actor_hits_week" name="actor_hits_week">
+                            </div>
+                            <label class="layui-form-label">{:lang('hits_day')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input " value="{$info.actor_hits_day}" placeholder="" id="actor_hits_day" name="actor_hits_day">
+                            </div>
+                        </div>
+
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">{:lang('score')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.actor_score}" placeholder="" id="actor_score" name="actor_score">
+                            </div>
+                            <label class="layui-form-label">{:lang('score_all')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.actor_score_all}" placeholder="" id="actor_score_all" name="actor_score_all">
+                            </div>
+                            <label class="layui-form-label">{:lang('score_num')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.actor_score_num}" placeholder="" id="actor_score_num" name="actor_score_num">
+                            </div>
+                        </div>
+
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">{:lang('tpl')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.actor_tpl}" placeholder="" name="actor_tpl">
+                            </div>
+                            <label class="layui-form-label">{:lang('jumpurl')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.actor_jumpurl}" placeholder="" name="actor_jumpurl">
+                            </div>
+                        </div>
+                    </div>
+            </div>
+        </div>
+
+                <div class="layui-form-item center">
+                    <div class="layui-input-block">
+                        <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit" data-child="">{:lang('btn_save')}</button>
+                        <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+                    </div>
+                </div>
+    </form>
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+
+    layui.use(['form','upload', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery
+                , upload = layui.upload;;
+
+        // 验证
+        form.verify({
+            actor_name: function (value) {
+                if (value == "") {
+                    return "{:lang('name_empty')}";
+                }
+            }
+        });
+
+        $(document).on("click", ".extend", function(){
+            $id = $(this).attr('data-id');
+            if($id == 'actor_class'||$id == 'actor_keywords'){
+                $val = $("input[id='"+$id+"']").val();
+                if($val!=''){
+                    $val = $val+',';
+                }
+                if($val.indexOf($(this).text())>-1){
+                    return;
+                }
+                $("input[id='"+$id+"']").val($val+$(this).text());
+            }else{
+                $("input[id='"+$id+"']").val($(this).text());
+            }
+        });
+
+        form.on('select(type_id)', function(data){
+            getExtend(data.value);
+        });
+
+        upload.render({
+            elem: '.layui-upload'
+            ,url: "{:url('upload/upload')}?flag=actor"
+            ,method: 'post'
+            ,before: function(input) {
+                layer.msg("{:lang('upload_ing')}", {time:3000000});
+            },done: function(res, index, upload) {
+                var obj = this.item;
+                if (res.code == 0) {
+                    layer.msg(res.msg);
+                    return false;
+                }
+                layer.closeAll();
+                var input = $(obj).parent().parent().find('.upload-input');
+                if ($(obj).attr('lay-type') == 'image') {
+                    input.siblings('img').attr('src', res.data.file).show();
+                }
+                input.val(res.data.file);
+
+                if(res.data.thumb_class !=''){
+                    $('.'+ res.data.thumb_class).val(res.data.thumb[0].file);
+                }
+            }
+        });
+
+        $('.upload-input').hover(function (e){
+            var e = window.event || e;
+            var imgsrc = $(this).val();
+            if(imgsrc.trim()==""){ return; }
+            var left = e.clientX+document.body.scrollLeft+20;
+            var top = e.clientY+document.body.scrollTop+20;
+            $(".showpic").css({left:left,top:top,display:""});
+            if(imgsrc.indexOf('://')<0){ imgsrc = ROOT_PATH + '/' + imgsrc;	} else{ imgsrc = imgsrc.replace('mac:','http:'); }
+            $(".showpic_img").attr("src", imgsrc);
+        },function (e){
+            $(".showpic").css("display","none");
+        });
+
+        $("#btn_rnd").click(function(){
+            $("#actor_hits").val( rndNum(5000,9999) );
+            $("#actor_hits_month").val( rndNum(1000,4999) );
+            $("#actor_hits_week").val( rndNum(300,999) );
+            $("#actor_hits_day").val( rndNum(1,299) );
+            $("#actor_up").val( rndNum(1,999) );
+            $("#actor_down").val( rndNum(1,999) );
+            $("#actor_score").val( rndNum(10) );
+            $("#actor_score_all").val( rndNum(1000) );
+            $("#actor_score_num").val( rndNum(100) );
+        });
+
+        var ue = editor_getEditor('actor_content');
+    });
+
+    function getExtend(id){
+        $.post("{:url('type/extend')}", {id:id}, function(res) {
+
+            if (res.code == 1) {
+                $.each(res.data, function(key, value){
+                    $('.actor_'+key+"_label").html('');
+                    if(value != ''){
+                        $.each(value, function(key2, value2){
+                            $(".actor_"+key+"_label").append('<a class="layui-btn layui-btn-xs extend" href="javascript:;" data-id="actor_'+key+'">'+value2+'</a>');
+                        });
+                    }
+                });
+            }
+        });
+    }
+
+    {if condition="$info.actor_id gt 0"}
+    setTimeout(function () {
+        getExtend('{$info.type_id}')
+    },1000);
+    {/if}
+
+</script>
+
+</body>
+</html>

+ 56 - 0
application/admin/view_new/addon/add.html

@@ -0,0 +1,56 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="layui-tab layui-tab-brief" lay-filter="tabs">
+        <ul class="layui-tab-title">
+            <li class="btn-local" ><a href="{:url('index')}">{:lang('local_app')}</a></li>
+            <li class="layui-this"><a href="{:url('add')}">{:lang('local_setup')}</a></li>
+        </ul>
+        <div class="layui-tab-content">
+            <blockquote class="layui-elem-quote layui-quote-nm">
+                {:lang('admin/addon/add_tip')}
+            </blockquote>
+            <input type="hidden" id="token" name="__token__" value="{$Request.token}" />
+            <button type="button" class="layui-btn layui-upload" id="upload1">{:lang('upload')}</button>
+        </div>
+    </div>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+
+<script type="text/javascript">
+    var url='';
+    layui.use(['form','laypage', 'layer','upload','element'], function() {
+        // 操作对象
+        var form = layui.form
+            , layer = layui.layer
+            , upload = layui.upload
+            ,element = layui.element;
+
+        upload.render({
+            elem: '.layui-upload'
+            ,url: "{:url('addon/local')}?__token__=" + $('#token').val()
+            ,method: 'post'
+            ,exts:'zip'
+            ,before: function(input) {
+                layer.msg("{:lang('upload_ing')}", {time:3000000});
+            },done: function(res, index, upload) {
+                var obj = this.item;
+                if (res.code == 0) {
+                    layer.msg(res.msg);
+                }
+
+                setTimeout(function () {
+                    layer.closeAll();
+                    location.reload();
+                },2000);
+            }
+        });
+
+    });
+
+
+</script>
+</body>
+</html>

+ 167 - 0
application/admin/view_new/addon/config.html

@@ -0,0 +1,167 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+    <div class="showpic" style="display:none;"><img class="showpic_img" width="120" height="160"></div>
+
+    <form class="layui-form layui-form-pane" method="post" action="">
+        <input id="admin_id" name="name" type="hidden" value="{$info.name}">
+
+        {foreach $config as $item}
+        <div class="layui-form-item">
+            <label class="layui-form-label">{$item.title}:</label>
+                {switch $item.type}
+                {case string}
+                <div class="layui-input-inline w600 ">
+                <input type="text" name="row[{$item.name}]" value="{$item.value}" class="layui-input" data-rule="{$item.rule}" data-tip="{$item.tip}" {$item.extend} />
+                </div>
+            {/case}
+                {case text}
+                <div class="layui-input-inline w600 ">
+                <textarea name="row[{$item.name}]" class="layui-input" data-rule="{$item.rule}" rows="5" data-tip="{$item.tip}" {$item.extend}>{$item.value}</textarea>
+                </div>
+                {/case}
+                {case array}
+                  <!-- 数组类型标签开始 -->
+                  <div class="layui-input-inline w700 ">
+                     <div style="padding-left: 10px;">
+                        {foreach name="item.value" item="vo" }
+                           <div class=" w700 ">
+                              <div class="layui-form-item">
+                                 <label class="layui-form-label">{$key}:</label>
+                                 <div class="layui-input-block">
+                                    <input type="text" name="row[{$item.name}][{$key}]" value="{$vo}" class="layui-input w500"  />
+                                 </div>
+                              </div>
+                           </div>
+                        {/foreach}
+                     </div>
+                  </div>
+                  <!-- 数组类型标签结束 -->
+
+                {/case}
+                {case datetime}
+            <div class="layui-input-inline w600 ">
+                <input type="text" name="row[{$item.name}]" value="{$item.value}" class="layui-input datetimepicker" data-tip="{$item.tip}" data-rule="{$item.rule}" {$item.extend} />
+                </div>
+                {/case}
+                {case number}
+            <div class="layui-input-inline w600 ">
+                <input type="number" name="row[{$item.name}]" value="{$item.value}" class="layui-input" data-tip="{$item.tip}" data-rule="{$item.rule}" {$item.extend} />
+                </div>
+                {/case}
+                {case checkbox}
+            <div class="layui-input-inline w600 ">
+                {foreach name="item.content" item="vo"}
+                <input id="row[{$item.name}][]-{$key}" name="row[{$item.name}][]" type="checkbox" value="{$key}" data-tip="{$item.tip}" title="{$vo}" {in name="key" value="$item.value"}checked{/in} />
+                {/foreach}
+                </div>
+                {/case}
+                {case radio}
+            <div class="layui-input-inline w700 ">
+                {foreach name="item.content" item="vo"}
+                <input id="row[{$item.name}]-{$key}" name="row[{$item.name}]" type="radio" value="{$key}" data-tip="{$item.tip}" title="{$vo}" {in name="key" value="$item.value"}checked{/in} />
+                {/foreach}
+                </div>
+                {/case}
+                {case value="select" break="0"}{/case}
+                {case value="selects"}
+            <div class="layui-input-inline w700 ">
+                <select name="row[{$item.name}]{$item.type=='selects'?'[]':''}" class="layui-input selectpicker" data-tip="{$item.tip}" {$item.type=='selects'?'multiple':''}>
+                    {foreach name="item.content" item="vo"}
+                    <option value="{$key}" {in name="key" value="$item.value"}selected{/in}>{$vo}</option>
+                    {/foreach}
+                </select>
+                </div>
+                {/case}
+                {case value="image" break="0"}{/case}
+                {case value="images"}
+            <div class="layui-input-inline w600 ">
+                <input id="c-{$item.name}" class="layui-input upload-input upload-img" size="37" name="row[{$item.name}]" type="text" value="{$item.value}" data-tip="{$item.tip}">
+                </div>
+            <div class="layui-input-inline w100">
+                <button type="button" class="layui-btn layui-upload" lay-data="{data:{thumb:0,thumb_class:''}}" >上传</button>
+                </div>
+
+                {/case}
+                {case value="file" break="0"}{/case}
+                {case value="files"}
+            <div class="layui-input-inline w600 ">
+                <input id="c-{$item.name}" class="layui-input upload-input" size="37" name="row[{$item.name}]" type="text" value="{$item.value}" data-tip="{$item.tip}">
+            </div>
+            <div class="layui-input-inline w100">
+                <button type="button" class="layui-btn layui-upload" lay-data="{data:{thumb:0,thumb_class:''}}" >上传</button>
+            </div>
+
+                {/case}
+                {case bool}
+                <div class="layui-input-inline">
+                <input id="row[{$item.name}]-yes" name="row[{$item.name}]" type="radio" value="1" {$item.value?'checked':''} data-tip="{$item.tip}" title="是"/>
+                <input id="row[{$item.name}]-no" name="row[{$item.name}]" type="radio" value="0" {$item.value?'':'checked'} data-tip="{$item.tip}" title="否"/>
+                </div>
+                {/case}
+                {/switch}
+            <div class="layui-form-mid layui-word-aux">{$item.tip}</div>
+            </div>
+
+
+        {/foreach}
+
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+                <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit" data-child="true">{:lang('btn_save')}</button>
+                <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+            </div>
+        </div>
+    </form>
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    layui.use(['form','upload', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery, upload = layui.upload;;
+
+        upload.render({
+            elem: '.layui-upload'
+            ,url: "{:url('upload/upload')}?flag=addon"
+            ,method: 'post'
+            ,before: function(input) {
+                layer.msg("{:lang('upload_ing')}", {time:3000000});
+            },done: function(res, index, upload) {
+                var obj = this.item;
+                if (res.code == 0) {
+                    layer.msg(res.msg);
+                    return false;
+                }
+                layer.closeAll();
+                var input = $(obj).parent().parent().find('.upload-input');
+                if ($(obj).attr('lay-type') == 'image') {
+                    input.siblings('img').attr('src', res.data.file).show();
+                }
+                input.val(res.data.file);
+
+            }
+        });
+
+
+        $('.upload-img').hover(function (e){
+            var e = window.event || e;
+            var imgsrc = $(this).val();
+            if(imgsrc.trim()==""){ return; }
+            var left = e.clientX+document.body.scrollLeft+20;
+            var top = e.clientY+document.body.scrollTop+20;
+            $(".showpic").css({left:left,top:top,display:""});
+            if(imgsrc.indexOf('://')<0){ imgsrc = ROOT_PATH + '/' + imgsrc;	} else{ imgsrc = imgsrc.replace('mac:','http:'); }
+            $(".showpic_img").attr("src", imgsrc);
+        },function (e){
+            $(".showpic").css("display","none");
+        });
+
+    });
+
+</script>
+
+</body>
+</html>

+ 135 - 0
application/admin/view_new/addon/index.html

@@ -0,0 +1,135 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="layui-tab layui-tab-brief" lay-filter="tabs">
+        <ul class="layui-tab-title">
+            <li class="layui-this btn-local" data-href="{:url('downloaded')}">{:lang('local_app')}</li>
+        </ul>
+        <div class="layui-tab-content">
+            <div class="layui-tab-item layui-show">
+
+    <div class="my-toolbar-box" >
+        <div class=" mb10">
+        <form class="layui-form " method="post">
+            <div class="layui-input-inline w300">
+                <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_filter_xss}">
+            </div>
+            <button class="layui-btn mgl-20 j-search" >{:lang('btn_search')}</button>
+        </form>
+        </div>
+    </div>
+
+    <form class="layui-form p10 " method="post" id="pageListForm">
+        <div class="layui-row layui-col-space15" id="addon_list">
+
+        </div>
+        <div id="pages" class="center"></div>
+    </form>
+</div>
+            </div>
+        </div>
+    </div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+
+<script type="text/javascript">
+    var url='';
+    layui.use(['form','laypage', 'layer','upload','element'], function() {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , upload = layui.upload
+                ,element = layui.element;
+
+        //监听Tab切换
+        element.on('tab(tabs)', function(data){
+            if(data.index <2){
+                url = $(this).attr('data-href');
+                load_list();
+            }
+        });
+
+        $(document).on('click', '.btn-disable,.btn-enable', function() {
+            $.ajax({
+                type: 'get',
+                dataType:'json',
+                url: "{:url('addon/state')}",
+                data:{name:$(this).attr('data-name'),action:$(this).attr('data-action'),force:0},
+                success:function($r){
+                    if($r.code ==1){
+                        load_list();
+                    }
+                    layer.msg($r.msg);
+                },
+                complete:function(){
+
+                }
+            });
+        });
+        $(document).on('click', '.btn-install', function() {
+
+        });
+        $(document).on('click', '.btn-uninstall', function() {
+            $.ajax({
+                type: 'get',
+                dataType:'json',
+                url: "{:url('addon/uninstall')}",
+                data:{name:$(this).attr('data-name'),force:0},
+                success:function($r){
+                    if($r.code ==1){
+                        load_list();
+                    }
+                    layer.msg($r.msg);
+                },
+                complete:function(){
+
+                }
+            });
+        });
+        $(document).on('click', '.btn-info', function() {
+
+        });
+
+        $('.btn-local').click();
+    });
+
+    function load_list(){
+        var h='';
+        $('#addon_list').html('');
+        layer.msg("{:lang('wait_submit')}",{time:500000});
+
+        $.ajax({
+            type: 'get',
+            dataType:'jsonp',
+            url: url,
+            success:function($r){
+                $.each($r.rows,function(i,row){
+                    h ='<div class="layui-col-md3"><div class="addon"> <a href="#" target="_blank"> <img src="'+row.image+'" class="add-logo"> </a> <div class="addon-caption"> <h4>'+row.title+'<span class="layui-badge layui-bg-green">{:lang('level')}</span></h4> <p><b>¥'+row.price+'</b></p> <p>{:lang('author')}: '+row.author+'</p> <p>{:lang('intro')}: '+row.intro+'</p> <p>{:lang('ver')}: '+row.version+'</p> <p>{:lang('update_time')}: '+ getDataTime(row.createtime)+'</p>';
+                    h+='<div class="operate"><span class="btn-group">';
+                    if(row.install =='1'){
+                        h+='<a href="javascript:;" class="layui-btn layui-btn-normal layui-btn-sm j-iframe" data-name="'+row.name+'" data-href="{:url('config')}?name='+row.name+'" ><i class="layui-icon">&#xe614;</i>{:lang('config')}</a>';
+                        if(row.state=='1'){
+                            h+='<a href="javascript:;" class="layui-btn layui-btn-primary layui-btn-sm btn-disable" data-name="'+row.name+'" data-action="disable"><i class="layui-icon">&#x1006;</i>{:lang('disable')}</a>';
+                        }
+                        else{
+                            h+='<a href="javascript:;" class="layui-btn  layui-btn-sm btn-enable" data-name="'+row.name+'" data-action="enable"><i class="layui-icon">&#xe605;</i>{:lang('enable')}</a><a href="javascript:;" class="layui-btn layui-btn-danger layui-btn-sm btn-uninstall" data-name="'+row.name+'"><i class="layui-icon">&#x1006;</i>{:lang('uninstall')}</a>';
+                        }
+                    }
+                    else{
+                        h+='<a href="javascript:;" class="layui-btn layui-btn-sm btn-install"><i class="layui-icon">&#xe601;</i>{:lang('install')}</a>';
+                    }
+                    h+='</span> <span class="fr" style="margin-top:10px;"> <a href="javascript:;" class="btn-info text-gray " data-name="'+row.name+'" title="{:lang('detail')}"><i class="layui-icon">&#xe63c;</i></a> </span> </div> </div> </div> </div>';
+
+                    $('#addon_list').append(h);
+                });
+            },
+            complete:function(){
+                layer.closeAll();
+            }
+        });
+    }
+
+</script>
+</body>
+</html>

+ 10 - 0
application/admin/view_new/addon/info.html

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

+ 80 - 0
application/admin/view_new/admin/index.html

@@ -0,0 +1,80 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box">
+
+        <div class="layui-btn-group">
+            <a data-href="{:url('info')}" class="layui-btn layui-btn-primary j-iframe"><i class="layui-icon">&#xe654;</i>{:lang('add')}</a>
+            <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+        </div>
+
+    </div>
+
+    <form class="layui-form " method="post" id="pageListForm">
+        <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="100">{:lang('id')}</th>
+                <th >{:lang('name')}</th>
+                <th width="100">{:lang('status')}</th>
+                <th width="140">{:lang('last_login_time')}</th>
+                <th width="140">{:lang('last_login_ip')}</th>
+                <th width="130">{:lang('login_num')}</th>
+                <th width="140">{:lang('opt')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td>
+                    {if condition="$admin['admin_id'] neq $vo['admin_id']"}
+                    <input type="checkbox" name="ids[]" value="{$vo.admin_id}" class="layui-checkbox checkbox-ids" lay-skin="primary">
+                    {/if}
+                </td>
+                <td>{$vo.admin_id}</td>
+                <td>{$vo.admin_name|htmlspecialchars}</td>
+                <td>
+                    <input type="checkbox" name="status" {if condition="$vo['admin_status'] eq 1"}checked{/if} value="{$vo['admin_status']}" lay-skin="switch" lay-filter="switchStatus" lay-text="{:lang('enable')}|{:lang('disable')}" data-href="{:url('field?col=admin_status&ids='.$vo['admin_id'])}">
+                </td>
+                <td>{$vo.admin_last_login_time|mac_day='color'}</td>
+                <td>{$vo.admin_last_login_ip|long2ip}</td>
+                <td>{$vo.admin_login_num}</td>
+                <td>
+                    <a class="layui-badge-rim j-iframe" data-href="{:url('info?id='.$vo['admin_id'])}" href="javascript:;" title="{:lang('edit')}">{:lang('edit')}</a>
+                    {if condition="$admin['admin_id'] neq $vo['admin_id']"}
+                    <a class="layui-badge-rim j-tr-del" data-href="{:url('del?ids='.$vo['admin_id'])}" href="javascript:;" title="{:lang('del')}">{:lang('del')}</a>
+                    {/if}
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+        <div id="pages" class="center"></div>
+    </form>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    var curUrl="{:url('admin/index',$param)}";
+    layui.use(['laypage', 'layer'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+    });
+</script>
+</body>
+</html>

+ 140 - 0
application/admin/view_new/admin/info.html

@@ -0,0 +1,140 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+    <form class="layui-form layui-form-pane" method="post" action="" id="movementTable">
+        <input id="admin_id" name="admin_id" type="hidden" value="{$info.admin_id}">
+        <input type="hidden" name="__token__" value="{$Request.token}" />
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('name')}:</label>
+            <div class="layui-input-block  ">
+                <input type="text" class="layui-input" value="{$info.admin_name}" placeholder="" id="admin_name" name="admin_name">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('pass')}:</label>
+            <div class="layui-input-block">
+                <input type="password" class="layui-input" value="{$info.admin_pwd}" placeholder="" id="admin_pwd" name="admin_pwd">
+            </div>
+        </div>
+
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('status')}:</label>
+            <div class="layui-input-block">
+                    <input name="admin_status" type="radio" id="rad-1" value="0" title="{:lang('disable')}" {if condition="$info['admin_status'] neq 1"}checked {/if}>
+                    <input name="admin_status" type="radio" id="rad-2" value="1" title="{:lang('enable')}" {if condition="$info['admin_status'] eq 1"}checked {/if}>
+            </div>
+        </div>
+
+        <div class="layui-form-item ">
+            <label class="layui-form-label">{:lang('popedom')}:</label>
+            <div class="layui-input-block">
+                <blockquote class="layui-elem-quote layui-quote-nm">
+                    {:lang('admin/admin/popedom_tip')}
+                </blockquote>
+
+
+                <div class="role-list-form ">
+                    {volist name="menus" id="vo" key="k1"}
+                    <dl class="role-list-form-top permission-list">
+                        <dt>
+                            <input type="checkbox" value="" {$vo.ck} lay-skin="primary" data-id="{$k1}" lay-filter="roleAuth1" title="{$vo.name}">
+                        </dt>
+                        <dd>
+                            {volist name="$vo.sub" id="sub" key="k2"}
+                                <input type="checkbox" value="{$sub.controller}/{$sub.action}" name="admin_auth[]" {$sub.ck} data-pid="{$k1}" title="{$sub.name}" lay-skin="primary" lay-filter="roleAuth2">
+                            {/volist}
+                        </dd>
+                    </dl>
+                    {/volist}
+                </div>
+
+            </div>
+        </div>
+
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+                <button type="button" class="layui-btn layui-btn-normal formCheckAll" lay-filter="formCheckAll" >{:lang('check_all')}</button>
+                <button type="button" class="layui-btn layui-btn-normal formCheckOther" lay-filter="formCheckOther">{:lang('check_other')}</button>
+
+                <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit" data-child="true">{:lang('btn_save')}</button>
+                <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+            </div>
+        </div>
+    </form>
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    layui.use(['form', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery;
+
+        // 验证
+        form.verify({
+            admin_name: function (value) {
+                if (value == "") {
+                    return "{:lang('name_empty')}";
+                }
+            },
+            admin_pwd: function (value) {
+                if (value == "") {
+                    return "{:lang('pass_empty')}";
+                }
+            }
+        });
+
+        form.on('checkbox(roleAuth1)', function(data) {
+            var child = $(data.elem).parent('dt').siblings('dd').find('input');
+            /* 自动选中子节点 */
+            child.each(function(index, item) {
+                if(item.disabled == true){
+
+                }
+                else {
+                    item.checked = data.elem.checked;
+                }
+            });
+            form.render('checkbox');
+        });
+
+        form.on('checkbox(roleAuth2)', function(data) {
+            var child = $(data.elem).parent().find('input');
+            var parent = $(data.elem).parent('dd').siblings('dt').find('input');
+            var parent_ck= true;
+            /* 自动选中子节点 */
+            child.each(function(index, item) {
+                if(!item.checked){
+                    parent_ck = false;
+                }
+            });
+            parent.each(function(index, item) {
+                item.checked = parent_ck;
+            });
+            form.render('checkbox');
+        });
+
+
+        $('.formCheckAll').click(function(){
+            var child = $('.role-list-form-top').find('input');
+            /* 自动选中子节点 */
+            child.each(function(index, item) {
+                item.checked = true;
+            });
+            form.render('checkbox');
+        });
+        $('.formCheckOther').click(function(){
+            var child = $('.role-list-form-top').find('input');
+            /* 自动选中子节点 */
+            child.each(function(index, item) {
+                item.checked = (item.checked  ? false : true);
+            });
+            form.render('checkbox');
+        });
+
+    });
+
+</script>
+</body>
+</html>

+ 57 - 0
application/admin/view_new/annex/file.html

@@ -0,0 +1,57 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-btn-box lh30" >
+        <div class="layui-btn-group fl">
+            <a href="{:url('data')}" class="layui-btn layui-btn-primary "><i class="layui-icon">&#xe620;</i>{:lang('return')}</a>
+            <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+        </div>
+        <div class="page-filter fr" >
+
+        </div>
+    </div>
+
+    <form class="layui-form " method="post" id="pageListForm">
+    <table class="layui-table mt10">
+        <thead>
+        <tr>
+            <th><input type="checkbox" lay-skin="primary" lay-filter="allChoose">{:lang('file_name')}</th>
+            <th width="200">{:lang('file_size')}</th>
+            <th width="200">{:lang('file_time')}</th>
+        </tr>
+        </thead>
+
+        {if condition="$ischild eq 1"}
+        <tr><td colspan="3"><a href="{:url('annex/file',['path'=>$uppath])}">...{:lang('return_parent_dir')}</a></td></tr>
+        {/if}
+
+            {volist name="files" id="vo"}
+            <tr>
+                {if condition="$vo.isfile eq 1"}
+                <th><input type="checkbox" name="ids[]" value=".{$vo.path}" class="layui-checkbox checkbox-ids" lay-skin="primary"> <a href="{$vo.path}" target="_blank">{$vo.name}</a></th>
+                <td>{$vo.size}</td>
+                <td>{$vo.time|mac_day='color'}</td>
+                {else}
+                <th><a href="{:url('annex/file',['path'=>$vo.path])}">{$vo.name}</a></th>
+                <td></td>
+                <td></td>
+                {/if}
+            </tr>
+            {/volist}
+        </tbody>
+        <tfoot>
+            <tr><td colspan="3">{:lang('sum')}<b class="red">{$num_path}</b>{:lang('dir')},<b class="red">{$num_file}</b>{:lang('file')},{:lang('occupies')}<b class="red">{$sum_size}</b>{:lang('space')}</td></tr>
+        </tfoot>
+    </table>
+    </form>
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+<script type="text/javascript">
+
+    layui.use(['element', 'layer'], function() {
+
+
+    });
+</script>
+</body>
+</html>

+ 97 - 0
application/admin/view_new/annex/index.html

@@ -0,0 +1,97 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box">
+        {if condition="$param.select neq 1"}
+        <div class=" mb10">
+            <form class="layui-form " method="post" action="{:url('data')}">
+                <input type="hidden" value="{$param.select|mac_filter_xss}" name="select">
+                <input type="hidden" value="{$param.input|mac_filter_xss}" name="input">
+                <div class="layui-input-inline w150">
+                    <select name="type">
+                        <option value="">{:lang('select_type')}</option>
+                        <option value="image" {if condition="$param['type'] eq 'image'"}selected {/if}>image</option>
+                        <option value="media" {if condition="$param['type'] eq 'media'"}selected {/if}>media</option>
+                        <option value="file" {if condition="$param['type'] eq 'file'"}selected {/if}>file</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="order">
+                        <option value="">{:lang('select_sort')}</option>
+                        <option value="annex_time" {if condition="$param['order'] eq 'annex_time'"}selected{/if}>{:lang('update_time')}</option>
+                        <option value="annex_id" {if condition="$param['order'] eq 'annex_id'"}selected{/if}>{:lang('id')}</option>
+                        <option value="annex_hits" {if condition="$param['order'] eq 'annex_size'"}selected{/if}>{:lang('file_size')}</option>
+                    </select>
+                </div>
+
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_filter_xss}">
+                </div>
+                <button class="layui-btn mgl-20 j-search" >{:lang('btn_search')}</button>
+            </form>
+        </div>
+        {/if}
+
+        <div class="flex gap-5 overflow-x-auto overflow-y-hidden">
+            <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+            <a href="{:url('file')}" class="layui-btn layui-btn-primary "><i class="layui-icon">&#xe620;</i>{:lang('admin/annex/dir_model')}</a>
+            <a class="layui-btn layui-btn-primary j-iframe" data-href="{:url('annex/check')}" href="javascript:;" title="{:lang('admin/annex/check')}"><i class="layui-icon">&#xe620;</i>{:lang('admin/annex/check')}</a>
+            <a href="{:url('init')}" class="layui-btn layui-btn-primary "><i class="layui-icon">&#xe620;</i>{:lang('admin/annex/init_data')}</a>
+        </div>
+    </div>
+
+    <form class="layui-form " method="post" id="pageListForm">
+        <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="50">{:lang('id')}</th>
+                <th width="150">{:lang('file_size')}</th>
+                <th width="150">{:lang('type')}</th>
+                <th width="150">{:lang('update_time')}</th>
+                <th >{:lang('file_name')}</th>
+            </tr>
+            </thead>
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.annex_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.annex_id}</td>
+                <td>{:round($vo['annex_size']/1024, 2)}K</td>
+                <td>{$vo.annex_type|htmlspecialchars}</td>
+                <td>{$vo.annex_time|mac_day='color'}</td>
+                <td><a target="_blank" class="layui-badge-rim " href="{php}echo MAC_PATH;{/php}{$vo.annex_file}">{$vo.annex_file}</a></td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+        <div id="pages" class="center"></div>
+    </form>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    var curUrl="{:url('annex/data',$param)}";
+    layui.use(['laypage', 'layer','form'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer,
+                form = layui.form;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+
+
+    });
+</script>
+</body>
+</html>

+ 172 - 0
application/admin/view_new/annex/info.html

@@ -0,0 +1,172 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<script type="text/javascript" src="__STATIC__/js/jquery.jscolor.js"></script>
+{include file="../../../application/admin/view_new/public/editor" flag="actor_editor"/}
+<div class="page-container p10">
+    <div class="showpic" style="display:none;"><img class="showpic_img" width="120" height="160" referrerPolicy="no-referrer"></div>
+    
+    <form class="layui-form layui-form-pane" method="post" action="">
+        <input type="hidden" name="actor_id" value="{$info.actor_id}">
+
+        <div class="layui-tab">
+            <ul class="layui-tab-title ">
+                <li class="layui-this">{:lang('base_info')}</a></li>
+
+            </ul>
+            <div class="layui-tab-content">
+
+                <div class="layui-tab-item layui-show">
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('file_name')}:</label>
+                    <div class="layui-input-inline w500">
+                        <input type="text" class="layui-input" value="{$info.annex_file}" readonly="readonly">
+                    </div>
+                </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('file_size')}:</label>
+                        <div class="layui-input-inline w500">
+                            <input type="text" class="layui-input" value="{$info.annex_size}" readonly="readonly">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('type')}:</label>
+                        <div class="layui-input-inline w500">
+                            <input type="text" class="layui-input" value="{$info.annex_type}" readonly="readonly">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('time')}:</label>
+                        <div class="layui-input-inline w500">
+                            <input type="text" class="layui-input" value="{$info.annex_time|mac_day}" readonly="readonly">
+                        </div>
+                    </div>
+                    
+        </div>
+
+            </div>
+        </div>
+
+
+    </form>
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+
+    layui.use(['form','upload', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery
+                , upload = layui.upload;;
+
+        // 验证
+        form.verify({
+            actor_name: function (value) {
+                if (value == "") {
+                    return "{:lang('name_empty')}";
+                }
+            }
+        });
+
+        $(document).on("click", ".extend", function(){
+            $id = $(this).attr('data-id');
+            if($id == 'actor_class'||$id == 'actor_keywords'){
+                $val = $("input[id='"+$id+"']").val();
+                if($val!=''){
+                    $val = $val+',';
+                }
+                if($val.indexOf($(this).text())>-1){
+                    return;
+                }
+                $("input[id='"+$id+"']").val($val+$(this).text());
+            }else{
+                $("input[id='"+$id+"']").val($(this).text());
+            }
+        });
+
+        form.on('select(type_id)', function(data){
+            getExtend(data.value);
+        });
+
+        upload.render({
+            elem: '.layui-upload'
+            ,url: "{:url('upload/upload')}?flag=actor"
+            ,method: 'post'
+            ,before: function(input) {
+                layer.msg("{:lang('upload_ing')}", {time:3000000});
+            },done: function(res, index, upload) {
+                var obj = this.item;
+                if (res.code == 0) {
+                    layer.msg(res.msg);
+                    return false;
+                }
+                layer.closeAll();
+                var input = $(obj).parent().parent().find('.upload-input');
+                if ($(obj).attr('lay-type') == 'image') {
+                    input.siblings('img').attr('src', res.data.file).show();
+                }
+                input.val(res.data.file);
+
+                if(res.data.thumb_class !=''){
+                    $('.'+ res.data.thumb_class).val(res.data.thumb[0].file);
+                }
+            }
+        });
+
+        $('.upload-input').hover(function (e){
+            var e = window.event || e;
+            var imgsrc = $(this).val();
+            if(imgsrc.trim()==""){ return; }
+            var left = e.clientX+document.body.scrollLeft+20;
+            var top = e.clientY+document.body.scrollTop+20;
+            $(".showpic").css({left:left,top:top,display:""});
+            if(imgsrc.indexOf('://')<0){ imgsrc = ROOT_PATH + '/' + imgsrc;	} else{ imgsrc = imgsrc.replace('mac:','http:'); }
+            $(".showpic_img").attr("src", imgsrc);
+        },function (e){
+            $(".showpic").css("display","none");
+        });
+
+        $("#btn_rnd").click(function(){
+            $("#actor_hits").val( rndNum(5000,9999) );
+            $("#actor_hits_month").val( rndNum(1000,4999) );
+            $("#actor_hits_week").val( rndNum(300,999) );
+            $("#actor_hits_day").val( rndNum(1,299) );
+            $("#actor_up").val( rndNum(1,999) );
+            $("#actor_down").val( rndNum(1,999) );
+            $("#actor_score").val( rndNum(10) );
+            $("#actor_score_all").val( rndNum(1000) );
+            $("#actor_score_num").val( rndNum(100) );
+        });
+
+        var ue = editor_getEditor('actor_content');
+    });
+
+    function getExtend(id){
+        $.post("{:url('type/extend')}", {id:id}, function(res) {
+
+            if (res.code == 1) {
+                $.each(res.data, function(key, value){
+                    $('.actor_'+key+"_label").html('');
+                    if(value != ''){
+                        $.each(value, function(key2, value2){
+                            $(".actor_"+key+"_label").append('<a class="layui-btn layui-btn-xs extend" href="javascript:;" data-id="actor_'+key+'">'+value2+'</a>');
+                        });
+                    }
+                });
+            }
+        });
+    }
+
+    {if condition="$info.actor_id gt 0"}
+    setTimeout(function () {
+        getExtend('{$info.type_id}')
+    },1000);
+    {/if}
+
+</script>
+
+</body>
+</html>

+ 35 - 0
application/admin/view_new/annex/init.html

@@ -0,0 +1,35 @@
+{include file="../../../application/admin/view_new/public/head" /}
+
+<div class="page-container">
+    <form class="layui-form layui-form-pane" method="get" action="">
+        <input name="ck" value="1" type="hidden">
+        <div class="layui-tab">
+            <ul class="layui-tab-title">
+                <li class="layui-this">{:lang('admin/annex/init_data')}</li>
+            </ul>
+            <div class="layui-tab-content">
+                <div class="layui-tab-item layui-show">
+
+                    <div class="layui-input-block" >
+                        <blockquote class="layui-elem-quote layui-quote-nm">
+                            {:lang('admin/annex/init_tip')}
+                        </blockquote>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+                <button type="submit" class="layui-btn" >{:lang('admin/database/exec')}</button>
+            </div>
+        </div>
+    </form>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+<script type="text/javascript">
+
+</script>
+
+</body>
+</html>

+ 217 - 0
application/admin/view_new/art/batch.html

@@ -0,0 +1,217 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<style>
+    .layui-form-label {
+        width: fit-content;
+    }
+
+    .layui-form-item .layui-form-checkbox[lay-skin=primary] {
+        margin-top: 0;
+    }
+</style>
+<div class="page-container p10">
+
+    <form class="layui-form" method="post" action="">
+
+        <div class="my-toolbar-box">
+
+            <div class="space-y-2">
+
+                <div class="layui-input-inline w150">
+                    <select name="type">
+                        <option value="">{:lang('select_type')}</option>
+                        {volist name="type_tree" id="vo"}
+                        {if condition="$vo.type_mid eq 2"}
+                        <option value="{$vo.type_id}" {if condition="$param['type'] eq $vo.type_id" }selected {/if}>
+                            {$vo.type_name}</option>
+                        {volist name="vo.child" id="ch"}
+                        <option value="{$ch.type_id}" {if condition="$param['type'] eq $ch.type_id" }selected {/if}>
+                            &nbsp;&nbsp;&nbsp;&nbsp;├&nbsp;{$ch.type_name}</option>
+                        {/volist}
+                        {/if}
+                        {/volist}
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="status">
+                        <option value="">{:lang('select_status')}</option>
+                        <option value="0" {if condition="$param['status'] eq '0'" }selected {/if}>
+                            {:lang('reviewed_not')}</option>
+                        <option value="1" {if condition="$param['status'] eq '1'" }selected {/if}>{:lang('reviewed')}
+                        </option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="level">
+                        <option value="">{:lang('select_level')}</option>
+                        <option value="9" {if condition="$param['level'] eq '9'" }selected {/if}>
+                            {:lang('level')}9-{:lang('slide')}</option>
+                        <option value="1" {if condition="$param['level'] eq '1'" }selected {/if}>{:lang('level')}1
+                        </option>
+                        <option value="2" {if condition="$param['level'] eq '2'" }selected {/if}>{:lang('level')}2
+                        </option>
+                        <option value="3" {if condition="$param['level'] eq '3'" }selected {/if}>{:lang('level')}3
+                        </option>
+                        <option value="4" {if condition="$param['level'] eq '4'" }selected {/if}>{:lang('level')}4
+                        </option>
+                        <option value="5" {if condition="$param['level'] eq '5'" }selected {/if}>{:lang('level')}5
+                        </option>
+                        <option value="6" {if condition="$param['level'] eq '6'" }selected {/if}>{:lang('level')}6
+                        </option>
+                        <option value="7" {if condition="$param['level'] eq '7'" }selected {/if}>{:lang('level')}7
+                        </option>
+                        <option value="8" {if condition="$param['level'] eq '8'" }selected {/if}>{:lang('level')}8
+                        </option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="lock">
+                        <option value="">{:lang('select_lock')}</option>
+                        <option value="0" {if condition="$param['lock'] eq '0'" }selected {/if}>{:lang('unlock')}
+                        </option>
+                        <option value="1" {if condition="$param['lock'] eq '1'" }selected {/if}>{:lang('lock')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="pic">
+                        <option value="">{:lang('select_pic')}</option>
+                        <option value="1" {if condition="$param['pic'] eq '1'" }selected{/if}>{:lang('pic_empty')}
+                        </option>
+                        <option value="2" {if condition="$param['pic'] eq '2'" }selected{/if}>{:lang('pic_remote')}
+                        </option>
+                        <option value="3" {if condition="$param['pic'] eq '3'" }selected{/if}>{:lang('pic_sync_err')}
+                        </option>
+                    </select>
+                </div>
+
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd"
+                        value="{$param['wd']|mac_filter_xss}">
+                </div>
+
+            </div>
+
+        </div>
+
+        <fieldset class="layui-elem-field">
+            <legend>{:lang('del_multi')}</legend>
+            <div class="layui-field-box">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-form-label">
+                            <input type="checkbox" lay-skin="primary" value="1" name="ck_del"
+                                title="{:lang('del_data')}" />
+                        </di>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <button type="button" class="layui-btn btn_submit">{:lang('del_multi')}</button>
+                </div>
+            </div>
+        </fieldset>
+
+        <fieldset class="layui-elem-field">
+            <legend>{:lang('multi_set')}</legend>
+            <div class="layui-field-box">
+
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-form-label">
+                            <input lay-skin="primary" type="checkbox" value="1" name="ck_level"
+                                title="{:lang('level')}" />
+                        </div>
+                        <div class="layui-input-inline" style="width: 100px;">
+                            <select name="val_level">
+                                <option value="">{:lang('select_level')}</option>
+                                <option value="9">{:lang('level')}9-{:lang('slide')}</option>
+                                <option value="1">{:lang('level')}1</option>
+                                <option value="2">{:lang('level')}2</option>
+                                <option value="3">{:lang('level')}3</option>
+                                <option value="4">{:lang('level')}4</option>
+                                <option value="5">{:lang('level')}5</option>
+                                <option value="6">{:lang('level')}6</option>
+                                <option value="7">{:lang('level')}7</option>
+                                <option value="8">{:lang('level')}8</option>
+                            </select>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-form-label">
+                            <input type="checkbox" lay-skin="primary" value="1" name="ck_lock"
+                                title="{:lang('lock')}" />
+                        </div>
+                        <div class="layui-input-inline" style="width: 100px;">
+                            <select name="val_lock">
+                                <option value="">{:lang('select_opt')}</option>
+                                <option value="0">{:lang('unlock')}</option>
+                                <option value="1">{:lang('lock')}</option>
+                            </select>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-form-label">
+                            <input type="checkbox" lay-skin="primary" value="1" name="ck_status"
+                                title="{:lang('status')}" />
+                        </div>
+                        <div class="layui-input-inline" style="width: 100px;">
+                            <select name="val_status">
+                                <option value="">{:lang('select_status')}</option>
+                                <option value="0">{:lang('reviewed')}</option>
+                                <option value="1">{:lang('reviewed')}</option>
+                            </select>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-form-label">
+                            <input type="checkbox" lay-skin="primary" value="1" name="ck_hits"
+                                title="{:lang('hits')}" />
+                        </div>
+                        <div class="layui-input-inline" style="width: 100px;">
+                            <input type="text" name="val_hits_min" required placeholder="{:lang('min_val')}"
+                                autocomplete="off" class="layui-input">
+                        </div>
+                        <div class="layui-input-inline" style="width: 100px;">
+                            <input type="text" name="val_hits_max" required placeholder="{:lang('max_val')}"
+                                autocomplete="off" class="layui-input">
+                        </div>
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <label class="layui-form-label">{:lang('page_limit')}</label>
+                        <div class="layui-input-inline" style="width: 100px;">
+                            <input type="text" name="limit" required placeholder="" autocomplete="off" value="100"
+                                class="layui-input">
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <button type="submit" class="layui-btn btn_submit">{:lang('start_exec')}</button>
+                </div>
+
+            </div>
+        </fieldset>
+    </form>
+</div>
+
+<script type="text/javascript">
+    layui.use(['form'], function () {
+
+    });
+
+    $('.btn_submit').click(function () {
+        $('form').submit();
+    })
+</script>
+</body>
+
+</html>

+ 169 - 0
application/admin/view_new/art/index.html

@@ -0,0 +1,169 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box">
+
+        <div class=" mb10">
+            <form class="layui-form " method="post" action="{:url('data')}">
+                <input type="hidden" value="{$param.select|mac_filter_xss}" name="select">
+                <input type="hidden" value="{$param.input|mac_filter_xss}" name="input">
+                <div class="layui-input-inline w150">
+                    <select name="type">
+                        <option value="">{:lang('select_type')}</option>
+                        {volist name="type_tree" id="vo"}
+                        {if condition="$vo.type_mid eq 2"}
+                        <option value="{$vo.type_id}" {if condition="$param['type'] eq $vo.type_id"}selected {/if}>{$vo.type_name}</option>
+                        {volist name="vo.child" id="ch"}
+                        <option value="{$ch.type_id}" {if condition="$param['type'] eq $ch.type_id"}selected {/if}>&nbsp;&nbsp;&nbsp;&nbsp;├&nbsp;{$ch.type_name}</option>
+                        {/volist}
+                        {/if}
+                        {/volist}
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="status">
+                        <option value="">{:lang('select_status')}</option>
+                        <option value="0" {if condition="$param['status'] eq '0'"}selected {/if}>{:lang('reviewed_not')}</option>
+                        <option value="1" {if condition="$param['status'] eq '1'"}selected {/if}>{:lang('reviewed')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="level">
+                        <option value="">{:lang('select_level')}</option>
+                        <option value="9" {if condition="$param['level'] eq '9'"}selected {/if}>{:lang('level')}9-{:lang('slide')}</option>
+                        <option value="1" {if condition="$param['level'] eq '1'"}selected {/if}>{:lang('level')}1</option>
+                        <option value="2" {if condition="$param['level'] eq '2'"}selected {/if}>{:lang('level')}2</option>
+                        <option value="3" {if condition="$param['level'] eq '3'"}selected {/if}>{:lang('level')}3</option>
+                        <option value="4" {if condition="$param['level'] eq '4'"}selected {/if}>{:lang('level')}4</option>
+                        <option value="5" {if condition="$param['level'] eq '5'"}selected {/if}>{:lang('level')}5</option>
+                        <option value="6" {if condition="$param['level'] eq '6'"}selected {/if}>{:lang('level')}6</option>
+                        <option value="7" {if condition="$param['level'] eq '7'"}selected {/if}>{:lang('level')}7</option>
+                        <option value="8" {if condition="$param['level'] eq '8'"}selected {/if}>{:lang('level')}8</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="lock">
+                        <option value="">{:lang('select_lock')}</option>
+                        <option value="0" {if condition="$param['lock'] eq '0'"}selected {/if}>{:lang('unlock')}</option>
+                        <option value="1" {if condition="$param['lock'] eq '1'"}selected {/if}>{:lang('lock')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="pic">
+                        <option value="">{:lang('select_pic')}</option>
+                        <option value="1" {if condition="$param['pic'] eq '1'"}selected{/if}>{:lang('pic_empty')}</option>
+                        <option value="2" {if condition="$param['pic'] eq '2'"}selected{/if}>{:lang('pic_remote')}</option>
+                        <option value="3" {if condition="$param['pic'] eq '3'"}selected{/if}>{:lang('pic_sync_err')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="order">
+                        <option value="">{:lang('select_sort')}</option>
+                        <option value="art_time" {if condition="$param['order'] eq 'art_time'"}selected{/if}>{:lang('update_time')}</option>
+                        <option value="art_id" {if condition="$param['order'] eq 'art_id'"}selected{/if}>{:lang('id')}</option>
+                        <option value="art_hits" {if condition="$param['order'] eq 'art_hits'"}selected{/if}>{:lang('hits')}</option>
+                        <option value="art_hits_month" {if condition="$param['order'] eq 'art_hits_month'"}selected{/if}>{:lang('hits_month')}</option>
+                        <option value="art_hits_week" {if condition="$param['order'] eq 'art_hits_week'"}selected{/if}>{:lang('hits_week')}</option>
+                        <option value="art_hits_day" {if condition="$param['order'] eq 'art_hits_day'"}selected{/if}>{:lang('hits_day')}</option>
+                    </select>
+                </div>
+
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_restore_htmlfilter}">
+                </div>
+                <button class="layui-btn mgl-20 j-search" >{:lang('btn_search')}</button>
+            </form>
+        </div>
+
+        <div class="flex gap-5 overflow-x-auto overflow-y-hidden">
+            <a data-href="{:url('info')}" data-full="1" class="layui-btn layui-btn-primary j-iframe"><i class="layui-icon">&#xe654;</i>{:lang('add')}</a>
+            <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+            <a data-href="{:url('index/select')}?tab=art&col=type_id&tpl=select_type&url=art/field" data-width="270" data-height="100" data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('type')}</a>
+            <a data-href="{:url('index/select')}?tab=art&col=art_level&tpl=select_level&url=art/field" data-width="270" data-height="100" data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('level')}</a>
+            <a data-href="{:url('index/select')}?tab=art&col=art_hits&tpl=select_hits&url=art/field" data-width="470" data-height="100" data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('hits')}</a>
+            <a data-href="{:url('index/select')}?tab=art&col=art_status&tpl=select_status&url=art/field" data-width="470" data-height="100" data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('status')}</a>
+            <a data-href="{:url('index/select')}?tab=art&col=art_lock&tpl=select_lock&url=art/field" data-width="470" data-height="100" data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('lock')}</a>
+            <a class="layui-btn layui-btn-primary j-iframe" data-href="{:url('images/opt?tab=art')}" href="javascript:;" title="{:lang('pic_sync')}"><i class="layui-icon">&#xe620;</i>{:lang('pic_sync')}</a>
+            <a class="layui-btn layui-btn-primary j-iframe" data-checkbox="true" data-href="{:url('make/make?ac=info&tab=art')}" href="javascript:;" title="{:lang('make_page')}"><i class="layui-icon">&#xe620;</i>{:lang('make_page')}</a>
+            {if condition="$param.select eq 1"}
+            <a data-href="" onclick="parent.onSelectResult('{$param.input|mac_filter_xss}', $('.checkbox-ids:checked'))" class="layui-btn layui-btn-normal">{:lang('select_return')}</a>
+            {/if}
+            {if condition="$param['repeat'] neq ''"}
+            <a data-href="{:url('del')}?repeat=1&retain=min" data-checkbox="no" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del_auto_keep_min')}</a>
+            <a data-href="{:url('del')}?repeat=1&retain=max" data-checkbox="no" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del_auto_keep_max')}</a>
+            {/if}
+        </div>
+
+    </div>
+
+
+    <form class="layui-form " method="post" id="pageListForm">
+        <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="60">{:lang('id')}</th>
+                <th >{:lang('name')}</th>
+                <th width="50">{:lang('hits')}</th>
+                <th width="60">{:lang('score')}</th>
+                <th width="50">{:lang('level')}</th>
+                <th width="50">{:lang('browse')}</th>
+                <th width="80">{:lang('author')}</th>
+                <th width="100">{:lang('update_time')}</th>
+                <th width="140">{:lang('opt')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.art_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.art_id}</td>
+                <td>[{$vo.type.type_name|mac_filter_xss|mac_restore_htmlfilter}] <a target="_blank" class="layui-badge-rim " href="{:mac_url_art_detail($vo)}">{$vo.art_name|mac_filter_xss|mac_restore_htmlfilter}</a> {if condition="$vo.art_status eq 0"} <span class="layui-badge">{:lang('reviewed_not')}</span>{/if} {if condition="$vo.art_lock eq 1"} <span class="layui-badge">{:lang('lock')}</span>{/if}</td>
+                <td>{$vo.art_hits}</td>
+                <td>{$vo.art_score}</td>
+                <td><a data-href="{:url('index/select')}?tab=art&col=art_level&tpl=select_level&url=art/field&ids={$vo.art_id}" data-width="270" data-height="100" class=" j-select"><span class="layui-badge layui-bg-orange">{$vo.art_level}</span></a></td>
+                <td>{if condition="$vo.ismake eq 1"}<a target="_blank" class="layui-badge layui-bg-green " href="{:mac_url_art_detail($vo)}">Y</a>{else/}<a class="layui-badge" href="{:url('make/make?ac=info&tab=art')}?ids={$vo.art_id}&ref=1">N</a>{/if}</td>
+                <td>{$vo.art_author|htmlspecialchars}</td>
+                <td>{$vo.art_time|mac_day='color'}</td>
+                <td>
+                    <a class="layui-badge-rim j-iframe" data-full="1" data-href="{:url('info?id='.$vo['art_id'])}" href="javascript:;" title="{:lang('edit')}">{:lang('edit')}</a>
+                    <a class="layui-badge-rim j-tr-del" data-href="{:url('del?ids='.$vo['art_id'])}" href="javascript:;" title="{:lang('del')}">{:lang('del')}</a>
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+        <div id="pages" class="center"></div>
+    </form>
+</div>
+
+
+
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    var curUrl="{:url('art/data',$param)}";
+    layui.use(['laypage', 'layer','form'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer,
+                form = layui.form;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+
+
+    });
+</script>
+</body>
+</html>

+ 559 - 0
application/admin/view_new/art/info.html

@@ -0,0 +1,559 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<script type="text/javascript" src="__STATIC__/js/jquery.jscolor.js"></script>
+{include file="../../../application/admin/view_new/public/editor" flag="art_editor"/}
+
+<div class="page-container p10">
+    <div class="showpic" style="display:none;"><img class="showpic_img" width="120" height="160" referrerPolicy="no-referrer"></div>
+    
+    <form class="layui-form layui-form-pane" method="post" action="">
+        <input type="hidden" name="art_id" value="{$info.art_id}">
+
+        <div class="layui-tab">
+            <ul class="layui-tab-title ">
+                <li class="layui-this">{:lang('base_info')}</a></li>
+                <li>{:lang('other_info')}</li>
+            </ul>
+            <div class="layui-tab-content">
+
+                <div class="layui-tab-item layui-show" id="movementTable">
+                    
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('param')}:</label>
+                    <div class="layui-input-inline w150">
+                            <select name="type_id" lay-filter="type_id">
+                                <option value="">{:lang('select_type')}</option>
+                                {volist name="type_tree" id="vo"}
+                                    {if condition="$vo.type_mid eq 2"}
+                                    <option value="{$vo.type_id}" {if condition="$info.type_id eq $vo.type_id"}selected{/if}>{$vo.type_name}</option>
+                                    {volist name="$vo.child" id="ch"}
+                                    <option value="{$ch.type_id}" {if condition="$info.type_id eq $ch.type_id"}selected{/if}>&nbsp;|&nbsp;&nbsp;&nbsp;|—{$ch.type_name}</option>
+                                    {/volist}
+                                    {/if}
+                                {/volist}
+                            </select>
+                    </div>
+                    <div class="layui-input-inline w150">
+                            <select name="art_level">
+                                <option value="0">{:lang('select_level')}</option>
+                                <option value="9" {if condition="$info.art_level eq 9"}selected{/if}>{:lang('level')}9-{:lang('slide')}</option>
+                                <option value="1" {if condition="$info.art_level eq 1"}selected{/if}>{:lang('level')}1</option>
+                                <option value="2" {if condition="$info.art_level eq 2"}selected{/if}>{:lang('level')}2</option>
+                                <option value="3" {if condition="$info.art_level eq 3"}selected{/if}>{:lang('level')}3</option>
+                                <option value="4" {if condition="$info.art_level eq 4"}selected{/if}>{:lang('level')}4</option>
+                                <option value="5" {if condition="$info.art_level eq 5"}selected{/if}>{:lang('level')}5</option>
+                                <option value="6" {if condition="$info.art_level eq 6"}selected{/if}>{:lang('level')}6</option>
+                                <option value="7" {if condition="$info.art_level eq 7"}selected{/if}>{:lang('level')}7</option>
+                                <option value="8" {if condition="$info.art_level eq 8"}selected{/if}>{:lang('level')}8</option>
+
+                            </select>
+                    </div>
+                    <div class="layui-input-inline w150">
+                            <select name="art_status">
+                                <option value="1" >{:lang('reviewed')}</option>
+                                <option value="0" {if condition="$info.art_status eq '0'"}selected{/if}>{:lang('reviewed_not')}</option>
+                            </select>
+                    </div>
+                    <div class="layui-input-inline w150">
+                        <select name="art_lock">
+                            <option value="0">{:lang('unlock')}</option>
+                            <option value="1" {if condition="$info.art_lock eq 1"}selected{/if}>{:lang('lock')}</option>
+                        </select>
+                    </div>
+
+                    <div class="layui-input-inline">
+                        <input type="checkbox" name="uptime" title="{:lang('update_time')}" value="1" checked class="layui-checkbox checkbox-ids" lay-skin="primary">
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('name')}:</label>
+                    <div class="layui-input-inline w500">
+                        <input type="text" class="layui-input" value="{$info.art_name}" placeholder="" name="art_name">
+                    </div>
+                    <label class="layui-form-label">{:lang('sub')}:</label>
+                    <div class="layui-input-inline ">
+                        <input type="text" class="layui-input" value="{$info.art_sub}" placeholder="" name="art_sub">
+                    </div>
+
+                </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('en')}:</label>
+                    <div class="layui-input-inline w500">
+                        <input type="text" class="layui-input" value="{$info.art_en}" placeholder="" name="art_en">
+                    </div>
+                    <label class="layui-form-label">{:lang('letter')}:</label>
+                    <div class="layui-input-inline w70">
+                        <input type="text" class="layui-input" value="{$info.art_letter}" placeholder="" name="art_letter">
+                    </div>
+                    <label class="layui-form-label">{:lang('color')}:</label>
+                    <div class="layui-input-inline w70">
+                        <input type="text" class="layui-input color" value="{$info.art_color}" placeholder="" name="art_color">
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">TAG:</label>
+                    <div class="layui-input-inline w500">
+                        <input type="text" class="layui-input" value="{$info.art_tag}" placeholder="" name="art_tag">
+                    </div>
+                    <div class="layui-input-inline w120">
+                        <input type="checkbox" name="uptag" title="{:lang('auto_make')}" value="1" class="layui-checkbox checkbox-ids" lay-skin="primary">
+                    </div>
+                </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('remarks')}:</label>
+                        <div class="layui-input-inline w500">
+                            <input type="text" class="layui-input" value="{$info.art_remarks}" placeholder="" name="art_remarks">
+                        </div>
+                    </div>
+
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('rel_vod')}:</label>
+                        <div class="layui-input-inline w500">
+                            <input type="text" class="layui-input" value="{$info.art_rel_vod}" placeholder="{:lang('admin/vod/rel_vod_tip')}" name="art_rel_vod">
+                        </div>
+                        <div class="layui-input-inline ">
+                            <a class="layui-btn j-iframe" data-href="{:url('vod/data')}?select=1&input=art_rel_vod" href="javascript:;" title="{:lang('search_data')}">{:lang('search_data')}</a>
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('rel_art')}:</label>
+                        <div class="layui-input-inline w500">
+                            <input type="text" class="layui-input" value="{$info.art_rel_art}" placeholder="{:lang('admin/vod/rel_art_tip')}" name="art_rel_art">
+                        </div>
+                        <div class="layui-input-inline ">
+                            <a class="layui-btn j-iframe" data-href="{:url('art/data')}?select=1&input=art_rel_art" href="javascript:;" title="{:lang('search_data')}">{:lang('search_data')}</a>
+                        </div>
+                    </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('class')}:</label>
+                        <div class="layui-input-inline w500">
+                            <input type="text" class="layui-input" value="{$info.art_class}" placeholder="" id="art_class" name="art_class">
+                        </div>
+                        <div class="layui-input-inline w500 art_class_label">
+
+                        </div>
+                    </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('pic')}:</label>
+                    <div class="layui-input-inline w500 upload">
+                        <input type="text" class="layui-input upload-input" style="max-width:100%;" value="{$info.art_pic}" placeholder="" id="art_pic" name="art_pic">
+                    </div>
+                    <div class="layui-input-inline ">
+                        <button type="button" class="layui-btn layui-upload" lay-data="{data:{thumb:1,thumb_class:'upload-thumb'}}" id="upload1">{:lang('upload_pic')}</button>
+                    </div>
+                </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('pic_thumb')}:</label>
+                        <div class="layui-input-inline w500 upload">
+                            <input type="text" class="layui-input upload-input" style="max-width:100%;" value="{$info.art_pic_thumb}" placeholder="" id="art_pic_thumb" name="art_pic_thumb">
+                        </div>
+                        <div class="layui-input-inline ">
+                            <button type="button" class="layui-btn layui-upload" lay-data="{data:{thumb:0,thumb_class:'upload-thumb'}}" id="upload2">{:lang('upload_pic')}</button>
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('pic_slide')}:</label>
+                        <div class="layui-input-inline w500 upload">
+                            <input type="text" class="layui-input upload-input" style="max-width:100%;" value="{$info.art_pic_slide}" placeholder="" id="art_pic_slide" name="art_pic_slide">
+                        </div>
+                        <div class="layui-input-inline ">
+                            <button type="button" class="layui-btn layui-upload" lay-data="{data:{thumb:0,thumb_class:'upload-thumb'}}" id="upload3">{:lang('upload_pic')}</button>
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label ">{:lang('pic_screenshot')}:</label>
+                        <div class="layui-input-inline w400 ">
+                            <div class="layui-btn-group">
+                                <button type="button" class="layui-btn screenshot"><i class="layui-icon layui-icon-upload"></i> {:lang('upload_pic')}</button>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <div class="layui-input-block">
+                            <textarea id="art_pic_screenshot" name="art_pic_screenshot" placeholder="{:lang('screenshot_tip')}" type="text/plain" style="width:100%;height:150px;">{$info.art_pic_screenshot|mac_str_correct=###,'#',chr(13)}</textarea>
+                            <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
+                                <legend>{:lang('screenshot_preview')}</legend>
+                            </fieldset>
+                            <div class="screenshot_list">
+                                {volist name="$info.art_pic_screenshot_list" id="vo"}
+                                <div data-src="{$vo['url']}"><a href="javascript:;" class="del_screenshot">{:lang('del')}</a>
+                                    <img src="{$vo['url']|mac_url_img}" alt="" class="layui-upload-img screenshot-img">
+                                </div>
+                                {/volist}
+                            </div>
+                        </div>
+                    </div>
+                <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('blurb')}:</label>
+                    <div class="layui-input-block">
+                        <textarea name="art_blurb" cols="" rows="3" class="layui-textarea"  placeholder="{:lang('blurb_auto_tip')}" style="height:40px;">{$info.art_blurb}</textarea>
+                    </div>
+                </div>
+
+                    <script>
+                        var ueArray=[];
+                        var content_arr_len = {$art_page_list|count};
+                    </script>
+
+                <div id="artlist" class="contents">
+                    {volist name="$art_page_list" id="vo"}
+                    <div class="layui-form-item" data-i="{$key}">
+                        <label class="layui-form-label">{:lang('page_content')}{$key}:</label>
+                        <div class="layui-input-inline w200"><input type="text" name="art_title[]" class="layui-input" value="{$vo.title}" placeholder="{:lang('page_title')}"></div>
+                        <div class="layui-input-inline w200"><input type="text" name="art_note[]" class="layui-input" value="{$vo.note}" placeholder="{:lang('page_note')}"></div>
+                        <div class="layui-input-inline w200"><a href="javascript:void(0)" class="j-editor-clear">{:lang('clear')}</a>&nbsp;<a href="javascript:void(0)" class="j-editor-remove">{:lang('del')}</a>&nbsp;<a href="javascript:void(0)" class="j-editor-up">上移</a>&nbsp;<a href="javascript:void(0)" class="j-editor-down">下移</a>&nbsp;<br></div>
+                        <div class="p10 m20"></div>
+                        <div class="layui-input-block"><textarea id="art_content{$key}" name="art_content[]" type="text/plain" style="width:99%;height:250px">{$vo.content|mac_url_content_img}</textarea></div>
+                        <script>ueArray[{$key}] = editor_getEditor('art_content{$key}');</script>
+                    </div>
+                    {/volist}
+                </div>
+
+
+                    <div class="layui-form-item">
+                        <label class=""><button class="layui-btn radius j-editor-add" type="button">{:lang('page_add')}</button></label>
+                        <div class="layui-input-block">
+
+                        </div>
+                    </div>
+                    
+                </div>
+
+                <div class="layui-tab-item" id="movementTable">
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">{:lang('up')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_up}" placeholder="" id="art_up" name="art_up">
+                            </div>
+                            <label class="layui-form-label">{:lang('hate')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_down}" placeholder="" id="art_down" name="art_down">
+                            </div>
+                            <button class="layui-btn" type="button" id="btn_rnd">{:lang('rnd_make')}</button>
+                        </div>
+
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">{:lang('hits')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_hits}" placeholder="" id="art_hits" name="art_hits">
+                            </div>
+                            <label class="layui-form-label">{:lang('hits_month')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_hits_month}" placeholder="" id="art_hits_month" name="art_hits_month" >
+                            </div>
+                        </div>
+
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">{:lang('hits_week')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_hits_week}" placeholder="" id="art_hits_week" name="art_hits_week">
+                            </div>
+                            <label class="layui-form-label">{:lang('hits_day')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input " value="{$info.art_hits_day}" placeholder="" id="art_hits_day" name="art_hits_day">
+                            </div>
+                        </div>
+
+
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">{:lang('score')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_score}" placeholder="" id="art_score" name="art_score">
+                            </div>
+                            <label class="layui-form-label">{:lang('score_all')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_score_all}" placeholder="" id="art_score_all" name="art_score_all">
+                            </div>
+                            <label class="layui-form-label">{:lang('score_num')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_score_num}" placeholder="" id="art_score_num" name="art_score_num">
+                            </div>
+                        </div>
+
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">{:lang('points_all')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_points}" placeholder="" name="art_points">
+                            </div>
+                            <label class="layui-form-label">{:lang('points_detail')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_points_detail}" placeholder="" name="art_points_detail">
+                            </div>
+                            <label class="layui-form-label">{:lang('tpl')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_tpl}" placeholder="" name="art_tpl">
+                            </div>
+                        </div>
+
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">{:lang('author')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_author}" placeholder="" name="art_author">
+                            </div>
+                            <label class="layui-form-label">{:lang('from')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_from}" placeholder="" name="art_from">
+                            </div>
+                            <label class="layui-form-label">{:lang('jumpurl')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_jumpurl}" placeholder="" name="art_jumpurl">
+                            </div>
+                        </div>
+
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">{:lang('access_pwd')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_pwd}" placeholder="{:lang('not_static_is_ok')}" name="art_pwd">
+                            </div>
+                            <label class="layui-form-label">{:lang('pwd_url')}:</label>
+                            <div class="layui-input-inline ">
+                                <input type="text" class="layui-input" value="{$info.art_pwd_url}" placeholder="" name="art_pwd_url">
+                            </div>
+
+                        </div>
+                 </div>
+
+            </div>
+        </div>
+
+                <div class="layui-form-item center">
+                    <div class="layui-input-block">
+                        <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit" data-child="">{:lang('btn_save')}</button>
+                        <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+                    </div>
+                </div>
+    </form>
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    var UPLOAD_IMG_KEY="{$GLOBALS['config']['upload']['img_key']}";UPLOAD_IMG_API="{$GLOBALS['config']['upload']['img_api']}";
+
+    layui.use(['form','upload', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery
+                , upload = layui.upload;;
+
+        // 验证
+        form.verify({
+            art_name: function (value) {
+                if (value == "") {
+                    return "{:lang('name_empty')}";
+                }
+            }
+        });
+
+        $(document).on("click", ".extend", function(){
+            $id = $(this).attr('data-id');
+            if($id == 'art_class'||$id == 'art_keywords'){
+                $val = $("input[id='"+$id+"']").val();
+                if($val!=''){
+                    $val = $val+',';
+                }
+                if($val.indexOf($(this).text())>-1){
+                    return;
+                }
+                $("input[id='"+$id+"']").val($val+$(this).text());
+            }else{
+                $("input[id='"+$id+"']").val($(this).text());
+            }
+        });
+
+
+        form.on('select(type_id)', function(data){
+            getExtend(data.value);
+        });
+
+        //多图片上传
+        upload.render({
+            elem: '.screenshot'
+            ,url: "{:url('upload/upload')}?flag=art_screenshot"
+            ,multiple: true
+            ,before: function(obj){
+                obj.preview(function(index, file, result){
+
+                });
+            }
+            ,done: function(res){
+                var val = res.data.file;
+                var input = $("#art_pic_screenshot")
+                var content = input.val();
+                if(content!=''){
+                    content += '\r\n';
+                }
+                content += val;
+                input.val(content);
+                $('.screenshot_list').append('<div data-src="'+val+'"><a href="javascript:;" class="del_screenshot">{:lang('del')}</a><img src="'+mac_url_img(val)+'" alt="" class="layui-upload-img screenshot-img"></div>');
+            }
+        });
+
+        //监听文本框
+        $('#art_pic_screenshot').keyup(function(e){
+            let html = ``;
+            var textArr = $(this).val().split(/[(\r\n)\r\n]+/);
+            textArr.forEach((item,index)=>{
+                if(!item){
+                    textArr.splice(index,1);
+                }else{
+                    if(item.indexOf('$')>-1){
+                        item = item.substring(item.indexOf('$')+1);
+                    }
+                    html += `<div data-src="${item}"><a href="javascript:;" class="del_screenshot">{:lang('del')}</a><img src="${mac_url_img(item)}"" alt="" class="layui-upload-img screenshot-img"></div>`;
+                }
+            });
+            $('.screenshot_list').html(html);
+        });
+
+        upload.render({
+            elem: '.layui-upload'
+            ,url: "{:url('upload/upload')}?flag=art"
+            ,method: 'post'
+            ,before: function(input) {
+                layer.msg("{:lang('upload_ing')}", {time:3000000});
+            },done: function(res, index, upload) {
+                var obj = this.item;
+                if (res.code == 0) {
+                    layer.msg(res.msg);
+                    return false;
+                }
+                layer.closeAll();
+                var input = $(obj).parent().parent().find('.upload-input');
+                if ($(obj).attr('lay-type') == 'image') {
+                    input.siblings('img').attr('src', res.data.file).show();
+                }
+                input.val(res.data.file);
+
+                if(res.data.thumb_class !=''){
+                    $('.'+ res.data.thumb_class).val(res.data.thumb[0].file);
+                }
+            }
+        });
+
+        $('.upload-input').hover(function (e){
+            var e = window.event || e;
+            var imgsrc = $(this).val();
+            if(imgsrc.trim()==""){ return; }
+            var left = e.clientX+document.body.scrollLeft+20;
+            var top = e.clientY+document.body.scrollTop+20;
+            $(".showpic").css({left:left,top:top,display:""});
+            if(imgsrc.indexOf('://')<0){ imgsrc = ROOT_PATH + '/' + imgsrc;	} else{ imgsrc = imgsrc.replace('mac:','http:'); }
+            $(".showpic_img").attr("src", imgsrc);
+        },function (e){
+            $(".showpic").css("display","none");
+        });
+
+
+        $("#btn_rnd").click(function(){
+            $("#art_hits").val( rndNum(5000,9999) );
+            $("#art_hits_month").val( rndNum(1000,4999) );
+            $("#art_hits_week").val( rndNum(300,999) );
+            $("#art_hits_day").val( rndNum(1,299) );
+            $("#art_up").val( rndNum(1,999) );
+            $("#art_down").val( rndNum(1,999) );
+            $("#art_score").val( rndNum(10) );
+            $("#art_score_all").val( rndNum(1000) );
+            $("#art_score_num").val( rndNum(100) );
+        });
+
+
+
+        $('.contents').on('click','.j-editor-clear',function(){
+            var datai = $(this).parent().parent().attr('data-i');
+            editor_setContent(ueArray[datai],'');
+        });
+        $('.contents').on('click','.j-editor-remove',function(){
+            var datai = $(this).parent().parent().attr('data-i');
+            $(this).parent().parent().remove();
+            delete ueArray[datai];
+        });
+        $('.contents').on('click','.j-editor-up',function(){
+            var current = $(this).parent().parent();
+            var current_index = current.index();
+            var current_i = current.attr('data-i');
+            var prev = current.prev();
+            var prev_i = prev.attr('data-i');
+            if(current_index>0){
+                var current_txt = editor_getContent(ueArray[current_i]);
+                var prev_txt = editor_getContent(ueArray[prev_i]);
+                editor_setContent(ueArray[current_i],prev_txt);
+                editor_setContent(ueArray[prev_i],current_txt);
+            }
+        });
+        $('.contents').on('click','.j-editor-down',function(){
+            var current = $(this).parent().parent();
+            var current_index = current.index();
+            var current_i = current.attr('data-i');
+            var next = current.next();
+            var next_i = next.attr('data-i');
+
+            if(next.length>0){
+                var current_txt = editor_getContent(ueArray[current_i]);
+                var prev_txt = editor_getContent(ueArray[next_i]);
+
+                editor_setContent(ueArray[current_i],prev_txt);
+                editor_setContent(ueArray[next_i],current_txt);
+            }
+        });
+
+        $('.j-editor-add').on('click',function(){
+            content_arr_len++;
+            var tpl='<div class="layui-form-item" data-i="'+content_arr_len+'"><label class="layui-form-label">{:lang('page_content')}'+(content_arr_len)+':</label><div class="layui-input-inline w200"><input type="text" name="art_title[]" class="layui-input" placeholder="{:lang('page_title')}"></div><div class="layui-input-inline w200"><input type="text" name="art_note[]" class="layui-input" placeholder="{:lang('页备注')}"></div><div class="layui-input-inline w200 p10"><a href="javascript:void(0)" class="j-editor-clear">{:lang('clear')}</a>&nbsp;<a href="javascript:void(0)" class="j-editor-remove">{:lang('del')}</a>&nbsp;<a href="javascript:void(0)" class="j-editor-up">上移</a>&nbsp;<a href="javascript:void(0)" class="j-editor-down">下移</a>&nbsp;<br></div><div class="p10 m20"></div><div class="layui-input-block"><textarea id="art_content'+(content_arr_len)+'" name="art_content[]" type="text/plain" style="width:99%;height:250px"></textarea></div></div>';
+            $(".contents").append(tpl);
+            ueArray[content_arr_len] = editor_getEditor( 'art_content'+content_arr_len );
+
+        });
+
+        $(document).on('click', '.del_screenshot', function() {
+            var src = $(this).parent().attr('data-src');
+            var input = $("#art_pic_screenshot")
+            var content = input.val();
+            console.log(content);
+            var snsArr = content.split(/[(\r\n)\r\n]+/);
+            snsArr.forEach((item,index)=>{
+                if(!item || item == src){
+                    snsArr.splice(index,1);//删除
+                }
+            });
+            $(this).parent().remove();
+            input.val(snsArr.join('\r\n'));//重新赋值
+            $.get("{:url('annex/del')}", {ids:src}, function(res){});
+        });
+        if(content_arr_len==0){
+            $('.j-editor-add').click();
+        }
+    });
+
+    function getExtend(id){
+        $.post("{:url('type/extend')}", {id:id}, function(res) {
+
+            if (res.code == 1) {
+                $.each(res.data, function(key, value){
+                    $('.art_'+key+"_label").html('');
+                    if(value != ''){
+                        $.each(value, function(key2, value2){
+                            $(".art_"+key+"_label").append('<a class="layui-btn layui-btn-xs extend" href="javascript:;" data-id="art_'+key+'">'+value2+'</a>');
+                        });
+                    }
+                });
+            }
+        });
+    }
+
+    {if condition="$info.art_id gt 0"}
+    setTimeout(function () {
+        getExtend('{$info.type_id}')
+    },1000);
+    {/if}
+    
+</script>
+
+</body>
+</html>

+ 160 - 0
application/admin/view_new/box/index.html

@@ -0,0 +1,160 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<style>
+    body{background:#f4f4f4}
+    .addon-state{line-height:21px;font-size:12px;background-color:#2c3e50;padding:10px;font-weight:700;color:#fff;border-radius:10px;margin-bottom:10px;margin-top:20px}
+    .addon-list{padding:10px;position:relative;margin-bottom:10px;border:1px solid #fff;border-radius:10px;background:#fff;line-height:20px;font-size:12px;display:block}
+    .addon-list a{color:#2366a8;font-size:12px}
+    .addon-list span{margin:0 6px;font-size:12px;color:#999}
+    .addon-list .addon-intro{color:#888;font-size:12px}
+    .addon-list .addon-title{font-weight:700;color:#555}
+    .addon-list img{background:#f4f4f4;display:block;position:absolute;left:10px;top:14px}
+    .addon-list .addon-bottom{line-height:22px;width:100%;text-indent:50px}
+</style>
+<div style="padding:20px">
+    <div><a target="_blank" href="http://maccmsbox.com/" class="layui-btn layui-btn-radius"><i class="layui-icon">&#xe857;</i>应用中心</a></div>
+    {notempty name="addonList.addonEnable"}<div class="addon-state">已启用的插件</div>{/notempty}
+    <url>
+        {volist name="addonList.addonEnable" id="vo"}
+        <li class="addon-list layui-row">
+            <img src="{$vo.image|mac_default='https://www.maccmsbox.com/uploads/20210906/Icon.png'}" width="40" height="40" align="left">
+            <div class="addon-bottom">
+                <p class="addon-title">{$vo.title}({$vo.name})<span>{$vo.version}</span></p>
+                <p class="addon-intro">{$vo.intro}</p>
+                <div class="layui-row">
+                    <div style="float:left">
+                        {if condition="$vo.state eq 1"}
+                        {if condition="$vo.config eq 0"}<a href="javascript:" class="j-iframe" data-name="{$vo.name}" data-href="{:url('addon/config')}?name={$vo.name}">设置</a><span>|</span>{/if}
+                        {$vo.a}
+                        <a target="_blank" href="{$vo.website}">查看</a>
+                        {/if}
+                    </div>
+                    <div style="float:right">
+                        {if condition="$vo.install eq 0"}
+                        <a href="javascript:" class="btn-install" data-name="{$vo.name}" data-action="install">安装</a>
+                        {else /}
+                        {if condition="$vo.state neq 1"}
+                        <a href="javascript:" class="btn-enable" data-name="{$vo.name}" data-action="enable">启用</a><span>|</span>
+                        {else /}
+                        <a href="javascript:" class="btn-disable" data-name="{$vo.name}" data-action="disable">卸载</a><span>|</span>
+                        {/if}
+                        <a href="javascript:" style="color:red" class="btn-uninstall" data-name="{$vo.name}" data-action="uninstall">删除插件</a>
+                        {/if}
+                    </div>
+
+                </div>
+            </div>
+        </li>
+        {/volist}
+        {notempty name="addonList.addonClose"}<div class="addon-state">未启用的插件</div>{/notempty}
+        {volist name="addonList.addonClose" id="vo"}
+        <li class="addon-list layui-row">
+            <img src="{$vo.image|mac_default='https://www.maccmsbox.com/uploads/20210906/Icon.png'}" width="40" height="40" align="left">
+            <div class="addon-bottom">
+                <p class="addon-title">{$vo.title}({$vo.name})<span>{$vo.version}</span></p>
+                <p class="addon-intro">{$vo.intro}</p>
+                <div class="layui-row">
+                    <div style="float:left">
+                        {if condition="$vo.state eq 1"}
+                        {if condition="$vo.config eq 0"}<a href="javascript:" class="j-iframe" data-name="{$vo.name}" data-href="{:url('addon/config')}?name={$vo.name}">设置</a><span>|</span>{/if}
+                        {$vo.a}
+                        <a target="_blank" href="{$vo.website}">查看</a>
+                        {/if}
+                    </div>
+                    <div style="float:right">
+                        {if condition="$vo.install eq 0"}
+                        <a href="javascript:" class="btn-install" data-name="{$vo.name}" data-action="install">安装</a>
+                        {else /}
+                        {if condition="$vo.state neq 1"}
+                        <a href="javascript:" class="btn-enable" data-name="{$vo.name}" data-action="enable">启用</a><span>|</span>
+                        {else /}
+                        <a href="javascript:" class="btn-disable" data-name="{$vo.name}" data-action="disable">卸载</a><span>|</span>
+                        {/if}
+                        <a href="javascript:" style="color:red" class="btn-uninstall" data-name="{$vo.name}" data-action="uninstall">删除插件</a>
+                        {/if}
+                    </div>
+
+                </div>
+            </div>
+        </li>
+        {/volist}
+        {notempty name="addonList.addonInstall"}<div class="addon-state">未安装的插件</div>{/notempty}
+        {volist name="addonList.addonInstall" id="vo"}
+        <li class="addon-list layui-row">
+            <img src="{$vo.image|mac_default='https://www.maccmsbox.com/uploads/20210906/Icon.png'}" width="40" height="40" align="left">
+            <div class="addon-bottom">
+                <p class="addon-title">{$vo.title}({$vo.name})<span>{$vo.version}</span></p>
+                <p class="addon-intro">{$vo.intro}</p>
+                <div class="layui-row">
+                    <div style="float:left">
+                        {if condition="$vo.state eq 1"}
+                        {if condition="$vo.config eq 0"}<a href="javascript:" class="j-iframe" data-name="{$vo.name}" data-href="{:url('addon/config')}?name={$vo.name}">设置</a><span>|</span>{/if}
+                        {$vo.a}
+                        <a target="_blank" href="{$vo.website}">查看</a>
+                        {/if}
+                    </div>
+                    <div style="float:right">
+                        {if condition="$vo.install eq 0"}
+                        <a href="javascript:" class="btn-install" data-name="{$vo.name}" data-action="install">安装</a>
+                        {else /}
+                        {if condition="$vo.state neq 1"}
+                        <a href="javascript:" class="btn-enable" data-name="{$vo.name}" data-action="enable">启用</a><span>|</span>
+                        {else /}
+                        <a href="javascript:" class="btn-disable" data-name="{$vo.name}" data-action="disable">卸载</a><span>|</span>
+                        {/if}
+                        <a href="javascript:" style="color:red" class="btn-uninstall" data-name="{$vo.name}" data-action="uninstall">删除插件</a>
+                        {/if}
+                    </div>
+                </div>
+            </div>
+        </li>
+        {/volist}
+    </url>
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+<script type="text/javascript">
+    var url='';
+    layui.use(['laypage', 'layer','element'], function() {
+        var layer = layui.layer
+            ,element = layui.element;
+        element.on('tab(tabs)', function(data){
+            if(data.index <2){
+                url = $(this).attr('data-href');
+                load_list();
+            }
+        });
+        $(document).on('click', '.btn-disable,.btn-enable', function() {
+            $.ajax({
+                type: 'get',
+                dataType:'json',
+                url: "{:url('state')}",
+                data:{name:$(this).attr('data-name'),action:$(this).attr('data-action'),force:0},
+                success:function($r){
+                    if($r.code ==1){
+                        load_list();
+                    }
+                    layer.msg($r.msg);
+                },
+            });
+        });
+        $(document).on('click', '.btn-uninstall,.btn-install', function() {
+            $.ajax({
+                type: 'get',
+                dataType:'json',
+                url: "{:url('uninstall')}",
+                data:{name:$(this).attr('data-name'),action:$(this).attr('data-action'),force:0},
+                success:function($r){
+                    if($r.code ==1){
+                        load_list();
+                    }
+                    layer.msg($r.msg);
+                }
+            });
+        });
+    });
+    function load_list(){
+        layer.msg("{:lang('wait_submit')}",{time:500000});
+        location.reload();
+    }
+</script>
+</body>
+</html>

+ 118 - 0
application/admin/view_new/card/index.html

@@ -0,0 +1,118 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box" >
+        <div class=" mb10">
+            <form class="layui-form " method="post"  id="searchForm" action="{:url('index')}">
+                <div class="layui-input-inline w150">
+                    <select name="sale_status">
+                        <option value="">{:lang('select_sale_status')}</option>
+                        <option value="0" {if condition="$param['sale_status'] eq '0'"}selected {/if}>{:lang('not_sale')}</option>
+                        <option value="1" {if condition="$param['sale_status'] eq '1'"}selected {/if}>{:lang('sold')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="use_status">
+                        <option value="">{:lang('select_use_status')}</option>
+                        <option value="0" {if condition="$param['use_status'] eq '0'"}selected {/if}>{:lang('not_used')}</option>
+                        <option value="1" {if condition="$param['use_status'] eq '1'"}selected {/if}>{:lang('used')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w150">
+                    <select name="time">
+                        <option value="">{:lang('select_time')}</option>
+                        <option value="1" {if condition="$param['time'] eq '1'"}selected {/if}>{:lang('the_last_time')}</option>
+                        <option value="0" {if condition="$param['time'] eq '0'"}selected {/if}>{:lang('that_day')}</option>
+                        <option value="7" {if condition="$param['time'] eq '7'"}selected {/if}>{:lang('in_a_week')}</option>
+                        <option value="30" {if condition="$param['time'] eq '30'"}selected {/if}>{:lang('in_a_month')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_filter_xss}">
+                </div>
+                <button class="layui-btn mgl-20 j-search" >{:lang('btn_search')}</button>
+                <button class="layui-btn mgl-20" type="button" id="btnExport">{:lang('export')}</button>
+            </form>
+        </div>
+
+        <div class="layui-btn-group">
+            <a data-href="{:url('info')}" class="layui-btn layui-btn-primary j-iframe" data-width="100%" data-height="100%"><i class="layui-icon">&#xe654;</i>{:lang('add')}</a>
+            <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+            <a data-href="{:url('del')}?ids=1&all=1" class="layui-btn layui-btn-primary j-ajax" confirm="{:lang('clear_confirm')}"><i class="layui-icon">&#xe640;</i>{:lang('clear')}</a>
+
+        </div>
+    </div>
+
+     <form class="layui-form " method="post" id="pageListForm">
+         <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="80">{:lang('id')}</th>
+                <th width="150">{:lang('card_no')}</th>
+                <th width="100">{:lang('pass')}</th>
+                <th width="100">{:lang('money')}</th>
+                <th width="100">{:lang('points')}</th>
+                <th width="100">{:lang('add_time')}</th>
+                <th width="100">{:lang('user')}</th>
+                <th width="150">{:lang('use_time')}</th>
+                <th width="80">{:lang('opt')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.card_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.card_id}</td>
+                <td>{$vo.card_no|htmlspecialchars}</td>
+                <td>{$vo.card_pwd|htmlspecialchars}</td>
+                <td>{$vo.card_money}</td>
+                <td>{$vo.card_points}</td>
+                <td>{$vo.card_add_time|mac_day='color'}</td>
+                <td>{$vo.user_id}、{$vo.user.user_name}</td>
+                <td>{if condition="$vo.card_use_time eq 0"} {else}{$vo.card_use_time|mac_day='color'}{/if}</td>
+                <td>
+                    <a class="layui-badge-rim j-tr-del" data-href="{:url('del?ids='.$vo['card_id'])}" href="javascript:;" title="{:lang('del')}">{:lang('del')}</a>
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+
+        <div id="pages" class="center"></div>
+
+    </form>
+    <iframe id="if" width="0" height="0"></iframe>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+
+<script type="text/javascript">
+    var curUrl="{:url('card/index',$param)}";
+    layui.use(['laypage', 'layer'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+
+        $('#btnExport').click(function(){
+            var par = $('#searchForm').serialize() + '&export=1';
+
+            $('#if').attr('src',"{:url('card/index')}?" + par);
+        });
+    });
+</script>
+</body>
+</html>

+ 83 - 0
application/admin/view_new/card/info.html

@@ -0,0 +1,83 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+    <form class="layui-form layui-form-pane" method="post" action="" id="movementTable">
+        <input id="link_id" name="link_id" type="hidden" value="{$info.link_id}">
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('admin/card/make_num')}:</label>
+            <div class="layui-input-block">
+                <input type="text" class="layui-input" value="10" lay-verify="num" placeholder="" name="num">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('money')}:</label>
+            <div class="layui-input-block">
+                <input type="text" class="layui-input" value="" lay-verify="money" placeholder="" name="money">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('points')}:</label>
+            <div class="layui-input-block">
+                <input type="text" class="layui-input" value="" lay-verify="point" placeholder="" name="point">
+            </div>
+        </div>
+
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('card_no')}{:lang('rule')}:</label>
+            <div class="layui-input-block">
+                <input type="radio" name="role_no" value="" title="{:lang('mixing')}" checked>
+                <input type="radio" name="role_no" value="letter" title="{:lang('abc')}" >
+                <input type="radio" name="role_no" value="num" title="{:lang('number')}" >
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('pass')}{:lang('rule')}:</label>
+            <div class="layui-input-block">
+                <input type="radio" name="role_pwd" value="" title="{:lang('mixing')}" checked>
+                <input type="radio" name="role_pwd" value="letter" title="{:lang('abc')}" >
+                <input type="radio" name="role_pwd" value="num" title="{:lang('number')}" >
+            </div>
+        </div>
+
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+                <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit" data-child="true">{:lang('btn_save')}</button>
+                <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+            </div>
+        </div>
+    </form>
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    layui.use(['form', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery;
+
+        // 验证
+        form.verify({
+            num: function (value) {
+                if (value == "") {
+                    return "{:lang('admin/card/please_input_make_num')}";
+                }
+            },
+            money: function (value) {
+                if (value == "") {
+                    return "{:lang('admin/card/please_input_money')}";
+                }
+            },
+            point: function (value) {
+                if (value == "") {
+                    return "{:lang('admin/card/please_input_points')}";
+                }
+            }
+        });
+
+
+    });
+</script>
+
+</body>
+</html>

+ 102 - 0
application/admin/view_new/cash/index.html

@@ -0,0 +1,102 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box" >
+        <div class=" mb10">
+            <form class="layui-form " method="post" action="{:url('index')}">
+                <div class="layui-input-inline w150">
+                    <select name="status">
+                        <option value="">{:lang('select_status')}</option>
+                        <option value="0" {if condition="$param['status'] eq '0'"}selected {/if}>{:lang('reviewed_not')}</option>
+                        <option value="1" {if condition="$param['status'] eq '1'"}selected {/if}>{:lang('reviewed')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_filter_xss}">
+                </div>
+                <button class="layui-btn mgl-20 j-search" >{:lang('btn_search')}</button>
+            </form>
+        </div>
+
+        <div class="layui-btn-group">
+            <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+            <a data-href="{:url('del')}?ids=1&all=1" class="layui-btn layui-btn-primary j-ajax" confirm="{:lang('clear_confirm')}"><i class="layui-icon">&#xe640;</i>{:lang('clear')}</a>
+            <a data-href="{:url('audit')}" class="layui-btn layui-btn-primary j-page-btns confirm" confirm="{:lang('audit_confirm')}"><i class="layui-icon">&#xe640;</i>{:lang('audit')}</a>
+        </div>
+    </div>
+
+     <form class="layui-form " method="post" id="pageListForm">
+         <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="50">{:lang('id')}</th>
+                <th width="50">{:lang('user')}</th>
+                <th width="50">{:lang('status')}</th>
+                <th width="50">{:lang('points')}</th>
+                <th width="50">{:lang('money')}</th>
+                <th width="50">{:lang('bank')}</th>
+                <th width="50">{:lang('account')}</th>
+                <th width="50">{:lang('name')}</th>
+                <th width="100">{:lang('remarks')}</th>
+                <th width="100">{:lang('time')}</th>
+                <th width="100">{:lang('audit_time')}</th>
+                <th width="180">{:lang('opt')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.cash_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.cash_id}</td>
+                <td>[{$vo.user_id}]{$vo.user_name|htmlspecialchars}</td>
+                <td>{if condition="$vo.cash_status eq 1"}<span class="layui-badge layui-bg-green">{:lang('reviewed')}</span>{else/}<span class="layui-badge">{:lang('reviewed_not')}</span>{/if}</td>
+                <td>{$vo.cash_points}</td>
+                <td>{$vo.cash_money}</td>
+                <td>{$vo.cash_bank_name|htmlspecialchars}</td>
+                <td>{$vo.cash_bank_no|htmlspecialchars}</td>
+                <td>{$vo.cash_payee_name|htmlspecialchars}</td>
+                <td>{$vo.cash_remarks|htmlspecialchars}</td>
+                <td>{$vo.cash_time|mac_day='color'}</td>
+                <td>{$vo.cash_time_audit|mac_day='color'}</td>
+                <td>
+                    <a class="layui-badge-rim j-tr-del" data-href="{:url('del?ids='.$vo['cash_id'])}" href="javascript:;" title="{:lang('del')}">{:lang('del')}</a>
+                    {if condition="$vo.cash_status neq '1'"}
+                    <a class="layui-badge-rim j-ajax" confirm="{:lang('audit_confirm')}" data-href="{:url('audit?ids='.$vo['cash_id'])}" href="javascript:;" title="{:lang('audit')}">{:lang('audit')}</a>
+                    {/if}
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+
+        <div id="pages" class="center"></div>
+
+    </form>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+
+<script type="text/javascript">
+    var curUrl="{:url('cash/index',$param)}";
+    layui.use(['laypage', 'layer'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+    });
+</script>
+</body>
+</html>

+ 10 - 0
application/admin/view_new/cj/col_content.html

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

+ 43 - 0
application/admin/view_new/cj/col_url.html

@@ -0,0 +1,43 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <fieldset class="layui-elem-field">
+        <legend>{:lang('base_info')}</legend>
+        <div class="layui-field-box">
+            {$url_list} <br>{:lang('sum')}:{$total} {:lang('data')},{:lang('duplicate_data')}:{$re}{:lang('data')},{:lang('distinct_into')}{$total-$re}{:lang('data')}。
+        </div>
+    </fieldset>
+
+    <table class="layui-table" lay-size="sm">
+    <thead>
+      <tr>
+        <th width="50">{:lang('serial_num')}</th>
+		<th>{:lang('link')}</th>
+        <th>{:lang('name')}</th>
+      </tr> 
+    </thead>
+    <tbody>
+		{foreach name="url" item="v"}
+		  <tr>
+			  <td>{$n=$n+1}</td>
+			  <td>{$v.url}</td>
+			  <td>{$v.title}</td>
+		  </tr>
+	  {/foreach}
+    </tbody>
+  </table>
+</div>
+<script>
+var total_page = {$total_page};
+var page = {$param['page']|mac_filter_xss};
+var id = {$param['id']|mac_filter_xss};
+if (total_page > page) {
+    var url = "{:url('cj/col_url_list')}";
+	page += 1;
+    //location.href= url + '?page='+page+'&id='+id;
+} else {
+	//alert('采集完成');
+}
+</script>
+</body>
+</html>

+ 79 - 0
application/admin/view_new/cj/index.html

@@ -0,0 +1,79 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box" >
+        <div class="layui-btn-group">
+            <a data-href="{:url('info')}" data-full="1" class="layui-btn layui-btn-primary j-iframe" data-width="600px" data-height="400px"><i class="layui-icon">&#xe654;</i>{:lang('add')}</a>
+            <a data-href="{:url('import')}" class="layui-btn layui-btn-primary layui-upload" ><i class="layui-icon">&#xe654;</i>{:lang('import')}</a>
+        </div>
+    </div>
+
+    <form method="post" id="pageListForm">
+        <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="50">{:lang('id')}</th>
+                <th >{:lang('name')}</th>
+                <th width="120">{:lang('cj_time')}</th>
+                <th width="250">{:lang('opt_content')}</th>
+                <th width="250">{:lang('opt')}</th>
+            </tr>
+            </thead>
+            <tbody>
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.nodeid}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.nodeid}</td>
+                <td>{$vo.name}</td>
+                <td>{$vo.lastdate|mac_day}</td>
+                <td>
+                    <a class="layui-btn layui-btn-primary layui-btn-xs j-iframe" data-href="{:url('col_url')}?id={$vo.nodeid}">{:lang('admin/cj/cj_url')}</a>
+                    <a class="layui-btn layui-btn-primary layui-btn-xs j-iframe" data-href="{:url('col_content')}?id={$vo.nodeid}">{:lang('admin/cj/cj_content')}</a>
+                    <a class="layui-btn layui-btn-primary layui-btn-xs j-iframe" data-href="{:url('publish')}?id={$vo.nodeid}&status=2">{:lang('admin/cj/content_publish')}</a>
+                </td>
+                <td>
+                    <a class="layui-btn layui-btn-primary layui-btn-xs j-iframe" data-full="1" data-href="{:url('info')}?id={$vo.nodeid}" title="{:lang('edit')}">{:lang('edit')}</a>
+                    <a class="layui-btn layui-btn-primary layui-btn-xs j-iframe" data-href="{:url('program')}?id={$vo.nodeid}" title="{:lang('admin/cj/publish_plan')}">{:lang('admin/cj/publish_plan')}</a>
+                    <a class="layui-btn layui-btn-primary layui-btn-xs" href="{:url('export')}?id={$vo.nodeid}" title="{:lang('export')}">{:lang('export')}</a>
+                    <a class="layui-btn layui-btn-primary layui-btn-xs j-tr-del" href="{:url('del')}?ids={$vo.nodeid}" title="{:lang('del')}">{:lang('del')}</a>
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+        <div id="pages" class="center"></div>
+    </form>
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+<!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 -->
+<script>
+    layui.use(['form','laypage', 'layer','upload'], function() {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery
+                , upload = layui.upload;
+
+        upload.render({
+            elem: '.layui-upload'
+            ,url: "{:url('cj/import')}"
+            ,method: 'post'
+            ,exts:'txt'
+            ,before: function(input) {
+                layer.msg("{:lang('upload_ing')}", {time:3000000});
+            },done: function(res, index, upload) {
+                var obj = this.item;
+                if (res.code == 0) {
+                    layer.msg(res.msg);
+                    return false;
+                }
+                location.reload();
+            }
+        });
+
+    });
+</script>
+</body>
+</html>

+ 438 - 0
application/admin/view_new/cj/info.html

@@ -0,0 +1,438 @@
+{include file="../../../application/admin/view_new/public/head" /}
+    <!--添加采集点 start-->
+<form class="layui-form" name="myform" method="post" id="myform">
+    <input type="hidden" name="data[nodeid]" value="{$data.nodeid}">
+    <div class="layui-tab" style="min-height: 430px;">
+        <ul class="layui-tab-title">
+            <li class="layui-this">{:lang('admin/cj/rule_url')}</li>
+            <li>{:lang('admin/cj/rule_content')}</li>
+            <li>{:lang('admin/cj/rule_diy')}</li>
+            <li>{:lang('admin/cj/adv_config')}</li>
+        </ul>
+        <div class="layui-tab-content" id="movementTable">
+            <!--网址规则 start-->
+            <div class="layui-tab-item layui-show" >
+                <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
+                    <legend>{:lang('base_info')}</legend>
+                </fieldset>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('admin/cj/rule_name')}:</label>
+                    <div class="layui-input-block" style="width: 60%">
+                        <input type="text" name="data[name]" placeholder="" value="{$data.name}" class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('admin/cj/page_charset')}:</label>
+                    <div class="layui-input-block">
+                        <input type="radio" name="data[sourcecharset]" value="GBK" title="GBK" {if condition="$data['sourcecharset'] eq 'GBK'"}checked='checked'{/if}>
+                        <input type="radio" name="data[sourcecharset]" value="UTF-8" title="UTF-8" {if condition="$data['sourcecharset'] eq 'UTF-8'"}checked='checked'{/if}>
+                        <input type="radio" name="data[sourcecharset]" value="BIG5" title="BIG5" {if condition="$data['sourcecharset'] eq 'BIG5'"}checked='checked'{/if}>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('admin/cj/cj_model')}:</label>
+                    <div class="layui-input-block">
+                        <input type="radio" name="data[mid]" value="1" title="{:lang('vod')}" {if condition="$data['mid'] neq '2'"}checked='checked'{/if}>
+                        <input type="radio" name="data[mid]" value="2" title="{:lang('art')}" {if condition="$data['mid'] eq '2'"}checked='checked'{/if}>
+                    </div>
+                </div>
+
+                <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
+                    <legend>{:lang('admin/cj/url_collect')}</legend>
+                </fieldset>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('admin/cj/url_type')}:</label>
+                    <div class="layui-input-block">
+                        <input type="radio" name="data[sourcetype]" id="_1" value="1" lay-filter="sourcetype" title="{:lang('admin/cj/sequence_url')}" {if condition="$data['sourcetype'] eq 1"}checked='checked'{/if}>
+                        <input type="radio" name="data[sourcetype]" id="_2" value="2" lay-filter="sourcetype" title="{:lang('admin/cj/multi_url')}" {if condition="$data['sourcetype'] eq 2"}checked='checked'{/if}>
+                        <input type="radio" name="data[sourcetype]" id="_3" value="3" lay-filter="sourcetype" title="{:lang('admin/cj/one_url')}" {if condition="$data['sourcetype'] eq 3"}checked='checked'{/if}>
+                    </div>
+                </div>
+                <div id="url_type_1" {if condition="$data['sourcetype'] neq 1"}style="display:none"{/if}>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('admin/cj/cj_url')}:</label>
+                        <div class="layui-input-inline" style="width: 60%;">
+                            <input type="text" name="urlpage1" id="urlpage_1" placeholder="http://..." value="{$data.urlpage}" class="layui-input">
+                            <div class="layui-form-mid layui-word-aux">
+                                (如:http://www.phpcms.cn/help/rumen/(*).html,{:lang('use')}(*){:lang('admin/cj/wildcard_tip')}。
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('admin/cj/page_num_config')}:</label>
+                        <div class="layui-form-mid">{:lang('start')}</div>
+                        <div class="layui-input-inline" style="width: 60px;">
+                            <input type="text" name="data[pagesize_start]" value="{$data.pagesize_start}" class="layui-input">
+                        </div>
+                        <div class="layui-form-mid"> {:lang('end')}</div>
+                        <div class="layui-input-inline" style="width: 60px;">
+                            <input type="text" name="data[pagesize_end]" value="{$data.pagesize_end}" class="layui-input">
+                        </div>
+                        <div class="layui-form-mid">{:lang('admin/cj/page_num_increment')}</div>
+                        <div class="layui-input-inline" style="width: 60px;">
+                            <input type="text" name="data[par_num]" value="{$data.par_num}" class="layui-input">
+                        </div>
+                        <div class="layui-input-inline" style="width:10%;">
+                            <a class="layui-btn" onclick="testUrl();" href="javascript:;">{:lang('test')}</a>
+                        </div>
+                    </div>
+                </div>
+                <!--多个网址-->
+                <div id="url_type_2" class="layui-form-item" {if condition="$data['sourcetype'] neq 2"}style="display:none"{/if}>
+                    <label class="layui-form-label">{:lang('admin/cj/cj_url')}:</label>
+                    <div class="layui-input-inline" style="width: 60%;">
+                        <textarea class="layui-textarea" name="urlpage2" id="urlpage_2">{$data.urlpage}</textarea>
+                        <div class="layui-form-mid layui-word-aux">
+                            {:lang('admin/cj/one_per_line')}
+                        </div>
+                    </div>
+                </div>
+                <!--单一网址-->
+                <div id="url_type_3" class="layui-form-item" {if condition="$data['sourcetype'] neq 3"}style="display:none"{/if}>
+                    <label class="layui-form-label">{:lang('admin/cj/cj_url')}:</label>
+                    <div class="layui-input-inline" style="width: 60%;">
+                        <input type="text" name="urlpage3" id="urlpage_3" placeholder="http://..." value="{$data.urlpage}" class="layui-input">
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('admin/cj/url_config')}:</label>
+                    <div class="layui-form-mid">{:lang('admin/cj/url_must_contain')}</div>
+                    <div class="layui-input-inline" style="width: 160px;">
+                        <input type="text" name="data[url_contain]" value="{$data.url_contain}" class="layui-input">
+                    </div>
+                    <div class="layui-form-mid"> {:lang('admin/cj/url_not_contain')}</div>
+                    <div class="layui-input-inline" style="width: 160px;">
+                        <input type="text" name="data[url_except]" value="{$data.url_except}" class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('admin/cj/collect_interval')}:</label>
+                    <div class="layui-input-inline">
+                        <textarea name="data[url_start]" class="layui-textarea">{$data.url_start}</textarea>
+                    </div>
+                    <div class="layui-form-mid">{:lang('to')}</div>
+                    <div class="layui-input-inline">
+                        <textarea name="data[url_end]" class="layui-textarea">{$data.url_end}</textarea>
+                    </div>
+                </div>
+            </div>
+
+            <!--网址规则 end-->
+                <!--内容规则 start-->
+            <div class="layui-tab-item" >
+                <blockquote class="layui-elem-quote layui-text" style="margin:20px 0;border-left-color: #ff5722;">
+                        {:lang('admin/cj/wildcard_prompt')}
+                </blockquote>
+                <div class="layui-btn-group">
+                        <a class="layui-btn" href="javascript:void(0);" onclick="showAll(this);">{:lang('expand_all')}</a>
+                        <a class="layui-btn" href="javascript:void(0);" onclick="hideAll(this);">{:lang('fold_all')}</a>
+                </div>
+                <div class="layui-collapse" lay-filter="lay_state" style="margin: 20px 0;">
+                        <div class="layui-colla-item">
+                            <h2 class="layui-colla-title">{:lang('admin/cj/title_rule')}</h2>
+                            <div class="layui-colla-content layui-show">
+                                <div class="layui-form-item">
+                                    <label class="layui-form-label">{:lang('admin/cj/match_rule')}:</label>
+                                    <div class="layui-input-inline w300">
+                                        <textarea name="data[title_rule]" id="title_rule" class="layui-textarea">{$data.title_rule}</textarea>
+                                        <div class="layui-form-mid layui-word-aux">
+                                            {:lang('use')}"<a href="javascript:insertText('title_rule', '[内容]')"> [内容] </a>"{:lang('admin/cj/wildcard_tip')}
+                                        </div>
+                                    </div>
+                                    <div class="layui-form-mid">{:lang('admin/cj/filter_rule')}:</div>
+                                    <div class="layui-input-inline w300">
+                                        <textarea name="data[title_html_rule]" id="title_html_rule" class="layui-textarea">{$data.title_html_rule}</textarea>
+                                        <div class="layui-form-mid layui-word-aux">
+                                            <input type="button" value="{:lang('select')}" class="layui-btn layui-btn-xs" onclick="add_tag('title_html_rule')">
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+
+                    <div class="layui-colla-item">
+                        <h2 class="layui-colla-title">{:lang('admin/cj/type_rule')}</h2>
+                        <div class="layui-colla-content layui-show">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">{:lang('admin/cj/match_rule')}:</label>
+                                <div class="layui-input-inline w300">
+                                    <textarea name="data[type_rule]" id="type_rule" class="layui-textarea">{$data.type_rule}</textarea>
+                                    <div class="layui-form-mid layui-word-aux">
+                                        {:lang('use')}"<a href="javascript:insertText('content_rule', '[内容]')"> [内容] </a>"{:lang('admin/cj/wildcard_tip')}
+                                    </div>
+                                </div>
+                                <div class="layui-form-mid">{:lang('admin/cj/filter_rule')}:</div>
+                                <div class="layui-input-inline w300">
+                                    <textarea name="data[type_html_rule]" id="type_html_rule" class="layui-textarea">{$data.type_html_rule}</textarea>
+                                    <div class="layui-form-mid layui-word-aux">
+                                        <input type="button" value="{:lang('select')}" class="layui-btn layui-btn-xs" onclick="add_tag('type_html_rule')">
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+
+                        <div class="layui-colla-item">
+                            <h2 class="layui-colla-title">{:lang('admin/cj/content_rule')}</h2>
+                            <div class="layui-colla-content layui-show">
+                                <div class="layui-form-item">
+                                    <label class="layui-form-label">{:lang('admin/cj/match_rule')}:</label>
+                                    <div class="layui-input-inline w300">
+                                        <textarea name="data[content_rule]" id="content_rule" class="layui-textarea">{$data.content_rule}</textarea>
+                                        <div class="layui-form-mid layui-word-aux">
+                                            {:lang('use')}"<a href="javascript:insertText('content_rule', '[内容]')"> [内容] </a>"{:lang('admin/cj/wildcard_tip')}
+                                        </div>
+                                    </div>
+                                    <div class="layui-form-mid">{:lang('admin/cj/filter_rule')}:</div>
+                                    <div class="layui-input-inline w300">
+                                        <textarea name="data[content_html_rule]" id="content_html_rule" class="layui-textarea">{$data.content_html_rule}</textarea>
+                                        <div class="layui-form-mid layui-word-aux">
+                                            <input type="button" value="{:lang('select')}" class="layui-btn layui-btn-xs" onclick="add_tag('content_html_rule')">
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+
+                        <div class="layui-colla-item">
+                            <h2 class="layui-colla-title">{:lang('admin/cj/page_mode')}</h2>
+                            <div class="layui-colla-content layui-show">
+                                <div class="layui-form-item">
+                                    <input type="radio" name="data[content_page_rule]" id="_1" value="1" title="{:lang('admin/cj/list_all_mode')}" lay-filter="content_page_rule" {if condition="$data['content_page_rule'] neq 2"}checked="checked"{/if}>
+                                    <input type="radio" name="data[content_page_rule]" id="_2" value="2" title="{:lang('admin/cj/next_page_mode')}" lay-filter="content_page_rule" {if condition="$data['content_page_rule'] eq 2"}checked="checked"{/if}>
+                                </div>
+
+                                <div class="layui-form-item" id="nextpage" {if condition="$data['content_page_rule'] neq '2'"}style="display:none"{/if}>
+                                    <label class="layui-form-label">{:lang('admin/cj/next_page_rule')}:</label>
+                                    <div class="layui-input-inline w600">
+                                        <input type="text" name="data[content_nextpage]" class="layui-input" value="{$data.content_nextpage}">
+                                        <div class="layui-form-mid layui-word-aux">{:lang('admin/cj/next_page_tip')}</div>
+                                    </div>
+                                </div>
+                                <div class="layui-form-item">
+                                    <label class="layui-form-label">{:lang('admin/cj/match_rule')}:</label>
+                                    从 <textarea rows="5" cols="40" name="data[content_page_start]" id="content_page_start">{$data.content_page_start}</textarea> {:lang('to')}
+                                    <textarea rows="5" cols="40" name="data[content_page_end]" id="content_page_end">{$data.content_page_end}</textarea>
+                                </div>
+                            </div>
+                        </div>
+                </div>
+            </div>
+
+            <!--内容规则 end-->
+            <!--自定义规则 start-->
+            <div class="layui-tab-item" id="customize_config">
+
+                <div class="layui-form-item">
+                    <div class="layui-input-block">
+                        <a class="layui-btn layui-btn-sm layui-btn-normal" href="javascript:;" onclick="add_caiji()">{:lang('admin/cj/add_group')}</a>
+                    </div>
+                </div>
+
+                {volist name="$data.customize_config" id="vo"}
+                <div class="layui-form-item mt10">
+                    <label class="layui-form-label">{:lang('admin/cj/rule_name')}:</label>
+                    <div class="layui-input-inline"><input type="text" name="data[customize_config][name][]" placeholder="" value="{$vo.name}" class="layui-input"></div>
+                    <div class="layui-form-mid">{:lang('admin/cj/rule_name_en')}:</div>
+                    <div class="layui-input-inline"><input type="text" name="data[customize_config][en_name][]" placeholder="" value="{$vo.en_name}" class="layui-input"></div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('admin/cj/match_rule')}:</label>
+                    <div class="layui-input-inline">
+                        <textarea name="data[customize_config][rule][]" id="role_'+caiji+'" class="layui-textarea">{$vo.rule}</textarea>
+                        <div class="layui-form-mid layui-word-aux">{:lang('use')}"<a href="javascript:insertText('title_rule', '[内容]')"> [内容] </a>"{:lang('admin/cj/wildcard_tip')}    </div>
+                    </div>
+                    <div class="layui-form-mid">{:lang('admin/cj/filter_rule')}:</div>
+                    <div class="layui-input-inline">
+                        <textarea name="data[customize_config][html_rule][]" id="content_html_rule_'+caiji+'" class="layui-textarea">{$vo.html_rule}</textarea>
+                        <div class="layui-form-mid layui-word-aux"><a class="layui-btn layui-btn-xs" href="javascript:;" onclick="add_tag('content_html_rule_'+caiji+'')">{:lang('select')}</a></div>
+                    </div>
+                </div>
+                <hr>
+                {/volist}
+
+            </div>
+            <!--自定义规则 end-->
+            <!--高级配置 start-->
+            <div class="layui-tab-item">
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('admin/cj/content_page')}:</label>
+                    <div class="layui-input-block">
+                        <input type="radio" name="data[content_page]" value="0" title="{:lang('admin/cj/no_page')}">
+                        <div class="layui-unselect layui-form-radio layui-form-radioed">
+                            <i class="layui-anim layui-icon"></i>
+                            <div>{:lang('admin/cj/no_page')}</div>
+                        </div>
+                        <input type="radio" name="data[content_page]" value="1" title="{:lang('admin/cj/original_page')}" checked>
+                        <div class="layui-unselect layui-form-radio layui-form-radioed">
+                            <i class="layui-anim layui-icon"></i>
+                            <div>{:lang('admin/cj/original_page')}</div>
+                        </div>
+                    </div>
+                </div>
+                <hr>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('admin/cj/import_sort')}:</label>
+                    <div class="layui-input-block">
+                        <input type="radio" name="data[coll_order]" value="1" title="{:lang('admin/cj/same_to_site')}">
+                        <div class="layui-unselect layui-form-radio layui-form-radioed">
+                            <i class="layui-anim layui-icon"></i>
+                            <div>{:lang('admin/cj/same_to_site')}</div>
+                        </div>
+                        <input type="radio" name="data[coll_order]" value="2" title="{:lang('admin/cj/opposite_to_site')}" checked>
+                        <div class="layui-unselect layui-form-radio layui-form-radioed">
+                            <i class="layui-anim layui-icon"></i>
+                            <div>{:lang('admin/cj/opposite_to_site')}</div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <!--高级配置 end-->
+        </div>
+    </div>
+    <div class="layui-form-item">
+        <div class="layui-input-block w150" style="margin:20px auto;">
+            <button type="submit" name="dosubmit" id="dosubmit" class="layui-btn layui-btn-fluid">{:lang('btn_save')}</button>
+        </div>
+    </div>
+</form>
+    <!--添加采集点 end-->
+<style>
+    .ib{display: inline-block;}
+</style>
+<div id="html_rule_show" class="aui_content" style="display:none; padding: 20px 25px;">
+    <label class="ib" style="width:120px"><input type="checkbox" name="html_rule" id="_1" value="<p([^>]*)>(.*)</p>[|]"> &lt;p&gt;</label>
+    <label class="ib" style="width:120px"><input type="checkbox" name="html_rule" id="_2" value="<a([^>]*)>(.*)</a>[|]"> &lt;a&gt;</label>
+    <label class="ib" style="width:120px"><input type="checkbox" name="html_rule" id="_3" value="<script([^>]*)>(.*)</script>[|]"> &lt;script&gt;</label>
+    <label class="ib" style="width:120px"><input type="checkbox" name="html_rule" id="_4" value="<iframe([^>]*)>(.*)</iframe>[|]"> &lt;iframe&gt;</label>
+    <label class="ib" style="width:120px"><input type="checkbox" name="html_rule" id="_5" value="<table([^>]*)>(.*)</table>[|]"> &lt;table&gt;</label>
+    <label class="ib" style="width:120px"><input type="checkbox" name="html_rule" id="_6" value="<span([^>]*)>(.*)</span>[|]"> &lt;span&gt;</label>
+    <label class="ib" style="width:120px"><input type="checkbox" name="html_rule" id="_7" value="<b([^>]*)>(.*)</b>[|]"> &lt;b&gt;</label>
+    <label class="ib" style="width:120px"><input type="checkbox" name="html_rule" id="_8" value="<img([^>]*)>[|]"> &lt;img&gt;</label>
+    <label class="ib" style="width:120px"><input type="checkbox" name="html_rule" id="_9" value="<object([^>]*)>(.*)</object>[|]"> &lt;object&gt;</label>
+    <label class="ib" style="width:120px"><input type="checkbox" name="html_rule" id="_10" value="<embed([^>]*)>(.*)</embed>[|]"> &lt;embed&gt;</label>
+    <label class="ib" style="width:120px"><input type="checkbox" name="html_rule" id="_11" value="<param([^>]*)>(.*)</param>[|]"> &lt;param&gt;</label>
+    <label class="ib" style="width:120px"><input type="checkbox" name="html_rule" id="_12" value="<div([^>]*)>[|]"> &lt;div&gt;</label>
+    <label class="ib" style="width:120px"><input type="checkbox" name="html_rule" id="_13" value="</div>[|]"> &lt;/div&gt;</label>
+    <label class="ib" style="width:120px"><input type="checkbox" name="html_rule" id="_14" value="<!--([^>]*)-->[|]"> &lt;!-- --&gt;</label>
+    <br>
+    <div class="bk15"></div>
+    <center><input type="button" value="{:lang('check_all')}" class="button" onclick="selectall('html_rule')"> <input type="button" class="button" value="{:lang('check_other')}" onclick="anti_selectall('html_rule')"></center>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+<script type="text/javascript">
+    layui.use(['element','form','upload','layer'],function () {
+        // 操作对象
+        var element = layui.element;
+        form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery
+                , upload = layui.upload;
+
+        form.on('radio(sourcetype)',function (data) {
+            var num = 4;
+            for (var i=1; i<=num; i++){
+                if (data.value==i){
+                    $('#url_type_'+i).show();
+                } else {
+                    $('#url_type_'+i).hide();
+                }
+            }
+        });
+        form.on('radio(content_page_rule)',function (data) {
+            $('#nextpage').hide();
+            if(data.value==2){
+                $('#nextpage').show();
+            }
+        });
+
+
+
+        //监听折叠
+        element.on('collapse(lay_state)', function(data){
+            //layer.msg('展开状态:'+ data.show);
+        });
+    });
+
+    function selectall(obj) {
+        $("input[name='"+obj+"']").each(function(i,n){
+            this.checked = true;
+        });
+    }
+    function anti_selectall(obj) {
+        $("input[name='"+obj+"']").each(function(i,n){
+            if (this.checked) {
+                this.checked = false;
+            } else {
+                this.checked = true;
+            }});
+    }
+    //折叠面板
+    function showAll(_this) {
+        $(_this).parents(".layui-btn-group").siblings(".layui-collapse").children(".layui-colla-item").children(".layui-colla-content").addClass("layui-show");
+    }
+    function hideAll(_this) {
+        $(_this).parents(".layui-btn-group").siblings(".layui-collapse").children(".layui-colla-item").children(".layui-colla-content").removeClass("layui-show");
+    }
+
+    //  包含内容
+    function insertText(id, text) {
+        $('#' + id).focus();
+        var str = document.selection.createRange();
+        str.text = text;
+    }
+
+    function add_tag(id) {
+        var index = layer.open({
+            type: 1
+            ,title: "{:lang('admin/cj/filter_rule')}" //不显示标题栏
+            ,closeBtn: 1
+            ,shade: 0.8
+            ,id: 'LAY_layuipro' //设定一个id,防止重复弹出
+            ,btn: ["{:lang('add')}", "{:lang('cancel')}"]
+            ,btnAlign: 'c'
+            ,moveType: 1 //拖拽模式,0或者1
+            ,content: $('#html_rule_show')
+            ,yes: function(layero){
+                var str = '';
+                $("input[name='html_rule']:checked").each(function(){
+                    str+=$(this).val()+"\n";
+                });
+                alert(str);
+                $("#"+id).val(str);
+                layer.close(index);
+            }
+        });
+    }
+
+    var caiji=0;
+    function add_caiji()
+    {
+        $('#customize_config').append('<div class="layui-form-item mt10"><label class="layui-form-label">{:lang('rule_name')}:</label><div class="layui-input-inline"><input type="text" name="data[customize_config][name][]" placeholder="" value="" class="layui-input"></div><div class="layui-form-mid">{:lang('rule_name_en')}:</div><div class="layui-input-inline"><input type="text" name="data[customize_config][en_name][]" placeholder="" value="" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">{:lang('admin/cj/match_rule')}:</label><div class="layui-input-inline"><textarea name="data[customize_config][rule][]" id="role_'+caiji+'" class="layui-textarea"></textarea><div class="layui-form-mid layui-word-aux">{:lang('use')}"<a href="javascript:insertText(\'title_rule\', \'[内容]\')"> [内容] </a>"{:lang('admin/cj/wildcard_tip')}    </div></div><div class="layui-form-mid">{:lang('admin/cj/filter_rule')}:</div><div class="layui-input-inline"><textarea name="data[customize_config][html_rule][]" id="content_html_rule_'+caiji+'" class="layui-textarea"></textarea><div class="layui-form-mid layui-word-aux"><a class="layui-btn layui-btn-xs" href="javascript:;" onclick="add_tag(\'content_html_rule_'+caiji+'\')">{:lang('select')}</a></div></div></div><hr>');
+        caiji++;
+    }
+
+    function testUrl() {
+        var data = $('#myform').serialize();
+
+        layer.open({
+            type: 2
+            ,title: 'test'
+            ,closeBtn: 1
+            ,area: ['500px;','400px']
+            ,shade: 0.8
+            ,id: 'LAY_testUrl' //设定一个id,防止重复弹出
+            ,btn: ["{:lang('close')}"]
+            ,btnAlign: 'c'
+            ,moveType: 1 //拖拽模式,0或者1
+            ,content: '{:url('show_url')}?call=1&' +data
+        });
+    }
+
+
+</script>
+</body>
+</html>

+ 49 - 0
application/admin/view_new/cj/program.html

@@ -0,0 +1,49 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+    <form class="layui-form layui-form-pane" action="">
+        <input type="hidden" name="id" value="{$param.id|mac_filter_xss}">
+        <fieldset class="layui-elem-field">
+            <legend>{:lang('admin/cj/label_data_rel')}</legend>
+        </fieldset>
+
+                    <table class="layui-table" lay-size="sm" style="width:600px;">
+                        <thead>
+                        <tr>
+                            <th width="100">{:lang('admin/cj/data_column')}</th>
+                            <th width="100">{:lang('admin/cj/label_column')}</th>
+                            <th width="100">{:lang('admin/cj/processing_function')}</th>
+                        </tr>
+                        </thead>
+
+                        {volist name="column_list" id="vo"}
+                        <tr>
+                            <td><input type="hidden" name="model_field[]" value="{$vo.Field}">{$vo.Field}</td>
+                            <td><select name="node_field[]">
+                                <option value="">{:lang('select_please')}</option>
+                                {volist name="node_field" id="vo2" key="key2"}
+                                <option value="{$key}" {if condition="$program_config['map'][$vo.Field] eq $key"}selected{/if}>{$vo2}</option>
+                                {/volist}
+                            </select>
+                            </td>
+                            <td><select name="funcs[]"><option value="" >{:lang('select_please')}</option><option value="trim" {if condition="$program_config['funcs'][$vo.Field] eq 'trim'"}selected{/if}>{:lang('admin/cj/trim_space')}</option></select></td>
+                        </tr>
+                        {/volist}
+                        </tbody>
+                    </table>
+
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+                <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit" data-child="true">{:lang('btn_save')}</button>
+                <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+            </div>
+        </div>
+    </form>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+<script type="text/javascript">
+
+</script>
+
+</body>
+</html>

+ 79 - 0
application/admin/view_new/cj/publish.html

@@ -0,0 +1,79 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container">
+    <form class="layui-form layui-form-pane" action="">
+        <div class="layui-tab">
+            <ul class="layui-tab-title">
+                <li {if condition="$param.status eq ''"}class="layui-this"{/if}><a href="{:url('cj/publish')}?id={$param.id}">{:lang('all')}</a></li>
+                <li {if condition="$param.status eq '1'"}class="layui-this"{/if}><a href="{:url('cj/publish')}?id={$param.id}&status=1">{:lang('admin/cj/collected_not')}</a></li>
+                <li {if condition="$param.status eq '2'"}class="layui-this"{/if}><a href="{:url('cj/publish')}?id={$param.id}&status=2">{:lang('admin/cj/collected')}</a></li>
+                <li {if condition="$param.status eq '3'"}class="layui-this"{/if}><a href="{:url('cj/publish')}?id={$param.id}&status=3">{:lang('admin/cj/published')}</a></li>
+            </ul>
+
+            <div class="layui-tab-content">
+                <div class="layui-tab-item layui-show">
+                    <div class="layui-btn-group">
+                        <a data-href="{:url('content_del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+                        <a data-href="{:url('content_del')}?ids=1&all=1" class="layui-btn layui-btn-primary j-ajax" confirm="{:lang('clear_confirm')}"><i class="layui-icon">&#xe640;</i>{:lang('clear')}</a>
+                        <a data-href="{:url('content_into')}?id={$param.id}" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe654;</i>{:lang('import')}</a>
+                        <a data-href="{:url('content_into')}?id={$param.id}&all=1" data-ajax="no" data-checkbox="no" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe654;</i>{:lang('import_all')}</a>
+                    </div>
+                    <table class="layui-table" lay-size="sm">
+                        <thead>
+                        <tr>
+                            <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                            <th width="50">{:lang('id')}</th>
+                            <th width="50">{:lang('status')}</th>
+                            <th width="250">{:lang('name')}</th>
+                            <th >{:lang('url')}</th>
+                            <th width="40">{:lang('opt')}</th>
+                        </tr>
+                        </thead>
+                        {volist name="list" id="vo"}
+                        <tr>
+                            <td><input type="checkbox" name="ids[]" value="{$vo.id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                            <td>{$vo.id}</td>
+                            <td>{if condition="$vo.status eq '1'"}{:lang('admin/cj/collected_not')}{elseif condition="$vo.status eq '2'"}{:lang('admin/cj/collected')}{else/}{:lang('admin/cj/published')}{/if}</td>
+                            <td>{$vo.title}</td>
+                            <td>{$vo.url}</td>
+                            <td>
+                                <a class="layui-badge-rim j-iframe " data-href="{:url('show?id='.$vo['id'])}" href="javascript:;" title="{:lang('view')}">{:lang('view')}</a>
+                            </td>
+                        </tr>
+                        {/volist}
+                        </tbody>
+                    </table>
+
+                    <div id="pages" class="center"></div>
+
+                </div>
+
+            </div>
+        </div>
+
+    </form>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+<script type="text/javascript">
+    var curUrl="{:url('cj/publish',$param)}";
+    layui.use(['laypage', 'layer'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+    });
+</script>
+
+</body>
+</html>

+ 64 - 0
application/admin/view_new/cj/show.html

@@ -0,0 +1,64 @@
+{include file="../../../application/admin/view_new/public/head" /}
+
+<div class="page-container p10">
+    <form class="layui-form layui-form-pane" method="post" action="">
+
+        <div class="layui-form-item">
+            <label class="layui-form-label">url:</label>
+            <div class="layui-input-block">
+                <input type="text" class="layui-input" value="{$info.url}" lay-verify="url" placeholder="" id="url" name="url">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">title:</label>
+            <div class="layui-input-block">
+                <input type="text" class="layui-input" value="{$info.title}" lay-verify="title" placeholder="" id="title" name="title">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">other:</label>
+            <div class="layui-input-block">
+                {volist name="$info.data" id="vo"}
+                    {$key}<input type="text" class="layui-input" value="{$vo}"><br>
+                {/volist}
+            </div>
+        </div>
+
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+
+            </div>
+        </div>
+    </form>
+
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    layui.use(['form', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery;
+
+        // 验证
+        form.verify({
+            link_name: function (value) {
+                if (value == "") {
+                    return "{:lang('name_empty')}";
+                }
+            },
+            link_url: function (value) {
+                if (value == "") {
+                    return "{:lang('link_empty')}";
+                }
+            }
+        });
+
+
+    });
+</script>
+
+</body>
+</html>

+ 29 - 0
application/admin/view_new/cj/show_url.html

@@ -0,0 +1,29 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+    <fieldset class="layui-elem-field">
+        <legend>{:lang('base_info')}</legend>
+        <div class="layui-field-box">
+            {volist name="urls" id="vo"}
+            <p>{$vo}</p>
+            <hr>
+            {/volist}
+        </div>
+    </fieldset>
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    layui.use(['form', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery;
+
+
+
+    });
+
+</script>
+
+</body>
+</html>

+ 122 - 0
application/admin/view_new/collect/actor.html

@@ -0,0 +1,122 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box">
+
+        <div class="mb10">
+            <div class="layui-input-inline w150 m5"><a href="javascript:;" data-id="" class="select_type red">{:lang('admin/collect/view_all_resource')}</a></div>
+            {volist name="type" id="vo"}
+            <div class="layui-input-inline w150 m5">
+                <a href="javascript:;" data-id="{$vo.type_id}" class="select_type">{$vo.type_name|htmlspecialchars}</a>
+                <a id="{$param['cjflag']|mac_filter_xss}_{$vo.type_id}" data-href="{:url('index/select')}?tab=actor&col={$param['cjflag']|mac_filter_xss}_{$vo.type_id}&ids=1&tpl=select_type&refresh=no&url=collect/bind" data-width="270" data-height="100" class="j-select" >
+                    {if condition="$vo.isbind eq 1"}
+                    <span class="red">[{$vo.local_type_name}]</span>
+                    {else}
+                    [{:lang('bind')}]
+                    {/if}
+                </a>
+            </div>
+            {/volist}
+
+        </div>
+
+        <div class="">
+            <form class="layui-form " method="">
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_filter_xss}">
+                </div>
+                <button type="button" class="layui-btn mgl-20 j-btn" >{:lang('btn_search')}</button>
+            </form>
+        </div>
+
+    </div>
+
+
+    <form class="layui-form " method="post" id="pageListForm">
+        <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th >{:lang('name')}</th>
+                <th width="60">{:lang('type')}</th>
+                <th width="60">{:lang('sex')}</th>
+                <th width="140">{:lang('time')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.actor_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.actor_name|htmlspecialchars}</td>
+                <td>{$vo.type_name|htmlspecialchars}</td>
+                <td>{$vo.actor_sex|htmlspecialchars}</td>
+                <td>{$vo.actor_time|mac_day='color'}</td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+        <div class="layui-btn-group">
+            {php}
+                $p1 = $param;
+                unset($p1['ac']);
+                $p1_str = http_build_query($p1);
+            {/php}
+            <a data-href="{:url('api')}?{$p1_str}&ac=cjsel" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_select')}</a>
+            <a data-href="{:url('api')}?{$p1_str}&h=24&ac=cjday" data-checkbox="no" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_today')}</a>
+            <a data-href="{:url('api')}?{$p1_str}&ac=cjall" data-checkbox="no" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_all')}</a>
+        </div>
+
+        <div id="pages" class="center"></div>
+    </form>
+
+</div>
+
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    var curUrl="{:url('api')}?{$param_str}";
+    layui.use(['laypage', 'layer','form'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer,
+                form = layui.form;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+
+
+        $('.j-btn').click(function(){
+           var wd = $('input[name="wd"]').val();
+            var url = changeParam(curUrl,'wd',wd);
+            location.href = url.replace('%7Bpage%7D',1).replace('%7Blimit%7D','');
+        });
+
+        $('.select_type').click(function(){
+            var t = $(this).attr('data-id');
+            var url = changeParam(curUrl,'t',t);
+            location.href = url.replace('%7Bpage%7D',1).replace('%7Blimit%7D','');
+        });
+
+    });
+    function onSubmitResult(res)
+    {
+        if(res.data.st==1){
+            $('#'+res.data.id).html("<span class=red>[{:lang('unbind')}]</span>");
+        }
+        else{
+            $('#'+res.data.id).html("[{:lang('bind')}]);
+        }
+    }
+</script>
+</body>
+</html>

+ 128 - 0
application/admin/view_new/collect/art.html

@@ -0,0 +1,128 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box">
+
+        <div class="mb10">
+            <div class="layui-input-inline w150 m5"><a href="javascript:;" data-id="" class="select_type red">{:lang('admin/collect/view_all_resource')}</a></div>
+            {volist name="type" id="vo"}
+            <div class="layui-input-inline w150 m5">
+                <a href="javascript:;" data-id="{$vo.type_id}" class="select_type">{$vo.type_name|htmlspecialchars}</a>
+                <a id="{$param['cjflag']|mac_filter_xss}_{$vo.type_id}" data-href="{:url('index/select')}?tab=art&col={$param['cjflag']|mac_filter_xss}_{$vo.type_id}&ids=1&tpl=select_type&refresh=no&url=collect/bind" data-width="270" data-height="100" class="j-select" >
+                    {if condition="$vo.isbind eq 1"}
+                    <span class="red">[{$vo.local_type_name}]</span>
+                    {else}
+                    [{:lang('bind')}]
+                    {/if}
+                </a>
+            </div>
+            {/volist}
+
+        </div>
+
+        <div class="">
+            <form class="layui-form " method="">
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" id="wd" name="wd" value="{$param['wd']|mac_filter_xss}">
+                </div>
+                <button type="button" class="layui-btn mgl-20 j-btn" >{:lang('btn_search')}</button>
+            </form>
+        </div>
+
+    </div>
+
+
+    <form class="layui-form " method="post" id="pageListForm">
+        <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th >{:lang('name')}</th>
+                <th width="60">{:lang('type')}</th>
+                <th width="60">{:lang('from')}</th>
+                <th width="140">{:lang('time')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.art_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.art_name|htmlspecialchars}</td>
+                <td>{$vo.type_name|htmlspecialchars}</td>
+                <td>{$vo.art_from|htmlspecialchars}</td>
+                <td>{$vo.art_time|mac_day='color'}</td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+        <div class="layui-btn-group">
+            {php}
+                $p1 = $param;
+                unset($p1['ac']);
+                $p1_str = http_build_query($p1);
+            {/php}
+            <a data-href="{:url('api')}?{$p1_str}&ac=cjsel" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_select')}</a>
+            <a data-href="{:url('api')}?{$p1_str}&h=24&ac=cjday" data-checkbox="no" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_today')}</a>
+            <a data-href="{:url('api')}?{$p1_str}&ac=cjall" data-checkbox="no" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_all')}</a>
+        </div>
+
+        <div id="pages" class="center"></div>
+    </form>
+
+</div>
+
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    var curUrl="{:url('api')}?{$param_str}";
+    layui.use(['laypage', 'layer','form'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer,
+                form = layui.form;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+
+        $('#wd').on('keydown', function (event) {
+            if (event.keyCode == 13) {
+                $('.j-btn').click();
+                return false;
+            }
+        });
+
+        $('.j-btn').click(function(){
+           var wd = $('input[name="wd"]').val();
+            var url = changeParam(curUrl,'wd',wd);
+            location.href = url.replace('%7Bpage%7D',1).replace('%7Blimit%7D','');
+        });
+
+        $('.select_type').click(function(){
+            var t = $(this).attr('data-id');
+            var url = changeParam(curUrl,'t',t);
+            location.href = url.replace('%7Bpage%7D',1).replace('%7Blimit%7D','');
+        });
+
+    });
+    function onSubmitResult(res)
+    {
+        if(res.data.st==1){
+            $('#'+res.data.id).html('<span class="red">['+ res.data.local_type_name +']</span>');
+        }
+        else{
+            $('#'+res.data.id).html("[{:lang('bind')}]");
+        }
+    }
+</script>
+</body>
+</html>

+ 80 - 0
application/admin/view_new/collect/index.html

@@ -0,0 +1,80 @@
+{include file="../../../application/admin/view_new/public/head" /}
+
+<div class="page-container p10">
+
+    <div class="my-toolbar-box">
+
+        <div class="layui-btn-group">
+            <a data-href="{:url('info')}" class="layui-btn layui-btn-primary j-iframe" data-full="1"><i class="layui-icon">&#xe654;</i>{:lang('add')}</a>
+            <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+            <a data-href="{:url('clearbind')}" class="layui-btn layui-btn-primary j-page-btns confirm" data-checkbox="false" data-ajax="yes"><i class="layui-icon">&#xe640;</i>{:lang('admin/collect/clear_bind')}</a>
+
+                {if condition="$collect_break_vod neq ''"}
+                <a href="{:url('load')}?flag=vod" class="layui-btn layui-btn-danger ">【进入视频断点采集】</a>
+                {/if}
+                {if condition="$collect_break_art neq ''"}
+                <a href="{:url('load')}?flag=art" class="layui-btn layui-btn-danger ">【进入文章断点采集】</a>
+                {/if}
+                {if condition="$collect_break_actor neq ''"}
+                <a href="{:url('load')}?flag=actor" class="layui-btn layui-btn-danger ">【进入明星断点采集】</a>
+                {/if}
+                {if condition="$collect_break_role neq ''"}
+                <a href="{:url('load')}?flag=role" class="layui-btn layui-btn-danger ">【进入角色断点采集】</a>
+                {/if}
+                {if condition="$collect_break_website neq ''"}
+                <a href="{:url('load')}?flag=website" class="layui-btn layui-btn-danger ">【进入网址断点采集】</a>
+                {/if}
+
+        </div>
+
+    </div>
+
+    <form class="layui-form " method="post" id="pageListForm">
+        <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="100">{:lang('id')}</th>
+                <th width="100">接口类型</th>
+                <th width="100">资源类型</th>
+                <th>资源站</th>
+                <th width="260">采集选项</th>
+                <th width="180">{:lang('opt')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.collect_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.collect_id}</td>
+                <td>{if condition="$vo['collect_type'] eq 1"}xml{else/}json{/if} </td>
+                <td>{$vo.collect_mid|mac_get_mid_text}</td>
+                <td><a class="layui-badge-rim" href="{:url('api')}?{:http_build_query(['ac'=>'list','cjflag'=>md5($vo.collect_url),'cjurl'=>$vo.collect_url,'h'=>'','t'=>'','ids'=>'','wd'=>'','type'=>$vo.collect_type,'mid'=>$vo.collect_mid,'opt'=>$vo.collect_opt,'sync_pic_opt'=>$vo.collect_sync_pic_opt,'filter'=>$vo.collect_filter,'filter_from'=>$vo.collect_filter_from,'filter_year'=>$vo.collect_filter_year,'param'=>base64_encode($vo.collect_param)])}" title="进入资源库">【{$vo.collect_name}】{$vo.collect_url}</a></td>
+                <td>
+                    <a class="layui-badge-rim" href="{:url('api')}?{:http_build_query(['ac'=>'cj','cjflag'=>md5($vo.collect_url),'cjurl'=>$vo.collect_url,'h'=>'24','t'=>'','ids'=>'','wd'=>'','type'=>$vo.collect_type,'mid'=>$vo.collect_mid,'opt'=>$vo.collect_opt,'sync_pic_opt'=>$vo.collect_sync_pic_opt,'filter'=>$vo.collect_filter,'filter_from'=>$vo.collect_filter_from,'filter_year'=>$vo.collect_filter_year,'param'=>base64_encode($vo.collect_param)])}" title="采集当天">采集当天</a>
+                    <a class="layui-badge-rim" href="{:url('api')}?{:http_build_query(['ac'=>'cj','cjflag'=>md5($vo.collect_url),'cjurl'=>$vo.collect_url,'h'=>'168','t'=>'','ids'=>'','wd'=>'','type'=>$vo.collect_type,'mid'=>$vo.collect_mid,'opt'=>$vo.collect_opt,'sync_pic_opt'=>$vo.collect_sync_pic_opt,'filter'=>$vo.collect_filter,'filter_from'=>$vo.collect_filter_from,'filter_year'=>$vo.collect_filter_year,'param'=>base64_encode($vo.collect_param)])}" title="采集本周">采集本周</a>
+                    <a class="layui-badge-rim" href="{:url('api')}?{:http_build_query(['ac'=>'cj','cjflag'=>md5($vo.collect_url),'cjurl'=>$vo.collect_url,'h'=>'','t'=>'','ids'=>'','wd'=>'','type'=>$vo.collect_type,'mid'=>$vo.collect_mid,'opt'=>$vo.collect_opt,'sync_pic_opt'=>$vo.collect_sync_pic_opt,'filter'=>$vo.collect_filter,'filter_from'=>$vo.collect_filter_from,'filter_year'=>$vo.collect_filter_year,'param'=>base64_encode($vo.collect_param)])}" title="采集所有">采集所有</a>
+                </td>
+                <td>
+                    <a class="layui-badge-rim j-iframe" data-href="{:url('info?id='.$vo['collect_id'])}" data-width="800px" data-height="610px" href="javascript:;" title="{:lang('edit')}">{:lang('edit')}</a>
+                    <a class="layui-badge-rim j-tr-del" data-href="{:url('del?ids='.$vo['collect_id'])}" href="javascript:;" title="{:lang('del')}">{:lang('del')}</a>
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+        <div id="pages" class="center"></div>
+    </form>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+<script type="text/javascript">
+    layui.use(['laypage', 'layer'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer;
+
+
+    });
+</script>
+</body>
+</html>

+ 156 - 0
application/admin/view_new/collect/info.html

@@ -0,0 +1,156 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+    <form class="layui-form layui-form-pane" method="post" action="" id="movementTable">
+        <input id="collect_id" name="collect_id" type="hidden" value="{$info.collect_id}">
+        <input type="hidden" name="__token__" value="{$Request.token}" />
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('admin/collect/name')}:</label>
+            <div class="layui-input-block  ">
+                <input type="text" class="layui-input" value="{$info.collect_name}" placeholder="" id="collect_name" name="collect_name">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('admin/collect/api_url')}:</label>
+            <div class="layui-input-block">
+                <input type="text" class="layui-input" value="{$info.collect_url}" placeholder="" id="collect_url" name="collect_url">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('admin/collect/attach_param')}:</label>
+            <div class="layui-input-block">
+                <input type="text" class="layui-input" value="{$info.collect_param}" placeholder="" id="collect_param" name="collect_param">
+            </div>
+            <div class="layui-form-mid layui-word-aux" style="margin-left:110px; ">{:lang('admin/collect/attach_param_tip')}</div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('admin/collect/api_type')}:</label>
+            <div class="layui-input-block">
+                <input name="collect_type" type="radio" value="1" title="xml" {if condition="$info['collect_type'] eq 1"}checked {/if}>
+                <input name="collect_type" type="radio" value="2" title="json" {if condition="$info['collect_type'] neq 1"}checked {/if}>
+            </div>
+        </div>
+
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('admin/collect/data_type')}:</label>
+            <div class="layui-input-block">
+                <input name="collect_mid" lay-filter="collect_mid" type="radio" value="1" title="{:lang('vod')}" {if condition="$info['collect_mid'] eq 1"}checked {/if}>
+                <input name="collect_mid" lay-filter="collect_mid" type="radio" value="2" title="{:lang('art')}" {if condition="$info['collect_mid'] eq 2"}checked {/if}>
+                <input name="collect_mid" lay-filter="collect_mid" type="radio" value="8" title="{:lang('actor')}" {if condition="$info['collect_mid'] eq 8"}checked {/if}>
+                <input name="collect_mid" lay-filter="collect_mid" type="radio" value="9" title="{:lang('role')}" {if condition="$info['collect_mid'] eq 9"}checked {/if}>
+                <input name="collect_mid" lay-filter="collect_mid" type="radio" value="11" title="{:lang('website')}" {if condition="$info['collect_mid'] eq 11"}checked {/if}>
+            </div>
+        </div>
+
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('admin/collect/data_opt')}:</label>
+            <div class="layui-input-block">
+                <input name="collect_opt" type="radio" value="0" title="{:lang('admin/collect/add_update')}" {if condition="$info['collect_opt'] eq 0"}checked {/if}>
+                <input name="collect_opt" type="radio" value="1" title="{:lang('admin/collect/add')}" {if condition="$info['collect_opt'] eq 1"}checked {/if}>
+                <input name="collect_opt" type="radio" value="2" title="{:lang('admin/collect/update')}" {if condition="$info['collect_opt'] eq 2"}checked {/if}>
+            </div>
+            <div class="layui-form-mid layui-word-aux" style="">{:lang('admin/collect/data_opt_tip')}</div>
+        </div>
+
+        <div class="layui-form-item row_filer" {if condition="$info['collect_mid'] neq '1'"} style="display:none;" {/if}>
+            <label class="layui-form-label">{:lang('admin/collect/url_filter')}:</label>
+            <div class="layui-input-block">
+                <input name="collect_filter" type="radio" value="0" title="{:lang('admin/collect/no_filter')}" {if condition="$info['collect_filter'] eq 0"}checked {/if}>
+                <input name="collect_filter" type="radio" value="1" title="{:lang('admin/collect/add_update')}" {if condition="$info['collect_filter'] eq 1"}checked {/if}>
+                <input name="collect_filter" type="radio" value="2" title="{:lang('admin/collect/add')}" {if condition="$info['collect_filter'] eq 2"}checked {/if}>
+                <input name="collect_filter" type="radio" value="3" title="{:lang('admin/collect/update')}" {if condition="$info['collect_filter'] eq 3"}checked {/if}>
+            </div>
+        </div>
+        <div class="layui-form-item row_filer" {if condition="$info['collect_mid'] neq '1'"} style="display:none;" {/if}>
+            <label class="layui-form-label">{:lang('admin/collect/filter_code')}:</label>
+            <div class="layui-input-block">
+                <input type="text" class="layui-input" value="{$info.collect_filter_from}" placeholder="{:lang('admin/collect/filter_code_tip')}" id="collect_filter_from" name="collect_filter_from">
+            </div>
+        </div>
+        <div class="layui-form-item row_filer" {if condition="$info['collect_mid'] neq '1'"} style="display:none;" {/if}>
+            <label class="layui-form-label">{:lang('admin/collect/filter_year')}:</label>
+            <div class="layui-input-block">
+                <input type="text" class="layui-input" value="{$info.collect_filter_year}" placeholder="{:lang('admin/collect/filter_year_tip')}" id="collect_filter_year" name="collect_filter_year">
+            </div>
+        </div>
+        <div class="layui-form-item row_filer">
+            <label class="layui-form-label">{:lang('pic_sync')}:</label>
+            <div class="layui-input-block">
+                <input name="collect_sync_pic_opt" type="radio" value="0" title="{:lang('follow_global')}" {if condition="$info['collect_sync_pic_opt'] eq 0"}checked {/if}>
+                <input name="collect_sync_pic_opt" type="radio" value="1" title="{:lang('open')}" {if condition="$info['collect_sync_pic_opt'] eq 1"}checked {/if}>
+                <input name="collect_sync_pic_opt" type="radio" value="2" title="{:lang('close')}" {if condition="$info['collect_sync_pic_opt'] eq 2"}checked {/if}>
+            </div>
+        </div>
+
+        <br>
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+                <button class="layui-btn layui-btn-normal" type="button" id="btnTest" >{:lang('test')}</button>
+                <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit" data-child="true">{:lang('btn_save')}</button>
+                <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+            </div>
+        </div>
+    </form>
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    layui.use(['form', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery;
+
+        // 验证
+        form.verify({
+            collect_name: function (value) {
+                if (value == "") {
+                    return "{:lang('name_empty')}";
+                }
+            },
+            collect_url: function (value) {
+                if (value == "") {
+                    return "{:lang('url_empty')}";
+                }
+            }
+        });
+
+
+        $('#btnTest').click(function() {
+            var that = $(this);
+            var data = 'cjurl='+ $('#collect_url').val() + '&cjflag='+ '&ac=list';
+
+            $.post("{:url('test')}",data,function(r){
+                if(r.code==1){
+                    layer.msg( "{:lang('admin/collect/test_ok')}" + ':'+ r.msg ,{time:1800});
+                    if(r.msg=='json'){
+                        $("input[name='collect_type'][value=2]").attr("checked",true);
+                    }
+                    else{
+                        $("input[name='collect_type'][value=1]").attr("checked",true);
+                    }
+                    form.render('radio');
+                }
+                else{
+                    layer.msg(r.msg,{time:1800});
+                }
+            });
+
+        });
+
+        form.on('radio(collect_mid)',function(data){
+            $('.row_filer').hide();
+            if(data.value=='1'){
+                $('.row_filer').show();
+            }
+        });
+
+    });
+
+
+
+
+</script>
+
+</body>
+</html>

+ 122 - 0
application/admin/view_new/collect/role.html

@@ -0,0 +1,122 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box">
+
+        <div class="mb10">
+            <div class="layui-input-inline w150 m5"><a href="javascript:;" data-id="" class="select_type red">{:lang('admin/collect/view_all_resource')}</a></div>
+            {volist name="type" id="vo"}
+            <div class="layui-input-inline w150 m5">
+                <a href="javascript:;" data-id="{$vo.type_id}" class="select_type">{$vo.type_name|htmlspecialchars}</a>
+                <a id="{$param['cjflag']|mac_filter_xss}_{$vo.type_id}" data-href="{:url('index/select')}?tab=role&col={$param['cjflag']|mac_filter_xss}_{$vo.type_id}&ids=1&tpl=select_type&refresh=no&url=collect/bind" data-width="270" data-height="100" class="j-select" >
+                    {if condition="$vo.isbind eq 1"}
+                    <span class="red">[{$vo.local_type_name}]</span>
+                    {else}
+                    [{:lang('bind')}]
+                    {/if}
+                </a>
+            </div>
+            {/volist}
+
+        </div>
+
+        <div class="">
+            <form class="layui-form " method="">
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_filter_xss}">
+                </div>
+                <button type="button" class="layui-btn mgl-20 j-btn" >{:lang('btn_search')}</button>
+            </form>
+        </div>
+
+    </div>
+
+
+    <form class="layui-form " method="post" id="pageListForm">
+        <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th >{:lang('name')}</th>
+                <th width="200">{:lang('vod')}</th>
+                <th width="100">{:lang('actor')}</th>
+                <th width="140">{:lang('time')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.role_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.role_name|htmlspecialchars}</td>
+                <td>{$vo.vod_name|htmlspecialchars}</td>
+                <td>{$vo.role_actor|htmlspecialchars}</td>
+                <td>{$vo.role_time|mac_day='color'}</td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+        <div class="layui-btn-group">
+            {php}
+                $p1 = $param;
+                unset($p1['ac']);
+                $p1_str = http_build_query($p1);
+            {/php}
+            <a data-href="{:url('api')}?{$p1_str}&ac=cjsel" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_select')}</a>
+            <a data-href="{:url('api')}?{$p1_str}&h=24&ac=cjday" data-checkbox="no" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_today')}</a>
+            <a data-href="{:url('api')}?{$p1_str}&ac=cjall" data-checkbox="no" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_all')}</a>
+        </div>
+
+        <div id="pages" class="center"></div>
+    </form>
+
+</div>
+
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    var curUrl="{:url('api')}?{$param_str}";
+    layui.use(['laypage', 'layer','form'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer,
+                form = layui.form;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+
+
+        $('.j-btn').click(function(){
+           var wd = $('input[name="wd"]').val();
+            var url = changeParam(curUrl,'wd',wd);
+            location.href = url.replace('%7Bpage%7D',1).replace('%7Blimit%7D','');
+        });
+
+        $('.select_type').click(function(){
+            var t = $(this).attr('data-id');
+            var url = changeParam(curUrl,'t',t);
+            location.href = url.replace('%7Bpage%7D',1).replace('%7Blimit%7D','');
+        });
+
+    });
+    function onSubmitResult(res)
+    {
+        if(res.data.st==1){
+            $('#'+res.data.id).html("<span class=red>[{:lang('unbind')}]</span>");
+        }
+        else{
+            $('#'+res.data.id).html("[{:lang('bind')}]");
+        }
+    }
+</script>
+</body>
+</html>

+ 153 - 0
application/admin/view_new/collect/timing.html

@@ -0,0 +1,153 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<script language="javascript">
+    var b=false;
+    var iv_cj,iv_makeinfo,iv_makeindex,iv_maketype;
+    var urln=0,typeids='{$vod_type_ids_today}';
+    var cjUrl = "{:url('collect/apis')}";
+
+    $(function(){
+        $("#btnGO").click(function(){
+            var time = new Array();
+            time['cj'] = Number($("#ds_cj").val());
+            time['makeinfo'] = Number($("#ds_makeinfo").val());
+            time['makeindex'] = Number($("#ds_makeindex").val());
+            time['maketype'] = Number($("#ds_maketype").val());
+            if(time['cj'] > 0){
+                iv_cj = window.setInterval('cj()',1000*60* time['cj']);
+            }
+            if(time['makeinfo'] > 0){
+                iv_makeinfo = window.setInterval('makeinfo()',1000*60* time['makeinfo']);
+            }
+            if(time['makeindex'] > 0){
+                iv_makeindex = window.setInterval('makeindex()',1000*60* time['makeindex']);
+            }
+            if(time['maketype'] > 0){
+                iv_maketype = window.setInterval('maketype()',1000*60* time['maketype']);
+            }
+            $("#dsinfo").css("display",'');
+            $(this).val('执行中...');
+            $("#btnGO").attr('disabled',true);
+            $("#btnCancel").attr('disabled',false);
+            $b=true;
+        });
+        $("#btnCancel").click(function(){
+            window.clearInterval(iv_cj);
+            window.clearInterval(iv_makeinfo);
+            window.clearInterval(iv_makeindex);
+            window.clearInterval(iv_maketype);
+            $("#sp_cj").html('');
+            $("#sp_makeinfo").html('');
+            $("#sp_makeindex").html('');
+            $("#sp_maketype").html('');
+            $("#dsinfo").css("display",'none');
+            $("#btnGO").val('执行任务');
+            $("#btnGO").attr('disabled',false);
+            $("#btnCancel").attr('disabled',true);
+            $b=false;
+        });
+    });
+    function cj()
+    {
+        var urlc=$("#ds_url option:selected").length;
+        $("#ds_url option:selected").each(function(k,v) {
+            if(urln < urlc){
+                if(urln==k){
+                    $("#sp_cj").html("<iframe width='100%' height='200' src='"+v.value+"' scrolling='auto'></iframe>");
+                    urln++;
+                    return false;
+                }
+            }
+            else{
+                urln=0;
+            }
+        });
+    }
+    function makeinfo()
+    {
+        $("#sp_makeinfo").html("<iframe width='100%' height='200' src='{:url('make/make')}?ac=info&tab=vod&ac2=nomake' scrolling='auto'></iframe>");
+    }
+    function makeindex()
+    {
+        $("#sp_makeindex").html("<iframe width='100%' height='200' src='{:url('make/make')}?ac=index' scrolling='auto'></iframe>");
+    }
+    function maketype()
+    {
+        if(typeids==''){
+            $("#sp_maketype").html("今日没有更新的数据,所以栏目无需更新!");
+        }
+        else{
+            $("#sp_maketype").html("<iframe width='100%' height='200' src='{:url('make/make')}?ac=type&tab=vod&vodtype="+typeids+"' scrolling='auto'></iframe>");
+        }
+    }
+    function reflogin()
+    {
+        $("#sp_reflogin").html("<iframe width='100%' height='100' src='{:url('index/welcome')}' scrolling='auto' style='display:none'></iframe>");
+    }
+
+</script>
+
+<div class="page-container p10">
+    <div style="width:650px; height:420px; margin:0 auto;">
+
+        <blockquote class="layui-elem-quote">定时采集生成插件WEB挂机版<br>注:不需要定时操作的模块,请填写0</blockquote>
+
+
+        <table style="">
+            <tr>
+                <td width="50%" rowspan="4"> <div style="">  </div></td>
+                <td>采集抓取频率(分钟/次):</td>
+                <td><input id="ds_cj" name="ds_cj" type="text" class="layui-input w50" value="5" /></td>
+            </tr>
+            <tr>
+                <td>内容生成频率(分钟/次): </td>
+                <td><input id="ds_makeinfo" name="ds_makeinfo" class="layui-input w50" type="text"  value="6" /></td>
+            </tr>
+            <tr>
+                <td>首页生成频率(分钟/次): </td>
+                <td><input id="ds_makeindex" name="ds_makeindex" class="layui-input w50" type="text"  value="20"/></td>
+            </tr>
+            <tr>
+                <td>栏目生成频率(分钟/次): </td>
+                <td><input id="ds_maketype" name="ds_maketype" class="layui-input w50" type="text" value="120"/></td>
+            </tr>
+            <tr>
+                <td colspan="2" style="text-align:center" class="p10">
+                    <input type="button" id="btnGO" class="layui-btn" value="执行任务"/>&nbsp;
+                    <input type="button" id="btnCancel" class="layui-btn layui-btn-primary" value="停止执行" disabled=true/>
+                </td>
+            </tr>
+        </table>
+
+    </div>
+
+    <div style="width:100%;height:50px;"></div>
+    <div id="dsinfo" style="width:650px;margin:0 auto;display:none;">
+        <table border='0' cellpadding='0' cellspacing='0' width='760' height='100%' align='center' style="border:1px solid #CCCCCC; font-size:12px">
+            <tr><td valign='top' style="background:#ECF5FF">视频_定时采集</td></tr>
+            <tr><td valign='top' id='sp_cj' height='150'>等侍中...</td></tr>
+            <tr><td valign='top' height='1' style="background:#e8e8e8"></td></tr>
+            <tr><td valign='top' style="background:#ECF5FF">视频_定时生成内容页</td></tr>
+            <tr><td valign='top' id='sp_makeinfo' height='150'>等侍中...</td></tr>
+            <tr><td valign='top' height='1' style="background:#e8e8e8"></td></tr>
+            <tr><td valign='top' style="background:#ECF5FF">视频_定时生成首页</td></tr>
+            <tr><td valign='top' id='sp_makeindex' height='150'>等侍中...</td></tr>
+            <tr><td valign='top' height='1' style="background:#e8e8e8"></td></tr>
+            <tr><td valign='top' style="background:#ECF5FF">视频_定时生成栏目页</td></tr>
+            <tr><td valign='top' id='sp_maketype' height='150'>等侍中...</td></tr>
+        </table>
+        <span id="sp_reflogin"></span>
+    </div>
+
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+<script type="text/javascript">
+    layui.use(['laypage', 'layer'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer;
+
+
+    });
+</script>
+</body>
+</html>

+ 40 - 0
application/admin/view_new/collect/union.html

@@ -0,0 +1,40 @@
+{include file="../../../application/admin/view_new/public/head" /}
+
+<div class="page-container p10">
+
+    <div class="my-toolbar-box">
+        <div class="layui-btn-group">
+            {if condition="$collect_break_vod neq ''"}
+            <a href="{:url('load')}?flag=vod" class="layui-btn layui-btn-danger ">【进入视频断点采集】</a>
+            {/if}
+            {if condition="$collect_break_art neq ''"}
+            <a href="{:url('load')}?flag=art" class="layui-btn layui-btn-danger ">【进入文章断点采集】</a>
+            {/if}
+            {if condition="$collect_break_actor neq ''"}
+            <a href="{:url('load')}?flag=actor" class="layui-btn layui-btn-danger ">【进入明星断点采集】</a>
+            {/if}
+            {if condition="$collect_break_role neq ''"}
+            <a href="{:url('load')}?flag=role" class="layui-btn layui-btn-danger ">【进入角色断点采集】</a>
+            {/if}
+            {if condition="$collect_break_website neq ''"}
+            <a href="{:url('load')}?flag=website" class="layui-btn layui-btn-danger ">【进入网址断点采集】</a>
+            {/if}
+        </div>
+    </div>
+    <hr>
+
+    <script src="" charset="utf-8"></script>
+
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+<script type="text/javascript">
+    layui.use(['laypage', 'layer'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer;
+
+
+    });
+</script>
+</body>
+</html>

+ 128 - 0
application/admin/view_new/collect/vod.html

@@ -0,0 +1,128 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box">
+
+        <div class="mb10">
+            <div class="layui-input-inline w150 m5"><a href="javascript:;" data-id="" class="select_type red">{:lang('admin/collect/view_all_resource')}</a></div>
+            {volist name="type" id="vo"}
+            <div class="layui-input-inline w150 m5">
+                <a href="javascript:;" data-id="{$vo.type_id}" class="select_type">{$vo.type_name|htmlspecialchars}</a>
+                <a id="{$param['cjflag']|mac_filter_xss}_{$vo.type_id}" data-href="{:url('index/select')}?tab=vod&col={$param['cjflag']|mac_filter_xss}_{$vo.type_id}&ids=1&tpl=select_type&refresh=no&url=collect/bind" data-width="270" data-height="100" class="j-select" >
+                    {if condition="$vo.isbind eq 1"}
+                    <span class="red">[{$vo.local_type_name}]</span>
+                    {else}
+                    [{:lang('bind')}]
+                    {/if}
+                </a>
+            </div>
+            {/volist}
+
+        </div>
+
+        <div class="">
+            <form class="layui-form " method="">
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" id="wd" name="wd" value="{$param['wd']|mac_filter_xss}">
+                </div>
+                <button type="button" class="layui-btn mgl-20 j-btn" >{:lang('btn_search')}</button>
+            </form>
+        </div>
+
+    </div>
+
+
+    <form class="layui-form " method="post" id="pageListForm">
+        <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th >{:lang('name')}</th>
+                <th width="60">{:lang('type')}</th>
+                <th width="60">{:lang('from')}</th>
+                <th width="140">{:lang('time')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.vod_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.vod_name|htmlspecialchars}</td>
+                <td>{$vo.type_name|htmlspecialchars}</td>
+                <td>{$vo.vod_play_from|htmlspecialchars}</td>
+                <td>{$vo.vod_time|mac_day='color'}</td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+        <div class="layui-btn-group">
+            {php}
+                $p1 = $param;
+                unset($p1['ac']);
+                $p1_str = http_build_query($p1);
+            {/php}
+            <a data-href="{:url('api')}?{$p1_str}&ac=cjsel" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_select')}</a>
+            <a data-href="{:url('api')}?{$p1_str}&h=24&ac=cjday" data-checkbox="no" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_today')}</a>
+            <a data-href="{:url('api')}?{$p1_str}&ac=cjall" data-checkbox="no" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_all')}</a>
+        </div>
+
+        <div id="pages" class="center"></div>
+    </form>
+
+</div>
+
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    var curUrl="{:url('api')}?{$param_str}";
+    layui.use(['laypage', 'layer','form'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer,
+                form = layui.form;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+
+        $('#wd').on('keydown', function (event) {
+            if (event.keyCode == 13) {
+                $('.j-btn').click();
+                return false;
+            }
+        });
+
+        $('.j-btn').click(function(){
+           var wd = $('input[name="wd"]').val();
+            var url = changeParam(curUrl,'wd',wd);
+            location.href = url.replace('%7Bpage%7D',1).replace('%7Blimit%7D','');
+        });
+
+        $('.select_type').click(function(){
+            var t = $(this).attr('data-id');
+            var url = changeParam(curUrl,'t',t);
+            location.href = url.replace('%7Bpage%7D',1).replace('%7Blimit%7D','');
+        });
+
+    });
+    function onSubmitResult(res)
+    {
+        if(res.data.st==1){
+            $('#'+res.data.id).html('<span class="red">['+ res.data.local_type_name +']</span>');
+        }
+        else{
+            $('#'+res.data.id).html("[{:lang('bind')}]");
+        }
+    }
+</script>
+</body>
+</html>

+ 122 - 0
application/admin/view_new/collect/website.html

@@ -0,0 +1,122 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box">
+
+        <div class="mb10">
+            <div class="layui-input-inline w150 m5"><a href="javascript:;" data-id="" class="select_type red">{:lang('admin/collect/view_all_resource')}</a></div>
+            {volist name="type" id="vo"}
+            <div class="layui-input-inline w150 m5">
+                <a href="javascript:;" data-id="{$vo.type_id}" class="select_type">{$vo.type_name|htmlspecialchars}</a>
+                <a id="{$param['cjflag']|mac_filter_xss}_{$vo.type_id}" data-href="{:url('index/select')}?tab=website&col={$param['cjflag']|mac_filter_xss}_{$vo.type_id}&ids=1&tpl=select_type&refresh=no&url=collect/bind" data-width="270" data-height="100" class="j-select" >
+                    {if condition="$vo.isbind eq 1"}
+                    <span class="red">[{$vo.local_type_name}]</span>
+                    {else}
+                    [{:lang('bind')}]
+                    {/if}
+                </a>
+            </div>
+            {/volist}
+
+        </div>
+
+        <div class="">
+            <form class="layui-form " method="">
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_filter_xss}">
+                </div>
+                <button type="button" class="layui-btn mgl-20 j-btn" >{:lang('btn_search')}</button>
+            </form>
+        </div>
+
+    </div>
+
+
+    <form class="layui-form " method="post" id="pageListForm">
+        <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th >{:lang('name')}</th>
+                <th width="60">{:lang('type')}</th>
+                <th width="60">{:lang('area')}</th>
+                <th width="140">{:lang('time')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.website_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.website_name|htmlspecialchars}</td>
+                <td>{$vo.type_name|htmlspecialchars}</td>
+                <td>{$vo.website_area|htmlspecialchars}</td>
+                <td>{$vo.website_time|mac_day='color'}</td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+        <div class="layui-btn-group">
+            {php}
+                $p1 = $param;
+                unset($p1['ac']);
+                $p1_str = http_build_query($p1);
+            {/php}
+            <a data-href="{:url('api')}?{$p1_str}&ac=cjsel" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_select')}</a>
+            <a data-href="{:url('api')}?{$p1_str}&h=24&ac=cjday" data-checkbox="no" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_today')}</a>
+            <a data-href="{:url('api')}?{$p1_str}&ac=cjall" data-checkbox="no" data-ajax="no" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe654;</i>{:lang('admin/collect/cj_all')}</a>
+        </div>
+
+        <div id="pages" class="center"></div>
+    </form>
+
+</div>
+
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    var curUrl="{:url('api')}?{$param_str}";
+    layui.use(['laypage', 'layer','form'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer,
+                form = layui.form;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+
+
+        $('.j-btn').click(function(){
+           var wd = $('input[name="wd"]').val();
+            var url = changeParam(curUrl,'wd',wd);
+            location.href = url.replace('%7Bpage%7D',1).replace('%7Blimit%7D','');
+        });
+
+        $('.select_type').click(function(){
+            var t = $(this).attr('data-id');
+            var url = changeParam(curUrl,'t',t);
+            location.href = url.replace('%7Bpage%7D',1).replace('%7Blimit%7D','');
+        });
+
+    });
+    function onSubmitResult(res)
+    {
+        if(res.data.st==1){
+            $('#'+res.data.id).html("<span class=red>[{:lang('unbind')}]</span>");
+        }
+        else{
+            $('#'+res.data.id).html("[{:lang('bind')}]");
+        }
+    }
+</script>
+</body>
+</html>

+ 134 - 0
application/admin/view_new/comment/index.html

@@ -0,0 +1,134 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box" >
+        <div class=" mb10">
+            <form class="layui-form " method="post" action="{:url('data')}">
+                <div class="layui-input-inline w100">
+                    <select name="status">
+                        <option value="">{:lang('select_status')}</option>
+                        <option value="0" {if condition="$param['status'] == '0'"}selected {/if}>{:lang('reviewed_not')}</option>
+                        <option value="1" {if condition="$param['status'] == '1'"}selected {/if}>{:lang('reviewed')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w100">
+                    <select name="mid">
+                        <option value="">{:lang('select_model')}</option>
+                        <option value="1" {if condition="$param['mid'] eq '1'"}selected {/if}>{:lang('vod')}</option>
+                        <option value="2" {if condition="$param['mid'] eq '2'"}selected {/if}>{:lang('art')}</option>
+                        <option value="3" {if condition="$param['mid'] eq '3'"}selected {/if}>{:lang('topic')}</option>
+                        <option value="8" {if condition="$param['mid'] eq '8'"}selected {/if}>{:lang('actor')}</option>
+                        <option value="9" {if condition="$param['mid'] eq '9'"}selected {/if}>{:lang('role')}</option>
+                        <option value="11" {if condition="$param['mid'] eq '11'"}selected {/if}>{:lang('website')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w100">
+                    <select name="report">
+                        <option value="">{:lang('select_report')}</option>
+                        <option value="1" {if condition="$param['report'] eq '1'"}selected {/if}>{:lang('report_not')}</option>
+                        <option value="2" {if condition="$param['report'] eq '2'"}selected {/if}>{:lang('report_yes')}</option>
+                    </select>
+                </div>
+
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_filter_xss}">
+                </div>
+                <button class="layui-btn mgl-20 j-search" >{:lang('btn_search')}</button>
+            </form>
+        </div>
+
+        <div class="layui-btn-group">
+            <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+            <a data-href="{:url('index/select')}?tab=comment&col=comment_status&tpl=select_status&url=comment/field" data-width="470" data-height="100" data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('status')}</a>
+            <a data-href="{:url('del')}?all=1" class="layui-btn layui-btn-primary j-ajax" confirm="{:lang('clear_confirm')}"><i class="layui-icon">&#xe640;</i>{:lang('clear')}</a>
+        </div>
+    </div>
+
+    <form class="layui-form" method="post" id="pageListForm" >
+        <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="60">{:lang('id')}</th>
+                <th width="60">{:lang('model')}</th>
+                <th width="100">{:lang('status')}</th>
+                <th >{:lang('content')}</th>
+                <th width="140">{:lang('opt')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.comment_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.comment_id}</td>
+                <td>{$vo.comment_mid|mac_get_mid_text}</td>
+                <td>{if condition="$vo.comment_status eq 0"}<span class="layui-badge">{:lang('reviewed_not')}</span>{else}<span class="layui-badge layui-bg-green">{:lang('reviewed')}</span>{/if}</td>
+                <td>
+                    <div class="c-999 f-12">
+                        <u style="cursor:pointer" class="text-primary">{$vo.comment_name|htmlspecialchars}:</u>
+                        <time>【{$vo.comment_time|mac_day='color'}】</time>
+                        <span class="ml-20">ip:【{$vo.comment_ip|long2ip}】</span>
+                        <span class="ml-20">{:lang('up')}:【{$vo.comment_up}】</span>
+                        <span class="ml-20">{:lang('hate')}:【{$vo.comment_down}】</span>
+                        <span class="ml-20">{:lang('report')}:【{$vo.comment_report}】</span>
+                        <span class="ml-20">{:lang('link')}:
+                            {if condition="!is_array($vo.data)"}
+                            【{:lang('del_data')}】
+                            {elseif condition="$vo.comment_mid eq 1"}
+                            【<a target="_blank" href="{$vo.data|mac_url_vod_detail}">{$vo.data.vod_name}</a>】</span>
+                            {elseif condition="$vo.comment_mid eq 2"}
+                            【<a target="_blank" href="{$vo.data|mac_url_art_detail}">{$vo.data.art_name}</a>】</span>
+                            {elseif condition="$vo.comment_mid eq 3"}
+                            【<a target="_blank" href="{$vo.data|mac_url_topic_detail}">{$vo.data.topic_name}</a>】</span>
+                            {elseif condition="$vo.comment_mid eq 8"}
+                            【<a target="_blank" href="{$vo.data|mac_url_actor_detail}">{$vo.data.actor_name}</a>】</span>
+                            {elseif condition="$vo.comment_mid eq 9"}
+                            【<a target="_blank" href="{$vo.data|mac_url_role_detail}">{$vo.data.role_name}</a>】</span>
+                            {/if}
+                    </div>
+                    <div class="f-12 c-999">
+                        {:lang('comment')}:{$vo.comment_content|htmlspecialchars}
+                    </div>
+                </td>
+                <td>
+                    <a class="layui-badge-rim j-iframe" data-href="{:url('info?id='.$vo['comment_id'])}" href="javascript:;" title="{:lang('edit')}">{:lang('edit')}</a>
+                    <a class="layui-badge-rim j-tr-del" data-href="{:url('del?ids='.$vo['comment_id'])}" href="javascript:;" title="{:lang('del')}">{:lang('del')}</a>
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+
+        <div id="pages" class="center"></div>
+
+    </form>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+
+<script type="text/javascript">
+    var curUrl="{:url('comment/data',$param)}";
+    layui.use(['laypage', 'layer','form'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer,
+                form = layui.form;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+
+
+    });
+</script>
+</body>
+</html>

+ 71 - 0
application/admin/view_new/comment/info.html

@@ -0,0 +1,71 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+    <form class="layui-form layui-form-pane" method="post" action="">
+        <input id="comment_id" name="comment_id" type="hidden" value="{$info.comment_id}">
+        <input id="comment_mid" name="comment_mid" type="hidden" value="{$info.comment_mid}">
+        <input id="comment_rid" name="comment_rid" type="hidden" value="{$info.comment_rid}">
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('model')}:</label>
+            <div class="layui-input-inline w80">
+                <input type="text" class="layui-input" value="{$info.comment_mid|mac_get_mid_text}" readonly="readonly">
+            </div>
+            <label class="layui-form-label">{:lang('nickname')}:</label>
+            <div class="layui-input-inline w80">
+                <input type="text" class="layui-input" value="{$info.comment_name}" readonly="readonly" name="comment_name" >
+            </div>
+            <label class="layui-form-label">{:lang('time')}:</label>
+            <div class="layui-input-inline w130">
+                <input type="text" class="layui-input" value="{$info.comment_time|date='Y-m-d H:i:s',###}" readonly="readonly">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('up')}:</label>
+            <div class="layui-input-inline w80">
+                <input type="text" class="layui-input" value="{$info.comment_up}" name="comment_up">
+            </div>
+            <label class="layui-form-label">{:lang('hate')}:</label>
+            <div class="layui-input-inline w80">
+                <input type="text" class="layui-input" value="{$info.comment_down}" name="comment_down">
+            </div>
+        </div>
+
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('content')}:</label>
+            <div class="layui-input-block">
+                <textarea type="text" class="layui-textarea" lay-verify="comment_content" placeholder="" name="comment_content">{$info.comment_content}</textarea>
+            </div>
+        </div>
+
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+                <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit" data-child="true">{:lang('btn_save')}</button>
+                <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+            </div>
+        </div>
+    </form>
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    layui.use(['form', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery;
+
+        // 验证
+        form.verify({
+            comment_content: function (value) {
+                if (value == "") {
+                    return "{:lang('content_empty')}";
+                }
+            }
+        });
+
+
+    });
+</script>
+
+</body>
+</html>

+ 68 - 0
application/admin/view_new/database/export.html

@@ -0,0 +1,68 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box" >
+        <ul class="layui-tab-title mb10">
+            <li class="layui-this"><a href="{:url('index')}">{:lang('admin/database/backup_db')}</a></li>
+            <li><a href="{:url('index')}?group=import">{:lang('admin/database/import_db')}</a></li>
+        </ul>
+
+        <div class="flex gap-5 overflow-x-auto overflow-y-hidden">
+            <a data-href="{:url('export')}" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe62d;</i>{:lang('admin/database/backup_db')}</a>
+            <a data-href="{:url('optimize')}" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe631;</i>{:lang('admin/database/optimize_db')}</a>
+            <a data-href="{:url('repair')}" class="layui-btn layui-btn-primary j-page-btns"><i class="layui-icon">&#xe60c;</i>{:lang('admin/database/repair_db')}</a>
+        </div>
+    </div>
+
+    <form id="pageListForm" class="layui-form">
+        <table class="layui-table mt10" lay-even="">
+            <colgroup>
+                <col width="50">
+            </colgroup>
+            <thead>
+            <tr>
+                <th><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th>{:lang('admin/database/table')}</th>
+                <th>{:lang('admin/database/count')}</th>
+                <th>{:lang('admin/database/size')}</th>
+                <th>{:lang('admin/database/redundancy')}</th>
+                <th>{:lang('remarks')}</th>
+                <th width="180">{:lang('opt')}</th>
+            </tr>
+            </thead>
+            <tbody>
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" class="layui-checkbox checkbox-ids" value="{$vo['Name']}" lay-skin="primary"></td>
+                <td>{$vo['Name']}</td>
+                <td>{$vo['Rows']}</td>
+                <td>{$vo['Data_length']/1024|round=###,2} kb</td>
+                <td>{$vo['Data_free']/1024|round=###,2} kb</td>
+                <td>{$vo['Comment']}</td>
+                <td>
+                        <a data-href="{:url('optimize?ids='.$vo['Name'])}" class="layui-badge-rim j-ajax">{:lang('admin/database/optimize')}</a>
+                        <a data-href="{:url('repair?ids='.$vo['Name'])}" class="layui-badge-rim  j-ajax">{:lang('admin/database/repair')}</a>
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+    </form>
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+
+<script type="text/javascript">
+    layui.use(['form', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery;
+
+
+
+    });
+</script>
+</body>
+</html>

+ 59 - 0
application/admin/view_new/database/import.html

@@ -0,0 +1,59 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box" >
+        <ul class="layui-tab-title mb10">
+            <li ><a href="{:url('index')}">{:lang('admin/database/backup_db')}</a></li>
+            <li class="layui-this"><a href="{:url('index')}?group=import">{:lang('admin/database/import_db')}</a></li>
+        </ul>
+    </div>
+
+    <form id="pageListForm" class="layui-form">
+        <table class="layui-table mt10" lay-even="" >
+            <thead>
+            <tr>
+                <th>{:lang('admin/database/backup_name')}</th>
+                <th>{:lang('admin/database/backup_num')}</th>
+                <th>{:lang('admin/database/backup_zip')}</th>
+                <th>{:lang('admin/database/backup_size')}</th>
+                <th>{:lang('admin/database/backup_time')}</th>
+                <th width="180">{:lang('opt')}</th>
+            </tr>
+            </thead>
+            <tbody>
+            {volist name="list" id="vo"}
+            <tr>
+                <td>{:date('Ymd-His', $vo['time'])}</td>
+                <td>{$vo['part']}</td>
+                <td>{$vo['compress']}</td>
+                <td>{:round($vo['size']/1024, 2)} K</td>
+                <td>{:date('Y-m-d H:i:s', $vo['time'])}</td>
+                <td>
+                    <div class="layui-btn-group">
+                        <a data-href="{:url('import?id='.strtotime($key))}" class="layui-badge-rim layui-btn-small j-ajax" confirm="{:lang('admin/database/import_confirm')}">{:lang('admin/database/import')}</a>
+                        <a data-href="{:url('del?id='.strtotime($key))}" class="layui-badge-rim layui-btn-small j-tr-del">{:lang('del')}</a>
+                    </div>
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+    </form>
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+
+<script type="text/javascript">
+    layui.use(['form', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery;
+
+
+
+    });
+</script>
+</body>
+</html>

+ 133 - 0
application/admin/view_new/database/rep.html

@@ -0,0 +1,133 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<style>
+    .layui-form-select ul {max-height:200px}
+    .layui-btn+.layui-btn{margin-left:0px; }
+</style>
+<div class="page-container">
+    <form class="layui-form layui-form-pane" action="">
+        <input type="hidden" name="__token__" value="{$Request.token}" />
+        <div class="layui-tab">
+            <ul class="layui-tab-title">
+                <li class="layui-this">{:lang('admin/database/batch_replace')}</li>
+            </ul>
+            <div class="layui-tab-content">
+                <div class="layui-tab-item layui-show" id="movementTable">
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('admin/database/select_table')}:</label>
+                    <div class="layui-input-inline w400" >
+                        <select name="table" lay-filter="table" lay-verify="table">
+                            {volist name="list" id="vo"}
+                                <option value="{$vo.Name}">{$vo.Name}【{$vo.Comment}】</option>
+                            {/volist}
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item row-fields">
+                    <label class="layui-form-label">{:lang('admin/database/select_col')}:</label>
+                    <div class="layui-input-block fields" >
+
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">{:lang('admin/database/field')}:</label>
+                    <div class="layui-input-block" >
+                        <input type="text" id="field" name="field" placeholder="" lay-verify="field" class="layui-input">
+                    </div>
+                </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('admin/database/findstr')}:</label>
+                        <div class="layui-input-block" >
+                            <textarea name="findstr" placeholder="" lay-verify="findstr" class="layui-textarea"></textarea>
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('admin/database/tostr')}:</label>
+                        <div class="layui-input-block" >
+                            <textarea name="tostr" placeholder="" lay-verify="tostr" class="layui-textarea"></textarea>
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('admin/database/where')}:</label>
+                        <div class="layui-input-block" >
+                            <input type="text" name="where" placeholder="" value="" class="layui-input">
+                        </div>
+                    </div>
+
+                <div class="layui-form-item">
+
+                </div>
+            </div>
+            </div>
+        </div>
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+                <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit">{:lang('btn_save')}</button>
+                <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+            </div>
+        </div>
+    </form>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+<script type="text/javascript">
+    layui.use(['form', 'layer'], function(){
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer,
+                $ = layui.jquery;
+
+        form.on('select(table)', function(data){
+            $('.fields').html('');
+            if(data.value !=''){
+                $.post("{:url('columns')}", {table:data.value}, function(res) {
+                    if (res.code == 1) {
+                        $.each(res.data,function(index,row){
+                            $(".fields").append('<a class="layui-btn layui-btn-sm" href="javascript:setfield(\''+row.Field+'\')">'+row.Field+'</a>&nbsp;&nbsp;');
+                            if(index>0 && index%5==0){
+                                //$(".fields").append('<br>');
+                            }
+
+                        });
+                    }
+                    layer.msg(res.msg);
+                });
+            }
+        });
+
+
+        // 验证
+        form.verify({
+            table: function (value) {
+                if (value == "") {
+                    return "{:lang('admin/database/select_table')}";
+                }
+            },
+            field: function (value) {
+                if (value == "") {
+                    return "{:lang('admin/database/select_col')}";
+                }
+            },
+            findstr: function (value) {
+                if (value == "") {
+                    return "{:lang('admin/database/findstr')}";
+                }
+            },
+            tostr: function (value) {
+                if (value == "") {
+                    return "{:lang('admin/database/tostr')}";
+                }
+            }
+        });
+
+    });
+
+    function setfield(v){
+        $('#field').val(v);
+    }
+
+</script>
+
+</body>
+</html>

+ 40 - 0
application/admin/view_new/database/sql.html

@@ -0,0 +1,40 @@
+{include file="../../../application/admin/view_new/public/head" /}
+
+<div class="page-container">
+    <form class="layui-form layui-form-pane" action="">
+        <input type="hidden" name="__token__" value="{$Request.token}" />
+        <div class="layui-tab">
+            <ul class="layui-tab-title">
+                <li class="layui-this">{:lang('admin/database/sql')}</li>
+            </ul>
+            <div class="layui-tab-content">
+                <div class="layui-tab-item layui-show" id="movementTable">
+                    <blockquote class="layui-elem-quote layui-quote-nm">
+                        {:lang('admin/database/sql_tip')}
+                    </blockquote>
+
+                <div class="layui-form-item">
+                    <div class="layui-input-block" >
+                        <textarea name="sql" class="layui-textarea" rows="10" placeholder="" ></textarea>
+                    </div>
+                </div>
+
+            </div>
+            </div>
+        </div>
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+                <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit">{:lang('start_exec')}</button>
+                <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+            </div>
+        </div>
+    </form>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+<script type="text/javascript">
+
+</script>
+
+</body>
+</html>

+ 114 - 0
application/admin/view_new/domain/index.html

@@ -0,0 +1,114 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+    <div class="showpic" style="display:none;"><img class="showpic_img" width="120" height="160" referrerPolicy="no-referrer"></div>
+    
+    <form class="layui-form layui-form-pane" method="post" action="">
+        <input type="hidden" name="vod_id" value="{$info.vod_id}">
+
+        <div class="layui-tab">
+            <ul class="layui-tab-title ">
+                <li class="layui-this">{:lang('admin/domain/title')}</a></li>
+            </ul>
+            <div class="layui-tab-content">
+
+                <div class="layui-tab-item layui-show" id="movementTable">
+
+                    <blockquote class="layui-elem-quote layui-quote-nm">
+                        {:lang('admin/domain/help_tip')}
+                        <a class="layui-btn layui-btn-primary" href="{:url('export')}" >{:lang('export')}</a>
+                        <a class="layui-btn layui-btn-primary layui-upload" data-href="{:url('import')}" >{:lang('import')}</a>
+                    </blockquote>
+
+                    <script>
+                        var arr_len = {$domain_list|count};
+                    </script>
+                    {php}
+                    $n=0;
+                    {/php}
+
+                    <div id="domain_list" class="contents">
+                        {volist name="$domain_list" id="vo"}
+                        {php}
+                        $n++;
+                        {/php}
+                        <div class="layui-form-item tr" data-i="{$key}">
+                        <label class="layui-form-label">{:lang('website')}{$n}:</label>
+                            <div class="layui-input-inline w150"><input type="text" name="domain[site_url][]" class="layui-input" placeholder="{:lang('domain')}" value="{$vo.site_url}"></div>&nbsp;
+                            <div class="layui-input-inline w150"><input type="text" name="domain[site_name][]" class="layui-input" placeholder="{:lang('site_name')}" value="{$vo.site_name}"></div>&nbsp;
+                            <div class="layui-input-inline w150"><input type="text" name="domain[site_keywords][]" class="layui-input" placeholder="{:lang('keywords')}" value="{$vo.site_keywords}"></div>&nbsp;
+                            <div class="layui-input-inline w150"><input type="text" name="domain[site_description][]" class="layui-input" placeholder="{:lang('description')}" value="{$vo.site_description}"></div>&nbsp;
+                            <div class="layui-input-inline w150"><select name="domain[template_dir][]"><option value="no">{:lang('select_template')}.</option>{volist name="templates" id="vo2"}<option value="{$vo2}" {if condition="$vo2 eq $vo.template_dir"}selected{/if}>{$vo2}</option>{/volist}</select></div>
+                            <div class="layui-input-inline w150"><input type="text" name="domain[html_dir][]" class="layui-input" placeholder="{:lang('tpl_dir')}" value="{$vo.html_dir}"></div>
+                            <div class="layui-input-inline w150"><input type="text" name="domain[ads_dir][]" class="layui-input" placeholder="{:lang('ads_dir')}" value="{$vo.ads_dir}"></div>
+                            <div> <a class="layui-badge-rim j-tr-del" data-href="{:url('del?ids='.$vo['site_url'])}" href="javascript:;" title="{:lang('del')}">{:lang('del')}</a></div>
+                        </div>
+                        {/volist}
+                    </div>
+                    <div class="layui-form-item">
+                        <label class=""><button class="layui-btn radius j-player-add" type="button">{:lang('add_group')}</button></label>
+                        <div class="layui-input-block">
+
+                        </div>
+                    </div>
+                </div>
+
+            </div>
+        </div>
+
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+
+                <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit" data-child="">{:lang('btn_save')}</button>
+                <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+            </div>
+        </div>
+    </form>
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    var template_select='{volist name="templates" id="vo"}<option value="{$vo}">{$vo}</option>{/volist}';
+
+    layui.use(['form','layer','upload'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery
+            , upload = layui.upload;
+
+
+        upload.render({
+            elem: '.layui-upload'
+            ,url: "{:url('domain/import')}"
+            ,method: 'post'
+            ,exts:'txt'
+            ,before: function(input) {
+                layer.msg("{:lang('upload_ing')}", {time:3000000});
+            },done: function(res, index, upload) {
+                var obj = this.item;
+                if (res.code == 0) {
+                    layer.msg(res.msg);
+                    return false;
+                }
+                location.reload();
+            }
+        });
+
+        $('.j-player-add').on('click',function(){
+            arr_len++;
+            var tpl='<div class="layui-form-item" ><label class="layui-form-label">{:lang('website')}:'+arr_len+'</label><div class="layui-input-inline w150"><input type="text" name="domain[site_url][]" class="layui-input" placeholder="{:lang('domain')}" ></div>&nbsp;<div class="layui-input-inline w150"><input type="text" name="domain[site_name][]" class="layui-input" placeholder="{:lang('site_name')}"></div>&nbsp;<div class="layui-input-inline w150"><input type="text" name="domain[site_keywords][]" class="layui-input" placeholder="{:lang('keywords')}" ></div>&nbsp;<div class="layui-input-inline w150"><input type="text" name="domain[site_description][]" class="layui-input" placeholder="{:lang('description')}" ></div>&nbsp;<div class="layui-input-inline w150"><select name="domain[template_dir][]"><option value="no">{:lang('select_template')}.</option>'+template_select+'</select></div><div class="layui-input-inline w150"><input type="text" name="domain[html_dir][]" class="layui-input" placeholder="{:lang('tpl_dir')}" ></div><div class="layui-input-inline w150"><input type="text" name="domain[ads_dir][]" class="layui-input" placeholder="{:lang('ads_dir')}" ></div><div><a href="javascript:void(0)" class="j-editor-remove">{:lang('del')}</a>&nbsp;</div></div>';
+            $("#domain_list").append(tpl);
+
+            form.render();
+        });
+
+        if(arr_len==0) {
+            $('.j-player-add').click();
+        }
+    });
+    
+</script>
+
+</body>
+</html>

+ 19 - 0
application/admin/view_new/extend/editor/ckeditor.html

@@ -0,0 +1,19 @@
+<script type="text/javascript" src="__STATIC__/editor/ckeditor/ckeditor.js"></script>
+<script type="text/javascript">
+    var EDITOR = CKEDITOR;
+</script>
+<script>
+    var editor = "{$editor}";
+    function editor_getEditor(obj)
+    {
+        return CKEDITOR.replace(obj,{filebrowserImageUploadUrl:"{:url('upload/upload')}?from=ckeditor&flag={$cl|strtolower}_editor&input=upload"});
+    }
+    function editor_setContent(obj,html)
+    {
+        return obj.setData(html);
+    }
+    function editor_getContent(obj)
+    {
+        return obj.getData();
+    }
+</script>

+ 19 - 0
application/admin/view_new/extend/editor/kindeditor.html

@@ -0,0 +1,19 @@
+<script type="text/javascript" src="__STATIC__/editor/kindeditor/kindeditor-all-min.js"></script>
+<script type="text/javascript">
+    var EDITOR = KindEditor;
+</script>
+<script>
+    var editor = "{$editor}";
+    function editor_getEditor(obj)
+    {
+        return KindEditor.create('#'+obj, { uploadJson:"{:url('upload/upload')}?from=kindeditor&flag={$cl|strtolower}_editor&input=imgFile" , allowFileManager : false });
+    }
+    function editor_setContent(obj,html)
+    {
+        return obj.html(html);
+    }
+    function editor_getContent(obj)
+    {
+        return obj.html();
+    }
+</script>

+ 34 - 0
application/admin/view_new/extend/editor/tinymce.html

@@ -0,0 +1,34 @@
+<script type="text/javascript" src="__STATIC__/editor/tinymce/tinymce.min.js"></script>
+<script type="text/javascript">
+    var EDITOR = tinymce;
+</script>
+<script>
+    var editor = "{$editor}";
+    function editor_getEditor(obj)
+    {
+        tinyMCE.init({
+            language: 'zh_CN',
+            plugins: 'print preview paste importcss searchreplace autolink autosave save directionality code visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists wordcount imagetools textpattern noneditable help charmap quickbars emoticons',
+            menubar: 'file edit view insert format tools table help',
+            toolbar: 'undo redo | bold italic underline strikethrough | fontselect fontsizeselect formatselect | alignleft aligncenter alignright alignjustify | outdent indent |  numlist bullist | forecolor backcolor removeformat | pagebreak | charmap emoticons | fullscreen  preview save print | insertfile image media template link anchor codesample | ltr rtl',
+            toolbar_sticky: true,
+            images_upload_url: "{:url('upload/upload')}?from=tinymce&flag={$cl|strtolower}_editor&input=file",
+            selector: '#'+obj,
+            init_instance_callback : function(editor) {
+                res = editor;
+            }
+        });
+        return tinyMCE.activeEditor;
+    }
+    function editor_setContent(obj,html)
+    {
+        return obj.setContent(html);
+    }
+    function editor_getContent(obj)
+    {
+        return obj.getContent();
+    }
+	$(document).on('click', '[lay-filter="formSubmit"]', function() {
+		tinyMCE.triggerSave();
+	});
+</script>

+ 21 - 0
application/admin/view_new/extend/editor/ueditor.html

@@ -0,0 +1,21 @@
+<script type="text/javascript" src="__STATIC__/ueditor/ueditor.config.js"></script>
+<script type="text/javascript" src="__STATIC__/ueditor/ueditor.all.min.js"></script>
+<script type="text/javascript">
+    window.UEDITOR_CONFIG.serverUrl = "{:url('upload/upload')}?from=ueditor&flag={$cl|strtolower}_editor&input=upfile";
+    var EDITOR = UE;
+</script>
+<script>
+    var editor = "{$editor}";
+    function editor_getEditor(obj)
+    {
+        return EDITOR.getEditor(obj);
+    }
+    function editor_setContent(obj,html)
+    {
+        return obj.setContent(html);
+    }
+    function editor_getContent(obj)
+    {
+        return obj.getContent();
+    }
+</script>

+ 22 - 0
application/admin/view_new/extend/editor/umeditor.html

@@ -0,0 +1,22 @@
+<link rel="stylesheet" href="__STATIC__/editor/umeditor/themes/default/css/umeditor.css" type="text/css" rel="stylesheet">
+<script type="text/javascript" src="__STATIC__/editor/umeditor/umeditor.config.js"></script>
+<script type="text/javascript" src="__STATIC__/editor/umeditor/umeditor.min.js"></script>
+<script type="text/javascript">
+    window.UMEDITOR_CONFIG.imageUrl = "{:url('upload/upload')}?from=umeditor&flag={$cl|strtolower}_editor&input=upfile";
+    var EDITOR = UM;
+</script>
+<script>
+    var editor = "{$editor}";
+    function editor_getEditor(obj)
+    {
+        return EDITOR.getEditor(obj);
+    }
+    function editor_setContent(obj,html)
+    {
+        return obj.setContent(html);
+    }
+    function editor_getContent(obj)
+    {
+        return obj.getContent();
+    }
+</script>

+ 48 - 0
application/admin/view_new/extend/email/phpmailer.html

@@ -0,0 +1,48 @@
+<div class="layui-tab-item" id="movementTable">
+
+    <blockquote class="layui-elem-quote layui-quote-nm">
+        提示信息:<br>
+        发送邮件请开启sockets ,openssl扩展库,否则可能发送失败
+    </blockquote>
+
+    <div class="layui-form-item">
+        <label class="layui-form-label">服务器:</label>
+        <div class="layui-input-inline">
+            <input type="text" id="host" name="email[phpmailer][host]" placeholder="" value="{$config['email']['phpmailer']['host']}" class="layui-input w200"  >
+        </div>
+        <div class="layui-form-mid layui-word-aux ml-2">smtp服务器</div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">端口:</label>
+        <div class="layui-input-inline">
+            <input type="text" id="port" name="email[phpmailer][port]" placeholder="" value="{$config['email']['phpmailer']['port']}" class="layui-input w200"  >
+        </div>
+        <div class="layui-form-mid layui-word-aux ml-2">smtp端口</div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">传输协议:</label>
+        <div class="layui-input-inline w200">
+            <select name="email[phpmailer][secure]" >
+                <option value="" {if condition="$config['email']['phpmailer']['secure'] eq ''"}selected{/if}>默认</option>
+                <option value="tsl" {if condition="$config['email']['phpmailer']['secure'] eq 'tsl'"}selected{/if}>TSL</option>
+                <option value="ssl" {if condition="$config['email']['phpmailer']['secure'] eq 'ssl'"}selected{/if}>SSL</option>
+            </select>
+        </div>
+        <div class="layui-form-mid layui-word-aux">根据邮件服务器要求配置</div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">帐号:</label>
+        <div class="layui-input-inline">
+            <input type="text" id="username" name="email[phpmailer][username]" placeholder="" value="{$config['email']['phpmailer']['username']}" class="layui-input w200"  >
+        </div>
+        <div class="layui-form-mid layui-word-aux ml-2">smtp服务帐号</div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">密码:</label>
+        <div class="layui-input-inline">
+            <input type="password" id="password" name="email[phpmailer][password]" placeholder="" value="{$config['email']['phpmailer']['password']}" class="layui-input w200"  >
+        </div>
+        <div class="layui-form-mid layui-word-aux ml-2">smtp服务密码</div>
+    </div>
+
+</div>

+ 27 - 0
application/admin/view_new/extend/pay/alipay.html

@@ -0,0 +1,27 @@
+<div class="layui-tab-item " id="movementTable">
+
+    <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
+        <legend>支付宝设置 <a target="_blank" href="https://open.alipay.com/?maccms" class="layui-btn layui-btn-primary">点击进入注册</a></legend>
+    </fieldset>
+
+    <div class="layui-form-item">
+        <label class="layui-form-label">收款账号:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[alipay][account]" placeholder="" value="{$config['pay']['alipay']['account']}" class="layui-input">
+        </div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">合作者身份:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[alipay][appid]" placeholder="" value="{$config['pay']['alipay']['appid']}" class="layui-input">
+        </div>
+        <div class="layui-form-mid layui-word-aux">appid</div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">安全校验码:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[alipay][appkey]" placeholder="" value="{$config['pay']['alipay']['appkey']}" class="layui-input">
+        </div>
+        <div class="layui-form-mid layui-word-aux">appkey</div>
+    </div>
+</div>

+ 33 - 0
application/admin/view_new/extend/pay/codepay.html

@@ -0,0 +1,33 @@
+<div class="layui-tab-item" id="movementTable">
+
+    <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
+        <legend>码支付设置 <a target="_blank" href="https://api.xiuxiu888.com/i/40625" class="layui-btn layui-btn-primary">点击进入注册</a></legend>
+    </fieldset>
+
+    <div class="layui-form-item">
+        <label class="layui-form-label">支付商家编号:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[codepay][appid]" placeholder="" value="{$config['pay']['codepay']['appid']}" class="layui-input">
+        </div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">支付商家密钥:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[codepay][appkey]" placeholder="" value="{$config['pay']['codepay']['appkey']}" class="layui-input">
+        </div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">商家收款平台:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[codepay][type]" placeholder="" value="{$config['pay']['codepay']['type']}" class="layui-input">
+        </div>
+        <div class="layui-form-mid layui-word-aux">1:支付宝;2:QQ钱包;3:微信(多个用逗号分隔)</div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">收款通知类型:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[codepay][act]" placeholder="" value="{$config['pay']['codepay']['act']}" class="layui-input">
+        </div>
+        <div class="layui-form-mid layui-word-aux">0表示及时到账 1则为商家代收款</div>
+    </div>
+</div>

+ 26 - 0
application/admin/view_new/extend/pay/epay.html

@@ -0,0 +1,26 @@
+<div class="layui-tab-item" id="movementTable">
+
+    <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
+        <legend>易支付设置</legend>
+    </fieldset>
+
+    <div class="layui-form-item">
+        <label class="layui-form-label">接口地址:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[epay][api_url]" value="{$config['pay']['epay']['api_url']}" class="layui-input" placeholder="需保留前面http(s)://和后面/">
+        </div>
+        <div class="layui-form-mid layui-word-aux">如: https://www.epay.com/</div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">商户号:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[epay][appid]" placeholder="" value="{$config['pay']['epay']['appid']}" class="layui-input">
+        </div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">密钥:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[epay][appkey]" placeholder="" value="{$config['pay']['epay']['appkey']}" class="layui-input">
+        </div>
+    </div>
+</div>

+ 26 - 0
application/admin/view_new/extend/pay/weixin.html

@@ -0,0 +1,26 @@
+<div class="layui-tab-item" id="movementTable">
+
+    <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
+        <legend>微信设置 <a target="_blank" href="https://pay.weixin.qq.com/?maccms" class="layui-btn layui-btn-primary">点击进入注册</a></legend>
+    </fieldset>
+
+    <div class="layui-form-item">
+        <label class="layui-form-label">APPID:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[weixin][appid]" placeholder="" value="{$config['pay']['weixin']['appid']}" class="layui-input">
+        </div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">商户号:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[weixin][mchid]" placeholder="" value="{$config['pay']['weixin']['mchid']}" class="layui-input">
+        </div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">商户密钥:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[weixin][appkey]" placeholder="" value="{$config['pay']['weixin']['appkey']}" class="layui-input">
+        </div>
+    </div>
+
+</div>

+ 33 - 0
application/admin/view_new/extend/pay/zhapay.html

@@ -0,0 +1,33 @@
+<div class="layui-tab-item" id="movementTable">
+
+    <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
+        <legend>幻兮支付设置 <a target="_blank" href="https://www.zhapay.com/ad_8rRGj4nN.html" class="layui-btn layui-btn-primary">点击进入注册</a></legend>
+    </fieldset>
+
+    <div class="layui-form-item">
+        <label class="layui-form-label">支付商家编号:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[zhapay][appid]" placeholder="" value="{$config['pay']['zhapay']['appid']}" class="layui-input">
+        </div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">支付商家密钥:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[zhapay][appkey]" placeholder="" value="{$config['pay']['zhapay']['appkey']}" class="layui-input">
+        </div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">商家收款平台:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[zhapay][type]" placeholder="" value="{$config['pay']['zhapay']['type']}" class="layui-input">
+        </div>
+        <div class="layui-form-mid layui-word-aux">1:微信;2:支付宝;(多个用逗号分隔)</div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">收款通知类型:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="pay[zhapay][act]" placeholder="" value="{$config['pay']['zhapay']['act']}" class="layui-input">
+        </div>
+        <div class="layui-form-mid layui-word-aux">2表示及时到账 1则为商家代收款</div>
+    </div>
+</div>

+ 27 - 0
application/admin/view_new/extend/sms/aliyun.html

@@ -0,0 +1,27 @@
+<div class="layui-tab-item" id="movementTable">
+
+    <blockquote class="layui-elem-quote layui-quote-nm">
+        提示信息:<br>
+        阿里云短信:https://www.aliyun.com/product/sms<br>
+        阿里云短信模板例子:<br>
+        尊敬的用户,您的注册会员验证码为:${code},请勿泄漏于他人!<br>
+        验证码为:${code},您正在绑定手机,若非本人操作,请勿泄露。<br>
+        验证码为:${code},您正在进行密码重置操作,如非本人操作,请忽略本短信!<br>
+    </blockquote>
+
+    <div class="layui-form-item">
+        <label class="layui-form-label">KeyId:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="sms[aliyun][appid]" placeholder="" value="{$config['sms']['aliyun']['appid']}" class="layui-input"  >
+        </div>
+        <div class="layui-form-mid layui-word-aux"></div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">KeySecret:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="sms[aliyun][appkey]" placeholder="" value="{$config['sms']['aliyun']['appkey']}" class="layui-input"  >
+        </div>
+        <div class="layui-form-mid layui-word-aux"></div>
+    </div>
+
+</div>

+ 27 - 0
application/admin/view_new/extend/sms/qcloud.html

@@ -0,0 +1,27 @@
+<div class="layui-tab-item" id="movementTable">
+
+    <blockquote class="layui-elem-quote layui-quote-nm">
+        提示信息:<br>
+        腾讯云短信:https://cloud.tencent.com/product/sms<br>
+        腾讯云短信模板例子:<br>
+        尊敬的用户,您的注册会员验证码为:{1},请勿泄漏于他人!<br>
+        验证码为:{1},您正在绑定手机,若非本人操作,请勿泄露。<br>
+        验证码为:{1},您正在进行密码重置操作,如非本人操作,请忽略本短信!<br>
+    </blockquote>
+
+    <div class="layui-form-item">
+        <label class="layui-form-label">AppId:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="sms[qcloud][appid]" placeholder="" value="{$config['sms']['qcloud']['appid']}" class="layui-input"  >
+        </div>
+        <div class="layui-form-mid layui-word-aux"></div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">AppKey:</label>
+        <div class="layui-input-inline w400">
+            <input type="text" name="sms[qcloud][appkey]" placeholder="" value="{$config['sms']['qcloud']['appkey']}" class="layui-input"  >
+        </div>
+        <div class="layui-form-mid layui-word-aux"></div>
+    </div>
+
+</div>

+ 9 - 0
application/admin/view_new/extend/upload/alibaba.html

@@ -0,0 +1,9 @@
+<div class="layui-form-item upload_mode mode_Alibaba" {if condition="$config['upload']['mode'] neq 'Alibaba'"}style="display:none;" {/if}>
+<label class="layui-form-label">阿里巴巴图床:</label>
+<div class="layui-input-block">
+    <a href="http://alibaba.com" target="_blank" class="layui-btn layui-btn-primary">目前免费不用申请</a>
+</div>
+</div>
+<div class="layui-form-item upload_mode mode_Alibaba" {if condition="$config['upload']['mode'] neq 'Alibaba'"}style="display:none;" {/if}>
+
+</div>

+ 32 - 0
application/admin/view_new/extend/upload/ftp.html

@@ -0,0 +1,32 @@
+<div class="layui-form-item upload_mode mode_Ftp" {if condition="$config['upload']['mode'] neq 'Ftp'"}style="display:none;" {/if}>
+<label class="layui-form-label">FTP存储:</label>
+<div class="layui-input-block">
+    <a href="javascript:;" target="_blank" class="layui-btn layui-btn-primary">请确认FTP可以正常连接</a>
+</div>
+</div>
+<div class="layui-form-item upload_mode mode_Ftp" {if condition="$config['upload']['mode'] neq 'Ftp'"}style="display:none;" {/if}>
+<label class="layui-form-label">服务器:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][ftp][host]" placeholder="ip或域名" value="{$config['upload']['api']['ftp']['host']}" class="layui-input" >
+</div>
+<label class="layui-form-label">端口:</label>
+<div class="layui-input-inline w100">
+    <input type="text" name="upload[api][ftp][port]" placeholder="端口号" value="{$config['upload']['api']['ftp']['port']}" class="layui-input" >
+</div>
+<label class="layui-form-label">账号:</label>
+<div class="layui-input-inline w100">
+    <input type="text" name="upload[api][ftp][user]" placeholder="ftp账号" value="{$config['upload']['api']['ftp']['user']}" class="layui-input" >
+</div>
+<label class="layui-form-label">密码:</label>
+<div class="layui-input-inline w100">
+    <input type="text" name="upload[api][ftp][pwd]" placeholder="ftp密码" value="{$config['upload']['api']['ftp']['pwd']}" class="layui-input" >
+</div>
+<label class="layui-form-label">路径:</label>
+<div class="layui-input-inline w100">
+    <input type="text" name="upload[api][ftp][path]" placeholder="网站根路径" value="{$config['upload']['api']['ftp']['path']}" class="layui-input" >
+</div>
+<label class="layui-form-label">外链URL:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][ftp][url]" placeholder="外链URL" value="{$config['upload']['api']['ftp']['url']}" class="layui-input" >
+</div>
+</div>

+ 24 - 0
application/admin/view_new/extend/upload/qiniu.html

@@ -0,0 +1,24 @@
+<div class="layui-form-item upload_mode mode_Qiniu" {if condition="$config['upload']['mode'] neq 'Qiniu'"}style="display:none;" {/if}>
+<label class="layui-form-label">七牛云API:</label>
+<div class="layui-input-block">
+    <a href="https://www.qiniu.com/" target="_blank" class="layui-btn layui-btn-primary">点击申请 https://www.qiniu.com/?maccms</a>
+</div>
+</div>
+<div class="layui-form-item upload_mode mode_Qiniu" {if condition="$config['upload']['mode'] neq 'Qiniu'"}style="display:none;" {/if}>
+<label class="layui-form-label">服务名:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][qiniu][bucket]" placeholder="七牛云-服务名" value="{$config['upload']['api']['qiniu']['bucket']}" class="layui-input"  >
+</div>
+<label class="layui-form-label">公钥:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][qiniu][accesskey]" placeholder="七牛云-公钥" value="{$config['upload']['api']['qiniu']['accesskey']}" class="layui-input"  >
+</div>
+<label class="layui-form-label">私钥:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][qiniu][secretkey]" placeholder="七牛云-私钥" value="{$config['upload']['api']['qiniu']['secretkey']}" class="layui-input"  >
+</div>
+<label class="layui-form-label">外链URL:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][qiniu][url]" placeholder="七牛云-外链URL" value="{$config['upload']['api']['qiniu']['url']}" class="layui-input"  >
+</div>
+</div>

+ 28 - 0
application/admin/view_new/extend/upload/uomg.html

@@ -0,0 +1,28 @@
+<div class="layui-form-item upload_mode mode_Uomg" {if condition="$config['upload']['mode'] neq 'Uomg'"}style="display:none;" {/if}>
+<label class="layui-form-label">优启梦图床:</label>
+<div class="layui-input-block">
+    <a href="http://api.uomg.com/" target="_blank" class="layui-btn layui-btn-primary">目前免费不用申请 http://api.uomg.com/</a>
+</div>
+</div>
+<div class="layui-form-item upload_mode mode_Uomg" {if condition="$config['upload']['mode'] neq 'Uomg'"}style="display:none;" {/if}>
+<label class="layui-form-label">OPENID:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][uomg][openid]" placeholder="" value="{$config['upload']['api']['uomg']['openid']}" class="layui-input"  >
+</div>
+<label class="layui-form-label">操作员名:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][uomg][key]" placeholder="" value="{$config['upload']['api']['uomg']['key']}" class="layui-input"  >
+</div>
+<label class="layui-form-label">类型:</label>
+<div class="layui-input-inline w200">
+    <select class="w150" name="upload[api][uomg][type]">
+        <option value="ali" {if condition="$config['upload']['api']['uomg']['type'] eq 'ali'"}selected {/if}>阿里巴巴</option>
+        <option value="baidu" {if condition="$config['upload']['api']['uomg']['type'] eq 'baidu'"}selected {/if}>百度识图</option>
+        <option value="sina" {if condition="$config['upload']['api']['uomg']['type'] eq 'sina'"}selected {/if}>新浪微博</option>
+        <option value="sogou" {if condition="$config['upload']['api']['uomg']['type'] eq 'sogou'"}selected {/if}>搜狗图片</option>
+        <option value="juejin" {if condition="$config['upload']['api']['uomg']['type'] eq 'juejin'"}selected {/if}>掘金社区</option>
+        <option value="360" {if condition="$config['upload']['api']['uomg']['type'] eq '360'"}selected {/if}>奇虎360</option>
+        <option value="jd" {if condition="$config['upload']['api']['uomg']['type'] eq 'jd'"}selected {/if}>京东商城</option>
+    </select>
+</div>
+</div>

+ 24 - 0
application/admin/view_new/extend/upload/upyun.html

@@ -0,0 +1,24 @@
+<div class="layui-form-item upload_mode mode_Upyun" {if condition="$config['upload']['mode'] neq 'Upyun'"}style="display:none;" {/if}>
+<label class="layui-form-label">又云拍API:</label>
+<div class="layui-input-block">
+    <a href="https://www.upyun.com/" target="_blank" class="layui-btn layui-btn-primary">点击申请 https://www.upyun.com/?maccms</a>
+</div>
+</div>
+<div class="layui-form-item upload_mode mode_Upyun" {if condition="$config['upload']['mode'] neq 'Upyun'"}style="display:none;" {/if}>
+<label class="layui-form-label">服务名:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][upyun][bucket]" placeholder="又云拍-服务名" value="{$config['upload']['api']['upyun']['bucket']}" class="layui-input"  >
+</div>
+<label class="layui-form-label">操作员名:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][upyun][username]" placeholder="又云拍-操作员名" value="{$config['upload']['api']['upyun']['username']}" class="layui-input"  >
+</div>
+<label class="layui-form-label">操作员密码:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][upyun][pwd]" placeholder="又云拍-操作员密码" value="{$config['upload']['api']['upyun']['pwd']}" class="layui-input"  >
+</div>
+<label class="layui-form-label">外链URL:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][upyun][url]" placeholder="又云拍-外链URL" value="{$config['upload']['api']['upyun']['url']}" class="layui-input"  >
+</div>
+</div>

+ 37 - 0
application/admin/view_new/extend/upload/weibo.html

@@ -0,0 +1,37 @@
+<div class="layui-form-item upload_mode mode_Weibo" {if condition="$config['upload']['mode'] neq 'Weibo'"}style="display:none;" {/if}>
+<label class="layui-form-label">新浪微博:</label>
+<div class="layui-input-block">
+    <a href="https://www.weibo.com/" target="_blank" class="layui-btn layui-btn-primary">点击申请 https://www.weibo.com/</a>
+</div>
+</div>
+<div class="layui-form-item upload_mode mode_Weibo" {if condition="$config['upload']['mode'] neq 'Weibo'"}style="display:none;" {/if}>
+<label class="layui-form-label">账号:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][weibo][user]" placeholder="微博登录账号" value="{$config['upload']['api']['weibo']['user']}" class="layui-input"  >
+</div>
+<label class="layui-form-label">密码:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][weibo][pwd]" placeholder="微博登录密码" value="{$config['upload']['api']['weibo']['pwd']}" class="layui-input"  >
+</div>
+<label class="layui-form-label">获取尺寸:</label>
+<div class="layui-input-inline">
+    <select class="w150" name="upload[api][weibo][size]">
+        <option value="large" {if condition="$config['upload']['api']['weibo']['size'] eq 'large'"}selected {/if}>large</option>
+        <option value="bmiddle" {if condition="$config['upload']['api']['weibo']['size'] eq 'bmiddle'"}selected {/if}>bmiddle</option>
+        <option value="small" {if condition="$config['upload']['api']['weibo']['size'] eq 'small'"}selected {/if}>small</option>
+        <option value="mw2048" {if condition="$config['upload']['api']['weibo']['size'] eq 'mw2048'"}selected {/if}>mw2048</option>
+        <option value="mw1024" {if condition="$config['upload']['api']['weibo']['size'] eq 'mw1024'"}selected {/if}>mw1024</option>
+        <option value="mw690" {if condition="$config['upload']['api']['weibo']['size'] eq 'mw690'"}selected {/if}>mw690</option>
+        <option value="orj480" {if condition="$config['upload']['api']['weibo']['size'] eq 'orj480'"}selected {/if}>orj480</option>
+        <option value="orj360" {if condition="$config['upload']['api']['weibo']['size'] eq 'orj360'"}selected {/if}>orj360</option>
+        <option value="thumb150" {if condition="$config['upload']['api']['weibo']['size'] eq 'thumb150'"}selected {/if}>thumb150</option>
+        <option value="square" {if condition="$config['upload']['api']['weibo']['size'] eq 'square'"}selected {/if}>square</option>
+    </select>
+</div>
+<label class="layui-form-label">cookie:</label>
+<div class="layui-input-inline w200">
+    <input type="text" name="upload[api][weibo][cookie]" placeholder="登录cookie-会自动读取" value="{$config['upload']['api']['weibo']['cookie']}" class="layui-input"  >
+    <input type="hidden" name="upload[api][weibo][time]" placeholder="登录时间-不用设置" value="{$config['upload']['api']['weibo']['time']}" class="layui-input"  >
+</div>
+
+</div>

+ 10 - 0
application/admin/view_new/extend/urlsend/baidu.html

@@ -0,0 +1,10 @@
+<div class="layui-tab-item ">
+
+    <div class="layui-form-item">
+        <label class="layui-form-label">token:</label>
+        <div class="layui-input-inline  ">
+            <input type="text" class="layui-input" value="{$config.baidu.token}" placeholder="" name="urlsend[baidu][token]">
+        </div>
+    </div>
+
+</div>

+ 10 - 0
application/admin/view_new/extend/urlsend/baidufast.html

@@ -0,0 +1,10 @@
+<div class="layui-tab-item ">
+
+    <div class="layui-form-item">
+        <label class="layui-form-label">token:</label>
+        <div class="layui-input-inline  ">
+            <input type="text" class="layui-input" value="{$config.baidufast.token}" placeholder="" name="urlsend[baidufast][token]">
+        </div>
+    </div>
+
+</div>

+ 122 - 0
application/admin/view_new/gbook/index.html

@@ -0,0 +1,122 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box" >
+        <div class=" mb10">
+            <form class="layui-form " method="post" action="{:url('data')}">
+                <div class="layui-input-inline w100">
+                    <select name="status">
+                        <option value="">{:lang('select_status')}</option>
+                        <option value="0" {if condition="$param['status'] == '0'"}selected {/if}>{:lang('reviewed_not')}</option>
+                        <option value="1" {if condition="$param['status'] == '1'"}selected {/if}>{:lang('reviewed')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w100">
+                    <select name="type">
+                        <option value="">{:lang('select_reply_status')}</option>
+                        <option value="1" {if condition="$param['reply'] eq '1'"}selected {/if}>{:lang('reply_not')}</option>
+                        <option value="2" {if condition="$param['reply'] eq '2'"}selected {/if}>{:lang('reply_yes')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline w100">
+                    <select name="type">
+                        <option value="">{:lang('select_genre')}</option>
+                        <option value="1" {if condition="$param['type'] eq '1'"}selected {/if}>{:lang('gbook')}</option>
+                        <option value="2" {if condition="$param['type'] eq '2'"}selected {/if}>{:lang('report')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_filter_xss}">
+                </div>
+                <button class="layui-btn mgl-20 j-search" >{:lang('btn_search')}</button>
+            </form>
+        </div>
+        <div class="flex gap-5 overflow-x-auto overflow-y-hidden">
+            <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+            <a data-href="{:url('index/select')}?tab=gbook&col=gbook_status&tpl=select_status&url=gbook/field" data-width="470" data-height="100" data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('status')}</a>
+            <a data-href="{:url('del')}?all=1" class="layui-btn layui-btn-primary j-ajax" confirm="{:lang('clear_confirm')}"><i class="layui-icon">&#xe640;</i>{:lang('clear')}</a>
+        </div>
+    </div>
+
+
+        <form class="layui-form" method="post" id="pageListForm" >
+            <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="60">{:lang('id')}</th>
+                <th width="100">{:lang('status')}</th>
+                <th width="60">{:lang('genre')}</th>
+                <th >{:lang('gbook')}</th>
+                <th >{:lang('report')}</th>
+                <th width="140">{:lang('opt')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.gbook_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.gbook_id}</td>
+                <td>{if condition="$vo.gbook_status eq 0"}<span class="layui-badge">{:lang('reviewed_not')}</span>{else}<span class="layui-badge layui-bg-green">{:lang('reviewed')}</span>{/if}</td>
+                <td>{if condition="$vo.gbook_rid eq 0"}{:lang('gbook')}{else/}{:lang('report')}{/if}</td>
+                <td>
+                    <div class="c-999 f-12">
+                        <u style="cursor:pointer" class="text-primary">{$vo.gbook_name|htmlspecialchars}:</u>
+                        <time>【{$vo.gbook_time|mac_day='color'}】</time>
+                        <span class="ml-20">ip:【{$vo.gbook_ip|long2ip}】</span>
+                    </div>
+                    <div class="f-12 c-999">
+                        <span class="ml-20">{:lang('status')}:</span>
+                        {:lang('gbook')}:{$vo.gbook_content|htmlspecialchars}
+                    </div>
+                </td>
+                <td>
+                    <div class="c-999 f-12">
+                        {:lang('reply_time')}:{$vo.gbook_reply_time|mac_day='color'}
+                    </div>
+                    <div class="f-12 c-999">
+                        {:lang('reply')}:{$vo.gbook_reply|htmlspecialchars}
+                    </div>
+                    <div> </div>
+                </td>
+                <td>
+                    <a class="layui-badge-rim j-iframe" data-href="{:url('info?id='.$vo['gbook_id'])}" href="javascript:;" title="{:lang('reply')}">{:lang('reply')}</a>
+                    <a class="layui-badge-rim j-tr-del" data-href="{:url('del?ids='.$vo['gbook_id'])}" href="javascript:;" title="{:lang('del')}">{:lang('del')}</a>
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+
+        <div id="pages" class="center"></div>
+
+    </form>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    var curUrl="{:url('gbook/data',$param)}";
+    layui.use(['laypage', 'layer','form'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer,
+                form = layui.form;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+
+
+    });
+</script>
+</body>
+</html>

+ 67 - 0
application/admin/view_new/gbook/info.html

@@ -0,0 +1,67 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+    <form class="layui-form layui-form-pane" method="post" action="">
+        <input id="gbook_id" name="gbook_id" type="hidden" value="{$info.gbook_id}">
+        <input id="gbook_rid" name="gbook_rid" type="hidden" value="{$info.gbook_rid}">
+        <div class="layui-form-item">
+
+            <label class="layui-form-label">昵称:</label>
+            <div class="layui-input-inline w80">
+                <input type="text" class="layui-input" value="{$info.gbook_name}" readonly="readonly" name="gbook_name" >
+            </div>
+            <label class="layui-form-label">留言时间:</label>
+            <div class="layui-input-inline w130">
+                <input type="text" class="layui-input" value="{$info.gbook_time|date='Y-m-d H:i:s',###}" readonly="readonly">
+            </div>
+            <label class="layui-form-label">回复时间:</label>
+            <div class="layui-input-inline w130">
+                <input type="text" class="layui-input" value="{$info.gbook_reply_time|date='Y-m-d H:i:s',###}" readonly="readonly">
+            </div>
+        </div>
+
+        <div class="layui-form-item">
+            <label class="layui-form-label">留言内容:</label>
+            <div class="layui-input-block">
+                <textarea type="text" class="layui-textarea" lay-verify="gbook_content" placeholder="请输入评论内容" name="gbook_content">{$info.gbook_content}</textarea>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">回复内容:</label>
+            <div class="layui-input-block">
+                <textarea type="text" class="layui-textarea" lay-verify="gbook_reply" placeholder="请输入回复内容" name="gbook_reply">{$info.gbook_reply}</textarea>
+            </div>
+        </div>
+
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+                <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit" data-child="true">{:lang('btn_save')}</button>
+                <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+            </div>
+        </div>
+    </form>
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    layui.use(['form', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery;
+
+        // 验证
+        form.verify({
+            gbook_content: function (value) {
+                if (value == "") {
+                    return "请输入留言内容";
+                }
+            }
+        });
+
+
+    });
+</script>
+
+</body>
+</html>

+ 77 - 0
application/admin/view_new/group/index.html

@@ -0,0 +1,77 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box">
+
+        <div class="layui-btn-group">
+            <a data-href="{:url('info')}" class="layui-btn layui-btn-primary j-iframe"><i class="layui-icon">&#xe654;</i>{:lang('add')}</a>
+            <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+        </div>
+
+    </div>
+
+    <form class="layui-form " method="post" id="pageListForm">
+        <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="100">{:lang('id')}</th>
+                <th >{:lang('name')}</th>
+                <th width="100">{:lang('status')}</th>
+                <th width="100">{:lang('admin/group/pack_day')}</th>
+                <th width="100">{:lang('admin/group/pack_week')}</th>
+                <th width="100">{:lang('admin/group/pack_month')}</th>
+                <th width="100">{:lang('admin/group/pack_year')}</th>
+                <th width="140">{:lang('opt')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td>
+                    {if condition="$vo['group_id'] gt 2"}
+                    <input type="checkbox" name="ids[]" value="{$vo.group_id}" class="layui-checkbox checkbox-ids" lay-skin="primary">
+                    {/if}
+                </td>
+                <td>{$vo.group_id}</td>
+                <td>{$vo.group_name|htmlspecialchars}</td>
+                <td>
+                    {if condition="$vo['group_id'] gt 2"}
+                    <input type="checkbox" name="status" {if condition="$vo['group_status'] eq 1"}checked{/if} value="{$vo['group_status']}" lay-skin="switch" lay-filter="switchStatus" lay-text="{:lang('open')}|{:lang('close')}" data-href="{:url('field?col=group_status&ids='.$vo['group_id'])}">
+                    {/if}
+                </td>
+                <td>{$vo.group_points_day}</td>
+                <td>{$vo.group_points_week}</td>
+                <td>{$vo.group_points_month}</td>
+                <td>{$vo.group_points_year}</td>
+                <td>
+                    <a class="layui-badge-rim j-iframe" data-href="{:url('info?id='.$vo['group_id'])}" href="javascript:;" title="{:lang('edit')}">{:lang('edit')}</a>
+                    {if condition="$vo['group_id'] gt 2"}
+                    <a class="layui-badge-rim j-tr-del" data-href="{:url('del?ids='.$vo['group_id'])}" href="javascript:;" title="{:lang('del')}">{:lang('del')}</a>
+                    {/if}
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+
+    </form>
+
+    <blockquote class="layui-elem-quote layui-quote-nm">
+        {:lang('admin/group/help_tip')}
+    </blockquote>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+
+    layui.use(['laypage', 'layer'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer;
+
+
+    });
+</script>
+</body>
+</html>

+ 133 - 0
application/admin/view_new/group/info.html

@@ -0,0 +1,133 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+    <form class="layui-form layui-form-pane" method="post" action="" id="movementTable">
+        <input id="group_id" name="group_id" type="hidden" value="{$info.group_id}">
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('name')}:</label>
+            <div class="layui-input-block  ">
+                <input type="text" class="layui-input" value="{$info.group_name}" placeholder="" lay-verify="group_name" name="group_name">
+            </div>
+        </div>
+
+        {if condition="$info.group_id gt 2"}
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('admin/group/pack_day')}{:lang('points')}:</label>
+            <div class="layui-input-inline">
+                <input type="text" class="layui-input" value="{$info.group_points_day}" placeholder="" lay-verify="group_points_day" name="group_points_day">
+            </div>
+            <label class="layui-form-label">{:lang('admin/group/pack_week')}{:lang('points')}:</label>
+            <div class="layui-input-inline">
+                <input type="text" class="layui-input" value="{$info.group_points_week}" placeholder="" lay-verify="group_points_week" name="group_points_week">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('admin/group/pack_month')}{:lang('points')}:</label>
+            <div class="layui-input-inline">
+                <input type="text" class="layui-input" value="{$info.group_points_month}" placeholder="" lay-verify="group_points_month" name="group_points_month">
+            </div>
+            <label class="layui-form-label">{:lang('admin/group/pack_year')}{:lang('points')}:</label>
+            <div class="layui-input-inline">
+                <input type="text" class="layui-input" value="{$info.group_points_year}" placeholder="" lay-verify="group_points_year" name="group_points_year">
+            </div>
+        </div>
+
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('status')}:</label>
+            <div class="layui-input-block">
+                    <input name="group_status" type="radio" value="0" title="{:lang('disable')}" {if condition="$info['group_status'] neq 1"}checked {/if}>
+                    <input name="group_status" type="radio" value="1" title="{:lang('enable')}" {if condition="$info['group_status'] eq 1"}checked {/if}>
+            </div>
+        </div>
+        {/if}
+
+        <div class="layui-form-item ">
+            <label class="layui-form-label">{:lang('admin/group/popedom')}:</label>
+            <div class="layui-input-block">
+                <blockquote class="layui-elem-quote layui-quote-nm">
+                    {:lang('admin/group/popedom_tip')}
+                </blockquote>
+
+                <div class="role-list-form ">
+                {volist name="type_tree" id="vo" key="k1"}
+                    <dl class="role-list-form-top permission-list">
+                        <dt>
+                            {:lang('type')}:<input type="checkbox" value="{$vo.type_id}" name="group_type[]" data-id="{$k1}" lay-skin="primary" lay-filter="roleAuth1" title="{$vo.type_name}" {if condition="strpos(','.$info['group_type'],','.$vo['type_id'].',')>0"}checked {/if}>
+                            {:lang('popedom')}:<input type="checkbox" name="group_popedom[{$vo.type_id}][1]" value="1" lay-skin="primary" title="{:lang('admin/group/popedom_list')}" {if condition="!empty($info['group_popedom'][$vo.type_id][1])"}checked {/if}>
+                            <input type="checkbox" name="group_popedom[{$vo.type_id}][2]" value="2" lay-skin="primary" title="{:lang('admin/group/popedom_detail')}" {if condition="!empty($info['group_popedom'][$vo.type_id][2])"}checked {/if}>
+                            {if condition="$vo.type_mid eq 1"}
+                            <input type="checkbox" name="group_popedom[{$vo.type_id}][3]" value="3" lay-skin="primary" title="{:lang('admin/group/popedom_play')}" {if condition="!empty($info['group_popedom'][$vo.type_id][3])"}checked {/if}>
+                            <input type="checkbox" name="group_popedom[{$vo.type_id}][4]" value="4" lay-skin="primary" title="{:lang('admin/group/popedom_down')}" {if condition="!empty($info['group_popedom'][$vo.type_id][4])"}checked {/if}>
+                            <input type="checkbox" name="group_popedom[{$vo.type_id}][5]" value="5" lay-skin="primary" title="{:lang('admin/group/popedom_trysee')}" {if condition="!empty($info['group_popedom'][$vo.type_id][5])"}checked {/if}>
+                            {/if}
+                        </dt>
+                    </dl>
+                    {volist name="$vo.child" id="sub" key="k2"}
+                    <dl class="role-list-form-top permission-list">
+                        <dt>
+                            {:lang('type')}:<input type="checkbox" value="{$sub.type_id}" name="group_type[]" data-id="{$k1}" lay-skin="primary" lay-filter="roleAuth1" title="---{$sub.type_name}" {if condition="strpos(','.$info['group_type'],','.$sub  ['type_id'].',')>0"}checked {/if}>
+                            {:lang('popedom')}:<input type="checkbox" name="group_popedom[{$sub.type_id}][1]" value="1" lay-skin="primary" title="{:lang('admin/group/popedom_list')}" {if condition="!empty($info['group_popedom'][$sub.type_id][1])"}checked {/if}>
+                            <input type="checkbox" name="group_popedom[{$sub.type_id}][2]" value="2" lay-skin="primary" title="{:lang('admin/group/popedom_detail')}" {if condition="!empty($info['group_popedom'][$sub.type_id][2])"}checked {/if}>
+                            {if condition="$sub.type_mid eq 1"}
+                            <input type="checkbox" name="group_popedom[{$sub.type_id}][3]" value="3" lay-skin="primary" title="{:lang('admin/group/popedom_play')}" {if condition="!empty($info['group_popedom'][$sub.type_id][3])"}checked {/if}>
+                            <input type="checkbox" name="group_popedom[{$sub.type_id}][4]" value="4" lay-skin="primary" title="{:lang('admin/group/popedom_down')}" {if condition="!empty($info['group_popedom'][$sub.type_id][4])"}checked {/if}>
+                            <input type="checkbox" name="group_popedom[{$sub.type_id}][5]" value="5" lay-skin="primary" title="{:lang('admin/group/popedom_trysee')}" {if condition="!empty($info['group_popedom'][$sub.type_id][5])"}checked {/if}>
+                            {/if}
+                        </dt>
+                    </dl>
+                    {/volist}
+                {/volist}
+                </div>
+            </div>
+        </div>
+
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+                <button type="button" class="layui-btn layui-btn-normal formCheckAll" lay-filter="formCheckAll" >{:lang('check_all')}</button>
+                <button type="button" class="layui-btn layui-btn-normal formCheckOther" lay-filter="formCheckOther">{:lang('check_other')}</button>
+                <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit" data-child="true">{:lang('btn_save')}</button>
+                <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+            </div>
+        </div>
+    </form>
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    layui.use(['form', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery;
+
+        // 验证
+        form.verify({
+            group_name: function (value) {
+                if (value == "") {
+                    return "{:lang('name_empty')}";
+                }
+            }
+        });
+
+        $('.formCheckAll').click(function(){
+            var child = $('.role-list-form').find('input');
+            /* 自动选中子节点 */
+            child.each(function(index, item) {
+                item.checked = true;
+            });
+            form.render('checkbox');
+        });
+        $('.formCheckOther').click(function(){
+            var child = $('.role-list-form').find('input');
+            /* 自动选中子节点 */
+            child.each(function(index, item) {
+                item.checked = (item.checked  ? false : true);
+            });
+            form.render('checkbox');
+        });
+    });
+
+</script>
+
+</body>
+</html>

+ 86 - 0
application/admin/view_new/images/opt.html

@@ -0,0 +1,86 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <form class="layui-form " method="post" action="{:url('sync')}" id="movementTable">
+        <input type="hidden" name="tab" value="{$tab}">
+        <fieldset class="layui-elem-field">
+            <legend>{:lang('admin/images/sync_range')}</legend>
+            <div class="layui-field-box">
+                <div class="layui-form-item">
+                        <div class="layui-input-inline" style="width: 110px;">
+                            <input type="radio" checked value="1" name="range" title="{:lang('all')}">
+                        </div>
+                        <div class="layui-input-inline" style="width: 110px;">
+                            <input type="radio" value="2" name="range" title="{:lang('admin/images/date')}">
+                        </div>
+                        <div class="layui-input-inline" style="width: 100px;">
+                            <input type="text" name="date" required  placeholder="" autocomplete="off" class="layui-input" value="{:date('Y-m-d')}">
+                        </div>
+                </div>
+            </div>
+        </fieldset>
+
+        <fieldset class="layui-elem-field">
+            <legend>{:lang('admin/images/sync_option')}</legend>
+            <div class="layui-field-box">
+                <div class="layui-form-item">
+                    <div class="layui-input-inline" style="width: 110px;">
+                        <input type="radio"  value="0" name="opt" title="{:lang('all')}">
+                    </div>
+                    <div class="layui-input-inline" style="width: 110px;">
+                        <input type="radio" value="1" name="opt" title="{:lang('not_pic_sync_err')}">
+                    </div>
+                    <div class="layui-input-inline" style="width: 120px;">
+                        <input type="radio" checked value="2" name="opt" title="{:lang('not_pic_sync_today_err')}">
+                    </div>
+                    <div class="layui-input-inline" style="width: 110px;">
+                        <input type="radio" value="3" name="opt" title="{:lang('pic_err')}">
+                    </div>
+                </div>
+            </div>
+        </fieldset>
+
+        <fieldset class="layui-elem-field">
+            <legend>{:lang('admin/images/opt/tip1')}</legend>
+            <div class="layui-field-box">
+                <div class="layui-form-item">
+                    <div class="layui-input-inline" style="width: 110px;">
+                        <input type="radio" checked value="1" name="col" title="{:lang('admin/images/opt/pic')}">
+                    </div>
+                    <div class="layui-input-inline" style="width: 110px;">
+                        <input type="radio" value="2" name="col" title="{:lang('admin/images/pic_content')}">
+                    </div>
+                </div>
+            </div>
+        </fieldset>
+
+        <fieldset class="layui-elem-field">
+            <legend>{:lang('admin/images/opt/tip2')}</legend>
+            <div class="layui-field-box">
+                <div class="layui-form-item">
+                    <div class="layui-input-inline" style="width: 110px;">
+                        <input type="text" name="limit" required placeholder="" autocomplete="off" class="layui-input" value="10">
+                    </div>
+                </div>
+            </div>
+        </fieldset>
+
+        <div class="layui-form-item">
+            <button type="submit" class="layui-btn btn_submit">{:lang('start_exec')}</button>
+        </div>
+
+    </form>
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+<script type="text/javascript">
+    layui.use(['element', 'layer'], function() {
+
+    });
+
+    $('.btn_submit').click(function(){
+        $('form').submit();
+    })
+
+</script>
+</body>
+</html>

File diff suppressed because it is too large
+ 111 - 0
application/admin/view_new/index/index.html


+ 243 - 0
application/admin/view_new/index/login.html

@@ -0,0 +1,243 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <title>{:lang('admin/index/login/title')}</title>
+    <link rel="stylesheet" href="__STATIC__/layui/css/layui.css?v=1024">
+    <link rel="stylesheet" href="__STATIC__/css/admin_style.css?v=1024">
+    <link rel="stylesheet" href="__STATIC__/css/tailwindcssOutput.css?{$MAC_VERSION}">
+</head>
+<style>
+    .layui-form-item {
+        display: flex;
+        flex-direction: column;
+        margin-bottom: 30px;
+    }
+
+    .layui-form-pane .layui-form-label {
+        width: fit-content;
+        color: #4B5563;
+        padding: 8px 0;
+    }
+
+    .layui-form-pane .layui-input-block {
+        margin-left: 0;
+        position: relative;
+    }
+
+    .layui-form-pane .layui-input {
+        border-radius: 4px;
+        padding-left: 38px;
+    }
+
+    .fix-icon {
+        width: 16px !important;
+        height: 16px !important;
+        position: absolute;
+        top: 12px;
+        left: 12px;
+        margin: 0 !important;
+    }
+</style>
+
+<body class="w-full h-full">
+    <div class="login-body body hidden  lg:flex w-full h-full">
+        <div class="fixbox">
+            <div class="login-head">
+                {:lang('admin/index/login/tip_welcome')}
+            </div>
+            <div class="login-box">
+                <form class="layui-form layui-form-pane" method="post" action="">
+                    <div class="layui-form-item mt-[20px]">
+                        <h3>{:lang('admin/index/login/tip_sys')}</h3>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('account')}:</label>
+                        <div class="layui-input-block">
+                            <img class="fix-icon" src="__STATIC__/images/signin_ic_account.png" alt="" srcset="">
+                            <input type="text" name="admin_name" class="layui-input" lay-verify="admin_name"
+                                placeholder="" autocomplete="on" maxlength="20" />
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('pass')}:</label>
+                        <div class="layui-input-block">
+                            <img class="fix-icon" src="__STATIC__/images/signin_ic_password.png" alt="" srcset="">
+                            <input type="password" name="admin_pwd" class="layui-input" lay-verify="admin_pwd"
+                                placeholder="" maxlength="20" />
+                        </div>
+                    </div>
+                    {if condition="$GLOBALS['config']['app']['admin_login_verify'] neq '0'"}
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('verify')}:</label>
+                        <div class="layui-input-block">
+                            <img class="fix-icon" src="__STATIC__/images/signin_ic_code.png" alt="" srcset="">
+                            <input type="number" name="verify" class="layui-input" lay-verify="verify" placeholder=""
+                                maxlength="4" max="9999" /><img id="verify_img"
+                                src="__ROOT__/index.php/verify/index.html" onclick="this.src = this.src+'?'">
+                        </div>
+                    </div>
+                    {/if}
+                    <button type="button" class="layui-btn btn-submit pc-submit" lay-submit=""
+                        lay-filter="sub">{:lang('admin/index/login/btn_submit')}</button>
+                </form>
+                <div class="copyright">
+                    {:lang('maccms_copyright')}
+                </div>
+
+                <div class="flex flex-col gap-[10px]">
+                    <div class="text-[#1F2937] text-[14px]">{:lang('admin/index/login/tip_declare')}</div>
+                    <div class="text-[#1F2937] text-[14px]">
+                        {:lang('admin/index/login/tip_declare_txt')}
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="lg:hidden pb-20 pt-10">
+        <div class="w-full flex flex-col">
+            <div class="text-[32px] text-center leading-9 text-[#40CC92] font-medium">
+                {:lang('admin/index/login/tip_welcome')}
+            </div>
+            <div class="w-full h-full px-10">
+                <form class="layui-form layui-form-pane" method="post" action="">
+                    <div class="layui-form-item mt-[20px] text-center">
+                        <h3 class="font-medium text-lg">{:lang('admin/index/login/tip_sys')}</h3>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('account')}:</label>
+                        <div class="layui-input-block">
+                            <img class="fix-icon" src="__STATIC__/images/signin_ic_account.png" alt="" srcset="">
+                            <input type="text" name="admin_name" class="layui-input" lay-verify="admin_name"
+                                placeholder="" autocomplete="on" maxlength="20" />
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('pass')}:</label>
+                        <div class="layui-input-block">
+                            <img class="fix-icon" src="__STATIC__/images/signin_ic_password.png" alt="" srcset="">
+                            <input type="password" name="admin_pwd" class="layui-input" lay-verify="admin_pwd"
+                                placeholder="" maxlength="20" />
+                        </div>
+                    </div>
+                    {if condition="$GLOBALS['config']['app']['admin_login_verify'] neq '0'"}
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">{:lang('verify')}:</label>
+                        <div class="layui-input-block flex gap-5">
+                            <img class="fix-icon" src="__STATIC__/images/signin_ic_code.png" alt="" srcset="">
+                            <input type="number" name="verify" class="layui-input" lay-verify="verify" placeholder=""
+                                maxlength="4" max="9999" />
+                            <img id="verify_img" src="__ROOT__/index.php/verify/index.html"
+                                onclick="this.src = this.src+'?'">
+                        </div>
+                    </div>
+                    {/if}
+                    <button type="button" class="layui-btn btn-submit w-full" lay-submit=""
+                        lay-filter="sub1">{:lang('admin/index/login/btn_submit')}</button>
+                </form>
+                <div class="copyright text-center py-5 text-lg">
+                    {:lang('maccms_copyright')}
+                </div>
+                <div class="flex flex-col gap-1">
+                    <div class="text-[#1F2937] text-[14px]">{:lang('admin/index/login/tip_declare')}</div>
+                    <div class="text-[#1F2937] text-[14px]">
+                        {:lang('admin/index/login/tip_declare_txt')}
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+
+    <script type="text/javascript" src="__STATIC__/layui/layui.js"></script>
+    <script type="text/javascript" src="__STATIC__/js/admin_common.js"></script>
+    <script type="text/javascript">
+        layui.use(['form', 'layer'], function () {
+            // 操作对象
+            var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery;
+
+            // 验证
+            form.verify({
+                admin_name: function (value) {
+                    if (value == "") {
+                        return "{:lang('admin/index/login/verify_no')}";
+                    }
+                },
+                admin_pwd: function (value) {
+                    if (value == "") {
+                        return "{:lang('admin/index/login/verify_pass')}";
+                    }
+                },
+                verify: function (value) {
+                    if (value == "") {
+                        return "{:lang('admin/index/login/verify_verify')}";
+                    }
+                }
+            });
+
+            // 提交监听
+            form.on('submit(sub)', function (data) {
+                layer.msg("{:lang('wait_submit')}", { time: 500000 });
+                $.post("{:url('index/login')}", data.field, function (r) {
+                    if (r.code == 1) {
+                        location.href = "{:url('index/index')}";
+                    }
+                    else {
+                        layer.msg(r.msg, { time: 1800 });
+                        $('#verify_img').click();
+                    }
+                });
+                return false;
+            });
+            // 提交监听
+            form.on('submit(sub1)', function (data) {
+                layer.msg("{:lang('wait_submit')}", { time: 500000 });
+                $.post("{:url('index/login')}", data.field, function (r) {
+                    if (r.code == 1) {
+                        location.href = "{:url('index/index')}";
+                    }
+                    else {
+                        layer.msg(r.msg, { time: 1800 });
+                        $('#verify_img').click();
+                    }
+                });
+                return false;
+            });
+
+
+            $("input[name='admin_name']").bind('keypress', function (event) {
+                if (event.keyCode == "13") {
+                    if ($("input[name='admin_name']").val() != '') {
+                        $("input[name='admin_pwd']").focus();
+                    }
+                }
+            });
+
+            $("input[name='admin_pwd']").bind('keypress', function (event) {
+                if (event.keyCode == "13") {
+                    if ($("input[name='admin_pwd']").val() != '') {
+                        $("input[name='verify']").focus();
+                    }
+                }
+            });
+
+            $("input[name='verify']").bind('keypress', function (event) {
+                if (event.keyCode == "13") {
+                    if ($("input[name='verify']").val() != '') {
+                        $('.pc-submit').click();
+                        // form.submit();
+                    }
+                }
+            });
+        });
+
+    </script>
+</body>
+
+</html>

+ 28 - 0
application/admin/view_new/index/quickmenu.html

@@ -0,0 +1,28 @@
+{include file="../../../application/admin/view_new/public/head" /}
+
+<div class="page-container">
+    <fieldset class="layui-elem-field layui-field-title" class="mt10">
+        <legend>{:lang('admin/index/quickmenu/name')}</legend>
+    </fieldset>
+
+    <blockquote class="layui-elem-quote layui-quote-nm">
+        {:lang('admin/index/quickmenu/tip')}
+    </blockquote>
+
+    <form class="layui-form" action="">
+        <input type="hidden" name="__token__" value="{$Request.token}" />
+        <div class="layui-form-item layui-form-text">
+            <textarea name="quickmenu" placeholder="{:lang('filed_empty')}" class="layui-textarea" style="height:600px; resize:none">{$quickmenu}</textarea>
+        </div>
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+                <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit">{:lang('btn_save')}</button>
+                <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+            </div>
+        </div>
+    </form>
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+</body>
+</html>

+ 44 - 0
application/admin/view_new/index/update.html

@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Document</title>
+  <link rel="stylesheet" href="__STATIC__/layui/css/layui.css?v=1024">
+  <link rel="stylesheet" href="__STATIC__/css/update.css?{$MAC_VERSION}">
+</head>
+
+<body>
+  <div class="updae_from">
+    <img class="update_bg" src="__STATIC__/images/[email protected]" alt="" srcset="">
+    <div class="update_content">
+      <div class="update_title">
+        <p>更新提示</p>
+        <p>${new_v}>>></p>
+      </div>
+      <a class="group_link" target="_blank" href="https://t.me/maccms_channel">Telegram群   https://t.me/maccms_channel</a>
+      <a class="group_link" target="_blank"
+        href="https://github.com/magicblack">Github源码   https://github.com/magicblack</a>
+      <div class="flex-col flex my-[20px] gap-1">
+        <a class="j-iframe text-[#53D19C]" title="点击进入升级"
+          data-href="${ADMIN_PATH}/admin/update/step1.html?file=${package}">
+          【点击进入在线升级】
+        </a>
+        <a href="https://github.com/magicblack/maccms_down/raw/master/maccms10_update.zip">
+          【下载离线升级包线路1】
+        </a>
+        <a href="https://cdn.jsdelivr.net/gh/magicblack/maccms_down@master/maccms10_update.zip">
+          【下载离线升级包线路2】
+        </a>
+      </div>
+      <div class="update_list">
+        ${update_content}
+      </div>
+      
+    </div>
+  </div>
+  <script type="text/javascript" src="__STATIC__/layui/layui.js"></script>
+</body>
+
+</html>

+ 1121 - 0
application/admin/view_new/index/welcome.html

@@ -0,0 +1,1121 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container main-body">
+    <div class="cont-Card">
+        <!-- Card -->
+        <div class="cont-Card-body">
+            <div class="cont-Card-info ">
+                <!-- Header -->
+                <div class="cont-Card-Header ">
+                    <!-- Icon -->
+                    <span class="cont-Card-icon">
+                        <img src="__STATIC__/images/home/[email protected]" />
+                    </span>
+                    <!-- End Icon -->
+                </div>
+                <!-- End Header -->
+
+                <h2 class="cont-Card-H2 ">
+                    {:lang('admin/index/welcome/today_visit_count')}
+                </h2>
+
+                <div class="cont-Card-textinfo ">
+                    <h3 class="cont-Card-H3 ">
+                        {$dashboard_data['today_visit_count']}
+                    </h3>
+                </div>
+            </div>
+        </div>
+        <!-- End Card -->
+
+        <!-- Card -->
+        <div class="cont-Card-body">
+            <div class="cont-Card-info">
+                <!-- Header -->
+                <div class="cont-Card-Header">
+                    <!-- Icon -->
+                    <span class="cont-Card-icon">
+                        <img src="__STATIC__/images/home/[email protected]" />
+                    </span>
+                    <!-- End Icon -->
+
+                </div>
+                <!-- End Header -->
+
+                <h2 class="cont-Card-H2">
+                    {:lang('admin/index/welcome/today_money_get')}</h2>
+
+                <div class="cont-Card-textinfo">
+                    <h3 class="cont-Card-H3">
+                        {$dashboard_data['today_money_get']}
+                    </h3>
+
+                </div>
+            </div>
+        </div>
+        <!-- End Card -->
+
+        <!-- Card -->
+        <div class="cont-Card-body">
+            <div class="cont-Card-info">
+                <!-- Header -->
+                <div class="cont-Card-Header">
+                    <!-- Icon -->
+                    <span class="cont-Card-icon">
+                        <img src="__STATIC__/images/home/[email protected]" />
+                    </span>
+                    <!-- End Icon -->
+
+                </div>
+                <!-- End Header -->
+
+                <h2 class="cont-Card-H2">
+                    {:lang('admin/index/welcome/filed_last_login_time')}</h2>
+
+                <div class="cont-Card-textinfo">
+                    <h3 class="cont-Card-H3">
+                        {$admin.admin_last_login_time|mac_day}</h3>
+
+                </div>
+            </div>
+        </div>
+        <!-- End Card -->
+
+        <!-- Card -->
+        <div class="cont-Card-body">
+            <div class="cont-Card-info">
+                <!-- Header -->
+                <div class="cont-Card-Header">
+                    <!-- Icon -->
+                    <span class="cont-Card-icon">
+                        <img src="__STATIC__/images/home/[email protected]" />
+                    </span>
+                    <!-- End Icon -->
+
+                    <div>
+
+                    </div>
+                </div>
+                <!-- End Header -->
+
+                <h2 class="cont-Card-H2">
+                    {:lang('admin/index/welcome/filed_last_login_ip')}</h2>
+
+                <div class="cont-Card-textinfo">
+                    <h3 class="cont-Card-H3">
+                        {$admin.admin_last_login_ip|long2ip}</h3>
+                </div>
+            </div>
+            <!-- End Col -->
+        </div>
+        <!-- End Card -->
+    </div>
+
+    <div class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-5">
+        <!-- Browsers Card -->
+        <div class="Browsers-card">
+            <!-- Header -->
+            <div class="Browsers-card-header">
+                <h2 class="ms-1 inline-block font-semibold text-[16px] text-gray-800">
+                    {:lang('admin/index/welcome/system_status')}
+                </h2>
+
+                <span
+                    class="py-1 ps-1.5 pe-2 inline-flex items-center gap-x-1 text-xs font-medium rounded-[6px] bg-white border border-gray-200 text-gray-800 ">
+                    <svg class="flex-shrink-0 size-3" width="16" height="16" viewBox="0 0 16 16" fill="currentColor"
+                        xmlns="http://www.w3.org/2000/svg">
+                        <path
+                            d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z">
+                        </path>
+                    </svg>
+                    Good
+                </span>
+            </div>
+            <!-- End Header -->
+
+            <!-- Body -->
+            <div class="flex flex-col justify-between h-full pb-5 px-5">
+                <!-- Stats -->
+                <div class="mt-5">
+                    <!-- Grid -->
+                    <div class="grid grid-cols-2 gap-3 max-md:grid-cols-1">
+                        <!-- Card -->
+                        <div class="p-3  bg-[#3C82F6]  rounded-lg flex items-center">
+                            <div class="size-[46px] flex items-center justify-center rounded-full bg-white mr-3">
+                                <svg class="flex-shrink-0 size-6 text-[#3C82F6]" fill="#3C82F6"
+                                    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
+                                    <path
+                                        d="M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64c-35.3 0-64 28.7-64 64H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64c0 35.3 28.7 64 64 64v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448c35.3 0 64-28.7 64-64h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V280h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V176h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448c0-35.3-28.7-64-64-64V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H280V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H176V24zM160 128H352c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm192 32H160V352H352V160z">
+                                    </path>
+                                </svg>
+                            </div>
+                            <p class="text-sm text-white">Cpu</p>
+                            <p class="font-semibold text-lg text-white ml-auto mr-4" id="cpu_usage">
+                                {if condition="!empty($os_data['cpu_usage'])"}
+                                {$os_data['cpu_usage']}%
+                                {/if}
+                            </p>
+                        </div>
+
+                        <!-- Card -->
+                        <div class="p-3  bg-[#40CC92]  rounded-lg flex items-center">
+                            <div class="size-[46px] flex items-center justify-center rounded-full bg-white mr-3">
+                                <svg xmlns="http://www.w3.org/2000/svg" fill="#40CC92" viewBox="0 0 576 512"
+                                    class="flex-shrink-0 size-6 ">
+                                    <path
+                                        d="M64 64C28.7 64 0 92.7 0 128v7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6V320H576V248.6c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3V128c0-35.3-28.7-64-64-64H64zM576 352H0v64c0 17.7 14.3 32 32 32H80V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h48c17.7 0 32-14.3 32-32V352zM192 160v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32z">
+                                    </path>
+                                </svg>
+                            </div>
+                            <p class="text-sm text-white">Ram</p>
+                            <p class="font-semibold text-lg text-white ml-auto mr-4" id="mem_usage">
+                                {if condition="!empty($os_data['mem_usage'])"}
+                                {$os_data['mem_usage']}%
+                                {/if}
+                            </p>
+                        </div>
+
+                        <!-- Card -->
+
+                        <!-- End Card -->
+                    </div>
+                    <!-- End Grid -->
+                </div>
+                <!-- End Stats -->
+
+                <div class="mt-5">
+                    <ul class="space-y-2">
+                        <li class="flex justify-between items-center">
+                            <span
+                                class="text-xs uppercase text-[#4B5563]">{:lang('admin/index/welcome/mem_detail')}</span>
+                            <span class="text-sm text-gray-800 " id="mem_detail">{$os_data['mem_used']} MB/
+                                {$os_data['mem_total']} MB</span>
+                        </li>
+                        <li class="flex justify-between items-center">
+                            <span class="text-xs uppercase text-[#4B5563]">
+                                {:lang('admin/index/welcome/filed_os')}</span>
+                            <span class="text-sm text-gray-800 ">
+                                <?php echo PHP_OS ?>
+                                (
+                                <?php echo $_SERVER['SERVER_SOFTWARE'] ?>)
+                            </span>
+                        </li>
+                        <li class="flex justify-between items-center">
+                            <span
+                                class="text-xs uppercase text-[#4B5563]">{:lang('admin/index/welcome/filed_host')}</span>
+                            <span class="text-sm text-gray-800 ">
+                                <?php echo $_SERVER['HTTP_HOST'] ?>
+                            </span>
+                        </li>
+                        <li class="flex justify-between items-center">
+                            <span
+                                class="text-xs uppercase text-[#4B5563]">{:lang('admin/index/welcome/filed_max_upload')}</span>
+                            <span class="text-sm text-gray-800 ">
+                                <?php echo get_cfg_var("file_uploads") ? get_cfg_var("upload_max_filesize") : $error;?>
+                            </span>
+                        </li>
+                        <li class="flex justify-between items-center">
+                            <span
+                                class="text-xs uppercase text-[#4B5563]">{:lang('admin/index/welcome/filed_date')}</span>
+                            <span class="text-sm text-gray-800 ">
+                                <?php echo date('Y-m-d'); ?>
+                            </span>
+                        </li>
+                        <li class="flex justify-between items-center">
+                            <span
+                                class="text-xs uppercase text-[#4B5563]">{:lang('admin/index/welcome/filed_php_ver')}</span>
+                            <span class="text-sm text-gray-800 ">
+                                <?php echo PHP_VERSION ?>
+                            </span>
+                        </li>
+                        <li class="flex justify-between items-center">
+                            <span
+                                class="text-xs uppercase text-[#4B5563]">{:lang('admin/index/welcome/filed_thinkphp_ver')}</span>
+                            <span class="text-sm text-gray-800 ">
+                                <?php echo THINK_VERSION; ?>
+                            </span>
+                        </li>
+                        </li>
+                        <li class="flex justify-between items-center">
+                            <span
+                                class="text-xs uppercase text-[#4B5563]">{:lang('admin/index/welcome/filed_ver')}</span>
+                            <span class="text-sm text-gray-800 ">{$version.code}</span>
+                        </li>
+                    </ul>
+                </div>
+            </div>
+            <!-- End Body -->
+        </div>
+        <!-- End Browsers Card -->
+
+        <!-- Import Data Card -->
+        <div class="Browsers-card">
+            <!-- Header -->
+            <div class="Browsers-card-header">
+                <div>
+                    <h2 class="inline-block font-semibold text-gray-800 ">
+                        {:lang('admin/index/welcome/disk_space_usage')}</h2>
+                    <div class="hs-tooltip hover:z-10 inline-block">
+                        <svg class="flex-shrink-0 size-4 " xmlns="http://www.w3.org/2000/svg" width="24" height="24"
+                            viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
+                            stroke-linecap="round" stroke-linejoin="round">
+                            <circle cx="12" cy="12" r="10"></circle>
+                            <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
+                            <path d="M12 17h.01"></path>
+                        </svg>
+                        <span
+                            class="hs-tooltip-content hs-tooltip-shown:opacity-100 hs-tooltip-shown:visible opacity-0 transition-opacity invisible z-10 py-1 px-2 bg-gray-900 text-xs font-medium text-white rounded-lg shadow-sm  hidden"
+                            role="tooltip"
+                            style="position: fixed; inset: auto auto 0px 0px; margin: 0px; transform: translate(1110px, -600px);"
+                            data-popper-placement="top">
+                            {:lang('admin/index/welcome/disk_detail_tips')}
+                        </span>
+                    </div>
+                </div>
+            </div>
+            <!-- End Header -->
+
+            <!-- Body -->
+            <div class="h-full p-5 pt-0">
+                <div class="h-full flex flex-col justify-between space-y-4">
+                    <div class="space-y-4">
+                        <ul id="disk_list">
+                            {volist name="os_data['disk_datas']" id="disk_data" key="disk_count" }
+                            <li
+                                class="flex items-center gap-3 md:gap-10 justify-between gap-x-4 py-4 border-b border-solid border-[#E6E7EB]">
+                                <img class="size-[32px]" src="__STATIC__/images/home/[email protected]" alt=""
+                                    srcset="" />
+                                <div class="grow flex flex-col gap-2">
+                                    <div class="flex items-center ">
+                                        <span class="flex-shrink-0 size-2.5 inline-block
+                                            {switch $disk_count%7 }
+                                                {case 1 }bg-blue-600{/case}
+                                                {case 2}bg-teal-500{/case}
+                                                {case 3}bg-orange-600{/case}
+                                                {case 4}bg-yellow-300{/case}
+                                                {case 5}bg-green-500{/case}
+                                                {case 6}bg-violet-500{/case}
+                                            {/switch}
+                                            rounded-sm me-2.5">
+                                        </span>
+                                        <span class="text-xs text-gray-800 ">
+                                            {$key}
+                                            {if condition="$os_data['os_name']=='WINDOWS'"}:/{/if}
+                                        </span>
+                                    </div>
+                                    <div class="flex items-center">
+                                        <div class="flex w-full h-2 bg-stone-200 rounded-full overflow-hidden  text-xs text-center hs-tooltip hover:z-10"
+                                            role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100">
+                                            <div class="flex flex-col justify-center overflow-hidden bg-green-600 text-xs text-white text-center rounded-full whitespace-nowrap"
+                                                style="width:{$disk_data[2]}%" id="chart_{$disk_count}"></div>
+                                            <span id="disk_data_{$disk_count}"
+                                                class="hs-tooltip-content hs-tooltip-shown:opacity-100 hs-tooltip-shown:visible opacity-0 transition-opacity invisible z-10 py-1 px-2 bg-gray-900 text-xs font-medium text-white rounded-lg shadow-sm  hidden"
+                                                role="tooltip"
+                                                style="position: fixed; inset: auto auto 0px 0px; margin: 0px; transform: translate(1110px, -600px);"
+                                                data-popper-placement="top">
+                                                {$disk_data[1]-$disk_data[0]} GB/{$disk_data[1]} GB
+                                            </span>
+                                        </div>
+
+                                    </div>
+                                </div>
+                                <span id="disk_usage_{$disk_count}" class="text-[24px] font-semibold text-[#1F2937]">
+                                    {$disk_data[2]}%
+                                </span>
+                            </li>
+                            {/volist}
+                        </ul>
+                    </div>
+                </div>
+            </div>
+            <!-- End Body -->
+
+            <!-- End Footer -->
+        </div>
+        <!-- End Import Data Card -->
+
+        <!-- Sales Stats Card -->
+        <div class="Browsers-card">
+            <!-- Header -->
+            <div class="Browsers-card-header">
+                <h2 class="inline-block font-semibold text-gray-800 ">
+                    {:lang('admin/index/welcome/seven_day_reg_data')}
+                </h2>
+            </div>
+            <!-- End Header -->
+
+            <!-- Body -->
+            <div class="h-full pb-5 px-5 space-y-8">
+                <h4 class="text-4xl font-medium text-gray-800 Stats-Card-h4">
+                    <img class="w-[228px] h-[126px] absolute right-0 top-0"
+                        src="__STATIC__/images/home/[email protected]" alt="" srcset="" />
+                    {$dashboard_data['seven_day_reg_total_count']}
+                    {if condition="$dashboard_data['raise_reg_user_today']>0"}
+                    <svg class="inline-block align-middle size-4 text-teal-500" xmlns="http://www.w3.org/2000/svg"
+                        width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
+                        stroke-linecap="round" stroke-linejoin="round">
+                        <polyline points="22 7 13.5 15.5 8.5 10.5 2 17"></polyline>
+                        <polyline points="16 7 22 7 22 13"></polyline>
+                    </svg>
+                    <p class="text-sm text-green-500">
+                        {else /}
+                        <svg class="inline-block align-top mt-1 size-5 text-red-500" xmlns="http://www.w3.org/2000/svg"
+                            width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
+                            stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
+                            <polyline points="22 17 13.5 8.5 8.5 13.5 2 7"></polyline>
+                            <polyline points="16 17 22 17 22 11"></polyline>
+                        </svg>
+                    <p class="text-sm text-red-500">
+                        {/if}
+                        <span class="text-[#4B5563]">用户注册量</span>
+                        {$dashboard_data['raise_reg_user_today']}%
+                    </p>
+                </h4>
+                <!-- List Group -->
+                <ul class="space-y-3">
+                    <!-- List Item -->
+                    <li
+                        class="flex flex-wrap py-2 justify-between items-center gap-x-2 border-b border-solid border-[#E6E7EB]">
+                        <div>
+                            <div class="flex items-center gap-x-2">
+                                <div class="inline-block size-2.5 bg-blue-600 rounded-sm"></div>
+                                <h2 class="inline-block align-middle text-gray-500 ">
+                                    {:lang('admin/index/welcome/reg_users_count')}</h2>
+                            </div>
+                        </div>
+                        <div>
+                            <span class="text-gray-800 ">
+                                {$dashboard_data['user_count']}
+                            </span>
+                        </div>
+                    </li>
+                    <!-- End List Item -->
+
+                    <!-- List Item -->
+                    <li
+                        class="flex flex-wrap py-2 justify-between items-center gap-x-2 border-b border-solid border-[#E6E7EB]">
+                        <div>
+                            <div class="flex items-center gap-x-2">
+                                <div class="inline-block size-2.5 bg-purple-600 rounded-sm"></div>
+                                <h2 class="inline-block align-middle text-gray-500 ">
+                                    {:lang('admin/index/welcome/active_reg_users_count')}</h2>
+                            </div>
+                        </div>
+                        <div>
+                            <span class="text-gray-800 ">
+                                {$dashboard_data['user_active_count']}
+                            </span>
+                        </div>
+                    </li>
+                    <!-- End List Item -->
+
+                    <!-- List Item -->
+
+                    <!-- End List Item -->
+                </ul>
+                <!-- End List Group -->
+            </div>
+            <!-- End Body -->
+
+            <!-- Footer -->
+            <div class="p-5 pt-0 space-y-8">
+                <div class="w-full">
+                    <!-- Apex Line Chart -->
+                    <div id="hs-total-sales-lines-chart" style="min-height: 100px;"></div>
+                </div>
+            </div>
+            <!-- End Footer -->
+        </div>
+        <!-- End Sales Stats Card -->
+    </div>
+
+    <div class="flex flex-col bg-white border border-gray-200 shadow-sm rounded-xl">
+        <!-- Header -->
+        <div class="Browsers-card-header">
+            <!-- Select -->
+            <div class="relative inline-block">
+                <div class="hs-select relative">
+                    <h2 class="inline-block font-semibold text-gray-800 ">
+                        {:lang('admin/index/welcome/seven_day_visit_data')}
+                    </h2>
+                </div>
+            </div>
+            <!-- End Select -->
+            <div class="md:justify-end">
+                <div class="w-48">
+                    <input type="text" class="layui-input" id="date-range" placeholder="请选择日期范围">
+                </div>
+            </div>
+            <!-- End Col -->
+        </div>
+        <!-- End Header -->
+        <div class="flex items-center w-full p-5 h-[300px] max-md:flex-col max-md:h-[500px]">
+            <div class="visits ">
+                <img class="w-full h-[82px] absolute left-0 bottom-0 max-md:w-fit max-md:left-auto max-md:right-0"
+                    src="__STATIC__/images/home/[email protected]" alt="" srcset="" />
+                <h4 class="text-2xl flex gap-2 font-semibold text-gray-800 ">
+                    <div id="visit_sum">{$dashboard_data['seven_day_visit_total_count']}</div>
+                    {if condition="$dashboard_data['raise_visit_user_today']<=0"} <svg
+                        class="inline-block align-top mt-1 size-5 text-red-500" xmlns="http://www.w3.org/2000/svg"
+                        width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
+                        stroke-linecap="round" stroke-linejoin="round">
+                        <polyline points="22 17 13.5 8.5 8.5 13.5 2 7"></polyline>
+                        <polyline points="16 17 22 17 22 11"></polyline>
+                        </svg>
+                </h4>
+                <p class="text-sm text-red-500">
+                    {else /}
+                    <svg class="inline-block align-middle size-4 text-teal-500" xmlns="http://www.w3.org/2000/svg"
+                        width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
+                        stroke-linecap="round" stroke-linejoin="round">
+                        <polyline points="22 7 13.5 15.5 8.5 10.5 2 17"></polyline>
+                        <polyline points="16 7 22 7 22 13"></polyline>
+                    </svg>
+                    </h4>
+                <p class="text-sm text-green-500">
+                    {/if}
+                    {$dashboard_data['raise_visit_user_today']}%
+                </p>
+            </div>
+            <div class="flex flex-col flex-1 h-full">
+                <!-- Legend Indicator -->
+                <div class="flex px-5 justify-center sm:justify-end items-center gap-x-4 mt-5 sm:mt-0 sm:mb-6">
+                    <div class="inline-flex items-center">
+                        <span class="size-2.5 inline-block bg-blue-600 rounded-sm me-2"></span>
+                        <span class="text-[13px] text-gray-600 ">日訪問量</span>
+                    </div>
+                </div>
+                <!-- End Legend Indicator -->
+                <!-- Apex Line Chart -->
+                <div id="hs-visit-line-chart" class="h-full"></div>
+            </div>
+        </div>
+
+    </div>
+    <!-- End Double Area Chart in Card -->
+    <div class="pb-5 flex flex-col bg-white border border-stone-200 shadow-sm rounded-xl">
+        <!-- Header -->
+        <div class="Browsers-card-header">
+            <h2 class="inline-block font-semibold text-stone-800 ">
+                近七日爬虫次数
+            </h2>
+            <!-- Select -->
+            <div class="ml-auto relative inline-block layui-form layui-input-inline w-[100px]">
+                <select id="hs-pro-select-currency" lay-filter="spider_type">
+                    <option value="Google" selected>Google</option>
+                    <option value="Baidu">Baidu</option>
+                    <option value="Sogou">Sogou</option>
+                    <option value="SOSO">SOSO</option>
+                    <option value="Yahoo">Yahoo</option>
+                    <option value="MSN">MSN</option>
+                    <option value="msnbot">msnbot</option>
+                    <option value="Sohu">Sohu</option>
+                    <option value="Yodao">Yodao</option>
+                    <option value="Twiceler">Twiceler</option>
+                    <option value="Alexa">Alexa</option>
+                    <option value="360">360</option>
+                    <option value="so.com">so.com</option>
+                </select>
+            </div>
+            <!-- End Select -->
+        </div>
+        <!-- End Header -->
+
+        <!-- Apex Line Chart -->
+        <div id="hs-all-time-earnings-line-charts" class="min-h-[300px] mt-5"></div>
+    </div>
+
+
+    <!--    <blockquote class="layui-elem-quote layui-quote-nm mt10">-->
+    <!--        <p class="f-20 text-success">{:lang('admin/index/welcome/tip_warn')}</p>-->
+    <!--        <p>{:lang('admin/index/welcome/filed_login_num')}:{$admin.admin_login_num}  {:lang('admin/index/welcome/filed_last_login_ip')}:{$admin.admin_last_login_ip|long2ip}  {:lang('admin/index/welcome/filed_last_login_time')}:{$admin.admin_last_login_time|mac_day}</p>-->
+    <!--    </blockquote>-->
+
+    <!--    <table class="layui-table" >-->
+    <!--        <tbody>-->
+    <!--        <tr>-->
+    <!--            <td width="110">{:lang('admin/index/welcome/filed_os')}</td>-->
+    <!--            <td><?php echo PHP_OS ?> (<?php echo $_SERVER['SERVER_SOFTWARE'] ?>)</td>-->
+    <!--        </tr>-->
+    <!--        <tr>-->
+    <!--            <td>{:lang('admin/index/welcome/filed_host')}</td>-->
+    <!--            <td><?php echo $_SERVER['HTTP_HOST'] ?></td>-->
+    <!--        </tr>-->
+    <!--        <tr>-->
+    <!--            <td>{:lang('admin/index/welcome/filed_max_upload')}</td>-->
+    <!--            <td><?php echo get_cfg_var("file_uploads") ? get_cfg_var("upload_max_filesize") : $error;?></td>-->
+    <!--        </tr>-->
+    <!--        <tr>-->
+    <!--            <td>{:lang('admin/index/welcome/filed_date')}</td>-->
+    <!--            <td><?php echo date('Y-m-d'); ?></td>-->
+    <!--        </tr>-->
+    <!--         <tr>-->
+    <!--            <td>{:lang('admin/index/welcome/filed_php_ver')}</td>-->
+    <!--            <td><?php echo PHP_VERSION ?></td>-->
+    <!--        </tr>-->
+    <!--        <tr>-->
+    <!--            <td>{:lang('admin/index/welcome/filed_thinkphp_ver')}</td>-->
+    <!--            <td><?php echo THINK_VERSION; ?></td>-->
+    <!--        </tr>-->
+    <!--        <tr>-->
+    <!--            <td>{:lang('admin/index/welcome/filed_ver')}</td>-->
+    <!--            <td><span class="layui-badge">{$version.code}</span></td>-->
+    <!--        </tr>-->
+    <!--        </tbody>-->
+    <!--    </table>-->
+    {if condition="$update_sql"}
+    <table class="tbinfo pleft layui-table">
+        <thead>
+            <th colspan="2">{:lang('admin/index/welcome/tip_update_db')}</th>
+        </thead>
+        <tr>
+            <td colspan="2">
+                <font class="tif s20">{:lang('admin/index/welcome/tip_update_db_txt')}</font><a class="j-iframe"
+                    title="{:lang('admin/index/welcome/tip_update_go')}" data-href="{:url('update/step2')}">
+                    <font class="tit s20">{:lang('admin/index/welcome/tip_update_go')}</font>
+                </a>
+            </td>
+        </tr>
+    </table>
+    {/if}
+</div>
+<link id="apexcharts-css" rel="stylesheet" href="__STATIC__/css/apexcharts.css">
+<script src="__STATIC__/js/apexcharts.min.js"></script>
+<script src="__STATIC__/js/hs-apexcharts-helpers.js"></script>
+<script>
+    (function () {
+        buildChart(
+            "#hs-total-sales-lines-chart",
+            (mode) => ({
+                series: [
+                    {
+                        name: "{:lang('admin/index/welcome/reg_users_count')}",
+                        data: <?= json_encode($dashboard_data['seven_day_reg_count']) ?>
+                    }
+                ],
+                chart: {
+                    height: 100,
+                    type: "line",
+                    sparkline: {
+                        enabled: true
+                    }
+                },
+                stroke: {
+                    curve: "straight",
+                    width: 2
+                },
+                xaxis: {
+                    type: "category",
+                    categories: <?= json_encode($dashboard_data['seven_day_reg_day']) ?>
+        },
+                crosshairs: {
+                    show: false
+                },
+                markers: {
+                    hover: {
+                        size: 0
+                    }
+                },
+                tooltip: {
+                    custom: function (props) {
+                        const { categories } = props.ctx.opts.xaxis;
+                        const { dataPointIndex } = props;
+                        const title = categories[dataPointIndex];
+
+                        return buildTooltip(props, {
+                            title: title,
+                            mode,
+                            hasTextLabel: true,
+                            wrapperExtClasses: "kfx52",
+                            labelDivider: ":",
+                            labelExtClasses: "qupk7"
+                        });
+                    }
+                }
+            }),
+            {
+                colors: ["#9333ea"],
+                grid: {
+                    borderColor: "#e5e7eb"
+                },
+                fill: {
+                    type: "gradient",
+                    gradient: {
+                        gradientToColors: ["#fff", "#fff", "#fff"]
+                    }
+                }
+            },
+            {
+                colors: ["#3b82f6", "#a855f7", "#737373"],
+                grid: {
+                    borderColor: "#404040"
+                },
+                fill: {
+                    type: "gradient",
+                    gradient: {
+                        gradientToColors: ["#262626", "#262626", "#262626"]
+                    }
+                }
+            }
+        );
+    })();
+
+    var options = {
+        series: [{
+            name: "Visitors",
+            data: <?= json_encode($dashboard_data['seven_day_visit_count']) ?>
+        }],
+        colors: ['#2563eb', '#9333ea'],
+        fill: {
+            gradient: {
+                stops: [0, 90, 100]
+            }
+        },
+        chart: {
+            height: $('#hs-visit-line-chart').height(),
+            type: 'area',
+            toolbar: {
+                show: false
+            },
+            zoom: {
+                enabled: false
+            }
+        },
+        dataLabels: {
+            enabled: false
+        },
+        stroke: {
+            curve: 'straight',
+            width: 2
+        },
+        fill: {
+            type: 'gradient',
+            gradient: {
+                type: 'vertical',
+                shadeIntensity: 1,
+                opacityFrom: 0.2,
+                opacityTo: 0.8
+            }
+        },
+        grid: {
+            row: {
+                colors: ['#f3f3f3', 'transparent'],
+                opacity: 0.2
+            }
+        },
+        xaxis: {
+            type: 'category',
+            tickPlacement: 'on',
+            categories: <?= json_encode($dashboard_data['seven_day_visit_day']) ?>,
+            axisBorder: {
+                show: false
+            },
+            axisTicks: {
+                show: false
+            },
+            crosshairs: {
+                stroke: {
+                    dashArray: 0
+                },
+                dropShadow: {
+                    show: false
+                }
+            },
+            tooltip: {
+                x: {
+                    format: 'MMMM yyyy'
+                },
+                y: {
+                    formatter: (value) => `$${value >= 1000 ? `${value / 1000}k` : value}`
+                },
+                custom: function (props) {
+                    return buildTooltipCompareTwo(props, {
+                        title: 'Revenue',
+                        mode,
+                        hasTextLabel: true,
+                        wrapperExtClasses: 'min-w-48'
+                    });
+                }
+            },
+            labels: {
+                style: {
+                    colors: '#9ca3af',
+                    fontSize: '13px',
+                    fontFamily: 'Inter, ui-sans-serif',
+                    fontWeight: 400
+                }
+            }
+        },
+        yaxis: {
+            labels: {
+                align: 'left',
+                minWidth: 0,
+                maxWidth: 140,
+                style: {
+                    colors: '#9ca3af',
+                    fontSize: '12px',
+                    fontFamily: 'Inter, ui-sans-serif',
+                    fontWeight: 400
+                },
+                formatter: (value) => value >= 1000 ? `${value / 1000}k` : value
+            }
+        },
+        responsive: [{
+            breakpoint: 568,
+            options: {
+                chart: {
+                    height: 300
+                },
+                labels: {
+                    style: {
+                        colors: '#9ca3af',
+                        fontSize: '11px',
+                        fontFamily: 'Inter, ui-sans-serif',
+                        fontWeight: 400
+                    },
+                    offsetX: -2,
+                    formatter: (title) => title.slice(0, 3)
+                },
+                yaxis: {
+                    labels: {
+                        align: 'left',
+                        minWidth: 0,
+                        maxWidth: 140,
+                        style: {
+                            colors: '#9ca3af',
+                            fontSize: '11px',
+                            fontFamily: 'Inter, ui-sans-serif',
+                            fontWeight: 400
+                        },
+                        formatter: (value) => value >= 1000 ? `${value / 1000}k` : value
+                    }
+                }
+            }
+        }]
+    };
+
+    var chart = new ApexCharts(document.querySelector("#hs-visit-line-chart"), options);
+    chart.render();
+
+    layui.use(['laydate'], function () {
+        var laydate = layui.laydate;
+
+        //日期范围
+        laydate.render({
+            elem: '#date-range'
+            , type: 'date'
+            , range: true
+            , max: 0  //最大日期为今天
+            , value: getLastSevenDays() //默认最近7天
+            , done: function (value, date, endDate) {
+                var dates = value.split(' - ');
+                $.ajax({
+                    url: ADMIN_PATH + '/admin/index/rangeDateDailyVisit.html',
+                    data: {
+                        startDate: dates[0],
+                        endDate: dates[1]
+                    },
+                    method: "POST",
+                    success: function (data) {
+                        chart.updateOptions({
+                            xaxis: {
+                                categories: JSON.parse(data).days
+                            },
+                            series: [{
+                                name: "Visitors",
+                                data: JSON.parse(data).count
+                            }],
+                        });
+                        $('#visit_sum').text(JSON.parse(data).sum);
+                    },
+                    error: function (xhr, status, error) {
+                        layer.msg('获取数据失败');
+                    }
+                });
+            }
+        });
+
+        //获取最近7天的日期范围
+        function getLastSevenDays() {
+            var end = new Date();
+            var start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 6);
+            return formatDate(start) + ' - ' + formatDate(end);
+        }
+
+        //格式化日期
+        function formatDate(date) {
+            var year = date.getFullYear();
+            var month = date.getMonth() + 1;
+            var day = date.getDate();
+            month = month < 10 ? '0' + month : month;
+            day = day < 10 ? '0' + day : day;
+            return year + '-' + month + '-' + day;
+        }
+    });
+
+    var chart_spider = buildChart('#hs-all-time-earnings-line-charts', (mode) => ({
+        chart: {
+            height: 400,
+            type: 'area',
+            toolbar: {
+                show: false
+            },
+            zoom: {
+                enabled: false
+            }
+        },
+        series: [
+            {
+                name: 'Referrals',
+                data: <?= json_encode($spider_data['Google']['values']) ?>
+            }
+        ],
+        legend: {
+            show: false
+        },
+        dataLabels: {
+            enabled: false
+        },
+        stroke: {
+            curve: 'smooth',
+            width: 2
+        },
+        fill: {
+            type: 'gradient',
+            gradient: {
+                type: 'vertical',
+                shadeIntensity: 1,
+                opacityFrom: 0.2,
+                opacityTo: 0.8
+            }
+        },
+        xaxis: {
+            type: 'category',
+            tickPlacement: 'on',
+            categories: <?= json_encode($spider_data['Google']['key']) ?>,
+            axisBorder: {
+                show: false
+            },
+            axisTicks: {
+                show: false
+            },
+            crosshairs: {
+                stroke: {
+                    dashArray: 0
+                },
+                dropShadow: {
+                    show: false
+                }
+            },
+            tooltip: {
+                enabled: false
+            },
+            labels: {
+                style: {
+                    colors: '#a8a29e',
+                    fontSize: '13px',
+                    fontFamily: 'Inter, ui-sans-serif',
+                    fontWeight: 400
+                },
+                formatter: (title) => title ? title.slice(0, 3) : title
+            }
+        },
+        yaxis: {
+            labels: {
+                align: 'left',
+                minWidth: 0,
+                maxWidth: 140,
+                style: {
+                    colors: '#a8a29e',
+                    fontSize: '12px',
+                    fontFamily: 'Inter, ui-sans-serif',
+                    fontWeight: 400
+                },
+                formatter: (value) => value >= 1000 ? `${value / 1000}k` : value
+            }
+        },
+        tooltip: {
+            y: {
+                formatter: (value) => `$${value >= 1000 ? `${value / 1000}k` : value}`
+            },
+            custom: function (props) {
+                const { categories } = props.ctx.opts.xaxis;
+                const { dataPointIndex } = props;
+                const title = categories[dataPointIndex];
+                const newTitle = `${title}`;
+
+                return buildTooltip(props, {
+                    title: newTitle,
+                    mode,
+                    valuePrefix: '',
+                    hasCategory: false,
+                    hasTextLabel: true,
+                    wrapperExtClasses: 'min-w-[130px]',
+                    labelDivider: ':',
+                    labelExtClasses: 'ms-2'
+                });
+            }
+        },
+        responsive: [{
+            breakpoint: 568,
+            options: {
+                chart: {
+                    height: 200
+                },
+                labels: {
+                    style: {
+                        colors: '#a8a29e',
+                        fontSize: '11px',
+                        fontFamily: 'Inter, ui-sans-serif',
+                        fontWeight: 400
+                    },
+                    offsetX: -2,
+                    formatter: (title) => title.slice(0, 3)
+                },
+                yaxis: {
+                    labels: {
+                        align: 'left',
+                        minWidth: 0,
+                        maxWidth: 140,
+                        style: {
+                            colors: '#a8a29e',
+                            fontSize: '11px',
+                            fontFamily: 'Inter, ui-sans-serif',
+                            fontWeight: 400
+                        },
+                        formatter: (value) => value >= 1000 ? `${value / 1000}k` : value
+                    }
+                }
+            }
+        }]
+    }),
+        {
+            colors: ['#16a34a'],
+            fill: {
+                gradient: {
+                    stops: [0, 90, 100]
+                }
+            },
+            grid: {
+                strokeDashArray: 2,
+                borderColor: '#e5e5e5'
+            },
+            xaxis: {
+                labels: {
+                    style: {
+                        colors: '#a8a29e'
+                    }
+                }
+            },
+            yaxis: {
+                labels: {
+                    style: {
+                        colors: '#a8a29e'
+                    }
+                }
+            }
+        },
+        {
+            colors: ['#22c55e'],
+            fill: {
+                gradient: {
+                    stops: [100, 90, 0]
+                }
+            },
+            grid: {
+                strokeDashArray: 2,
+                borderColor: '#44403c'
+            },
+            xaxis: {
+                labels: {
+                    style: {
+                        colors: '#a3a3a3'
+                    }
+                }
+            },
+            yaxis: {
+                labels: {
+                    style: {
+                        colors: '#a3a3a3'
+                    }
+                }
+            }
+        }
+    );
+
+    function showSpiderData() {
+        console.log("showSpiderData -> showSpiderData")
+        $.ajax({
+            url: ADMIN_PATH + '/admin/index/botlist.html',
+            data: {
+                category: $('#hs-pro-select-currency').val()
+            },
+            method: "POST",
+            success: function (data) {
+                console.log("showSpiderData -> data", data.key)
+                chart_spider.updateOptions({
+                    xaxis: {
+                        categories: data.key ? data.key : data.keys
+                    },
+                    series: [{
+                        name: "Spider_Visit",
+                        data: data.values
+                    }]
+                });
+            },
+            error: function (xhr, status, error) {
+                // Handle error
+            }
+        });
+    }
+
+    function update_system_status() {
+        $.ajax({
+            url: ADMIN_PATH + '/admin/index/get_system_status.html',
+            method: "GET",
+            success: function (data) {
+                if (data.cpu_usage != 'undefine') {
+                    $('#cpu_usage').text(data.cpu_usage + '%');
+                }
+                if (data.mem_usage != 'undefine') {
+                    $('#mem_usage').text(data.mem_usage + '%');
+                }
+                var i = 1;
+                for (const [key, value] of Object.entries(data.disk_datas)) {
+                    $('#mem_detail').text(roundTo(data.mem_used, 2) + ' MB/' + roundTo(data.mem_total, 2) + ' MB');
+                    $('#chart_' + i).css('width', data.disk_datas[key][2] + '%');
+                    $('#disk_usage_' + i).text(data.disk_datas[key][2] + '%');
+                    $('#disk_data_' + i).text(roundTo(data.disk_datas[key][1] - data.disk_datas[key][0], 2) + ' GB/' + roundTo(data.disk_datas[key][1], 2) + ' GB');
+                    i++;
+                }
+            },
+            error: function (xhr, status, error) {
+                // Handle error
+            }
+        });
+    }
+
+    roundTo = function (num, decimal) {
+        return Math.round((num + Number.EPSILON) * Math.pow(10, decimal)) / Math.pow(10, decimal);
+    }
+
+    window.onload = () => {
+        update_system_status()
+        showSpiderData()
+        // $('.fade').fadeIn("slow");
+        // $('.tbinfo').css("display","none");
+    }
+    layui.use(['layer', 'form'], function (params) {
+        var $ = layui.jquery, layer = layui.layer, form = layui.form;
+        form.on('select(spider_type)', function (data) {
+            showSpiderData()
+        });
+
+    })
+</script>
+
+
+{include file="../../../application/admin/view_new/public/foot" /}
+</body>
+
+</html>

+ 89 - 0
application/admin/view_new/link/index.html

@@ -0,0 +1,89 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box">
+        <div class=" mb10">
+            <form class="layui-form " method="post" action="{:url('index')}">
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_filter_xss}">
+                </div>
+                <button class="layui-btn mgl-20 j-search" >{:lang('btn_search')}</button>
+            </form>
+        </div>
+
+        <div class="flex gap-5 overflow-x-auto overflow-y-hidden">
+            <a data-href="{:url('info')}" class="layui-btn layui-btn-primary j-iframe"><i class="layui-icon">&#xe654;</i>{:lang('add')}</a>
+            <a data-href="{:url('batch')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe642;</i>{:lang('edit')}</a>
+            <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+        </div>
+
+    </div>
+
+    <form class="layui-form " method="post" id="pageListForm">
+        <table class="layui-table" lay-size="sm">
+        <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="100">{:lang('id')}</th>
+                <th width="100">{:lang('sort')}</th>
+                <th width="150">{:lang('genre')}</th>
+                <th >{:lang('name')}</th>
+                <th >{:lang('url')}</th>
+                <th >{:lang('logo')}</th>
+                <th width="230">{:lang('opt')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.link_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.link_id}</td>
+                <td><input type="input" name="link_sort[]" value="{$vo.link_sort}" class="layui-input"></td>
+                <td>
+                    <select name="link_type[]">
+                        <option value="0" {if condition="$vo['link_type'] eq 0"}selected {/if}>{:lang('admin/link/text_link')}</option>
+                        <option value="1" {if condition="$vo['link_type'] eq 1"}selected {/if}>{:lang('admin/link/pic_link')}</option>
+                    </select>
+                </td>
+                <td><input type="input" name="link_name[]" value="{$vo.link_name}" class="layui-input"></td>
+                <td><input type="input" name="link_url[]" value="{$vo.link_url}" class="layui-input"></td>
+                <td><input type="input" name="link_logo[]" value="{$vo.link_logo}" class="layui-input"></td>
+                <td>
+                    <a class="layui-badge-rim j-ajax" data-href="{:url('index/check_back_link')}?url={$vo['link_url']}" refresh="no" href="javascript:;" title="{:lang('detect')}">{:lang('detect')}</a>
+                    <a class="layui-badge-rim j-iframe" data-href="{:url('info?id='.$vo['link_id'])}" href="javascript:;" title="{:lang('edit')}">{:lang('edit')}</a>
+                    <a class="layui-badge-rim j-tr-del" data-href="{:url('del?ids='.$vo['link_id'])}" href="javascript:;" title="{:lang('del')}">{:lang('del')}</a>
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+        <div id="pages" class="center"></div>
+
+    </form>
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+
+
+<script type="text/javascript">
+    var curUrl="{:url('link/index',$param)}";
+    layui.use(['laypage', 'layer'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+    });
+
+</script>
+</body>
+</html>

+ 78 - 0
application/admin/view_new/link/info.html

@@ -0,0 +1,78 @@
+{include file="../../../application/admin/view_new/public/head" /}
+
+<div class="page-container p10">
+    <form class="layui-form layui-form-pane" method="post" action="">
+        <input id="link_id" name="link_id" type="hidden" value="{$info.link_id}">
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('name')}:</label>
+            <div class="layui-input-block">
+                <input type="text" class="layui-input" value="{$info.link_name}" lay-verify="link_name" placeholder="" id="link_name" name="link_name">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('url')}:</label>
+            <div class="layui-input-block">
+                <input type="text" class="layui-input" value="{$info.link_url}" lay-verify="link_url" placeholder="" id="link_url" name="link_url">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('logo')}:</label>
+            <div class="layui-input-block">
+                <input type="text" class="layui-input" value="{$info.link_logo}" placeholder="" id="link_logo" name="link_logo">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('sort')}:</label>
+            <div class="layui-input-inline w100">
+                <input type="text" class="layui-input" value="{$info.link_sort}" placeholder="" id="link_sort" name="link_sort">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">{:lang('genre')}:</label>
+            <div class="layui-input-inline">
+                <select class="w100" name="link_type">
+                    <option value="0" {if condition="$vo['link_type'] eq 0"}selected {/if}>{:lang('admin/link/text_link')}</option>
+                    <option value="1" {if condition="$vo['link_type'] eq 1"}selected {/if}>{:lang('admin/link/pic_link')}</option>
+                </select>
+            </div>
+        </div>
+
+        <div class="layui-form-item center">
+            <div class="layui-input-block">
+                <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit" data-child="true">{:lang('btn_save')}</button>
+                <button class="layui-btn layui-btn-primary" type="reset">{:lang('btn_reset')}</button>
+            </div>
+        </div>
+    </form>
+
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    layui.use(['form', 'layer'], function () {
+        // 操作对象
+        var form = layui.form
+                , layer = layui.layer
+                , $ = layui.jquery;
+
+        // 验证
+        form.verify({
+            link_name: function (value) {
+                if (value == "") {
+                    return "{:lang('name_empty')}";
+                }
+            },
+            link_url: function (value) {
+                if (value == "") {
+                    return "{:lang('url_empty')}";
+                }
+            }
+        });
+
+
+    });
+</script>
+
+</body>
+</html>

+ 179 - 0
application/admin/view_new/make/opt.html

@@ -0,0 +1,179 @@
+{include file="../../../application/admin/view_new/public/head" /}
+
+<div class="page-container p10">
+
+
+    <form class="layui-form layui-form-pane" method="post" action="" id="form1">
+        <div id="movementTable">
+            <div class="layui-form-item">
+                <label class="layui-form-label">{:lang('vod')}{:lang('type')}:</label>
+                <div class="flex  max-md:flex-row-reverse">
+                    <div class="layui-input-inline">
+                        <select name="vodtype[]" multiple style="width:150px;height:150px;" lay-ignore>
+                            {volist name="$vod_type_list" id="vo"}
+                            <option value="{$vo.type_id}">{$vo.type_name}</option>
+                            {/volist}
+                        </select>
+                    </div>
+                    <div class="layui-input-inline w300">
+                        <div class="layui-btn-container">
+                            <input type="button" value="{:lang('admin/make/select_type')}"
+                                class="layui-btn" onclick="post('ac=type&tab=vod');" />
+                            <input type="button" value="{:lang('admin/make/all_type')}"
+                                class="layui-btn layui-btn-normal"
+                                onclick="post('ac=type&tab=vod&vodtype={$vod_type_ids}');" />
+                            <input type="button" value="{:lang('admin/make/today_type')}"
+                                class="layui-btn layui-btn-normal"
+                                onclick="post('ac=type&tab=vod&vodtype={$vod_type_ids_today}&ac2=day');" />
+                            <input type="button" value="{:lang('admin/make/select_info')}"
+                                class="layui-btn layui-btn-normal" onclick="post('ac=info&tab=vod');" />
+                            <input type="button" value="{:lang('admin/make/all_info')}"
+                                class="layui-btn layui-btn-normal"
+                                onclick="post('ac=info&tab=vod&vodtype={$vod_type_ids}');" />
+                            <input type="button" value="{:lang('admin/make/today_info')}"
+                                class="layui-btn layui-btn-normal"
+                                onclick="post('ac=info&tab=vod&vodtype={$vod_type_ids_today}&ac2=day');" />
+                            <input type="button" value="{:lang('admin/make/no_make_info')}"
+                                class="layui-btn layui-btn-normal" onclick="post('ac=info&tab=vod&ac2=nomake');" />
+                            <input type="button" value="{:lang('admin/make/one_today')}"
+                                class="layui-btn layui-btn-normal"
+                                onclick="post('ac=info&tab=vod&vodtype={$vod_type_ids_today}&ac2=day&jump=1');" />
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-form-item">
+                <label class="layui-form-label">{:lang('art')}{:lang('type')}:</label>
+                <div class="flex  max-md:flex-row-reverse">
+                    <div class="layui-input-inline">
+                        <select name="arttype[]" multiple style="width:150px;height:150px;" lay-ignore>
+                            {volist name="$art_type_list" id="vo"}
+                            <option value="{$vo.type_id}">{$vo.type_name}</option>
+                            {/volist}
+                        </select>
+                    </div>
+                    <div class="layui-input-inline w300">
+                        <div class="layui-btn-container">
+                            <input type="button" value="{:lang('admin/make/select_type')}"
+                                class="layui-btn layui-btn-normal" onclick="post('ac=type&tab=art');" />
+                            <input type="button" value="{:lang('admin/make/all_type')}"
+                                class="layui-btn layui-btn-normal"
+                                onclick="post('ac=type&tab=art&arttype={$art_type_ids}');" />
+                            <input type="button" value="{:lang('admin/make/today_type')}"
+                                class="layui-btn layui-btn-normal"
+                                onclick="post('ac=type&tab=art&arttype={$art_type_ids_today}&ac2=day');" />
+                            <input type="button" value="{:lang('admin/make/select_info')}"
+                                class="layui-btn layui-btn-normal" onclick="post('ac=info&tab=art');" />
+                            <input type="button" value="{:lang('admin/make/all_info')}"
+                                class="layui-btn layui-btn-normal"
+                                onclick="post('ac=info&tab=art&arttype={$art_type_ids}');" />
+                            <input type="button" value="{:lang('admin/make/today_info')}"
+                                class="layui-btn layui-btn-normal"
+                                onclick="post('ac=info&tab=art&arttype={$art_type_ids_today}&ac2=day');" />
+                            <input type="button" value="{:lang('admin/make/no_make_info')}"
+                                class="layui-btn layui-btn-normal" onclick="post('ac=info&tab=art&ac2=nomake');" />
+                            <input type="button" value="{:lang('admin/make/one_today')}"
+                                class="layui-btn layui-btn-normal"
+                                onclick="post('ac=info&tab=art&arttype={$art_type_ids_today}&ac2=day&jump=1');" />
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <hr class="layui-bg-gray">
+            <div class="layui-form-item">
+                <label class="layui-form-label">{:lang('admin/make/topic_list')}:</label>
+                <div class="flex  max-md:flex-row-reverse">
+                    <div class="layui-input-inline">
+                        <select name="topic[]" multiple style="width:150px;height:150px;" lay-ignore>
+                            {volist name="$topic_list" id="vo"}
+                            <option value="{$vo.topic_id}">{$vo.topic_name}</option>
+                            {/volist}
+                        </select>
+                    </div>
+                    <div class="layui-input-inline w300">
+                        <div class="layui-btn-container">
+                            <input type="button" value="{:lang('admin/make/select_topic')}"
+                                class="layui-btn layui-btn-normal" onclick="post('ac=topic_info');" />
+                            <input type="button" value="{:lang('admin/make/all_topic')}"
+                                class="layui-btn layui-btn-normal"
+                                onclick="post('ac=topic_info&topic={$topic_ids}');" />
+                            <input type="button" value="{:lang('admin/make/topic_index')}"
+                                class="layui-btn layui-btn-normal" onclick="post('ac=topic_index');" />
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-form-item">
+                <label class="layui-form-label">{:lang('admin/make/label_page')}:</label>
+                <div class="flex  max-md:flex-row-reverse">
+                    <div class="layui-input-inline">
+                        <select name="label[]" multiple style="width:150px;height:150px;" lay-ignore>
+                            {volist name="$label_list" id="vo"}
+                            <option value="{$vo}">{$vo}</option>
+                            {/volist}
+                        </select>
+                    </div>
+                    <div class="layui-input-inline w300">
+                        <div class="layui-btn-container">
+                            <input type="button" value="{:lang('make_page')}" class="layui-btn layui-btn-normal"
+                                onclick="post('ac=label   ');">
+                            <input type="button" value="{:lang('make_all')}" class="layui-btn layui-btn-normal"
+                                onclick="post('ac=label&label={$label_ids}');">
+                        </div>
+                    </div>
+                </div>
+            </div>
+
+            <hr class="layui-bg-gray">
+            <div class="layui-form-item">
+                <label class="layui-form-label">SiteMap:</label>
+                <div class="wfull">
+                    <div class="layui-btn-container">
+                        <input type="button" value="{:lang('admin/make/rss')}" class="layui-btn layui-btn-normal"
+                            onclick="post('ac=rss&ac2=index');">
+                        <input type="button" value="{:lang('admin/make/google')}" class="layui-btn layui-btn-normal"
+                            onclick="post('ac=rss&ac2=google');">
+                        <input type="button" value="{:lang('admin/make/baidu')}" class="layui-btn layui-btn-normal"
+                            onclick="post('ac=rss&ac2=baidu');">
+                        <input type="button" value="{:lang('admin/make/so')}" class="layui-btn layui-btn-normal"
+                            onclick="post('ac=rss&ac2=so');">
+                        <input type="button" value="{:lang('admin/make/sogou')}" class="layui-btn layui-btn-normal"
+                            onclick="post('ac=rss&ac2=sogou');">
+                        <input type="button" value="{:lang('admin/make/bing')}" class="layui-btn layui-btn-normal"
+                            onclick="post('ac=rss&ac2=bing');">
+                        <input type="button" value="{:lang('admin/make/sm')}" class="layui-btn layui-btn-normal"
+                            onclick="post('ac=rss&ac2=sm');">
+                    </div>
+                </div>
+            </div>
+            <div class="layui-form-item">
+                <label class="layui-form-label">{:lang('admin/make/make_page_num')}:</label>
+                <div class="layui-input-inline w200">
+                    <input type="text" name="ps" class="layui-input" placeholder="" value="1" />
+                </div>
+            </div>
+        </div>
+
+    </form>
+
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+    var curUrl = "{:url('make')}";
+    layui.use(['form', 'layer'], function () {
+        var form = layui.form
+            , layer = layui.layer;
+
+
+    });
+
+    function post(p) {
+        $("#form1").attr("action", curUrl + "?" + p);
+        $("#form1").submit();
+    }
+</script>
+</body>
+
+</html>

+ 34 - 0
application/admin/view_new/mycj/allplayer.html

@@ -0,0 +1,34 @@
+<div class="page-container p10">
+	<blockquote class="layui-elem-quote"><p>程序顶部导航栏的 “视频”->“播放器” 里面也可管理</p><p style="color:red">这里修改的播放器,只适用于网页端调用,如果你程序接入了APP或者小程序,此处的修改将无效<br>如果你程序是二次开发过的,请勿使用此功能,避免造成未知的冲突</p><p>先勾选,然后选择批量操作的内容,即可批量修改多个播放器的调用内容</p></blockquote>
+    <div class="my-toolbar-box">
+        <div class="layui-btn-group">
+			<button class="layui-btn" id="allplayerBtn">批量操作<i class="layui-icon layui-icon-down layui-font-12"></i></button>
+			<a class="layui-btn layui-btn-danger layuiBtn" data-type="delplayer"><i class="layui-icon">&#xe620;</i>初始化播放器</a>
+        </div>
+    </div>
+    <form class="layui-form " method="post" id="pageListForm">
+        <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="40">播放器排序</th>
+                <th width="40">播放器编码</th>
+                <th width="130">播放器名称</th>
+                <th width="130">操作</th>
+            </tr>
+            </thead>
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.from}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.sort}</td>
+                <td>{$vo.from}</td>
+                <td>{$vo.show}</td>
+                <td>
+                    <a class="layui-badge-rim j-iframe" data-href="{:url('vodplayer/info?id='.$vo['from'])}" href="javascript:;" title="编辑">编辑</a>
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+    </form>
+</div>

+ 119 - 0
application/admin/view_new/mycj/cjslide.html

@@ -0,0 +1,119 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+    <div class="my-toolbar-box">
+        <div class="mb10">
+			<blockquote class="layui-elem-quote">
+				<p>海报图采集入库说明:</p>
+				<p>需要模板支持才能显示幻灯图,否则设置了前端也不会显示:</p>
+				<p>不同模板显示海报图的推荐值不同,但是大部分都是设置为“推荐9-幻灯片”</p>
+			</blockquote>
+			<div class="showpic" style="display:none;"><img class="showpic_img" width="400" height="200" referrerPolicy="no-referrer"></div>
+			{empty name="$info"}
+			<form class="layui-form layui-form-pane" method="get" action="">	
+				<blockquote class="layui-elem-quote">
+					<p style="color:red;">没有找到“{$param.name}”相关影片,请修改名称再试</p>
+				</blockquote>				
+				<div class="layui-form-item ">
+                    <label class="layui-form-label">名称:</label>
+                    <div class="layui-input-inline">
+                        <input type="text" class="layui-input" value="{$param.name}" placeholder="" name="name" id="name">
+						<input type="hidden" value="{$param.pic_url}"  name="pic_url" id="pic_url">
+                    </div>
+					<div class="layui-form-mid layui-word-aux">不支持模糊搜索</div>
+                </div>
+				<div class="layui-form-item">
+                    <div class="layui-input-block">
+                        <button type="submit" class="layui-btn" lay-submit="" lay-filter="Submit" data-child="">立即搜索</button>
+                    </div>
+                </div>
+			{else /}
+			<form class="layui-form layui-form-pane" method="post" action="">
+				<input type="hidden" name="vod_id" value="{$info.vod_id}">
+				<div class="layui-form-item ">
+					<label class="layui-form-label">分类:</label>
+                    <div class="layui-input-inline">
+                            <select name="type_id" lay-filter="type_id">
+                                <option value="">请选择分类</option>
+                                {volist name="type_tree" id="vo"}
+                                    {if condition="$vo.type_mid eq 1"}
+                                    <option value="{$vo.type_id}" {if condition="$info.type_id eq $vo.type_id"}selected{/if}>{$vo.type_name}</option>
+                                    {volist name="$vo.child" id="ch"}
+                                    <option value="{$ch.type_id}" {if condition="$info.type_id eq $ch.type_id"}selected{/if}>&nbsp;|&nbsp;&nbsp;&nbsp;|—{$ch.type_name}</option>
+                                    {/volist}
+                                    {/if}
+                                {/volist}
+                            </select>
+                    </div>
+					<div class="layui-input-inline">
+                            <select name="vod_level">
+                                <option value="0">选择推荐</option>
+                                <option value="9" {if condition="$info.vod_level eq 9"}selected{/if}>推荐9-幻灯片</option>
+                                <option value="1" {if condition="$info.vod_level eq 1"}selected{/if}>推荐1</option>
+                                <option value="2" {if condition="$info.vod_level eq 2"}selected{/if}>推荐2</option>
+                                <option value="3" {if condition="$info.vod_level eq 3"}selected{/if}>推荐3</option>
+                                <option value="4" {if condition="$info.vod_level eq 4"}selected{/if}>推荐4</option>
+                                <option value="5" {if condition="$info.vod_level eq 5"}selected{/if}>推荐5</option>
+                                <option value="6" {if condition="$info.vod_level eq 6"}selected{/if}>推荐6</option>
+                                <option value="7" {if condition="$info.vod_level eq 7"}selected{/if}>推荐7</option>
+                                <option value="8" {if condition="$info.vod_level eq 8"}selected{/if}>推荐8</option>
+                            </select>
+                    </div>
+				</div>	
+				<div class="layui-form-item ">
+                    <label class="layui-form-label">名称:</label>
+                    <div class="layui-input-inline w500">
+                        <input type="text" class="layui-input" value="{$info.vod_name}" placeholder="" name="vod_name" id="vod_name">
+                    </div>
+                    <label class="layui-form-label">副标题:</label>
+                    <div class="layui-input-inline ">
+                        <input type="text" class="layui-input" value="{$info.vod_sub}" placeholder="" name="vod_sub" id="vod_sub">
+                    </div>
+                </div>
+				<div class="layui-form-item">
+                        <label class="layui-form-label">海报图:</label>
+                        <div class="layui-input-inline w500 upload">
+                            <input type="text" class="layui-input upload-input" style="max-width:100%;" value="{$pic_url}" placeholder="" id="vod_pic_slide" name="vod_pic_slide">
+                        </div>
+						{if condition="$info.vod_pic_slide neq ''"}<div class="layui-form-mid layui-word-aux">海报图已设置过了</div>{/if}
+                    </div>
+				<div class="layui-form-item">
+                    <div class="layui-input-block">
+                        <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit" data-child="">保存</button>
+                    </div>
+                </div>
+
+
+
+				
+				{/empty}
+			
+			
+
+			</form>
+        </div>
+    </div>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+
+    layui.use(['layer','form'], function() {
+        var layer = layui.layer,
+            form = layui.form;
+    });
+        $('.upload-input').hover(function (e){
+            var e = window.event || e;
+            var imgsrc = $(this).val();
+            if(imgsrc.trim()==""){ return; }
+            var left = e.clientX+document.body.scrollLeft+20;
+            var top = e.clientY+document.body.scrollTop+20;
+            $(".showpic").css({left:left,top:top,display:""});
+            if(imgsrc.indexOf('://')<0){ imgsrc = ROOT_PATH  + '/' + imgsrc;	} else{ imgsrc = imgsrc.replace('mac:','http:'); }
+            $(".showpic_img").attr("src", imgsrc);
+        },function (e){
+            $(".showpic").css("display","none");
+        });
+</script>
+</body>
+</html>

+ 95 - 0
application/admin/view_new/mycj/index.html

@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <title>萌芽Pro采集插件 - 官方网址:Mycj.pro</title>
+    <link rel="stylesheet" href="__STATIC__/mycj/layui/2.8.17/css/layui.css">
+    <link rel="stylesheet" href="__STATIC__/css/admin_style.css?v={$plugInfo.version}">
+    <script type="text/javascript" src="__STATIC__/js/jquery.js?v={$plugInfo.version}"></script>
+    <script type="text/javascript" src="__STATIC__/mycj/layui/2.8.17/layui.js"></script>
+	<style type="text/css">body a,layui-table a{cursor:pointer}.layui-table a{color:#01AAED}.footer{padding:30px 0;line-height:30px;text-align:center;color:#666;font-weight:300}#Images li{width:49%;margin:0.5% 0.5%;float:left;overflow:hidden}#Images li img{width:100%;height:300px;cursor:pointer}#Images li .operate{display:block;height:40px;width:100%;background:#f4f5f9}#Images li .operate .check{float:left;margin-left:11px;height:18px;padding:11px 0;width:54%;position:relative}#Images li .operate .check .layui-form-checkbox[lay-skin=primary]{width:100%}#Images li .operate .check .layui-form-checkbox[lay-skin=primary] span{padding:0 5px 0 25px;width:100%;box-sizing:border-box}#Images li .operate .check .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}#Images li .operate .layui-copy{float:right;margin:9px 11px 0 0;cursor:pointer}#Images li .operate .layui-copy:hover{color:#f00}@media screen and (max-width:1050px){#Images li{width:49%}#Images li img{width:100%;height:150px;cursor:pointer}}@media screen and (max-width:750px){#Images li{width:49%}#Images li img{width:100%;height:150px;cursor:pointer}}@media screen and (max-width:432px){#Images li{width:99%}#Images li img{width:100%;height:150px;cursor:pointer}}#show-advs td{text-align:center}@media screen and (max-width:768px){.layui-colla-content{white-space:nowrap;overflow:scroll;position:relative;width:100%}.layui-colla-content{padding:0 0}.sjhide{display:none}#show-advs td{float:left;width:100%}.page-container .layui-tab-content {padding: 15px 0px 50px 0px;}}.cj-images{float: right;margin: 9px 11px 0 0;}</style>
+    <script>
+        var ROOT_PATH="__ROOT__",ADMIN_PATH="{$_SERVER['SCRIPT_NAME']}", MAC_VERSION='v10',CMS_VER='{$version.code}',root_path = '{$config.install_dir}';var userInfo = {$plugInfo|mac_return};{$data}
+    </script>
+</head>
+<body>
+<div class="page-container">
+    <div class="layui-header" style="background-color: #393D49;">
+        <div class="fl">
+            <ul class="layui-nav" style="padding: 0;">
+                <li class="layui-nav-item layui-this" id="plugPro">
+					<a href="javascript:location.reload();"><img src="__STATIC__/mycj/pro_icon.png"> {$plugInfo.version}</a>
+					</li>
+                <li class="layui-nav-item layui-hide-xs layuiBtn" data-type="allplayer">
+                    <a href="javascript:;" >批量设置播放器</a></li>
+                <li class="layui-nav-item layui-hide-xs">
+                    <a href="javascript:;" data-href="{:url('system/configcollect')}" data-title="在导航栏上的“系统”“采集参数配置”中也可以查看" data-full="1" class="j-iframe">采集参数设置</a></li>
+                <li class="layui-nav-item layui-hide-xs">
+                    <a href="javascript:;" data-href="{:url('collect/info')}" data-title="在导航栏上的“采集”“自定义资源”中可以删除" class="j-iframe">添加资源站</a></li>
+                <li class="layui-nav-item layui-hide-xs layuiBtn" data-type="slidePics">
+                    <a href="javascript:;">视频幻灯图</a></li>
+            </ul>
+			<ul class="layui-nav layui-layout-right" style="padding: 0;">
+				<li class="layui-nav-item layui-hide-md">
+                    <a href="javascript:;">更多功能</a>
+					<dl class="layui-nav-child">
+            			<a href="javascript:;" class="layuiBtn" data-type="allplayer">批量设置播放器</a>
+						<dd><a href="javascript:;" data-full="1" data-href="{:url('system/configcollect')}" class="j-iframe">采集参数设置</a></dd>
+						<dd><a href="javascript:;" data-full="1" data-href="{:url('collect/info')}" class="j-iframe">添加资源站</a></dd>
+						<dd><a href="javascript:;" class="layuiBtn" data-type="slidePics">视频幻灯图</a></dd>
+					</dl>
+                </li>
+				<li class="layui-nav-item layuiBtn" data-type="help">
+                    <a href="javascript:;">
+                        <i class="layui-icon layui-icon-help"></i>帮助手册</a>
+                </li>
+				
+			</ul>
+        </div>
+    </div>
+    <div class="page-container p10 collect-list">
+        <div class="layui-form mb10">
+			<input type="hidden" name="__token__" id="token" value="{$Request.token}" />
+			<div id="my-collect">
+            <p class="layui-btn layui-btn-primary layuiBtn" data-type="duandian" {if condition="$collect_break_vod neq ''" }data-href="{:url('collect/load')}?flag=vod" {/if}>视频断点采集</p>
+            <div class="layui-input-inline" style="width:130px">
+                <select name="collect" lay-verify="required">
+                    <option value="m3u8">切片资源专区</option>
+                    <option value="yun">云播资源专区</option>
+                    <option value="zonghe">综合资源专区</option>
+                    <option value="offi">视频独立采集</option>
+                    <option value="faves">我的收藏专区</option>
+                    <option value="collect">自定义资源</option></select>
+            </div>
+            <div class="layui-input-inline searchwd" style="width:130px">
+                <input type="text" required lay-verify="required" placeholder="请输入关键字" autocomplete="off" class="layui-input layui-input-search"></div>
+            <div class="layui-input-inline">
+                <button type="button" class="layui-btn layuiBtn" data-type="searchKey">立即搜索</button>
+                <input type="text" required lay-verify="required" placeholder="搜索间隔" autocomplete="off" class="layui-input interval" value="3" style="width:38px;display:inline-block">
+                <span>秒间隔</span>
+			</div>
+			</div>	
+            <div class="layui-tab layui-collect"><center id="data-loading">数据加载中,请稍后<font id="timemsg">0</font>秒....</center></div>
+        </div>
+    </div>
+    <div class="slideHtml mb10 p10" style="display:none;">
+        <div style="margin: 0 0.5%;">
+            <div class="layui-input-inline w200">
+                <input type="text" id="name" lay-verify="required" placeholder="关键词为2个字搜索最精准" autocomplete="off" class="layui-input"></div>
+            <div class="layui-input-inline">
+                <span class="layui-btn layuiBtn" data-type="searchSlide">立即搜索</span></div>
+        </div>
+        <ul class="layer-photos-demo" id="Images"></ul>
+    </div>	
+	<div class="layui-footer footer">
+        <p>免责申明:本插件收集整理的资源站均来源于网络,所提供的内容仅供观摩学习交流之用,</p>
+        <p>本插件不存储视频链接、不提供视频数据,不对资源站提供的数据负责!</p>
+        <p>采集添加任何数据均是用户个人行为!请在遵守法律的前提下使用插件,否则后果自负!</p>
+    </div>
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+<script type="text/javascript" charset="utf-8" src="__STATIC__/mycj/js/clipboard.min.js" ></script>
+<script type="text/javascript" charset="utf-8" src="__STATIC__/mycj/js/Mybase.js?v={$plugInfo.version}"></script>
+</body>
+</html>

+ 51 - 0
application/admin/view_new/mycj/player.html

@@ -0,0 +1,51 @@
+<style>.player-set{max-height:380px;overflow:auto;}@media screen and (max-width: 768px){.player-set{max-height:480px;}}</style>
+<div class="page-container p10 player-set">
+  <form class="layui-form layui-form-pane">
+    <div class="layui-tab">
+      <blockquote class="layui-elem-quote layui-quote-nm mt10">
+        <p class="f-20 text-success">
+		<b style="color:#9400D3">这里的播放配置,仅适用于网页端,如果你程序是二次修改对接的小程序或者app的,此处添加的播放器可能没有效果。</b><br>
+		{if condition="$type eq 'offi'"}
+		<b style="color:red;">本专区采集的数据,例如腾讯、优酷、爱奇艺这些视频直链,只能用解析接口来播放,不支持用ckplayer、dplayer等本地的播放器播放!</b>
+		{elseif condition="$type eq 'yun'"}
+		<span style="color:red;">云播专区采集的数据,资源站已经将视频链接添加了播放器!无需填写解析接口或者本地播放器,也能播放!</span>
+		{else /}
+		推荐安装本地播放器,如DPlayer、CKplayer等播放器,第三方解析接口可加载广告或者劫持流量。
+		{/if}
+		</p>
+      </blockquote>
+      <div class="layui-tab-content" >
+        <div class="layui-tab-item layui-show jie-kou">
+          <div class="layui-form-item" id="all-jie-kou">
+            <p class="layui-btn layui-btn-sm playerSet" data-type="jiekou">使用默认接口</p>
+            <span id="local_player" style="margin-left: 10px;{if condition="($type eq 'offi') OR ($type eq 'yun')"}display:none;{/if}" >
+			  <p class="layui-btn layui-btn-sm localPlayer">本地播放器<i class="layui-icon layui-icon-down layui-font-12"></i></p>
+			</span>
+          </div>
+          {volist name="info" id="vo" key="k"}
+          <div class="layui-form-item">
+            <label class="layui-form-label">播放器名称:</label>
+            <div class="layui-input-inline" tips="播放器名称可修改更换" style="width:100px">
+              <input type="text" class="layui-input" value="{$vo.show}" lay-verify="required" placeholder="播放器的名称" name="show[]"></div>
+            <label class="layui-form-label">播放器编码:</label>
+            <div class="layui-input-inline" tips="资源站设定的固定编码,不可更换" style="width:100px">
+              <input type="text" class="layui-input layui-disabled" value="{$vo.from}" disabled="" name="from[]"></div>
+          </div>
+          <input type="hidden" value="{$vo.sort}" name="sort[]">
+          <div class="layui-form-item jie-kou">
+            <label class="layui-form-label">解析接口:</label>
+            <div class="layui-input-inline" tips="可自定义修改成你想使用的解析接口" id="jiekou" style="width:320px">
+              <input type="text" class="layui-input jxlink" {if condition="($type eq 'offi') OR ($type eq 'yun') OR ($type eq 'zonghe')"}{else /}id="jx-api"{/if} value="{$vo.parse}" placeholder="请输入解析接口" id="apis_{$k}" name="link[]"></div>
+            <div class="layui-form-mid layui-word-aux jiekou-tips"></div>
+		  </div>
+		  {/volist}
+        </div>
+        <div class="layui-form-item">
+          <div class="layui-input-block">
+			<button type="submit" class="layui-btn" id="layui-btn-submit" lay-submit="*" lay-filter="addplayer" data-child="true">立即保存</button>
+			</div>
+        </div>
+      </div>
+    </div>
+  </form>
+</div>

+ 47 - 0
application/admin/view_new/mycj/type.html

@@ -0,0 +1,47 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+    <div class="my-toolbar-box">
+        <div class="mb10">
+			<blockquote class="layui-elem-quote">
+				<p>自动绑定分类说明:</p>
+				<p>比如资源站有一个“喜剧片”的分类,你程序 <b style="color:green;">也有设置“喜剧片”</b> 这个分类,则 <b style="color:green;">可以自动绑定</b></p>
+				<p>比如资源站有一个“伦理片”的分类,你程序 <b style="color:red;">没有设置“伦理片”</b> 这个分类,则 <b style="color:red;">无法自动绑定</b> </p>				
+				<p>如果你需要自定义设置分类绑定规则,请在程序“系统”-“站外入库配置”中设置分类绑定规则,优先匹配自定义规则,<a href="https://www.mycj.pro/216.html" target="_blank" class="layui-btn layui-btn-xs layui-btn-normal">点此查看规则介绍</a></p>
+			</blockquote>
+            {volist name="type" id="vo"}
+            <div class="layui-input-inline w400 m5">
+                <span data-id="{$vo.type_id}" class="select_type">{$vo.type_name|htmlspecialchars}</span>
+				->
+                <a href="javascript:;" id="{$param['cjflag']}_{$vo.type_id}" data-href="{:url('index/select')}?tab=vod&col={$param['cjflag']}_{$vo.type_id}&ids=1&tpl=select_type&refresh=no&url=collect/bind" data-width="270" data-height="100" class="j-select" >
+                    {if condition="$vo.isbind eq 1"}
+                    <span class="red">[{$vo.local_type_name}]</span> {$vo.msg}
+                    {else}
+                    [点此绑定] {$vo.msg}
+                    {/if}
+                </a>
+            </div><br>
+            {/volist}
+        </div>
+    </div>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+<script type="text/javascript">
+
+    layui.use(['layer','form'], function() {
+        var layer = layui.layer,
+            form = layui.form;
+    });
+    function onSubmitResult(res)
+    {
+        if(res.data.st==1){
+            $('#'+res.data.id).html('<span class="red">['+ res.data.local_type_name +']</span>');
+        }
+        else{
+            $('#'+res.data.id).html("[点此绑定]");
+        }
+    }
+</script>
+</body>
+</html>

+ 93 - 0
application/admin/view_new/order/index.html

@@ -0,0 +1,93 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box" >
+        <div class="mb-2">
+            <form class="layui-form space-x-1 space-y-1" method="post" action="{:url('index')}">
+                <div class="layui-input-inline w150">
+                    <select name="status">
+                        <option value="">{:lang('select_order_status')}</option>
+                        <option value="0" {if condition="$param['status'] eq '0'"}selected {/if}>{:lang('not_paid')}</option>
+                        <option value="1" {if condition="$param['status'] eq '1'"}selected {/if}>{:lang('paid')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_filter_xss}">
+                </div>
+                <button class="layui-btn mgl-20 j-search" >{:lang('btn_search')}</button>
+            </form>
+        </div>
+
+        <div class="flex gap-5 overflow-x-auto overflow-y-hidden">
+            <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+            <a data-href="{:url('del')}?ids=1&all=1" class="layui-btn layui-btn-primary j-ajax" confirm="{:lang('clear_confirm')}"><i class="layui-icon">&#xe640;</i>{:lang('clear')}</a>
+        </div>
+
+    </div>
+
+     <form class="layui-form " method="post" id="pageListForm">
+         <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="50">{:lang('id')}</th>
+                <th width="100">{:lang('admin/order/order_no')}</th>
+                <th width="80">{:lang('admin/order/order_money')}</th>
+                <th width="80">{:lang('admin/order/order_status')}</th>
+                <th width="130">{:lang('admin/order/order_time')}</th>
+                <th width="100">{:lang('admin/order/pay_type')}</th>
+                <th width="130">{:lang('admin/order/pay_time')}</th>
+                <th width="80">{:lang('user')}</th>
+                <th width="80">{:lang('opt')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.order_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.order_id}</td>
+                <td>{$vo.order_code}</td>
+                <td>{$vo.order_price}</td>
+                <td>{$vo.order_status|mac_get_order_status_text}</td>
+                <td>{$vo.order_time|mac_day='color'}</td>
+                <td>{$vo.order_type}</td>
+                <td>{$vo.order_paytime|mac_day='color'}</td>
+                <td>{$vo.user_id}、{$vo.user_name}</td>
+                <td>
+                    <a class="layui-badge-rim j-tr-del" data-href="{:url('del?ids='.$vo['order_id'])}" href="javascript:;" title="{:lang('del')}">{:lang('del')}</a>
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+
+        <div id="pages" class="center"></div>
+
+    </form>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+
+<script type="text/javascript">
+    var curUrl="{:url('order/index',$param)}";
+    layui.use(['laypage', 'layer'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+    });
+</script>
+</body>
+</html>

+ 95 - 0
application/admin/view_new/plog/index.html

@@ -0,0 +1,95 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container p10">
+
+    <div class="my-toolbar-box" >
+        <div class="mb-2">
+            <form class="layui-form space-x-1 space-y-1" method="post" action="{:url('index')}">
+                <div class="layui-input-inline w150">
+                    <select name="type">
+                        <option value="">{:lang('select_genre')}</option>
+                        <option value="1" {if condition="$param['type'] eq '1'"}selected {/if}>{:lang('admin/plog/points_recharge')}</option>
+                        <option value="2" {if condition="$param['type'] eq '2'"}selected {/if}>{:lang('admin/plog/reg_promote')}</option>
+                        <option value="3" {if condition="$param['type'] eq '3'"}selected {/if}>{:lang('admin/plog/visit_promote')}</option>
+                        <option value="4" {if condition="$param['type'] eq '4'"}selected {/if}>{:lang('one_level_distribution')}</option>
+                        <option value="5" {if condition="$param['type'] eq '5'"}selected {/if}>{:lang('two_level_distribution')}</option>
+                        <option value="6" {if condition="$param['type'] eq '6'"}selected {/if}>{:lang('three_level_distribution')}</option>
+                        <option value="7" {if condition="$param['type'] eq '7'"}selected {/if}>{:lang('admin/plog/points_upgrade')}</option>
+                        <option value="8" {if condition="$param['type'] eq '8'"}selected {/if}>{:lang('admin/plog/points_buy')}</option>
+                        <option value="9" {if condition="$param['type'] eq '9'"}selected {/if}>{:lang('admin/plog/points_withdrawal')}</option>
+                    </select>
+                </div>
+                <div class="layui-input-inline">
+                    <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_filter_xss}">
+                </div>
+                <button class="layui-btn mgl-20 j-search" >{:lang('btn_search')}</button>
+            </form>
+        </div>
+
+        <div class="flex gap-5 overflow-x-auto overflow-y-hidden">
+            <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
+            <a data-href="{:url('del')}?ids=1&all=1" class="layui-btn layui-btn-primary j-ajax" confirm="{:lang('clear_confirm')}"><i class="layui-icon">&#xe640;</i>{:lang('clear')}</a>
+        </div>
+    </div>
+
+     <form class="layui-form " method="post" id="pageListForm">
+         <table class="layui-table" lay-size="sm">
+            <thead>
+            <tr>
+                <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
+                <th width="80">{:lang('id')}</th>
+                <th width="100">{:lang('user')}</th>
+                <th width="50">{:lang('genre')}</th>
+                <th width="50">{:lang('points')}</th>
+                <th width="200">{:lang('remarks')}</th>
+                <th width="140">{:lang('admin/plog/log_time')}</th>
+                <th width="50">{:lang('opt')}</th>
+            </tr>
+            </thead>
+
+            {volist name="list" id="vo"}
+            <tr>
+                <td><input type="checkbox" name="ids[]" value="{$vo.ulog_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
+                <td>{$vo.plog_id}</td>
+                <td>[{$vo.user_id}]{$vo.user_name}</td>
+                <td>{$vo.plog_type|mac_get_plog_type_text}</td>
+                <td>{if condition="in_array($vo.plog_type,[1,2,3,4,5,6])"}+{else/}-{/if}{$vo.plog_points}</td>
+                <td>{$vo.plog_remarks}</td>
+                <td>{$vo.plog_time|mac_day='color'}</td>
+                <td>
+                    <a class="layui-badge-rim j-tr-del" data-href="{:url('del?ids='.$vo['plog_id'])}" href="javascript:;" title="{:lang('del')}">{:lang('del')}</a>
+                </td>
+            </tr>
+            {/volist}
+            </tbody>
+        </table>
+
+        <div id="pages" class="center"></div>
+
+    </form>
+</div>
+
+{include file="../../../application/admin/view_new/public/foot" /}
+
+
+<script type="text/javascript">
+    var curUrl="{:url('plog/index',$param)}";
+    layui.use(['laypage', 'layer'], function() {
+        var laypage = layui.laypage
+                , layer = layui.layer;
+
+        laypage.render({
+            elem: 'pages'
+            ,count: {$total}
+            ,limit: {$limit}
+            ,curr: {$page}
+            ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
+            ,jump: function(obj,first){
+                if(!first){
+                    location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
+                }
+            }
+        });
+    });
+</script>
+</body>
+</html>

+ 12 - 0
application/admin/view_new/public/editor.html

@@ -0,0 +1,12 @@
+{php}
+use think\View;
+
+$editor= strtolower($GLOBALS['config']['app']['editor']);
+$ue_old= ROOT_PATH . 'static/ueditor/' ;
+$ue_new= ROOT_PATH . 'static/editor/'. $editor ;
+if( (!file_exists($ue_new) && file_exists($ue_old)) || $editor=='' ){
+    $editor = 'ueditor';
+}
+
+echo  View::instance()->fetch('admin@extend/editor/'.$editor.'');
+{/php}

+ 7 - 0
application/admin/view_new/public/empty.html

@@ -0,0 +1,7 @@
+{include file="../../../application/admin/view_new/public/head" /}
+<div class="page-container">
+
+</div>
+{include file="../../../application/admin/view_new/public/foot" /}
+</body>
+</html>

+ 1 - 0
application/admin/view_new/public/foot.html

@@ -0,0 +1 @@
+<script type="text/javascript" src="__STATIC__/js/admin_common.js?{$MAC_VERSION}"></script>

+ 18 - 0
application/admin/view_new/public/head.html

@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <title>{$title} - {:lang('admin/public/head/title')}</title>
+    <link rel="stylesheet" href="__STATIC__/layui/css/layui.css">
+    <link rel="stylesheet" href="__STATIC__/layui/macCmsfont/iconfont.css?{$MAC_VERSION}">
+    <link rel="stylesheet" href="__STATIC__/css/admin_style.css?{$MAC_VERSION}">
+    <script type="text/javascript" src="__STATIC__/js/jquery.js"></script>
+    <link rel="stylesheet" href="__STATIC__/css/tailwindcssOutput.css?{$MAC_VERSION}">
+    <script type="text/javascript" src="__STATIC__/layui/layui.js"></script>
+    <script src="__STATIC__/js/preline.js"></script>
+    <script>
+        var ROOT_PATH="__ROOT__",ADMIN_PATH="{$_SERVER['SCRIPT_NAME']}", MAC_VERSION="v10";
+    </script>  
+</head>
+<body>

+ 49 - 0
application/admin/view_new/public/jump.html

@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
+    <title>{:lang('admin/public/jump/title')} - {:lang('admin/public/head/title')}</title>
+    <style type="text/css">
+        *{ padding: 0; margin: 0; }
+        body{ background: #fff; font-family: "Microsoft Yahei","Helvetica Neue",Helvetica,Arial,sans-serif; color: #333; font-size: 16px; }
+        .system-message{ padding: 24px 48px; }
+        .system-message h1{ font-size: 100px; font-weight: normal; line-height: 120px; margin-bottom: 12px; }
+        .system-message .jump{ padding-top: 10px; }
+        .system-message .jump a{ color: #333; }
+        .system-message .success,.system-message .error{ line-height: 1.8em; font-size: 36px; }
+        .system-message .detail{ font-size: 12px; line-height: 20px; margin-top: 12px; display: none; }
+    </style>
+</head>
+<body>
+    <div class="system-message">
+        <?php switch ($code) {?>
+            <?php case 1:?>
+            <h1>:)</h1>
+            <p class="success"><?php echo(strip_tags($msg));?></p>
+            <?php break;?>
+            <?php case 0:?>
+            <h1>:(</h1>
+            <p class="error"><?php echo(strip_tags($msg));?></p>
+            <?php break;?>
+        <?php } ?>
+        <p class="detail"></p>
+        <p class="jump">
+            {:lang('page_auto')} <a id="href" href="<?php echo($url);?>">{:lang('jump')}</a> {:lang('wait_time')}: <b id="wait"><?php echo($wait);?></b>
+        </p>
+    </div>
+    <script type="text/javascript">
+        (function(){
+            var wait = document.getElementById('wait'),
+                href = document.getElementById('href').href;
+            var interval = setInterval(function(){
+                var time = --wait.innerHTML;
+                if(time <= 0) {
+                    location.href = href;
+                    clearInterval(interval);
+                };
+            }, 1000);
+        })();
+    </script>
+</body>
+</html>

+ 36 - 0
application/admin/view_new/public/msg.html

@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
+	<title>{:lang('admin/public/jump/title')} - {:lang('admin/public/head/title')}</title>
+	<style type="text/css">
+		*{ padding: 0; margin: 0; }
+		body{ background: #fff; font-family: "Microsoft Yahei","Helvetica Neue",Helvetica,Arial,sans-serif; color: #333; font-size: 16px; }
+		.system-message{ padding: 24px 48px; }
+		.system-message h1{ font-size: 100px; font-weight: normal; line-height: 120px; margin-bottom: 12px; }
+		.system-message .jump{ padding-top: 10px; }
+		.system-message .jump a{ color: #333; }
+		.system-message .success,.system-message .error{ line-height: 1.8em; font-size: 36px; }
+		.system-message .detail{ font-size: 12px; line-height: 20px; margin-top: 12px; display: none; }
+	</style>
+</head>
+<body>
+<div class="system-message">
+	<?php switch ($code) {?>
+	<?php case 1:?>
+	<h1>:)</h1>
+	<p class="success"><?php echo(strip_tags($msg));?></p>
+	<?php break;?>
+	<?php case 0:?>
+	<h1>:(</h1>
+	<p class="error"><?php echo(strip_tags($msg));?></p>
+	<?php break;?>
+	<?php } ?>
+	<p class="detail"></p>
+</div>
+<script type="text/javascript">
+
+</script>
+</body>
+</html>

+ 0 - 0
runtime/cache/index.html → application/admin/view_new/public/pages.html


+ 16 - 0
application/admin/view_new/public/select_copyright.html

@@ -0,0 +1,16 @@
+<form class="layui-form m10" method="post" action="{$url}">
+    <input type="hidden" name="col" value="{$col}">
+    <input type="hidden" name="ids" value="{$ids}">
+
+    <div class="layui-input-inline w150">
+        <select name="val">
+            <option value="">{:lang('select_opt')}</option>
+            <option value="0" >{:lang('admin/vod/copyright_close')}</option>
+            <option value="1" >{:lang('admin/vod/copyright_open')}</option>
+        </select>
+    </div>
+    <div class="layui-input-inline">
+        <button type="submit" class="layui-btn" lay-submit="" refresh="{$refresh}" lay-filter="formSubmit">{:lang('btn_save')}</button>
+    </div>
+</form>
+

+ 19 - 0
application/admin/view_new/public/select_hits.html

@@ -0,0 +1,19 @@
+<form class="layui-form m10" method="post" action="{$url}" id="movementTable">
+    <input type="hidden" name="col" value="{$col}">
+    <input type="hidden" name="ids" value="{$ids}">
+
+    <div class="layui-form-item">
+        <label class="layui-form-label ">{:lang('start')}:</label>
+        <div class="layui-input-inline w70">
+            <input type="text" class="layui-input" value="" placeholder="" name="start">
+        </div>
+        <label class="layui-form-label ">{:lang('end')}:</label>
+        <div class="layui-input-inline w70">
+            <input type="text" class="layui-input" value="" placeholder="" name="end">
+        </div>
+        <div class="layui-input-inline w70">
+            <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit">{:lang('btn_save')}</button>
+        </div>
+    </div>
+
+</form>

+ 18 - 0
application/admin/view_new/public/select_level.html

@@ -0,0 +1,18 @@
+<form class="layui-form m10" method="post" action="{$url}">
+    <input type="hidden" name="col" value="{$col}">
+    <input type="hidden" name="ids" value="{$ids}">
+
+    <div class="layui-input-inline w150">
+        <select name="val">
+            <option value="">{:lang('select_level')}</option>
+            <option value="0">{:lang('cancel_level')}</option>
+            {volist name="level_list" id="vo"}
+            <option value="{$vo}">{:lang('level')}{$vo}</option>
+            {/volist}
+        </select>
+    </div>
+    <div class="layui-input-inline">
+        <button type="submit" class="layui-btn" lay-submit="" lay-filter="formSubmit">{:lang('btn_save')}</button>
+    </div>
+</form>
+

+ 16 - 0
application/admin/view_new/public/select_lock.html

@@ -0,0 +1,16 @@
+<form class="layui-form m10" method="post" action="{$url}">
+    <input type="hidden" name="col" value="{$col}">
+    <input type="hidden" name="ids" value="{$ids}">
+
+    <div class="layui-input-inline w150">
+        <select name="val">
+            <option value="">{:lang('select_opt')}</option>
+            <option value="0" >{:lang('unlock')}</option>
+            <option value="1" >{:lang('lock')}</option>
+        </select>
+    </div>
+    <div class="layui-input-inline">
+        <button type="submit" class="layui-btn" lay-submit="" refresh="{$refresh}" lay-filter="formSubmit">{:lang('btn_save')}</button>
+    </div>
+</form>
+

Some files were not shown because too many files changed in this diff