Преглед на файлове

新增附件区分本地或远程字段
新增Backend.api.cdnurl方法用于获取资源cdn的地址
修复附件列表图片显示的BUG
修复边栏头像大小显示的BUG
移除日志记录中的含有password的密码字段
修复个人资料中显示其它管理员日志的BUG

Karson преди 8 години
родител
ревизия
58edcba995

+ 1 - 0
application/admin/controller/Ajax.php

@@ -199,6 +199,7 @@ class Ajax extends Backend
                 'mimetype'    => $fileInfo['type'],
                 'url'         => $uploadDir . $splInfo->getSaveName(),
                 'uploadtime'  => time(),
+                'storage'     => 'local',
                 'sha1'        => $sha1,
             );
             model("attachment")->create(array_filter($params));

+ 7 - 2
application/admin/controller/general/Attachment.php

@@ -39,14 +39,19 @@ class Attachment extends Backend
                     ->order($sort, $order)
                     ->limit($offset, $limit)
                     ->select();
-
+            $cdnurl = preg_replace("/\/(\w+)\.php$/i", '', $this->request->root());
+            foreach ($list as $k => &$v)
+            {
+                $v['fullurl'] = ($v['storage'] == 'local' ? $cdnurl : $this->view->config['upload']['cdnurl']) . $v['url'];
+            }
+            unset($v);
             $result = array("total" => $total, "rows" => $list);
 
             return json($result);
         }
         return $this->view->fetch();
     }
-    
+
     /**
      * 选择附件
      */

+ 2 - 0
application/admin/controller/general/Profile.php

@@ -27,11 +27,13 @@ class Profile extends Backend
 
             $total = $model
                     ->where($where)
+                    ->where('admin_id', $this->auth->id)
                     ->order($sort, $order)
                     ->count();
 
             $list = $model
                     ->where($where)
+                    ->where('admin_id', $this->auth->id)
                     ->order($sort, $order)
                     ->limit($offset, $limit)
                     ->select();

+ 2 - 1
application/admin/lang/zh-cn/general/attachment.php

@@ -10,5 +10,6 @@ return [
     'Mimetype'    => 'mime类型',
     'Extparam'    => '透传数据',
     'Createtime'  => '创建日期',
-    'Uploadtime'  => '上传时间'
+    'Uploadtime'  => '上传时间',
+    'Storage'     => '存储引擎'
 ];

+ 1 - 1
application/admin/model/AdminLog.php

