This commit is contained in:
Dennis
2020-11-04 13:41:46 +01:00
parent ea47c0c3c6
commit 0dbf3bba4d
24 changed files with 1136 additions and 175 deletions

View File

@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\DocumentationArticleRequest;
use App\Models\DocumentationCategory;
use App\Models\DocumentationItem;
use Illuminate\Http\Request;
@@ -11,7 +12,7 @@ class DocumentationArticleController extends Controller
{
public function index()
{
$articles = DocumentationItem::query()->latest()->paginate();
$articles = DocumentationItem::query()->with('category:id,title')->latest()->paginate();
return inertia('Admin/Documentation/Articles/Index', [
'articles' => $articles
@@ -20,7 +21,11 @@ class DocumentationArticleController extends Controller
public function create()
{
return inertia('Admin/Documentation/Articles/Create');
$categories = DocumentationCategory::pluck('title', 'id');
return inertia('Admin/Documentation/Articles/Create', [
'categories' => $categories,
]);
}
public function store(DocumentationArticleRequest $request)
@@ -30,6 +35,9 @@ class DocumentationArticleController extends Controller
'content' => $request->input('content')
]);
$article->documentation_category_id = $request->input('category_id');
$article->save();
return redirect()->route('admin.documentation.articles.index')->with('success', __('Documentation article has been created'));
}
@@ -37,12 +45,15 @@ class DocumentationArticleController extends Controller
{
$article = DocumentationItem::findOrFail($id);
$categories = DocumentationCategory::pluck('title', 'id');
return inertia('Admin/Documentation/Articles/Edit', [
'article' => $article
'article' => $article,
'categories' => $categories
]);
}
public function update(Request $request, $id)
public function update(DocumentationArticleRequest $request, $id)
{
$article = DocumentationItem::findOrFail($id);
@@ -51,6 +62,9 @@ class DocumentationArticleController extends Controller
'content' => $request->input('content')
]);
$article->documentation_category_id = $request->input('category_id');
$article->save();
return redirect()->route('admin.documentation.articles.index')->with('success', __('Documentation article has been updated'));
}
}

View File

@@ -54,7 +54,7 @@ class UserController extends Controller
public function show($id)
{
//
// TODO: Implement show feature for a user
}
public function edit($id)

View File

@@ -98,17 +98,19 @@ class SiteController extends Controller
public function requestFtpPassword(Request $request, $id)
{
$this->validate($request, ['password' => 'required|string']);
if ($request->user()->requires_password_for_ftp) {
$this->validate($request, ['password' => 'required|string']);
if (!Hash::check($request->input('password'), $request->user()->password)) {
return response([
'message' => 'The given data was invalid',
'errors' => [
'password' => [
trans('auth.failed')
if (!Hash::check($request->input('password'), $request->user()->password)) {
return response([
'message' => 'The given data was invalid',
'errors' => [
'password' => [
trans('auth.failed')
]
]
]
], 422);
], 422);
}
}
$site = $request->user()->sites()->findOrFail($id);

View File

@@ -58,6 +58,7 @@ class HandleInertiaRequests extends Middleware
'avatar' => Auth::user()->getGravatar(),
'theme' => Auth::user()->theme,
'keyboard_shortcuts' => Auth::user()->keyboard_shortcuts,
'requires_password_for_ftp' => Auth::user()->requires_password_for_ftp,
] : null,
'package' => auth()->user() && auth()->user()->package ? [
'name' => auth()->user()->package->name,

View File

@@ -32,6 +32,10 @@ class DocumentationArticleRequest extends FormRequest
'content' => [
'required',
'min:2'
],
'category_id' => [
'required',
'exists:documentation_categories,id'
]
];
}

View File

@@ -13,6 +13,6 @@ class DocumentationItem extends Model
public function category()
{
return $this->belongsTo(DocumentationCategory::class);
return $this->belongsTo(DocumentationCategory::class, 'documentation_category_id');
}
}

View File

@@ -32,7 +32,8 @@ class User extends Authenticatable implements HasLocalePreference
'language',
'blocked',
'theme',
'keyboard_shortcuts'
'keyboard_shortcuts',
'requires_password_for_ftp'
];
protected $hidden = [
@@ -44,7 +45,8 @@ class User extends Authenticatable implements HasLocalePreference
protected $casts = [
'email_verified_at' => 'datetime',
'ftp_password' => Encrypted::class,
'keyboard_shortcuts' => 'boolean'
'keyboard_shortcuts' => 'boolean',
'requires_password_for_ftp' => 'boolean'
];
protected $appends = [

View File

@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddRequiresPasswordForFtpToUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->boolean('requires_password_for_ftp')->after('blocked')->default(true);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('requires_password_for_ftp');
});
}
}

125
public/js/13.js vendored
View File

