Skip to content

Commit

Permalink
feat(admin): 增加默认文件系统设置面板
Browse files Browse the repository at this point in the history
  • Loading branch information
medz committed Sep 5, 2018
1 parent 4c4e235 commit cf9d2d5
Show file tree
Hide file tree
Showing 10 changed files with 165 additions and 5 deletions.
43 changes: 43 additions & 0 deletions app/Admin/Controllers/FileStorage/DefaultFilesystem.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php

declare(strict_types=1);

namespace Zhiyi\Plus\Admin\Controllers\FileStorage;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use function Zhiyi\Plus\setting;
use Illuminate\Http\JsonResponse;
use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException;

class DefaultFilesystem
{
/**
* Get default filesystem.
* @return \Illuminate\Http\JsonResponse
*/
public function show(): JsonResponse
{
$defaultFilesystem = setting('file-storage', 'default-filesystem', 'local');

return new JsonResponse(['filesystem' => $defaultFilesystem], Response::HTTP_OK);
}

/**
* Update default filesystem.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function update(Request $request): Response
{
$filesystem = $request->input('filesystem');
if (! in_array($filesystem, ['local', 'AliyunOSS'])) {
throw new UnprocessableEntityHttpException('设置的文件系统不合法');
}

$setting = setting('file-storage');
$setting->set('default-filesystem', $filesystem);

return new Response('', Response::HTTP_NO_CONTENT);
}
}
4 changes: 2 additions & 2 deletions app/FileStorage/design-configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
*/

return [
// default-filsystem
'default-filsystem' => 'local',
// default-filesystem
'default-filesystem' => 'local',
'filesystems' => [
// filesystems.local
'local' => [
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
<template>
<div class="panel panel-default">
<div class="panel-heading">默认文件系统</div>
<div class="panel-body">
<div class="alert alert-warning">
默认文件系统是用于在<code>频道</code>没有指定文件系统时候使用的默认文件系统。
</div>

<sb-ui-loading v-if="loading" />

<div class="form-horizontal" v-else>
<div class="form-group">
<label class="col-sm-2 control-label">文件系统</label>
<div class="col-sm-10">
<select class="form-control" v-model="selected">
<option
v-for="filesystem in filesystems"
:key="filesystem.value"
:value="filesystem.value"
>
{{ filesystem.name }}
</option>
</select>
</div>
</div>

<!-- 提交按钮 -->
<div class="form-group">
<div class="col-sm-10 col-sm-offset-2">
<ui-button type="button" class="btn btn-primary" @click="submitHandler" />
</div>
</div>
</div>

</div>
</div>
</template>

<script>
import request, { createRequestURI } from '../../../util/request';
export default {
data: () => ({
selected: 'local',
loading: true,
filesystems: [
{ value: 'local', name: '本地存储' },
{ value: 'AliyunOSS', name: '阿里云 OSS' },
]
}),
created() {
this.loading = true;
request.get(
createRequestURI('file-storage/default-filesystem'),
{
validateStatus: status => status === 200
}
)
.then(({ data: { filesystem } }) => {
this.selected = filesystem;
this.loading = false;
})
.catch(({ response: { data: message = "获取默认文件系统设置失败,请检查网络或者刷新页面重试" } }) => {
this.$store.dispatch("alert-open", { type: "danger", message });
});
},
methods: {
submitHandler({ stopProcessing }) {
request.patch(
createRequestURI('file-storage/default-filesystem'),
{
filesystem: this.selected
},
{
validateStatus: status => status === 204,
}
)
.then(() => {
this.$store.dispatch("alert-open", {
type: "success",
message: "更新成功!"
});
})
.catch(({ response: { data: message = "提交失败!" } }) => {
this.$store.dispatch("alert-open", { type: "danger", message });
})
.finally(stopProcessing);
}
}
}
</script>

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { default } from './wrap';
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<template>
<div class="container-fluid">
<default-filesystem-panel />
</div>
</template>

<script>
import DefaultFilesystemPanel from './default';
export default {
components: {
DefaultFilesystemPanel
}
}
</script>

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<template>
<div class="panel panel-default">
<div class="panel-heading">图片设置</div>
<div class="panel-heading">文件大小</div>
<div class="panel-body">

<div class="alert alert-warning">
Expand Down
1 change: 1 addition & 0 deletions resources/assets/admin/pages/file-storage/index.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export { default as WrapComponent } from './wrap-component';
export { default as HomeComponent } from './home-component';
export { default as FilesystemsComponent } from './filesystems-component';
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
</div>

<ul class="nav navbar-nav">
<router-link exact tag="li" exact-active-class="active" to="/file-storage">
<router-link exact tag="li" exact-active-class="active" :to="{ name: 'file-storage:home' }">
<a>基础设置</a>
</router-link>
<router-link tag="li" active-class="active" to="/file-storage/filesystem">
<router-link tag="li" active-class="active" :to="{ name: 'file-storage:filesystems' }">
<a>文件系统</a>
</router-link>
<router-link tag="li" active-class="active" to="/file-storage/filesystem">
Expand Down
6 changes: 6 additions & 0 deletions resources/assets/admin/router/file-storage-routes.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import {
WrapComponent,
HomeComponent,
FilesystemsComponent,
} from '../pages/file-storage';

export default {
Expand All @@ -11,6 +12,11 @@ export default {
name: "file-storage:home",
path: "",
component: HomeComponent
},
{
name: "file-storage:filesystems",
path: "filesystems",
component: FilesystemsComponent
}
]
};
3 changes: 3 additions & 0 deletions routes/new-admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,7 @@

$route->get('file-storage/file-size', AdminControllers\FileStorage\FileSize::class.'@show');
$route->patch('file-storage/file-size', AdminControllers\FileStorage\FileSize::class.'@update');

$route->get('file-storage/default-filesystem', AdminControllers\FileStorage\DefaultFilesystem::class.'@show');
$route->patch('file-storage/default-filesystem', AdminControllers\FileStorage\DefaultFilesystem::class.'@update');
});

0 comments on commit cf9d2d5

Please sign in to comment.