Răsfoiți Sursa

feat: admin utilities + telemetry UI, criterias-item component

NGPixel 7 ani în urmă
părinte
comite
a88f8e6b9c

+ 0 - 9
client/components/admin/admin-general.vue

@@ -30,15 +30,6 @@
                   v-toolbar-title
                     .subheading Site Branding
                 v-card-text ---
-              v-card.mt-3
-                v-toolbar(color='primary', dark, dense, flat)
-                  v-toolbar-title
-                    .subheading Maintenance Mode
-                v-card-text
-                  .body-1 Maintenance mode restrict access to the site to administrators only, regarless of current permissions.
-                  v-btn.mt-3(color='orange darken-2', dark)
-                    icon-home-alert.mr-2(fillColor='#FFFFFF')
-                    | Turn On Maintenance Mode
 
 </template>
 

+ 93 - 4
client/components/admin/admin-utilities.vue

@@ -1,15 +1,104 @@
 <template lang='pug'>
-  v-container(fluid, fill-height)
-    v-layout(row wrap)
-      v-flex(xs12)
+  v-card(flat)
+    v-card(color='grey lighten-5')
+      .pa-3.pt-4
         .headline.primary--text Utilities
         .subheading.grey--text Maintenance and troubleshooting tools
+    v-tabs(v-model='tab', color='grey lighten-4', fixed-tabs, slider-color='primary', show-arrows)
+      v-tab(key='tools') Tools
+      v-tab(key='telemetry') Telemetry
+      v-tab(key='telemetry') Support
+
+      v-tab-item(key='tools', :transition='false', :reverse-transition='false')
+        v-container.grey.lighten-5(fluid, grid-list-lg)
+          v-layout(row, wrap)
+            v-flex(xs12, sm6)
+              v-card
+                v-toolbar(color='primary', dark, dense, flat)
+                  v-toolbar-title
+                    .subheading Authentication
+                v-subheader Flush User Sessions
+                v-card-text.pt-0
+                  .body-1 This will cause all users to be logged out. You will need to log back in after the operation.
+                  v-btn(depressed).ml-0
+                    v-icon(left, color='grey') build
+                    span Proceed
+                v-subheader Reset Guest User
+                v-card-text.pt-0
+                  .body-1 This will reset the guest user to its default parameters and permissions.
+                  v-btn(depressed).ml-0
+                    v-icon(left, color='grey') build
+                    span Proceed
+            v-flex(xs12, sm6)
+              v-card
+                v-toolbar(color='primary', dark, dense, flat)
+                  v-toolbar-title
+                    .subheading Maintenance Mode
+                v-card-text
+                  .body-1 Maintenance mode restrict access to the site to administrators only, regarless of current permissions.
+                  v-btn.mt-3(color='orange darken-2', dark)
+                    icon-home-alert.mr-2(fillColor='#FFFFFF')
+                    | Turn On Maintenance Mode
+
+      v-tab-item(key='telemetry', :transition='false', :reverse-transition='false')
+        v-card.pa-3
+          v-form
+            v-subheader What is telemetry?
+            .body-1.pl-3 Telemetry allows the developers of Wiki.js to improve the software by collecting basic anonymized data about its usage and the host info. #[br] This is entirely optional and #[strong absolutely no] private data (such as content or personal data) is collected.
+            .body-1.pt-3.pl-3 For maximum privacy, a random client ID is generated every time Wiki.js is started. This ID is used to group requests together while keeping complete anonymity.
+            v-divider
+            v-subheader What is collected?
+            .body-1.pl-3 When telemetry is enabled, only the following data is transmitted:
+            v-list(dense)
+              v-list-tile
+                v-list-tile-avatar: v-icon info_outline
+                v-list-tile-content: v-list-tile-title.caption Version of Wiki.js installed
+              v-list-tile
+                v-list-tile-avatar: v-icon info_outline
+                v-list-tile-content: v-list-tile-title.caption Basic OS information (version, CPU cores, RAM available)
+              v-list-tile
+                v-list-tile-avatar: v-icon info_outline
+                v-list-tile-content: v-list-tile-title.caption Crash debug data
+              v-list-tile
+                v-list-tile-avatar: v-icon info_outline
+                v-list-tile-content: v-list-tile-title.caption Setup analytics (step reached)
+            .body-2.pl-3
+            v-divider
+            v-subheader Settings
+            .pl-3
+              v-switch(
+                v-model='telemetry',
+                label='Enable Telemetry',
+                :value='true',
+                color='primary',
+                hint='Allow Wiki.js to transmit telemetry data.',
+                persistent-hint
+              )
+              .subheading.mt-3.grey--text.text--darken-1 Client ID
+              .body-1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+            v-divider
+            v-card-actions
+              v-btn(color='primary')
+                v-icon(left) chevron_right
+                | Save Changes
+              v-spacer
+              v-btn(outline, color='grey')
+                v-icon(left) autorenew
+                span Reset Client ID
 </template>
 
 <script>
 export default {
   data() {
-    return {}
+    return {
+      tab: '0',
+      telemetry: true
+    }
+  },
+  methods: {
+    resetClientID() {
+
+    }
   }
 }
 </script>

+ 9 - 0
client/components/common/criterias-item.vue

@@ -21,12 +21,18 @@
     v-select(v-if='item.type === "country"', solo, :items='countries', v-model='item.value', placeholder='Countries...', multiple, item-text='name', item-value='code')
     v-text-field(v-else-if='item.type === "path"', solo, v-model='item.value', label='Path (e.g. /section)')
     v-text-field(v-else-if='item.type === "date"', solo, @click.native.stop='dateActivator = true', v-model='item.value', label='YYYY-MM-DD', readonly)
+    v-text-field(v-else-if='item.type === "time"', solo, @click.native.stop='timeActivator = true', v-model='item.value', label='HH:MM', readonly)
+    v-select(v-else-if='item.type === "group"', solo, :items='groups', v-model='item.value', placeholder='Group...', item-text='name', item-value='id')
     v-text-field.blue-grey.lighten-4(v-else, solo, disabled)
 
     v-dialog(lazy, v-model='dateActivator', width='290px', ref='dateDialog')
       v-date-picker(v-model='item.value', scrollable, color='primary')
         v-btn(flat, color='primary' @click='$refs.dateDialog.save(date)', block) ok
 
+    v-dialog(lazy, v-model='timeActivator', width='300px', ref='timeDialog')
+      v-time-picker(v-model='item.value', scrollable, color='primary')
+        v-btn(flat, color='primary' @click='$refs.timeDialog.save(time)', block) ok
+
     v-btn(icon, @click='remove'): v-icon(color='blue-grey') clear
 </template>
 
@@ -60,7 +66,10 @@ export default {
       },
       dateActivator: false,
       dateDialog: false,
+      timeActivator: false,
+      timeDialog: false,
       countries: [],
+      groups: [],
       criteriaTypes: [
         { text: 'Path', value: 'path', icon: 'space_bar', color: 'blue', description: 'Match the path of the document being viewed.' },
         { text: 'Date', value: 'date', icon: 'date_range', color: 'blue', description: 'Match the current calendar day.' },