wip
This commit is contained in:
@@ -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');
|
||||
|
||||
@@ -33,6 +33,12 @@ class SettingRequest extends FormRequest
|
||||
'email' => [
|
||||
'nullable',
|
||||
'email'
|
||||
],
|
||||
|
||||
'logo' => [
|
||||
'nullable',
|
||||
'image',
|
||||
'max:2000'
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
10
public/js/0.js
vendored
10
public/js/0.js
vendored
@@ -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
98
public/js/18.js
vendored
@@ -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
2
public/js/app.js
vendored
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
},
|
||||
})
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user