@@ -84,6 +84,15 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
//
//
//
//
//
//
//
//
//
@@ -145,7 +154,8 @@ __webpack_require__.r(__webpack_exports__);
"package": this.user.package_id,
notes: this.user.notes,
language: this.user.language,
blocked: this.user.blocked
blocked: this.user.blocked,
requires_password_for_ftp: this.user.requires_password_for_ftp
}
};
},
@@ -804,6 +814,119 @@ var render = function() {
}
}),
_vm._v(" "),
_c("div", [
_c("input", {
directives: [
{
name: "model",
rawName: "v-model",
value:
_vm.form
.requires_password_for_ftp,
expression:
"form.requires_password_for_ftp"
}
],
staticClass: "form-checkbox",
attrs: {
id: "isolate_per_site_per_user",
type: "checkbox"
},
domProps: {
checked: Array.isArray(
_vm.form
.requires_password_for_ftp
)
? _vm._i(
_vm.form
.requires_password_for_ftp,
null
) > -1
: _vm.form
.requires_password_for_ftp
},
on: {
change: function($event) {
var $$a =
_vm.form
.requires_password_for_ftp,
$$el = $event.target,
$$c = $$el.checked
? true
: false
if (Array.isArray($$a)) {
var $$v = null,
$$i = _vm._i($$a, $$v)
if ($$el.checked) {
$$i < 0 &&
_vm.$set(
_vm.form,
"requires_password_for_ftp",
$$a.concat([$$v])
)
} else {
$$i > -1 &&
_vm.$set(
_vm.form,
"requires_password_for_ftp",
$$a
.slice(0, $$i)
.concat(
$$a.slice($$i + 1)
)
)
}
} else {
_vm.$set(
_vm.form,
"requires_password_for_ftp",
$$c
)
}
}
}
}),
_vm._v(" "),
_c(
"label",
{
staticClass: "ml-2 text-sm",
attrs: {
for:
"isolate_per_site_per_user"
}
},
[
_vm._v(
_vm._s(
_vm.__(
"Require password to show FTP password"
)
)
)
]
),
_vm._v(" "),
_c(
"p",
{
staticClass:
"text-small mt-1 text-medium-emphasis"
},
[
_vm._v(
"\n " +
_vm._s(
_vm.__(
"Disabling this will allow this user to get the FTP password right away."
)
) +
"\n "
)
]
)
]),
_vm._v(" "),
_c(
"FormActions",
[

124
public/js/14.js vendored
View File

@@ -84,6 +84,14 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
//
//
//
//
//
//
//
//
@@ -152,7 +160,8 @@ __webpack_require__.r(__webpack_exports__);
"package": (_this$defaultPackage = this.defaultPackage) !== null && _this$defaultPackage !== void 0 ? _this$defaultPackage : null,
notes: null,
language: 'en',
blocked: null
blocked: null,
requires_password_for_ftp: null
}
};
},
@@ -793,6 +802,119 @@ var render = function() {
}
}),
_vm._v(" "),
_c("div", [
_c("input", {
directives: [
{
name: "model",
rawName: "v-model",
value:
_vm.form
.requires_password_for_ftp,
expression:
"form.requires_password_for_ftp"
}
],
staticClass: "form-checkbox",
attrs: {
id: "isolate_per_site_per_user",
type: "checkbox"
},
domProps: {
checked: Array.isArray(
_vm.form
.requires_password_for_ftp
)
? _vm._i(
_vm.form
.requires_password_for_ftp,
null
) > -1
: _vm.form
.requires_password_for_ftp
},
on: {
change: function($event) {
var $$a =
_vm.form
.requires_password_for_ftp,
$$el = $event.target,
$$c = $$el.checked
? true
: false
if (Array.isArray($$a)) {
var $$v = null,
$$i = _vm._i($$a, $$v)
if ($$el.checked) {
$$i < 0 &&
_vm.$set(
_vm.form,
"requires_password_for_ftp",
$$a.concat([$$v])
)
} else {
$$i > -1 &&
_vm.$set(
_vm.form,
"requires_password_for_ftp",
$$a
.slice(0, $$i)
.concat(
$$a.slice($$i + 1)
)
)
}
} else {
_vm.$set(
_vm.form,
"requires_password_for_ftp",
$$c
)
}
}
}
}),
_vm._v(" "),
_c(
"label",
{
staticClass: "ml-2 text-sm",
attrs: {
for:
"isolate_per_site_per_user"
}
},
[
_vm._v(
_vm._s(
_vm.__(
"Require password to show FTP password"
)
)
)
]
),
_vm._v(" "),
_c(
"p",
{
staticClass:
"text-small mt-1 text-medium-emphasis"
},
[
_vm._v(
"\n " +
_vm._s(
_vm.__(
"Disabling this will allow this user to get the FTP password right away."
)
) +
"\n "
)
]
)
]),
_vm._v(" "),
_c(
"FormActions",
[

2
public/js/18.js vendored
View File

@@ -233,7 +233,7 @@ __webpack_require__.r(__webpack_exports__);
},
props: {
"package": Object,
providers: Object,
providers: [Array, Object],
syncedProviders: Array
},
methods: {

318
public/js/20.js vendored
View File

@@ -25,10 +25,11 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _components_layouts_SettingsLayout__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/components/layouts/SettingsLayout */ "./resources/js/components/layouts/SettingsLayout.vue");
/* harmony import */ var _components_SettingsSegment__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/components/SettingsSegment */ "./resources/js/components/SettingsSegment.vue");
/* harmony import */ var _components_forms_FormInput__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/components/forms/FormInput */ "./resources/js/components/forms/FormInput.vue");
/* harmony import */ var _components_forms_FormTextarea__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/components/forms/FormTextarea */ "./resources/js/components/forms/FormTextarea.vue");
/* harmony import */ var _components_Form__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/components/Form */ "./resources/js/components/Form.vue");
/* harmony import */ var _components_FormActions__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/components/FormActions */ "./resources/js/components/FormActions.vue");
/* harmony import */ var _Tabs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./../Tabs */ "./resources/js/Pages/Admin/Documentation/Tabs.vue");
/* harmony import */ var _components_forms_FormSelect__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/components/forms/FormSelect */ "./resources/js/components/forms/FormSelect.vue");
/* harmony import */ var _components_forms_FormTextarea__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/components/forms/FormTextarea */ "./resources/js/components/forms/FormTextarea.vue");
/* harmony import */ var _components_Form__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/components/Form */ "./resources/js/components/Form.vue");
/* harmony import */ var _components_FormActions__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @/components/FormActions */ "./resources/js/components/FormActions.vue");
/* harmony import */ var _Tabs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./../Tabs */ "./resources/js/Pages/Admin/Documentation/Tabs.vue");
//
//
//
@@ -69,6 +70,11 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
//
//
//
//
@@ -110,19 +116,24 @@ __webpack_require__.r(__webpack_exports__);
StatusBubble: _components_StatusBubble__WEBPACK_IMPORTED_MODULE_10__["default"],
NotificationBadge: _components_NotificationBadge__WEBPACK_IMPORTED_MODULE_11__["default"],
FormInput: _components_forms_FormInput__WEBPACK_IMPORTED_MODULE_15__["default"],
FormTextarea: _components_forms_FormTextarea__WEBPACK_IMPORTED_MODULE_16__["default"],
FormTextarea: _components_forms_FormTextarea__WEBPACK_IMPORTED_MODULE_17__["default"],
SettingsLayout: _components_layouts_SettingsLayout__WEBPACK_IMPORTED_MODULE_13__["default"],
SettingsSegment: _components_SettingsSegment__WEBPACK_IMPORTED_MODULE_14__["default"],
Form: _components_Form__WEBPACK_IMPORTED_MODULE_17__["default"],
FormActions: _components_FormActions__WEBPACK_IMPORTED_MODULE_18__["default"],
Tabs: _Tabs__WEBPACK_IMPORTED_MODULE_19__["default"]
Form: _components_Form__WEBPACK_IMPORTED_MODULE_18__["default"],
FormActions: _components_FormActions__WEBPACK_IMPORTED_MODULE_19__["default"],
Tabs: _Tabs__WEBPACK_IMPORTED_MODULE_20__["default"],
FormSelect: _components_forms_FormSelect__WEBPACK_IMPORTED_MODULE_16__["default"]
},
props: {
categories: Object
},
data: function data() {
return {
sending: false,
form: {
title: null,
description: null
description: null,
category_id: null
}
};
},
@@ -300,6 +311,108 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/forms/FormSelect.vue?vue&type=script&lang=js&":
/*!***************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/forms/FormSelect.vue?vue&type=script&lang=js& ***!
\***************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__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");
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
var defaultClasses = 'w-full border-medium-emphasis text-body h-10 max-w-lg px-2 border rounded bg-surface-1 focus:outline-none focus:border-primary';
/* harmony default export */ __webpack_exports__["default"] = ({
props: {
id: {
type: String,
required: false
},
label: {
type: String,
required: true
},
type: {
type: String,
"default": function _default() {
return 'text';
}
},
required: {
type: Boolean,
"default": function _default() {
return false;
}
},
helperText: {
type: String
},
errors: {
type: Array
},
placeholder: {
type: String
},
value: {
required: false,
"default": ''
},
loading: {
type: Boolean,
required: false,
"default": false
},
disabled: {
type: Boolean,
required: false,
"default": false
}
},
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"]
},
data: function data() {
return {
defaultClasses: defaultClasses,
selected: this.value
};
},
methods: {
updateValue: function updateValue(value) {
this.$emit('input', value);
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/forms/FormTextarea.vue?vue&type=script&lang=js&":
/*!*****************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/forms/FormTextarea.vue?vue&type=script&lang=js& ***!
@@ -512,6 +625,41 @@ var render = function() {
}
}),
_vm._v(" "),
_c(
"FormSelect",
{
attrs: {
label: _vm.__("Category"),
errors:
_vm.$page.props.errors
.category_id
},
model: {
value: _vm.form.category_id,
callback: function($$v) {
_vm.$set(
_vm.form,
"category_id",
$$v
)
},
expression: "form.category_id"
}
},
_vm._l(_vm.categories, function(
title,
id
) {
return _c("option", {
domProps: {
value: id,
textContent: _vm._s(title)
}
})
}),
0
),
_vm._v(" "),
_c("FormTextarea", {
attrs: {
rows: "10",
@@ -795,6 +943,89 @@ render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/forms/FormSelect.vue?vue&type=template&id=75d3772b&":
/*!*******************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/forms/FormSelect.vue?vue&type=template&id=75d3772b& ***!
\*******************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"FormGroup",
[
_c("Label", { attrs: { errors: _vm.errors, forId: _vm.id } }, [
_vm._v(_vm._s(_vm.label))
]),
_vm._v(" "),
_c(
"select",
{
directives: [
{
name: "model",
rawName: "v-model",
value: _vm.value,
expression: "value"
}
],
class: [
_vm.defaultClasses,
_vm.disabled || _vm.loading ? "opacity-50" : "",
_vm.loading ? "cursor-wait" : ""
],
attrs: {
disabled: _vm.loading || _vm.disabled,
id: _vm.id,
required: _vm.required,
placeholder: _vm.placeholder
},
on: {
input: function($event) {
return _vm.updateValue($event.target.value)
},
change: function($event) {
var $$selectedVal = Array.prototype.filter
.call($event.target.options, function(o) {
return o.selected
})
.map(function(o) {
var val = "_value" in o ? o._value : o.value
return val
})
_vm.value = $event.target.multiple
? $$selectedVal
: $$selectedVal[0]
}
}
},
[_vm._t("default")],
2
),
_vm._v(" "),
_vm.errors ? _c("ErrorText", [_vm._v(_vm._s(_vm.errors[0]))]) : _vm._e(),
_vm._v(" "),
_vm.helperText && !_vm.errors
? _c("HelperText", [_vm._v(_vm._s(_vm.helperText))])
: _vm._e()
],
1
)
}
var staticRenderFns = []
render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/forms/FormTextarea.vue?vue&type=template&id=c608beae&":
@@ -1374,6 +1605,75 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ "./resources/js/components/forms/FormSelect.vue":
/*!******************************************************!*\
!*** ./resources/js/components/forms/FormSelect.vue ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _FormSelect_vue_vue_type_template_id_75d3772b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FormSelect.vue?vue&type=template&id=75d3772b& */ "./resources/js/components/forms/FormSelect.vue?vue&type=template&id=75d3772b&");
/* harmony import */ var _FormSelect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FormSelect.vue?vue&type=script&lang=js& */ "./resources/js/components/forms/FormSelect.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_FormSelect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_FormSelect_vue_vue_type_template_id_75d3772b___WEBPACK_IMPORTED_MODULE_0__["render"],
_FormSelect_vue_vue_type_template_id_75d3772b___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "resources/js/components/forms/FormSelect.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./resources/js/components/forms/FormSelect.vue?vue&type=script&lang=js&":
/*!*******************************************************************************!*\
!*** ./resources/js/components/forms/FormSelect.vue?vue&type=script&lang=js& ***!
\*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormSelect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib??ref--4-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FormSelect.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/forms/FormSelect.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormSelect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./resources/js/components/forms/FormSelect.vue?vue&type=template&id=75d3772b&":
/*!*************************************************************************************!*\
!*** ./resources/js/components/forms/FormSelect.vue?vue&type=template&id=75d3772b& ***!
\*************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_FormSelect_vue_vue_type_template_id_75d3772b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./FormSelect.vue?vue&type=template&id=75d3772b& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/forms/FormSelect.vue?vue&type=template&id=75d3772b&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_FormSelect_vue_vue_type_template_id_75d3772b___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_FormSelect_vue_vue_type_template_id_75d3772b___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }),
/***/ "./resources/js/components/forms/FormTextarea.vue":

317
public/js/21.js vendored
View File

@@ -25,10 +25,11 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _components_layouts_SettingsLayout__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/components/layouts/SettingsLayout */ "./resources/js/components/layouts/SettingsLayout.vue");
/* harmony import */ var _components_SettingsSegment__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/components/SettingsSegment */ "./resources/js/components/SettingsSegment.vue");
/* harmony import */ var _components_forms_FormInput__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/components/forms/FormInput */ "./resources/js/components/forms/FormInput.vue");
/* harmony import */ var _components_forms_FormTextarea__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/components/forms/FormTextarea */ "./resources/js/components/forms/FormTextarea.vue");
/* harmony import */ var _components_Form__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/components/Form */ "./resources/js/components/Form.vue");
/* harmony import */ var _components_FormActions__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/components/FormActions */ "./resources/js/components/FormActions.vue");
/* harmony import */ var _Tabs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./../Tabs */ "./resources/js/Pages/Admin/Documentation/Tabs.vue");
/* harmony import */ var _components_forms_FormSelect__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/components/forms/FormSelect */ "./resources/js/components/forms/FormSelect.vue");
/* harmony import */ var _components_forms_FormTextarea__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/components/forms/FormTextarea */ "./resources/js/components/forms/FormTextarea.vue");
/* harmony import */ var _components_Form__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/components/Form */ "./resources/js/components/Form.vue");
/* harmony import */ var _components_FormActions__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @/components/FormActions */ "./resources/js/components/FormActions.vue");
/* harmony import */ var _Tabs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./../Tabs */ "./resources/js/Pages/Admin/Documentation/Tabs.vue");
//
//
//
@@ -70,6 +71,10 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
//
//
//
@@ -111,22 +116,25 @@ __webpack_require__.r(__webpack_exports__);
StatusBubble: _components_StatusBubble__WEBPACK_IMPORTED_MODULE_10__["default"],
NotificationBadge: _components_NotificationBadge__WEBPACK_IMPORTED_MODULE_11__["default"],
FormInput: _components_forms_FormInput__WEBPACK_IMPORTED_MODULE_15__["default"],
FormTextarea: _components_forms_FormTextarea__WEBPACK_IMPORTED_MODULE_16__["default"],
FormTextarea: _components_forms_FormTextarea__WEBPACK_IMPORTED_MODULE_17__["default"],
SettingsLayout: _components_layouts_SettingsLayout__WEBPACK_IMPORTED_MODULE_13__["default"],
SettingsSegment: _components_SettingsSegment__WEBPACK_IMPORTED_MODULE_14__["default"],
Form: _components_Form__WEBPACK_IMPORTED_MODULE_17__["default"],
FormActions: _components_FormActions__WEBPACK_IMPORTED_MODULE_18__["default"],
Tabs: _Tabs__WEBPACK_IMPORTED_MODULE_19__["default"]
Form: _components_Form__WEBPACK_IMPORTED_MODULE_18__["default"],
FormSelect: _components_forms_FormSelect__WEBPACK_IMPORTED_MODULE_16__["default"],
FormActions: _components_FormActions__WEBPACK_IMPORTED_MODULE_19__["default"],
Tabs: _Tabs__WEBPACK_IMPORTED_MODULE_20__["default"]
},
props: {
article: Object
article: Object,
categories: Object
},
data: function data() {
return {
sending: false,
form: {
title: this.article.title,
content: this.article.content
content: this.article.content,
category_id: this.article.documentation_category_id
}
};
},
@@ -304,6 +312,108 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/forms/FormSelect.vue?vue&type=script&lang=js&":
/*!***************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/forms/FormSelect.vue?vue&type=script&lang=js& ***!
\***************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__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");
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
var defaultClasses = 'w-full border-medium-emphasis text-body h-10 max-w-lg px-2 border rounded bg-surface-1 focus:outline-none focus:border-primary';
/* harmony default export */ __webpack_exports__["default"] = ({
props: {
id: {
type: String,
required: false
},
label: {
type: String,
required: true
},
type: {
type: String,
"default": function _default() {
return 'text';
}
},
required: {
type: Boolean,
"default": function _default() {
return false;
}
},
helperText: {
type: String
},
errors: {
type: Array
},
placeholder: {
type: String
},
value: {
required: false,
"default": ''
},
loading: {
type: Boolean,
required: false,
"default": false
},
disabled: {
type: Boolean,
required: false,
"default": false
}
},
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"]
},
data: function data() {
return {
defaultClasses: defaultClasses,
selected: this.value
};
},
methods: {
updateValue: function updateValue(value) {
this.$emit('input', value);
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/forms/FormTextarea.vue?vue&type=script&lang=js&":
/*!*****************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/forms/FormTextarea.vue?vue&type=script&lang=js& ***!
@@ -516,6 +626,41 @@ var render = function() {
}
}),
_vm._v(" "),
_c(
"FormSelect",
{
attrs: {
label: _vm.__("Category"),
errors:
_vm.$page.props.errors
.category_id
},
model: {
value: _vm.form.category_id,
callback: function($$v) {
_vm.$set(
_vm.form,
"category_id",
$$v
)
},
expression: "form.category_id"
}
},
_vm._l(_vm.categories, function(
title,
id
) {
return _c("option", {
domProps: {
value: id,
textContent: _vm._s(title)
}
})
}),
0
),
_vm._v(" "),
_c("FormTextarea", {
attrs: {
rows: "10",
@@ -799,6 +944,89 @@ render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/forms/FormSelect.vue?vue&type=template&id=75d3772b&":
/*!*******************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/forms/FormSelect.vue?vue&type=template&id=75d3772b& ***!
\*******************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"FormGroup",
[
_c("Label", { attrs: { errors: _vm.errors, forId: _vm.id } }, [
_vm._v(_vm._s(_vm.label))
]),
_vm._v(" "),
_c(
"select",
{
directives: [
{
name: "model",
rawName: "v-model",
value: _vm.value,
expression: "value"
}
],
class: [
_vm.defaultClasses,
_vm.disabled || _vm.loading ? "opacity-50" : "",
_vm.loading ? "cursor-wait" : ""
],
attrs: {
disabled: _vm.loading || _vm.disabled,
id: _vm.id,
required: _vm.required,
placeholder: _vm.placeholder
},
on: {
input: function($event) {
return _vm.updateValue($event.target.value)
},
change: function($event) {
var $$selectedVal = Array.prototype.filter
.call($event.target.options, function(o) {
return o.selected
})
.map(function(o) {
var val = "_value" in o ? o._value : o.value
return val
})
_vm.value = $event.target.multiple
? $$selectedVal
: $$selectedVal[0]
}
}
},
[_vm._t("default")],
2
),
_vm._v(" "),
_vm.errors ? _c("ErrorText", [_vm._v(_vm._s(_vm.errors[0]))]) : _vm._e(),
_vm._v(" "),
_vm.helperText && !_vm.errors
? _c("HelperText", [_vm._v(_vm._s(_vm.helperText))])
: _vm._e()
],
1
)
}
var staticRenderFns = []
render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/forms/FormTextarea.vue?vue&type=template&id=c608beae&":
@@ -1378,6 +1606,75 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ "./resources/js/components/forms/FormSelect.vue":
/*!******************************************************!*\
!*** ./resources/js/components/forms/FormSelect.vue ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _FormSelect_vue_vue_type_template_id_75d3772b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FormSelect.vue?vue&type=template&id=75d3772b& */ "./resources/js/components/forms/FormSelect.vue?vue&type=template&id=75d3772b&");
/* harmony import */ var _FormSelect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FormSelect.vue?vue&type=script&lang=js& */ "./resources/js/components/forms/FormSelect.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_FormSelect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_FormSelect_vue_vue_type_template_id_75d3772b___WEBPACK_IMPORTED_MODULE_0__["render"],
_FormSelect_vue_vue_type_template_id_75d3772b___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "resources/js/components/forms/FormSelect.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./resources/js/components/forms/FormSelect.vue?vue&type=script&lang=js&":
/*!*******************************************************************************!*\
!*** ./resources/js/components/forms/FormSelect.vue?vue&type=script&lang=js& ***!
\*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormSelect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib??ref--4-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FormSelect.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/forms/FormSelect.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormSelect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./resources/js/components/forms/FormSelect.vue?vue&type=template&id=75d3772b&":
/*!*************************************************************************************!*\
!*** ./resources/js/components/forms/FormSelect.vue?vue&type=template&id=75d3772b& ***!
\*************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_FormSelect_vue_vue_type_template_id_75d3772b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./FormSelect.vue?vue&type=template&id=75d3772b& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/forms/FormSelect.vue?vue&type=template&id=75d3772b&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_FormSelect_vue_vue_type_template_id_75d3772b___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_FormSelect_vue_vue_type_template_id_75d3772b___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }),
/***/ "./resources/js/components/forms/FormTextarea.vue":

16
public/js/31.js vendored
View File

@@ -85,6 +85,8 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
//
//
@@ -445,6 +447,12 @@ var render = function() {
)
]),
_vm._v(" "),
_c("TableHeader", [
_vm._v(
_vm._s(_vm.__("Category"))
)
]),
_vm._v(" "),
_c("TableHeader")
],
1
@@ -470,6 +478,14 @@ var render = function() {
)
]),
_vm._v(" "),
_c("TableData", [
_vm._v(
_vm._s(
article.category.title
)
)
]),
_vm._v(" "),
_c(
"TableData",
[

9
public/js/40.js vendored
View File

@@ -159,6 +159,8 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
//
//
@@ -252,8 +254,11 @@ __webpack_require__.r(__webpack_exports__);
methods: {
useNotification: _hooks_notification__WEBPACK_IMPORTED_MODULE_18__["useNotification"],
confirmRequestFtpPassword: function confirmRequestFtpPassword() {
this.modalIsOpen = true;
return;
if (!this.$page.props.auth.user.requires_password_for_ftp) {
this.requestFtpPassword();
} else {
this.modalIsOpen = true;
}
},
closeModal: function closeModal() {
this.form.password = null;

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":"73f3008f1b3680de4be5","1":"036bc93ad1cffe03c96e","2":"d2a49802291d427ca7c8","3":"a0f4c2f49863abbfe7f1","4":"27416beeac7dd90b6c9f","5":"fbfbcf45610d060d921e","6":"73fc0264b5cc06f5bd55","7":"140acb8c38018bb7c822","8":"e835283042c657d72cfa","9":"e38040143ab4cb3b9fef","10":"e217ea28c7893da97d0e","11":"ef2595fcf3dd3fef8e64","12":"b96242d4ce01132cb92f","13":"3dcdef58d7cfcb427534","14":"f9a657f13956ab04d9f5","15":"6eeef8da00ef7dc93e05","16":"8a379b56eb36d181e9f4","17":"4acf5c704242d5b434e3","18":"a4d35f7f4ddaf31838f9","19":"4c910b7e5f24c14a47d6","20":"1ac55132a0e763c8a929","21":"b3fd152189bf57725034","22":"0c4b75b30658fdebebae","23":"9b8077a4e79e7701098a","24":"c5a95d9ed56549caacb2","25":"d9d2027a11ecbc558b64","26":"8212b5fc5fbcd654f57e","27":"03b296d674cf510f2802","28":"ea3017360011ab2e319d","29":"8f82331a7dcdfe7df5ae","30":"6ceb83a04ab07de58130","31":"c673fa515ca0cbb5f023","32":"299f56beafa07c3da8e7","33":"7052607a90bab1dab893","34":"fdfd02ddd707c1495b23","35":"d9e6bb79584e50e16702","36":"55e0a7e2d3ea918d162f","37":"cbb34ce64f8c91bfa86b","38":"09ad5dfae90c1f91f2c7","39":"4ea98fb105d4cf4b8916","40":"14b0b6d58e1ca940c22f","41":"6d82271a9b23a2787fc8","42":"fa3ac6dd9e5384468617","43":"d341cbb69c87bda6f394","44":"885a09c2df87f03455ee","45":"dfa44e4b18da0ec74e04","46":"2b2c1dcac830350de72a","47":"2a2aaa87648daa92e4dc","48":"4cb469bc5454b000cbc7","49":"5f6e24c654d05522e313","50":"41e3af00aadda2036038","51":"21a5ad16c9318416587d","52":"60dd1ddfb97b994a1018","53":"ad3dfac514f00d194887","54":"24e588ab18461e348783","55":"d8aec6ee1a5781b6af87","56":"99dee147a9adbb340507","57":"6edfa2c75fb31a1195b8","58":"fcc08fc7e48e734ab2a7","59":"b736d0ac4880f045f12a","60":"7cc85b6cb3f60be021b4","61":"b39bcd32e03c012a816f","62":"d61b419c5b861c001670","63":"37ac4d3b25619e38fd90","64":"4f44b9f12add6be38b47","65":"a9de2950510b1bbb3ea1","66":"ee681a4a50dba9230df9","67":"6b787068fde1e6464596","68":"9caad723841dddfa13ae","69":"7f006e10ce6a9ea40908","70":"5c262f47c883d5c74a8d","71":"87e8edd3eba0a29944d5","72":"e88d92ed4b2efbbf1e86","73":"3174bd6a722bab7cc6e6","74":"fb29103b00712180c4b7","75":"a05d60b1e784176f99bd","76":"6c85122b7fd55535796f","77":"ac563e59d325c5b4bdbc","78":"d61ce291b6fabaeafe0b","79":"069176fd73397f72a5c2","80":"5a8b8d6dfd61aeae151d"}[chunkId] + ""
/******/ return __webpack_require__.p + "js/" + ({}[chunkId]||chunkId) + ".js?id=" + {"0":"73f3008f1b3680de4be5","1":"036bc93ad1cffe03c96e","2":"d2a49802291d427ca7c8","3":"a0f4c2f49863abbfe7f1","4":"27416beeac7dd90b6c9f","5":"fbfbcf45610d060d921e","6":"73fc0264b5cc06f5bd55","7":"140acb8c38018bb7c822","8":"e835283042c657d72cfa","9":"e38040143ab4cb3b9fef","10":"e217ea28c7893da97d0e","11":"ef2595fcf3dd3fef8e64","12":"b96242d4ce01132cb92f","13":"cab89b14cd45c289a9fc","14":"11d29fcbe86173ca56f9","15":"6eeef8da00ef7dc93e05","16":"8a379b56eb36d181e9f4","17":"4acf5c704242d5b434e3","18":"8d97cc8de8beda80e71b","19":"4c910b7e5f24c14a47d6","20":"e875424c3f416ebb5868","21":"ffeb542246f96fb44e86","22":"0c4b75b30658fdebebae","23":"9b8077a4e79e7701098a","24":"c5a95d9ed56549caacb2","25":"d9d2027a11ecbc558b64","26":"8212b5fc5fbcd654f57e","27":"03b296d674cf510f2802","28":"ea3017360011ab2e319d","29":"8f82331a7dcdfe7df5ae","30":"6ceb83a04ab07de58130","31":"b1bf2875f660b6a7bfb2","32":"299f56beafa07c3da8e7","33":"7052607a90bab1dab893","34":"fdfd02ddd707c1495b23","35":"d9e6bb79584e50e16702","36":"55e0a7e2d3ea918d162f","37":"cbb34ce64f8c91bfa86b","38":"09ad5dfae90c1f91f2c7","39":"4ea98fb105d4cf4b8916","40":"2cc9e6308f173afc956e","41":"6d82271a9b23a2787fc8","42":"fa3ac6dd9e5384468617","43":"d341cbb69c87bda6f394","44":"885a09c2df87f03455ee","45":"dfa44e4b18da0ec74e04","46":"2b2c1dcac830350de72a","47":"2a2aaa87648daa92e4dc","48":"4cb469bc5454b000cbc7","49":"5f6e24c654d05522e313","50":"41e3af00aadda2036038","51":"21a5ad16c9318416587d","52":"60dd1ddfb97b994a1018","53":"ad3dfac514f00d194887","54":"24e588ab18461e348783","55":"d8aec6ee1a5781b6af87","56":"99dee147a9adbb340507","57":"6edfa2c75fb31a1195b8","58":"fcc08fc7e48e734ab2a7","59":"b736d0ac4880f045f12a","60":"7cc85b6cb3f60be021b4","61":"b39bcd32e03c012a816f","62":"d61b419c5b861c001670","63":"37ac4d3b25619e38fd90","64":"4f44b9f12add6be38b47","65":"a9de2950510b1bbb3ea1","66":"ee681a4a50dba9230df9","67":"6b787068fde1e6464596","68":"9caad723841dddfa13ae","69":"7f006e10ce6a9ea40908","70":"5c262f47c883d5c74a8d","71":"87e8edd3eba0a29944d5","72":"e88d92ed4b2efbbf1e86","73":"3174bd6a722bab7cc6e6","74":"fb29103b00712180c4b7","75":"a05d60b1e784176f99bd","76":"6c85122b7fd55535796f","77":"ac563e59d325c5b4bdbc","78":"d61ce291b6fabaeafe0b","79":"069176fd73397f72a5c2","80":"5a8b8d6dfd61aeae151d"}[chunkId] + ""
/******/ }
/******/
/******/ // The require function

View File

@@ -22,7 +22,11 @@
<form class="space-y-4" @submit.prevent="submit">
<FormInput :label="__('Title')" :errors="$page.props.errors.title"
v-model="form.title"/>
<FormTextarea rows="10" :label="__('Content')" :errors="$page.props.errors.content" v-model="form.content" />
<FormSelect :label="__('Category')" :errors="$page.props.errors.category_id" v-model="form.category_id">
<option v-for="(title, id) in categories" :value="id" v-text="title"></option>
</FormSelect>
<FormTextarea rows="10" :label="__('Content')"
:errors="$page.props.errors.content" v-model="form.content"/>
<FormActions>
<Button>{{ __('Save changes') }}</Button>
@@ -55,6 +59,7 @@ import MainLayout from '@/Layouts/MainLayout'
import SettingsLayout from '@/components/layouts/SettingsLayout'
import SettingsSegment from '@/components/SettingsSegment'
import FormInput from '@/components/forms/FormInput'
import FormSelect from '@/components/forms/FormSelect'
import FormTextarea from '@/components/forms/FormTextarea'
import Form from '@/components/Form'
import FormActions from '@/components/FormActions'
@@ -89,6 +94,11 @@ export default {
Form,
FormActions,
Tabs,
FormSelect,
},
props: {
categories: Object
},
data() {
@@ -98,6 +108,7 @@ export default {
form: {
title: null,
description: null,
category_id: null,
},
}
},

View File

@@ -22,6 +22,9 @@
<form class="space-y-4" @submit.prevent="submit">
<FormInput :label="__('Title')" :errors="$page.props.errors.title"
v-model="form.title"/>
<FormSelect :label="__('Category')" :errors="$page.props.errors.category_id" v-model="form.category_id">
<option v-for="(title, id) in categories" :value="id" v-text="title"></option>
</FormSelect>
<FormTextarea rows="10" :label="__('Content')" :errors="$page.props.errors.content"
v-model="form.content"/>
@@ -56,6 +59,7 @@ import MainLayout from '@/Layouts/MainLayout'
import SettingsLayout from '@/components/layouts/SettingsLayout'
import SettingsSegment from '@/components/SettingsSegment'
import FormInput from '@/components/forms/FormInput'
import FormSelect from '@/components/forms/FormSelect'
import FormTextarea from '@/components/forms/FormTextarea'
import Form from '@/components/Form'
import FormActions from '@/components/FormActions'
@@ -88,12 +92,14 @@ export default {
SettingsLayout,
SettingsSegment,
Form,
FormSelect,
FormActions,
Tabs,
},
props: {
article: Object
article: Object,
categories: Object,
},
data() {
@@ -103,6 +109,7 @@ export default {
form: {
title: this.article.title,
content: this.article.content,
category_id: this.article.documentation_category_id,
},
}
},

View File

@@ -23,6 +23,7 @@
<TableHead>
<TableRow>
<TableHeader>{{ __('Title') }}</TableHeader>
<TableHeader>{{ __('Category') }}</TableHeader>
<TableHeader></TableHeader>
</TableRow>
</TableHead>
@@ -31,6 +32,7 @@
<TableData>
{{ article.title }}
</TableData>
<TableData>{{ article.category.title }}</TableData>
<TableData>
<inertia-link :href="route('admin.documentation.articles.edit', article.id)"
class="text-primary font-medium">

View File

@@ -206,7 +206,7 @@ export default {
props: {
package: Object,
providers: Object,
providers: [Array, Object],
syncedProviders: Array,
},

View File

@@ -37,6 +37,14 @@
<option v-for="language in languages" :value="language" v-text="language"></option>
</FormSelect>
<FormTextarea :label="__('Blocked')" :errors="$page.props.errors.blocked" rows="2" v-model="form.blocked" />
<div>
<input id="isolate_per_site_per_user" class="form-checkbox" type="checkbox"
v-model="form.requires_password_for_ftp">
<label for="isolate_per_site_per_user" class="ml-2 text-sm">{{ __('Require password to show FTP password') }}</label>
<p class="text-small mt-1 text-medium-emphasis">
{{ __('Disabling this will allow this user to get the FTP password right away.') }}
</p>
</div>
<FormActions>
<Button>{{ __('Save changes') }}</Button>
@@ -126,6 +134,7 @@
notes: null,
language: 'en',
blocked: null,
requires_password_for_ftp: null,
},
}
},

View File

@@ -36,6 +36,15 @@
</FormSelect>
<FormTextarea :label="__('Blocked')" :errors="$page.props.errors.blocked" rows="2" v-model="form.blocked" />
<div>
<input id="isolate_per_site_per_user" class="form-checkbox" type="checkbox"
v-model="form.requires_password_for_ftp">
<label for="isolate_per_site_per_user" class="ml-2 text-sm">{{ __('Require password to show FTP password') }}</label>
<p class="text-small mt-1 text-medium-emphasis">
{{ __('Disabling this will allow this user to get the FTP password right away.') }}
</p>
</div>
<FormActions>
<Button>{{ __('Save changes') }}</Button>
<Button variant="danger" type="button" @click="confirmDelete">{{ __('Delete') }}</Button>
@@ -119,6 +128,7 @@
notes: this.user.notes,
language: this.user.language,
blocked: this.user.blocked,
requires_password_for_ftp: this.user.requires_password_for_ftp,
},
}
},

