diff --git a/client/components/admin/admin-auth.vue b/client/components/admin/admin-auth.vue
index 9a1cf93d..f740dd8b 100644
--- a/client/components/admin/admin-auth.vue
+++ b/client/components/admin/admin-auth.vue
@@ -75,7 +75,7 @@
v-card-chin
v-btn(color='primary', @click='save')
v-icon(left) chevron_right
- span Save
+ span Apply Configuration
v-spacer
v-btn(icon, @click='refresh')
v-icon.grey--text refresh
@@ -126,7 +126,7 @@ export default {
}
})
this.$store.commit('showNotification', {
- message: 'Strategies saved successfully.',
+ message: 'Authentication configuration saved successfully.',
style: 'success',
icon: 'check'
})
diff --git a/client/components/admin/admin-storage.vue b/client/components/admin/admin-storage.vue
index f01a9e08..211eed9e 100644
--- a/client/components/admin/admin-storage.vue
+++ b/client/components/admin/admin-storage.vue
@@ -1,55 +1,133 @@
- v-card(flat)
- v-card(flat, :color='$vuetify.dark ? "grey darken-4" : "grey lighten-5"').pa-3.pt-4
+ v-card(tile, :color='$vuetify.dark ? "grey darken-4" : "grey lighten-5"')
+ .pa-3.pt-4
.headline.primary--text Storage
.subheading.grey--text Set backup and sync targets for your content
v-tabs(:color='$vuetify.dark ? "primary" : "grey lighten-4"', fixed-tabs, :slider-color='$vuetify.dark ? "white" : "primary"', show-arrows)
v-tab(key='settings'): v-icon settings
- v-tab(key='local') Local FS
- v-tab(key='git') Git
- v-tab(key='s3') Amazon S3
- v-tab(key='azure') Azure Blob Storage
- v-tab(key='digitalocean') DigitalOcean Spaces
- v-tab(key='dropbox') Dropbox
- v-tab(key='gdrive') Google Drive
- v-tab(key='onedrive') OneDrive
- v-tab(key='scp') SCP (SSH)
+ v-tab(v-for='tgt in activeTargets', :key='tgt.key') {{ tgt.title }}
- v-tab-item(key='settings')
- v-card.pa-3
+ v-tab-item(key='settings', :transition='false', :reverse-transition='false')
+ v-card.pa-3(flat, tile)
+ .body-2.grey--text.text--darken-1 Select which storage targets to enable:
+ .caption.grey--text.pb-2 Some storage targets require additional configuration in their dedicated tab (when selected).
v-form
v-checkbox(
- v-for='(target, n) in targets',
- v-model='auths',
- :key='n',
- :label='target.text',
- :value='target.value',
- color='primary',
+ v-for='tgt in targets'
+ v-model='tgt.isEnabled'
+ :key='tgt.key'
+ :label='tgt.title'
+ color='primary'
+ :disabled='tgt.key === `local`'
hide-details
)
+
+ v-tab-item(v-for='(tgt, n) in activeTargets', :key='tgt.key', :transition='false', :reverse-transition='false')
+ v-card.pa-3(flat, tile)
+ v-form
+ v-subheader.pl-0 Target Configuration
+ .body-1.ml-3(v-if='!tgt.config || tgt.config.length < 1') This storage target has no configuration options you can modify.
+ v-text-field(
+ v-else
+ v-for='cfg in tgt.config'
+ :key='cfg.key'
+ :label='cfg.key'
+ v-model='cfg.value'
+ prepend-icon='settings_applications'
+ )
v-divider
- v-btn(color='primary')
- v-icon(left) chevron_right
- | Set Backup Targets
+ v-subheader.pl-0 Sync Direction
+ .body-1.ml-3 Choose how content synchronization is handled for this storage target.
+ .pr-3.pt-3
+ v-radio-group.ml-3.py-0(v-model='tgt.mode')
+ v-radio(
+ label='Bi-directional'
+ color='primary'
+ value='sync'
+ )
+ v-radio(
+ label='Push to target'
+ color='primary'
+ value='push'
+ )
+ v-radio(
+ label='Pull from target'
+ color='primary'
+ value='pull'
+ )
+ .body-1.ml-3
+ strong Bi-directional
+ .pb-3 In bi-directional mode, content is first pulled from the storage target. Any newer content overwrites local content. New content since last sync is then pushed to the storage target, overwriting any content on target if present.
+ strong Push to target
+ .pb-3 Content is always pushed to the storage target, overwriting any existing content. This is the default and safest choice for backup scenarios.
+ strong Pull from target
+ .pb-3 Content is always pulled from the storage target, overwriting any local content which already exists. This choice is usually reserved for single-use content import. Caution with this option as any local content will always be overwritten!
+
+ v-card-chin
+ v-btn(color='primary', @click='save')
+ v-icon(left) chevron_right
+ span Apply Configuration
+ v-spacer
+ v-btn(icon, @click='refresh')
+ v-icon.grey--text refresh