This commit is contained in:
Dennis
2020-11-26 15:59:48 +01:00
parent f4062cd6e7
commit 1255221550
8 changed files with 95 additions and 53 deletions

View File

@@ -5,6 +5,8 @@ namespace App\Http\Controllers\Admin;
use App\Models\Package;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\SettingRequest;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class SettingController extends Controller
{
@@ -58,8 +60,15 @@ class SettingController extends Controller
}
if ($logo = $request->file('logo')) {
$request->file('logo')->storeAs('public', 'logo.' . $request->file('logo')->extension());
setting(['logo' => '/storage/logo.png']);
// If we previously had a logo, rotate that
if ($oldLogo = setting('logo')) {
Storage::delete(str_replace('/storage/', '/public/', $oldLogo));
}
$version = Str::random();
$request->file('logo')->storeAs('public/logo', 'logo-' . $version . '.' . $request->file('logo')->extension());
setting(['logo' => '/storage/logo/logo-' . $version . '.' . $request->file('logo')->extension()]);
}
cache()->forget('core.settings');

View File

@@ -33,6 +33,12 @@ class SettingRequest extends FormRequest
'email' => [
'nullable',
'email'
],
'logo' => [
'nullable',
'image',
'max:2000'
]
];
}

10
public/js/0.js vendored
View File

