working at i18n @admin page

This commit is contained in:
lesion
2022-11-29 14:40:19 +01:00
parent c46a4ee17c
commit 5baff1adb1
18 changed files with 799 additions and 767 deletions

View File

@@ -22,6 +22,7 @@ v-container
v-data-table(
v-if='announcements.length'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
:header-props='{ sortIcon: mdiChevronDown }'
:headers='headers'
:items='announcements')
template(v-slot:item.actions='{ item }')
@@ -35,21 +36,21 @@ import { mapActions } from 'vuex'
import cloneDeep from 'lodash/cloneDeep'
import Editor from '../Editor'
import Announcement from '../Announcement'
import { mdiPlus, mdiChevronRight, mdiChevronLeft } from '@mdi/js'
import { mdiPlus, mdiChevronRight, mdiChevronLeft, mdiChevronDown } from '@mdi/js'
export default {
components: { Editor, Announcement },
data() {
return {
mdiPlus, mdiChevronRight, mdiChevronLeft,
mdiPlus, mdiChevronRight, mdiChevronLeft, mdiChevronDown,
valid: false,
dialog: false,
editing: false,
announcements: [],
loading: false,
headers: [
{ value: 'title', text: 'Title' },
{ value: 'actions', text: 'Actions', align: 'right' }
{ value: 'title', text: this.$t('common.title') },
{ value: 'actions', text: this.$t('common.actions'), align: 'right' }
],
announcement: { title: '', announcement: '' }
}

View File

@@ -4,7 +4,7 @@ v-container
v-spacer
v-text-field(v-model='search'
:append-icon='mdiMagnify' outlined rounded
label='Search'
:label="$t('common.search')"
single-line hide-details)
v-card-subtitle(v-html="$t('admin.collections_description')")
@@ -75,6 +75,7 @@ v-container
:headers='filterHeaders'
:items='filters'
:hide-default-footer='filters.length < 5'
:header-props='{ sortIcon: mdiChevronDown }'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }')
template(v-slot:item.actions='{ item }')
v-btn(@click='removeFilter(item)' color='error' icon)
@@ -94,6 +95,7 @@ v-container
:headers='collectionHeaders'
:items='collections'
:hide-default-footer='collections.length < 5'
:header-props='{ sortIcon: mdiChevronDown }'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
:search='search')
template(v-slot:item.filters='{ item }')
@@ -108,12 +110,12 @@ v-container
<script>
import get from 'lodash/get'
import debounce from 'lodash/debounce'
import { mdiPencil, mdiChevronLeft, mdiChevronRight, mdiMagnify, mdiPlus, mdiTagMultiple, mdiMapMarker, mdiDeleteForever, mdiCloseCircle } from '@mdi/js'
import { mdiPencil, mdiChevronLeft, mdiChevronRight, mdiMagnify, mdiPlus, mdiTagMultiple, mdiMapMarker, mdiDeleteForever, mdiCloseCircle, mdiChevronDown } from '@mdi/js'
export default {
data() {
return {
mdiPencil, mdiChevronRight, mdiChevronLeft, mdiMagnify, mdiPlus, mdiTagMultiple, mdiMapMarker, mdiDeleteForever, mdiCloseCircle,
mdiPencil, mdiChevronRight, mdiChevronLeft, mdiMagnify, mdiPlus, mdiTagMultiple, mdiMapMarker, mdiDeleteForever, mdiCloseCircle, mdiChevronDown,
loading: false,
dialog: false,
valid: false,
@@ -128,14 +130,14 @@ export default {
tagName: '',
placeName: '',
collectionHeaders: [
{ value: 'name', text: 'Name' },
{ value: 'filters', text: 'Filters' },
{ value: 'actions', text: 'Actions', align: 'right' }
{ value: 'name', text: this.$t('common.name') },
{ value: 'filters', text: this.$t('common.filter') },
{ value: 'actions', text: this.$t('common.actions'), align: 'right' }
],
filterHeaders: [
{ value: 'tags', text: 'Tags' },
{ value: 'places', text: 'Places' },
{ value: 'actions', text: 'Actions', align: 'right' }
{ value: 'tags', text: this.$t('common.tags') },
{ value: 'places', text: this.$t('common.places') },
{ value: 'actions', text: this.$t('common.actions'), align: 'right' }
]
}
},

View File

@@ -5,6 +5,7 @@ v-container
v-card-text
v-data-table(
:hide-default-footer='unconfirmedEvents.length<10'
:header-props='{ sortIcon: mdiChevronDown }'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
:items='unconfirmedEvents'
:headers='headers')
@@ -17,7 +18,7 @@ v-container
color='error') {{$t('common.delete')}}
</template>
<script>
import { mdiChevronLeft, mdiChevronRight } from '@mdi/js'
import { mdiChevronLeft, mdiChevronRight, mdiChevronDown } from '@mdi/js'
export default {
props: {
@@ -25,15 +26,15 @@ export default {
},
data () {
return {
mdiChevronLeft, mdiChevronRight,
mdiChevronLeft, mdiChevronRight, mdiChevronDown,
valid: false,
dialog: false,
editing: false,
headers: [
{ value: 'title', text: 'Title' },
{ value: 'place.name', text: 'Place' },
{ value: 'when', text: 'When' },
{ value: 'actions', text: 'Actions', align: 'right' }
{ value: 'title', text: this.$t('common.title') },
{ value: 'place.name', text: this.$t('common.place') },
{ value: 'when', text: this.$t('common.when') },
{ value: 'actions', text: this.$t('common.actions'), align: 'right' }
]
}
},

View File

@@ -68,6 +68,7 @@ v-container
v-if='settings.trusted_instances.length'
:hide-default-footer='settings.trusted_instances.length<10'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
:header-props='{ sortIcon: mdiChevronDown }'
:headers='headers'
:items='settings.trusted_instances')
template(v-slot:item.actions="{item}")
@@ -79,13 +80,13 @@ v-container
import { mapActions, mapState } from 'vuex'
import get from 'lodash/get'
import axios from 'axios'
import { mdiDeleteForever, mdiPlus, mdiChevronLeft, mdiChevronRight } from '@mdi/js'
import { mdiDeleteForever, mdiPlus, mdiChevronLeft, mdiChevronRight, mdiChevronDown } from '@mdi/js'
export default {
name: 'Federation',
data ({ $store, $options }) {
return {
mdiDeleteForever, mdiPlus, mdiChevronLeft, mdiChevronRight,
mdiDeleteForever, mdiPlus, mdiChevronLeft, mdiChevronRight, mdiChevronDown,
instance_url: '',
instance_name: $store.state.settings.instance_name,
instance_place: $store.state.settings.instance_place,

View File

@@ -10,6 +10,7 @@ v-container
:items-per-page='5'
:search='instancesFilter'
:hide-default-footer='instances.length<5'
:header-props='{ sortIcon: mdiChevronDown }'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
dense :headers='instancesHeader'
@click:row='instanceSelected')
@@ -24,6 +25,7 @@ v-container
:search='usersFilter'
:hide-default-footer='users.length<5'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
:header-props='{ sortIcon: mdiChevronDown }'
dense :headers='usersHeader')
template(v-slot:item.blocked="{ item }")
v-icon(@click='toggleUserBlock(item)' v-text='item.blocked ? mdiCheckboxIntermediate : mdiCheckboxBlankOutline')
@@ -34,6 +36,7 @@ v-container
:headers='resourcesHeader'
:hide-default-footer='resources.length<10'
:items-per-page='10'
:header-props='{ sortIcon: mdiChevronDown }'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }')
template(v-slot:item.content='{ item }')
span(v-html='item.data.content')
@@ -62,33 +65,33 @@ v-container
import { mapState, mapActions } from 'vuex'
import get from 'lodash/get'
import { mdiDelete, mdiEye, mdiEyeOff, mdiDotsVertical, mdiCheckboxIntermediate,
mdiCheckboxBlankOutline, mdiChevronLeft, mdiChevronRight } from '@mdi/js'
mdiCheckboxBlankOutline, mdiChevronLeft, mdiChevronRight, mdiChevronDown } from '@mdi/js'
export default {
name: 'Moderation',
data () {
return {
mdiDelete, mdiEye, mdiEyeOff, mdiDotsVertical, mdiCheckboxIntermediate,
mdiCheckboxBlankOutline, mdiChevronLeft, mdiChevronRight,
mdiCheckboxBlankOutline, mdiChevronLeft, mdiChevronRight, mdiChevronDown,
instances: [],
resources: [],
users: [],
usersHeader: [
{ value: 'object.preferredUsername', text: 'Name' },
{ value: 'blocked', text: 'Blocked' }
{ value: 'object.preferredUsername', text: this.$t('common.name') },
{ value: 'blocked', text: this.$t('admin.blocked') }
],
instancesHeader: [
{ value: 'domain', text: 'Domain' },
{ value: 'name', text: 'Name' },
{ value: 'blocked', text: 'Blocked' },
{ value: 'users', text: 'known users' }
{ value: 'domain', text: this.$t('admin.domain') },
{ value: 'name', text: this.$t('common.name') },
{ value: 'blocked', text: this.$t('admin.blocked') },
{ value: 'users', text: this.$t('admin.known_users') }
],
resourcesHeader: [
{ value: 'created', text: 'Created' },
{ value: 'event', text: 'Event' },
{ value: 'user', text: 'user' },
{ value: 'content', text: 'Content' },
{ value: 'actions', text: 'Actions' }
{ value: 'created', text: this.$t('admin.created_at') },
{ value: 'event', text: this.$t('common.event') },
{ value: 'user', text: this.$t('common.user') },
{ value: 'content', text: this.$t('common.content') },
{ value: 'actions', text: this.$t('common.actions') }
],
usersFilter: '',
instancesFilter: ''

View File

@@ -4,7 +4,7 @@ v-container
v-spacer
v-text-field(v-model='search'
:append-icon='mdiMagnify' outlined rounded
label='Search'
:label="$t('common.search')"
single-line hide-details)
v-card-subtitle(v-html="$t('admin.place_description')")
@@ -49,6 +49,7 @@ v-container
:headers='headers'
:items='places'
:hide-default-footer='places.length < 5'
:header-props='{ sortIcon: mdiChevronDown }'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
:search='search')
template(v-slot:item.map='{ item }')
@@ -61,7 +62,7 @@ v-container
</template>
<script>
import { mdiPencil, mdiChevronLeft, mdiChevronRight, mdiMagnify, mdiEye, mdiMapSearch } from '@mdi/js'
import { mdiPencil, mdiChevronLeft, mdiChevronRight, mdiMagnify, mdiEye, mdiMapSearch, mdiChevronDown } from '@mdi/js'
import { mapState } from 'vuex'
import debounce from 'lodash/debounce'
import get from 'lodash/get'
@@ -69,7 +70,7 @@ import get from 'lodash/get'
export default {
data() {
return {
mdiPencil, mdiChevronRight, mdiChevronLeft, mdiMagnify, mdiEye, mdiMapSearch,
mdiPencil, mdiChevronRight, mdiChevronLeft, mdiMagnify, mdiEye, mdiMapSearch, mdiChevronDown,
loading: false,
dialog: false,
valid: false,
@@ -79,10 +80,10 @@ export default {
search: '',
place: { name: '', address: '', id: null },
headers: [
{ value: 'name', text: 'Name' },
{ value: 'address', text: 'Address' },
{ value: 'name', text: this.$t('common.name') },
{ value: 'address', text: this.$t('common.address') },
{ value: 'map', text: 'Map' },
{ value: 'actions', text: 'Actions', align: 'right' }
{ value: 'actions', text: this.$t('common.actions'), align: 'right' }
]
}
},

View File

@@ -4,7 +4,7 @@ v-container
v-spacer
v-text-field(v-model='search'
:append-icon='mdiMagnify' outlined rounded
label='Search'
:label="$t('common.search')"
single-line hide-details)
v-btn(color='primary' text @click='newUserDialog = true') <v-icon v-text='mdiPlus'></v-icon> {{$t('common.new_user')}}
@@ -32,6 +32,7 @@ v-container
:headers='headers'
:items='users'
:hide-default-footer='users.length<5'
:header-props='{ sortIcon: mdiChevronDown }'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
:search='search')
template(v-slot:item.is_active='{item}')
@@ -49,7 +50,7 @@ v-container
<script>
import { mapState } from 'vuex'
import get from 'lodash/get'
import { mdiClose, mdiMagnify, mdiCheck, mdiPlus, mdiInformation, mdiChevronLeft, mdiChevronRight } from '@mdi/js'
import { mdiClose, mdiMagnify, mdiCheck, mdiPlus, mdiInformation, mdiChevronLeft, mdiChevronRight, mdiChevronDown } from '@mdi/js'
export default {
name: 'Users',
@@ -58,7 +59,7 @@ export default {
},
data () {
return {
mdiClose, mdiMagnify, mdiCheck, mdiPlus, mdiInformation, mdiChevronLeft, mdiChevronRight,
mdiClose, mdiMagnify, mdiCheck, mdiPlus, mdiInformation, mdiChevronLeft, mdiChevronRight, mdiChevronDown,
newUserDialog: false,
valid: false,
new_user: {
@@ -67,10 +68,10 @@ export default {
},
search: '',
headers: [
{ value: 'email', text: 'Email' },
{ value: 'description', text: 'Description' },
{ value: 'email', text: this.$t('common.email') },
{ value: 'description', text: this.$t('common.description') },
{ value: 'is_active', text: 'Active' },
{ value: 'actions', text: 'Actions', align: 'right' }
{ value: 'actions', text: this.$t('common.actions'), align: 'right' }
]
}
},

View File

@@ -3,7 +3,7 @@ span
v-list(dense nav)
v-list-group(:append-icon='mdiChevronUp' :value='true')
template(v-slot:activator)
v-list-item.text-overline Admin actions
v-list-item.text-overline {{$t('common.admin_actions')}}
//- Hide / confirm event
v-list-item(@click='toggle(false)')
@@ -29,7 +29,7 @@ span
template(v-if='event.parentId')
v-list-item.text-overline Recurring event actions <a href="https://gancio.org/">?</a>
v-list-item.text-overline(v-html="$t('common.recurring_event_actions')")
//- Pause / Start to generate recurring event
v-list-item(@click='toggle(true)')