diff options
| author | Zephyrrus <[email protected]> | 2021-01-10 02:04:35 +0200 |
|---|---|---|
| committer | Zephyrrus <[email protected]> | 2021-01-10 02:04:35 +0200 |
| commit | 46ef63fb9f3c2688118a9d1511293128cfdfe4c9 (patch) | |
| tree | 5fc64b84464938f05470aeccd6066ac33922f590 /src/site/pages | |
| parent | feat: create settings schema (used for rendering and validating) (diff) | |
| download | host.fuwn.me-46ef63fb9f3c2688118a9d1511293128cfdfe4c9.tar.xz host.fuwn.me-46ef63fb9f3c2688118a9d1511293128cfdfe4c9.zip | |
feat: add dynamic settings page rendering based on the Joi object
Diffstat (limited to 'src/site/pages')
| -rw-r--r-- | src/site/pages/dashboard/admin/settings.vue | 117 |
1 files changed, 7 insertions, 110 deletions
diff --git a/src/site/pages/dashboard/admin/settings.vue b/src/site/pages/dashboard/admin/settings.vue index 0a43dcd..bac9683 100644 --- a/src/site/pages/dashboard/admin/settings.vue +++ b/src/site/pages/dashboard/admin/settings.vue @@ -11,114 +11,7 @@ </h2> <hr> - <b-field - label="Service name" - message="Please enter the name which this service is gonna be identified as" - horizontal> - <b-input - v-model="settings.serviceName" - class="chibisafe-input" - expanded /> - </b-field> - - <b-field - label="Upload folder" - message="Where to store the files relative to the working directory" - horizontal> - <b-input - v-model="settings.uploadFolder" - class="chibisafe-input" - expanded /> - </b-field> - - <b-field - label="Links per album" - message="Maximum links allowed per album" - horizontal> - <b-input - v-model="settings.linksPerAlbum" - class="chibisafe-input" - type="number" - expanded /> - </b-field> - - <b-field - label="Max upload size" - message="Maximum allowed file size in MB" - horizontal> - <b-input - v-model="settings.maxUploadSize" - class="chibisafe-input" - expanded /> - </b-field> - - <b-field - label="Filename length" - message="How many characters long should the generated filenames be" - horizontal> - <b-input - v-model="settings.filenameLength" - class="chibisafe-input" - expanded /> - </b-field> - - <b-field - label="Album link length" - message="How many characters a link for an album should have" - horizontal> - <b-input - v-model="settings.albumLinkLength" - class="chibisafe-input" - expanded /> - </b-field> - - <b-field - label="Generate thumbnails" - message="Generate thumbnails when uploading a file if possible" - horizontal> - <b-switch - v-model="settings.generateThumbnails" - :true-value="true" - :false-value="false" /> - </b-field> - - <b-field - label="Generate zips" - message="Allow generating zips to download entire albums" - horizontal> - <b-switch - v-model="settings.generateZips" - :true-value="true" - :false-value="false" /> - </b-field> - - <b-field - label="Public mode" - message="Enable anonymous uploades" - horizontal> - <b-switch - v-model="settings.publicMode" - :true-value="true" - :false-value="false" /> - </b-field> - - <b-field - label="Enable creating account" - message="Enable creating new accounts in the platform" - horizontal> - <b-switch - v-model="settings.enableAccounts" - :true-value="true" - :false-value="false" /> - </b-field> - - <div class="mb2 mt2 text-center"> - <button - class="button is-primary" - @click="promptRestartService"> - Save and restart service - </button> - </div> + <JoiObject :keys="settingsSchema.keys" :values="{}" /> </div> </div> </div> @@ -128,21 +21,25 @@ <script> import { mapState } from 'vuex'; import Sidebar from '~/components/sidebar/Sidebar.vue'; +import JoiObject from '~/components/settings/JoiObject.vue'; export default { components: { - Sidebar + Sidebar, + JoiObject }, middleware: ['auth', 'admin', ({ store }) => { try { store.dispatch('admin/fetchSettings'); + store.dispatch('admin/getSettingsSchema'); } catch (e) { // eslint-disable-next-line no-console console.error(e); } }], computed: mapState({ - settings: state => state.admin.settings + settings: state => state.admin.settings, + settingsSchema: state => state.admin.settingsSchema }), methods: { promptRestartService() { |