View File

@@ -50,20 +50,21 @@
<TableRow>
<TableHeader>{{ __('FTP host') }}</TableHeader>
<TableData :border="false">
<copy :label="`${ip_address}`" :value="ip_address" />
<copy :label="`${ip_address}`" :value="ip_address"/>
</TableData>
</TableRow>
<TableRow>
<TableHeader>{{ __('FTP user') }}</TableHeader>
<TableData :border="false">
<copy :label="`${system_user.user_name}`" :value="system_user.user_name" />
<copy :label="`${system_user.user_name}`"
:value="system_user.user_name"/>
</TableData>
</TableRow>
<TableRow>
<TableHeader>{{ __('FTP password') }}</TableHeader>
<TableData :border="false">
<div v-if="ftp_password" v-text="ftp_password">
<copy :label="`${ftp_password}`" :value="ftp_password" />
<copy :label="`${ftp_password}`" :value="ftp_password"/>
</div>
<Button variant="secondary" @click="confirmRequestFtpPassword"
@@ -101,7 +102,8 @@
</div>
<div class="grid grid-cols-2 gap-4">
<div class="col-span-2 md:col-span-1">
<FormInput label="A" :errors="$page.props.errors.domain" :value="`www`"/>
<FormInput label="A" :errors="$page.props.errors.domain"
:value="`www`"/>
</div>
<div class="col-span-2 md:col-span-1">
<FormInput label="IP" allow-copy :errors="$page.props.errors.domain"
@@ -120,149 +122,151 @@
</template>
<script>
import TopBar from './components/TopBar'
import Container from '@/components/Container'
import Content from '@/components/Content'
import Page from '@/components/Page'
import PageHeader from '@/components/PageHeader'
import PageHeaderTitle from '@/components/PageHeaderTitle'
import PageBody from '@/components/PageBody'
import Button from '@/components/Button'
import List from '@/components/List'
import ListItem from '@/components/ListItem'
import StatusBubble from '@/components/StatusBubble'
import NotificationBadge from '@/components/NotificationBadge'
import MainLayout from '@/Layouts/MainLayout'
import SettingsLayout from '@/components/layouts/SettingsLayout'
import SettingsSegment from '@/components/SettingsSegment'
import FormInput from '@/components/forms/FormInput'
import Form from '@/components/Form'
import FormActions from '@/components/FormActions'
import {useNotification} from '@/hooks/notification'
import Tabs from './Tabs'
import Table from '@/components/Table'
import TableHead from '@/components/TableHead'
import TableHeader from '@/components/TableHeader'
import TableRow from '@/components/TableRow'
import TableBody from '@/components/TableBody'
import TableData from '@/components/TableData'
import Modal from '@/components/Modal'
import ModalContainer from '@/components/ModalContainer'
import Copy from '@/components/Copy'
import TopBar from './components/TopBar'
import Container from '@/components/Container'
import Content from '@/components/Content'
import Page from '@/components/Page'
import PageHeader from '@/components/PageHeader'
import PageHeaderTitle from '@/components/PageHeaderTitle'
import PageBody from '@/components/PageBody'
import Button from '@/components/Button'
import List from '@/components/List'
import ListItem from '@/components/ListItem'
import StatusBubble from '@/components/StatusBubble'
import NotificationBadge from '@/components/NotificationBadge'
import MainLayout from '@/Layouts/MainLayout'
import SettingsLayout from '@/components/layouts/SettingsLayout'
import SettingsSegment from '@/components/SettingsSegment'
import FormInput from '@/components/forms/FormInput'
import Form from '@/components/Form'
import FormActions from '@/components/FormActions'
import {useNotification} from '@/hooks/notification'
import Tabs from './Tabs'
import Table from '@/components/Table'
import TableHead from '@/components/TableHead'
import TableHeader from '@/components/TableHeader'
import TableRow from '@/components/TableRow'
import TableBody from '@/components/TableBody'
import TableData from '@/components/TableData'
import Modal from '@/components/Modal'
import ModalContainer from '@/components/ModalContainer'
import Copy from '@/components/Copy'
export default {
metaInfo() {
return {
title: this.site.domain,
}
},
export default {
metaInfo() {
return {
title: this.site.domain,
}
},
layout: MainLayout,
layout: MainLayout,
components: {
TopBar,
Container,
Content,
Page,
PageHeader,
PageHeaderTitle,
PageBody,
Button,
List,
ListItem,
StatusBubble,
NotificationBadge,
FormInput,
SettingsLayout,
SettingsSegment,
Form,
FormActions,
Tabs,
Table,
TableHead,
TableHeader,
TableRow,
TableBody,
TableData,
Modal,
ModalContainer,
Copy
},
components: {
TopBar,
Container,
Content,
Page,
PageHeader,
PageHeaderTitle,
PageBody,
Button,
List,
ListItem,
StatusBubble,
NotificationBadge,
FormInput,
SettingsLayout,
SettingsSegment,
Form,
FormActions,
Tabs,
Table,
TableHead,
TableHeader,
TableRow,
TableBody,
TableData,
Modal,
ModalContainer,
Copy
},
data() {
return {
sending: false,
data() {
return {
sending: false,
modalIsOpen: false,
modalIsOpen: false,
ftp_password: null,
ftp_password: null,
form : {
password : null
form: {
password: null
},
breadcrumbs: [
{
title: this.$page.props.settings.name,
to: '/',
},
{
title: this.__('Sites'),
to: this.route('sites.index'),
},
{
title: this.site.domain,
to: this.route('sites.show', this.site.id),
},
],
}
},
breadcrumbs: [
{
title: this.$page.props.settings.name,
to: '/',
},
{
title: this.__('Sites'),
to: this.route('sites.index'),
},
{
title: this.site.domain,
to: this.route('sites.show', this.site.id),
},
],
props: {
site: Object,
ip_address: String,
system_user: Object,
},
methods: {
useNotification,
confirmRequestFtpPassword() {
if (!this.$page.props.auth.user.requires_password_for_ftp) {
this.requestFtpPassword();
} else {
this.modalIsOpen = true;
}
},
props: {
site: Object,
ip_address: String,
system_user: Object,
closeModal() {
this.form.password = null;
this.modalIsOpen = false;
this.$page.props.errors = [];
},
methods: {
useNotification,
requestFtpPassword() {
this.$page.props.errors = [];
confirmRequestFtpPassword() {
this.modalIsOpen = true;
window.axios.post(this.route('sites.request-ftp-password', this.site.id).url(), this.form)
.then(response => {
if (!response.data.ftp_password) {
this.useNotification({
variant: 'danger',
title: this.__('FTP password'),
message: this.__('Unable to retrieve FTP password'),
})
return;
},
return;
}
closeModal() {
this.form.password = null;
this.modalIsOpen = false;
this.$page.props.errors = [];
},
this.form.password = null;
this.modalIsOpen = false;
requestFtpPassword() {
this.$page.props.errors = [];
window.axios.post(this.route('sites.request-ftp-password', this.site.id).url(), this.form)
.then(response => {
if (!response.data.ftp_password) {
this.useNotification({
variant: 'danger',
title: this.__('FTP password'),
message: this.__('Unable to retrieve FTP password'),
})
return;
}
this.form.password = null;
this.modalIsOpen = false;
this.ftp_password = response.data.ftp_password;
})
this.ftp_password = response.data.ftp_password;
})
.catch(errors => {
this.$page.props.errors = errors.response.data.errors;
})
}
}
}
}
</script>

View File

@@ -14,10 +14,6 @@ echo "Updating database.."
php artisan migrate --force
echo "Restarting workers.."
php artisan horizon:terminate
echo "Clearing cache.."
php artisan cache:clear
@@ -26,4 +22,8 @@ echo "Refreshing routes.."
php artisan route:cache
echo "Restarting workers.."
php artisan horizon:terminate
echo "All done!"