@@ -844,10 +844,12 @@ var render = function() {
"div",
{ staticClass: "flex items-center space-x-5" },
[
_c("img", {
staticClass: "h-14",
attrs: { src: _vm.$page.props.settings.logo }
}),
_vm.$page.props.settings.logo
? _c("img", {
staticClass: "h-14",
attrs: { src: _vm.$page.props.settings.logo }
})
: _vm._e(),
_vm._v(" "),
_vm._t("breadcrumbs")
],

98
public/js/18.js vendored
View File

@@ -241,7 +241,7 @@ __webpack_require__.r(__webpack_exports__);
data.append('default_package', this.form.receive_email_on_server_creation || '');
data.append('isolate_per_site_per_user', this.form.isolate_per_site_per_user || false);
data.append('default_language', this.form.default_language || 'en');
data.append('logo', this.form.logo);
data.append('logo', this.form.logo || '');
data.append('_method', 'patch');
this.$inertia.post(this.route('admin.settings.update'), data, {
preserveScroll: true,
@@ -250,6 +250,11 @@ __webpack_require__.r(__webpack_exports__);
},
onFinish: function onFinish() {
return _this.sending = false;
},
onSuccess: function onSuccess() {
if (Object.keys(_this.$page.props.errors).length === 0) {
_this.form.logo = null;
}
}
});
}
@@ -428,10 +433,11 @@ __webpack_require__.r(__webpack_exports__);
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _components_FormGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/components/FormGroup */ "./resources/js/components/FormGroup.vue");
/* harmony import */ var _components_Label__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/components/Label */ "./resources/js/components/Label.vue");
/* harmony import */ var _components_ErrorText__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/ErrorText */ "./resources/js/components/ErrorText.vue");
/* harmony import */ var _components_HelperText__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/HelperText */ "./resources/js/components/HelperText.vue");
/* harmony import */ var _components_icons_IconClipboard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/icons/IconClipboard */ "./resources/js/components/icons/IconClipboard.vue");
/* harmony import */ var _components_icons_IconKey__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/icons/IconKey */ "./resources/js/components/icons/IconKey.vue");
/* harmony import */ var _components_Button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/Button */ "./resources/js/components/Button.vue");
/* harmony import */ var _components_ErrorText__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ErrorText */ "./resources/js/components/ErrorText.vue");
/* harmony import */ var _components_HelperText__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/HelperText */ "./resources/js/components/HelperText.vue");
/* harmony import */ var _components_icons_IconClipboard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/icons/IconClipboard */ "./resources/js/components/icons/IconClipboard.vue");
/* harmony import */ var _components_icons_IconKey__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/icons/IconKey */ "./resources/js/components/icons/IconKey.vue");
//
//
//
@@ -471,6 +477,7 @@ __webpack_require__.r(__webpack_exports__);
var defaultClasses = 'w-full border-medium-emphasis text-body h-10 px-2 border rounded bg-surface-1 focus:outline-none focus:border-primary';
/* harmony default export */ __webpack_exports__["default"] = ({
props: {
@@ -513,10 +520,11 @@ var defaultClasses = 'w-full border-medium-emphasis text-body h-10 px-2 border r
components: {
FormGroup: _components_FormGroup__WEBPACK_IMPORTED_MODULE_0__["default"],
Label: _components_Label__WEBPACK_IMPORTED_MODULE_1__["default"],
ErrorText: _components_ErrorText__WEBPACK_IMPORTED_MODULE_2__["default"],
HelperText: _components_HelperText__WEBPACK_IMPORTED_MODULE_3__["default"],
IconClipboard: _components_icons_IconClipboard__WEBPACK_IMPORTED_MODULE_4__["default"],
IconKey: _components_icons_IconKey__WEBPACK_IMPORTED_MODULE_5__["default"]
ErrorText: _components_ErrorText__WEBPACK_IMPORTED_MODULE_3__["default"],
HelperText: _components_HelperText__WEBPACK_IMPORTED_MODULE_4__["default"],
IconClipboard: _components_icons_IconClipboard__WEBPACK_IMPORTED_MODULE_5__["default"],
IconKey: _components_icons_IconKey__WEBPACK_IMPORTED_MODULE_6__["default"],
Button: _components_Button__WEBPACK_IMPORTED_MODULE_2__["default"]
},
data: function data() {
return {
@@ -1904,37 +1912,47 @@ var render = function() {
}),
_vm._v(" "),
!_vm.value
? _c("div", { staticClass: "p-2" }, [
_c(
"button",
{
staticClass:
"px-4 py-1 bg-gray-500 hover:bg-gray-700 rounded-sm text-xs font-medium text-white",
attrs: { type: "button" },
on: { click: _vm.browse }
},
[_vm._v("\n Browse\n ")]
)
])
: _c("div", { staticClass: "flex items-center justify-between p-2" }, [
_c("div", { staticClass: "flex-1 pr-1" }, [
_vm._v(_vm._s(_vm.value.name) + " "),
_c("span", { staticClass: "text-gray-500 text-xs" }, [
_vm._v("(" + _vm._s(_vm.filesize(_vm.value.size)) + ")")
])
]),
_vm._v(" "),
_c(
"button",
{
staticClass:
"px-4 py-1 bg-gray-500 hover:bg-gray-700 rounded-sm text-xs font-medium text-white",
attrs: { type: "button" },
on: { click: _vm.remove }
},
[_vm._v("\n Remove\n ")]
)
]),
? _c(
"div",
{ staticClass: "p-2" },
[
_c(
"Button",
{
staticClass:
"px-4 py-1 bg-gray-500 hover:bg-gray-700 rounded-sm text-xs font-medium text-white",
attrs: { type: "button" },
on: { click: _vm.browse }
},
[_vm._v("\n Browse\n ")]
)
],
1
)
: _c(
"div",
{ staticClass: "flex items-center justify-between p-2" },
[
_c("div", { staticClass: "flex-1 pr-1" }, [
_vm._v(_vm._s(_vm.value.name) + " "),
_c("span", { staticClass: "text-gray-500 text-xs" }, [
_vm._v("(" + _vm._s(_vm.filesize(_vm.value.size)) + ")")
])
]),
_vm._v(" "),
_c(
"Button",
{
staticClass:
"px-4 py-1 bg-gray-500 hover:bg-gray-700 rounded-sm text-xs font-medium text-white",
attrs: { variant: "danger", type: "button" },
on: { click: _vm.remove }
},
[_vm._v("\n Remove\n ")]
)
],
1
),
_vm._v(" "),
_vm.errors ? _c("ErrorText", [_vm._v(_vm._s(_vm.errors[0]))]) : _vm._e(),
_vm._v(" "),

2
public/js/app.js vendored
View File

@@ -43,7 +43,7 @@
/******/
/******/ // script path function
/******/ function jsonpScriptSrc(chunkId) {
/******/ return __webpack_require__.p + "js/" + ({}[chunkId]||chunkId) + ".js?id=" + {"0":"78531b3b55880408800d","1":"9e30a07e34955c9b81d0","2":"d2a49802291d427ca7c8","3":"a0f4c2f49863abbfe7f1","4":"27416beeac7dd90b6c9f","5":"70b66e00eccca81de371","6":"73fc0264b5cc06f5bd55","7":"140acb8c38018bb7c822","8":"800cf8f4ae1573afb58b","9":"f2a85fd7ca99129bd7e2","10":"7109ac26050896c7632e","11":"b437d61d4ead3c781e22","12":"2ab18ae0943746b63751","13":"8151f0644b451f415e6b","14":"5ba34553a8dbd80de385","15":"b93e030809beddfff7dd","16":"69a7e01207316350a34f","17":"ea0aec4ceaa4ad16e409","18":"4ee7f311c31e674ef868","19":"600196d42a8c82f8a760","20":"00f96bd398202ad82571","21":"abb6852a025ba076b5e5","22":"6d2f83c5c25785784982","23":"c40adc397ee8e4c75a84","24":"73d5a16ccc2c903386f6","25":"10056281f862a9624e88","26":"e30c6e1fe7ab720751c8","27":"e1f48abf833eaaedf037","28":"5cc778b6ea55b53927ef","29":"90a55a48473e7dc9dcd1","30":"1cc10db0519a76d1075c","31":"6638dad0b402da0da7db","32":"d31ee3d6e9fff25d60ea","33":"69bb6380ec04934fc761","34":"f73b7b586dcb628a0238","35":"cec6a59e621fba676a19","36":"fb27e3667d6023b4ef5e","37":"eaa34e9061d5589c20e6","38":"dc75a1421954e93e234e","39":"59d66d0467b61aa63589","40":"34e859f47a24902b8974","41":"9a65f0ac4faaf9458b46","42":"79185517ca7a7e8dfb9f","43":"9d9feb9848ad4a682a8c","44":"77a603dda0065501cc1d","45":"ce3a1b4b271e88791404","46":"329f2114dad302cf80ad","47":"17486d24f96188a73ed0","48":"f91e910285fd011b4768","49":"c747d78143b323e1c27c","50":"6bff504078271803d2fc","51":"59e89c7a9541e25d3b41","52":"1982998b12b16e3a09d4","53":"23f79ec7082c146de011","54":"ebba4351fdc7dda59e24","55":"bf6ab8f12a17bdf42483","56":"0fc8a9c045226d81b59e","57":"0ddd60a5a000ec936c82","58":"4823f0b7a0e80fffa181","59":"98a2df4abb8fb3b2f1fb","60":"f2d7dc654b1afd2e4b4f","61":"de5ad4bf80180d12103e","62":"17a5e584de3773f5b06a","63":"0255b720b4cdfaca9756","64":"810d46956098ec36a48a","65":"125441dbdaa3532d11fc","66":"d5ad8ef84fd9ddb78adb","67":"9c262f860fec60d5c9a3","68":"c47e440c910511761cda","69":"b7557e5ab81de2135c1a","70":"cd5835759472d8269c28","71":"3eec5e21b2f354f2b393","72":"43c7fe3c117790caf04e","73":"fb1ecfdaad6d94aa2b97","74":"56a45ed3ec988a6a0727","75":"4204d942d58177e4ff05","76":"c4637ed6669c6bdc2403","77":"1a8473c482f95d7a24bc","78":"33fa2982cb9096943e57","79":"2ed6cea6a8854c1f99c1","80":"8626b00a72d693a0d8f3","81":"fe27c84269b86e706406","82":"622552d73f13d2e0bc05","83":"2a1d212abf660186917d","84":"a11845294f4975c939f5","85":"d70fb3d3ff6aadc9472d"}[chunkId] + ""
/******/ return __webpack_require__.p + "js/" + ({}[chunkId]||chunkId) + ".js?id=" + {"0":"ad76926027963866f988","1":"9e30a07e34955c9b81d0","2":"d2a49802291d427ca7c8","3":"a0f4c2f49863abbfe7f1","4":"27416beeac7dd90b6c9f","5":"70b66e00eccca81de371","6":"73fc0264b5cc06f5bd55","7":"140acb8c38018bb7c822","8":"800cf8f4ae1573afb58b","9":"f2a85fd7ca99129bd7e2","10":"7109ac26050896c7632e","11":"b437d61d4ead3c781e22","12":"2ab18ae0943746b63751","13":"8151f0644b451f415e6b","14":"5ba34553a8dbd80de385","15":"b93e030809beddfff7dd","16":"69a7e01207316350a34f","17":"ea0aec4ceaa4ad16e409","18":"173f42a842a7a82df3b9","19":"600196d42a8c82f8a760","20":"00f96bd398202ad82571","21":"abb6852a025ba076b5e5","22":"6d2f83c5c25785784982","23":"c40adc397ee8e4c75a84","24":"73d5a16ccc2c903386f6","25":"10056281f862a9624e88","26":"e30c6e1fe7ab720751c8","27":"e1f48abf833eaaedf037","28":"5cc778b6ea55b53927ef","29":"90a55a48473e7dc9dcd1","30":"1cc10db0519a76d1075c","31":"6638dad0b402da0da7db","32":"d31ee3d6e9fff25d60ea","33":"69bb6380ec04934fc761","34":"f73b7b586dcb628a0238","35":"cec6a59e621fba676a19","36":"fb27e3667d6023b4ef5e","37":"eaa34e9061d5589c20e6","38":"dc75a1421954e93e234e","39":"59d66d0467b61aa63589","40":"34e859f47a24902b8974","41":"9a65f0ac4faaf9458b46","42":"79185517ca7a7e8dfb9f","43":"9d9feb9848ad4a682a8c","44":"77a603dda0065501cc1d","45":"ce3a1b4b271e88791404","46":"329f2114dad302cf80ad","47":"17486d24f96188a73ed0","48":"f91e910285fd011b4768","49":"c747d78143b323e1c27c","50":"6bff504078271803d2fc","51":"59e89c7a9541e25d3b41","52":"1982998b12b16e3a09d4","53":"23f79ec7082c146de011","54":"ebba4351fdc7dda59e24","55":"bf6ab8f12a17bdf42483","56":"0fc8a9c045226d81b59e","57":"0ddd60a5a000ec936c82","58":"4823f0b7a0e80fffa181","59":"98a2df4abb8fb3b2f1fb","60":"f2d7dc654b1afd2e4b4f","61":"de5ad4bf80180d12103e","62":"17a5e584de3773f5b06a","63":"0255b720b4cdfaca9756","64":"810d46956098ec36a48a","65":"125441dbdaa3532d11fc","66":"d5ad8ef84fd9ddb78adb","67":"9c262f860fec60d5c9a3","68":"c47e440c910511761cda","69":"b7557e5ab81de2135c1a","70":"cd5835759472d8269c28","71":"3eec5e21b2f354f2b393","72":"43c7fe3c117790caf04e","73":"fb1ecfdaad6d94aa2b97","74":"56a45ed3ec988a6a0727","75":"4204d942d58177e4ff05","76":"c4637ed6669c6bdc2403","77":"1a8473c482f95d7a24bc","78":"33fa2982cb9096943e57","79":"2ed6cea6a8854c1f99c1","80":"8626b00a72d693a0d8f3","81":"fe27c84269b86e706406","82":"622552d73f13d2e0bc05","83":"2a1d212abf660186917d","84":"a11845294f4975c939f5","85":"d70fb3d3ff6aadc9472d"}[chunkId] + ""
/******/ }
/******/
/******/ // The require function

View File

@@ -215,13 +215,18 @@
data.append('default_package', this.form.receive_email_on_server_creation || '')
data.append('isolate_per_site_per_user', this.form.isolate_per_site_per_user || false)
data.append('default_language', this.form.default_language || 'en')
data.append('logo', this.form.logo)
data.append('logo', this.form.logo || '')
data.append('_method', 'patch')
this.$inertia.post(this.route('admin.settings.update'), data, {
preserveScroll: true,
onStart: () => this.sending = true,
onFinish: () => this.sending = false,
onSuccess: () => {
if (Object.keys(this.$page.props.errors).length === 0) {
this.form.logo = null
}
},
})
},
}

View File

@@ -6,7 +6,7 @@
class="flex flex-col items-center justify-between py-4 space-y-4 md:space-y-0 md:flex-row"
>
<div class="flex items-center space-x-5">
<img class="h-14" :src="$page.props.settings.logo" />
<img class="h-14" v-if="$page.props.settings.logo" :src="$page.props.settings.logo" />
<slot name="breadcrumbs"></slot>
</div>

View File

@@ -15,15 +15,15 @@
class="hidden" />
<div v-if="!value" class="p-2">
<button type="button" class="px-4 py-1 bg-gray-500 hover:bg-gray-700 rounded-sm text-xs font-medium text-white" @click="browse">
<Button type="button" class="px-4 py-1 bg-gray-500 hover:bg-gray-700 rounded-sm text-xs font-medium text-white" @click="browse">
Browse
</button>
</Button>
</div>
<div v-else class="flex items-center justify-between p-2">
<div class="flex-1 pr-1">{{ value.name }} <span class="text-gray-500 text-xs">({{ filesize(value.size) }})</span></div>
<button type="button" class="px-4 py-1 bg-gray-500 hover:bg-gray-700 rounded-sm text-xs font-medium text-white" @click="remove">
<Button variant="danger" type="button" class="px-4 py-1 bg-gray-500 hover:bg-gray-700 rounded-sm text-xs font-medium text-white" @click="remove">
Remove
</button>
</Button>
</div>
<ErrorText v-if="errors">{{ errors[0] }}</ErrorText>
<HelperText v-if="helperText && !errors">{{ helperText }}</HelperText>
@@ -34,6 +34,7 @@
<script>
import FormGroup from '@/components/FormGroup'
import Label from '@/components/Label'
import Button from '@/components/Button'
import ErrorText from '@/components/ErrorText'
import HelperText from '@/components/HelperText'
import IconClipboard from '@/components/icons/IconClipboard'
@@ -86,6 +87,7 @@ export default {
HelperText,
IconClipboard,
IconKey,
Button
},
data() {