@@ -21,7 +21,7 @@ class AdminLog extends Model
         $content = request()->param();
         foreach ($content as $k => $v)
         {
-            if (is_string($v) && strlen($v) > 200)
+            if (is_string($v) && strlen($v) > 200 || stripos($k, 'password') !== false)
             {
                 unset($content[$k]);
             }

+ 1 - 1
application/admin/view/example/bootstraptable/index.html

@@ -6,7 +6,7 @@
             <div class="tab-pane fade active in" id="one">
                 <div class="widget-body no-padding">
                     <div id="toolbar" class="toolbar">
-                        {:build_toolbar('delete')}
+                        {:build_toolbar('refresh,delete')}
                         <div class="dropdown btn-group">
                             <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> <?= __('More') ?></a>
                             <ul class="dropdown-menu text-left" role="menu">

+ 1 - 1
application/admin/view/example/colorbadge/index.html

@@ -6,7 +6,7 @@
             <div class="tab-pane fade active in" id="one">
                 <div class="widget-body no-padding">
                     <div id="toolbar" class="toolbar">
-                        {:build_toolbar('delete')}
+                        {:build_toolbar('refresh,delete')}
                     </div>
                     <table id="table" class="table table-striped table-bordered table-hover" width="100%">
 

+ 1 - 1
application/admin/view/example/controllerjump/index.html

@@ -6,7 +6,7 @@
             <div class="tab-pane fade active in" id="one">
                 <div class="widget-body no-padding">
                     <div id="toolbar" class="toolbar">
-                        {:build_toolbar('delete')}
+                        {:build_toolbar('refresh,delete')}
                     </div>
                     <table id="table" class="table table-striped table-bordered table-hover" width="100%">
 

+ 9 - 3
application/admin/view/general/attachment/add.html

@@ -2,7 +2,7 @@
     <div class="form-group">
         <label for="c-upyun" class="control-label col-xs-12 col-sm-2">{:__('Upload')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input type="text" name="row[upyun]" id="c-upyun" class="form-control" cols="60" />
+            <input type="text" name="row[upyun]" id="c-upyun" class="form-control" />
         </div>
     </div>
 
@@ -16,7 +16,7 @@
     <div class="form-group">
         <label for="c-local" class="control-label col-xs-12 col-sm-2">{:__('Upload')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input type="text" name="row[local]" id="c-local" class="form-control" cols="60" />
+            <input type="text" name="row[local]" id="c-local" class="form-control" />
         </div>
     </div>
 
@@ -30,7 +30,13 @@
     <div class="form-group">
         <label for="c-local" class="control-label col-xs-12 col-sm-2">{:__('Upload by summernote')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <textarea name="row[summernote]" id="c-summernote" cols="30" rows="5" class="summernote"></textarea>
+            <textarea name="row[summernote]" id="c-summernote" cols="60" rows="5" class="summernote"></textarea>
+        </div>
+    </div>
+    <div class="form-group hidden layer-footer">
+        <div class="col-xs-2"></div>
+        <div class="col-xs-12 col-sm-8">
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
         </div>
     </div>
 </form>

+ 6 - 0
application/admin/view/general/attachment/edit.html

@@ -54,6 +54,12 @@
             <input type="datetime" name="row[uploadtime]" value="{$row.uploadtime|datetime}"  id="c-uploadtime" class="form-control datetimepicker" />
         </div>
     </div>
+    <div class="form-group">
+        <label for="c-storage" class="control-label col-xs-12 col-sm-2">{:__('Storage')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input type="text" name="row[storage]" value="{$row.storage}"  id="c-storage" class="form-control" />
+        </div>
+    </div>
     <div class="form-group hide layer-footer">
         <label class="control-label col-xs-12 col-sm-2"></label>
         <div class="col-xs-12 col-sm-8">

+ 2 - 1
application/index/controller/Upyun.php

@@ -37,7 +37,8 @@ class Upyun extends Frontend
                     'mimetype'    => $this->request->param("mimetype"),
                     'extparam'    => $extparam,
                     'url'         => $url,
-                    'uploadtime'  => $time
+                    'uploadtime'  => $time,
+                    'storage'     => 'upyun'
                 );
                 model("attachment")->create(array_filter($params));
                 echo "success";

+ 2 - 3
public/assets/css/backend.css

@@ -106,9 +106,8 @@ body {
   font-weight: normal;
 }
 .user-panel > .image img {
-  width: 100%;
-  max-width: 45px;
-  max-height: 45px;
+  width: 45px;
+  height: 45px;
 }
 /*panel扩展描述样式*/
 .panel-intro {

Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
public/assets/css/backend.min.css


+ 4 - 0
public/assets/js/backend.js

@@ -62,6 +62,10 @@ define(['jquery', 'bootstrap', 'toastr', 'layer', 'lang', 'moment'], function ($
                 }
                 return url;
             },
+            //获取修复后可访问的cdn链接
+            cdnurl: function (url) {
+                return /^(?:[a-z]+:)?\/\//i.test(url) ? url : Config.upload.cdnurl + url;
+            },
             //查询Url参数
             query: function (name, url) {
                 if (!url) {

+ 5 - 9
public/assets/js/backend/general/attachment.js

@@ -29,7 +29,7 @@ define(['jquery', 'bootstrap', 'backend', 'form', 'table'], function ($, undefin
                         {field: 'imagewidth', title: __('Imagewidth')},
                         {field: 'imageheight', title: __('Imageheight')},
                         {field: 'imagetype', title: __('Imagetype')},
-                        {field: 'imageframes', title: __('Imageframes')},
+                        {field: 'storage', title: __('Storage')},
                         {field: 'filesize', title: __('Filesize')},
                         {field: 'mimetype', title: __('Mimetype')},
                         {field: 'createtime', title: __('Createtime'), formatter: Table.api.formatter.datetime},
@@ -112,18 +112,14 @@ define(['jquery', 'bootstrap', 'backend', 'form', 'table'], function ($, undefin
             formatter: {
                 thumb: function (value, row, index) {
                     if (row.mimetype.indexOf("image") > -1) {
-                        var reg = /ajax\/upload$/;
-                        if (reg.test(Config.upload.uploadurl)) {
-                            return '<a href="' + Config.upload.cdnurl + value + '" target="_blank"><img src="' + Config.upload.cdnurl + value + '" alt="" style="max-height:90px;max-width:120px"></a>';
-                        } else {
-                            return '<a href="' + Config.upload.cdnurl + value + '" target="_blank"><img src="' + Config.upload.cdnurl + value + '!/fwfh/50x50" alt=""></a>';
-                        }
+                        var style = row.storage == 'upyun' ? '!/fwfh/120x90' : '';
+                        return '<a href="' + row.fullurl + '" target="_blank"><img src="' + row.fullurl + style + '" alt="" style="max-height:90px;max-width:120px"></a>';
                     } else {
-                        return '';
+                        return '<a href="' + row.fullurl + '" target="_blank">' + __('None') + '</a>';
                     }
                 },
                 url: function (value, row, index) {
-                    return '<a href="' + Config.upload.cdnurl + value + '" target="_blank" class="label bg-green">' + value + '</a>';
+                    return '<a href="' + Backend.api.cdnurl(value) + '" target="_blank" class="label bg-green">' + value + '</a>';
                 },
             }
         }

+ 2 - 2
public/assets/js/backend/general/profile.js

@@ -39,12 +39,12 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'upload'], function (
 
             Form.api.bindevent($("#update-form"), null, function () {
                 $("input[name='row[password]']").val('');
-                var url = Config.upload.cdnurl + $("#c-avatar").val();
+                var url = Backend.api.cdnurl($("#c-avatar").val());
                 top.window.$(".user-panel .image img,.user-menu > a > img,.user-header > img").prop("src", url);
                 return true;
             });
             Upload.api.custom.changeavatar = function (response) {
-                var url = Config.upload.cdnurl + response.url;
+                var url = Backend.api.cdnurl(response.url);
                 $(".profile-user-img").prop("src", url);
             };
         }

+ 1 - 1
public/assets/js/backend/index.js

@@ -204,7 +204,7 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'adminlte', 'form'], functi
 
                     $("body").addClass(cls);
                     store('skin', cls);
-                    var cssfile = Config.upload.cdnurl + "/assets/css/skins/" + cls + ".css";
+                    var cssfile = Backend.api.cdnurl("/assets/css/skins/" + cls + ".css");
                     $('head').append('<link rel="stylesheet" href="' + cssfile + '" type="text/css" />');
                 }
                 return false;

+ 7 - 3
public/assets/js/require-backend.min.js

@@ -6479,6 +6479,10 @@ define('backend',['jquery', 'bootstrap', 'toastr', 'layer', 'lang', 'moment'], f
                 }
                 return url;
             },
+            //获取修复后可访问的cdn链接
+            cdnurl: function (url) {
+                return /^(?:[a-z]+:)?\/\//i.test(url) ? url : Config.upload.cdnurl + url;
+            },
             //查询Url参数
             query: function (name, url) {
                 if (!url) {
@@ -7852,7 +7856,7 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap
                     return '<i class="' + value + '"></i> ' + value;
                 },
                 image: function (value, row, index) {
-                    return '<img class="img-rounded img-sm" src="' + (value.indexOf("http") === 0 ? '' : Config.upload.cdnurl) + value + '" />';
+                    return '<img class="img-rounded img-sm" src="' + Backend.api.cdnurl(value) + '" />';
                 },
                 status: function (value, row, index, custom) {
                     //颜色状态数组,可使用red/yellow/aqua/blue/navy/teal/olive/lime/fuchsia/purple/maroon
@@ -8492,7 +8496,7 @@ define('upload',['jquery', 'bootstrap', 'backend', 'plupload', 'dragsort', 'temp
                                 if (!j) {
                                     return true;
                                 }
-                                var html = Template.render(Upload.config.previewtpl, {url: j, fullurl: Config.upload.cdnurl + j});
+                                var html = Template.render(Upload.config.previewtpl, {url: j, fullurl: Backend.api.cdnurl(j)});
                                 $("#" + preview_id).append(html);
                             });
                         });
@@ -11078,7 +11082,7 @@ define('form',['jquery', 'bootstrap', 'backend', 'toastr', 'upload', 'validator'
                                     //依次上传图片
                                     for (var i = 0; i < files.length; i++) {
                                         Upload.api.send(files[i], function (data) {
-                                            var url = Config.upload.cdnurl + data.url;
+                                            var url = Backend.api.cdnurl(data.url);
                                             $(that).summernote("insertImage", url, 'filename');
                                         });
                                     }

+ 1 - 1
public/assets/js/require-form.js

@@ -219,7 +219,7 @@ define(['jquery', 'bootstrap', 'backend', 'toastr', 'upload', 'validator'], func
                                     //依次上传图片
                                     for (var i = 0; i < files.length; i++) {
                                         Upload.api.send(files[i], function (data) {
-                                            var url = Config.upload.cdnurl + data.url;
+                                            var url = Backend.api.cdnurl(data.url);
                                             $(that).summernote("insertImage", url, 'filename');
                                         });
                                     }

+ 1 - 1
public/assets/js/require-table.js

@@ -272,7 +272,7 @@ define(['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap-table',
                     return '<i class="' + value + '"></i> ' + value;
                 },
                 image: function (value, row, index) {
-                    return '<img class="img-rounded img-sm" src="' + (value.indexOf("http") === 0 ? '' : Config.upload.cdnurl) + value + '" />';
+                    return '<img class="img-rounded img-sm" src="' + Backend.api.cdnurl(value) + '" />';
                 },
                 status: function (value, row, index, custom) {
                     //颜色状态数组,可使用red/yellow/aqua/blue/navy/teal/olive/lime/fuchsia/purple/maroon

+ 1 - 1
public/assets/js/require-upload.js

@@ -134,7 +134,7 @@ define(['jquery', 'bootstrap', 'backend', 'plupload', 'dragsort', 'template'], f
                                 if (!j) {
                                     return true;
                                 }
-                                var html = Template.render(Upload.config.previewtpl, {url: j, fullurl: Config.upload.cdnurl + j});
+                                var html = Template.render(Upload.config.previewtpl, {url: j, fullurl: Backend.api.cdnurl(j)});
                                 $("#" + preview_id).append(html);
                             });
                         });

+ 2 - 3
public/assets/less/backend.less

@@ -140,9 +140,8 @@ body {
 }
 
 .user-panel > .image img{
-    width:100%;
-    max-width:45px;
-    max-height:45px;
+    width:45px;
+    height:45px;
 }
 
 /*panel扩展描述样式*/