mirror of https://gitee.com/karson/fastadmin.git
新增附件区分本地或远程字段
新增Backend.api.cdnurl方法用于获取资源cdn的地址 修复附件列表图片显示的BUG 修复边栏头像大小显示的BUG 移除日志记录中的含有password的密码字段 修复个人资料中显示其它管理员日志的BUGpull/323483/MERGE
parent
ee866c0c97
commit
58edcba995
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 选择附件
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -10,5 +10,6 @@ return [
|
|||
'Mimetype' => 'mime类型',
|
||||
'Extparam' => '透传数据',
|
||||
'Createtime' => '创建日期',
|
||||
'Uploadtime' => '上传时间'
|
||||
'Uploadtime' => '上传时间',
|
||||
'Storage' => '存储引擎'
|
||||
];
|
||||
|
|
|
|||
|
|
@ -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]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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%">
|
||||
|
||||
|
|
|
|||
|
|
@ -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%">
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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>';
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -140,9 +140,8 @@ body {
|
|||
}
|
||||
|
||||
.user-panel > .image img{
|
||||
width:100%;
|
||||
max-width:45px;
|
||||
max-height:45px;
|
||||
width:45px;
|
||||
height:45px;
|
||||
}
|
||||
|
||||
/*panel扩展描述样式*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue