Merge branch '662-libraries' into 'develop'
#662: Resolve "Add contexts to translatable strings" See merge request funkwhale/funkwhale!610
This commit is contained in:
commit
bb30a9cbb4
|
@ -37,15 +37,15 @@
|
|||
{{ library.size | humanSize }}
|
||||
</span>
|
||||
<i class="music icon"></i>
|
||||
<translate :translate-params="{count: library.uploads_count}" :translate-n="library.uploads_count" translate-plural="%{ count } tracks">%{ count } track</translate>
|
||||
<translate :translate-context="'Content/Library/Card.List item'" :translate-params="{count: library.uploads_count}" :translate-n="library.uploads_count" translate-plural="%{ count } tracks">%{ count } track</translate>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui bottom basic attached buttons">
|
||||
<router-link :to="{name: 'content.libraries.detail.upload', params: {id: library.uuid}}" class="ui button">
|
||||
<translate>Upload</translate>
|
||||
<translate :translate-context="'Content/Library/Card.Button.Label/Verb'">Upload</translate>
|
||||
</router-link>
|
||||
<router-link :to="{name: 'content.libraries.detail', params: {id: library.uuid}}" exact class="ui button">
|
||||
<translate>Detail</translate>
|
||||
<translate :translate-context="'Content/Library/Card.Button.Label/Noun'">Details</translate>
|
||||
</router-link>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -55,10 +55,10 @@ export default {
|
|||
props: ['library'],
|
||||
computed: {
|
||||
labels () {
|
||||
let me = this.$gettext('Visibility: nobody except me')
|
||||
let instance = this.$gettext('Visibility: everyone on this instance')
|
||||
let everyone = this.$gettext('Visibility: everyone, including other instances')
|
||||
let size = this.$gettext('Total size of the files in this library')
|
||||
let me = this.$pgettext('Content/Library/Card.Help text', 'Visibility: nobody except me')
|
||||
let instance = this.$pgettext('Content/Library/Card.Help text', 'Visibility: everyone on this instance')
|
||||
let everyone = this.$pgettext('Content/Library/Card.Help text', 'Visibility: everyone, including other instances')
|
||||
let size = this.$pgettext('Content/Library/Card.Help text', 'Total size of the files in this library')
|
||||
|
||||
return {
|
||||
tooltips: {
|
||||
|
|
|
@ -1,33 +1,33 @@
|
|||
<template>
|
||||
<section class="ui vertical aligned stripe segment">
|
||||
<div v-if="isLoadingLibrary" :class="['ui', {'active': isLoadingLibrary}, 'inverted', 'dimmer']">
|
||||
<div class="ui text loader"><translate>Loading library data…</translate></div>
|
||||
<div class="ui text loader"><translate :translate-context="'Content/Library/Paragraph'">Loading library data…</translate></div>
|
||||
</div>
|
||||
<detail-area v-else :library="library">
|
||||
<div class="ui top attached tabular menu">
|
||||
<a :class="['item', {active: currentTab === 'follows'}]" @click="currentTab = 'follows'"><translate>Followers</translate></a>
|
||||
<a :class="['item', {active: currentTab === 'tracks'}]" @click="currentTab = 'tracks'"><translate>Tracks</translate></a>
|
||||
<a :class="['item', {active: currentTab === 'edit'}]" @click="currentTab = 'edit'"><translate>Edit</translate></a>
|
||||
<a :class="['item', {active: currentTab === 'follows'}]" @click="currentTab = 'follows'"><translate :translate-context="'Content/Library/Tab.Title'">Followers</translate></a>
|
||||
<a :class="['item', {active: currentTab === 'tracks'}]" @click="currentTab = 'tracks'"><translate :translate-context="'*/*/*'">Tracks</translate></a>
|
||||
<a :class="['item', {active: currentTab === 'edit'}]" @click="currentTab = 'edit'"><translate :translate-context="'*/*/*/Verb'">Edit</translate></a>
|
||||
</div>
|
||||
<div :class="['ui', 'bottom', 'attached', 'segment', {hidden: currentTab != 'follows'}]">
|
||||
<div class="ui form">
|
||||
<div class="field">
|
||||
<label><translate>Sharing link</translate></label>
|
||||
<p><translate>Share this link with other users so they can request access to your library.</translate></p>
|
||||
<label><translate :translate-context="'Content/Library/Title'">Sharing link</translate></label>
|
||||
<p><translate :translate-context="'Content/Library/Paragraph'">Share this link with other users so they can request access to your library.</translate></p>
|
||||
<copy-input :value="library.fid" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui hidden divider"></div>
|
||||
<div v-if="isLoadingFollows" :class="['ui', {'active': isLoadingFollows}, 'inverted', 'dimmer']">
|
||||
<div class="ui text loader"><translate>Loading followers…</translate></div>
|
||||
<div class="ui text loader"><translate :translate-context="'Content/Library/Paragraph'">Loading followers…</translate></div>
|
||||
</div>
|
||||
<table v-else-if="follows && follows.count > 0" class="ui table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><translate>User</translate></th>
|
||||
<th><translate>Date</translate></th>
|
||||
<th><translate>Status</translate></th>
|
||||
<th><translate>Action</translate></th>
|
||||
<th><translate :translate-context="'Content/Library/Table.Label'">User</translate></th>
|
||||
<th><translate :translate-context="'Content/Library/Table.Label'">Date</translate></th>
|
||||
<th><translate :translate-context="'Content/Library/Table.Label'">Status</translate></th>
|
||||
<th><translate :translate-context="'Content/Library/Table.Label'">Action</translate></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr v-for="follow in follows.results" :key="follow.fid">
|
||||
|
@ -35,27 +35,27 @@
|
|||
<td><human-date :date="follow.creation_date" /></td>
|
||||
<td>
|
||||
<span :class="['ui', 'yellow', 'basic', 'label']" v-if="follow.approved === null">
|
||||
<translate>Pending approval</translate>
|
||||
<translate :translate-context="'Content/Library/Table/Short'">Pending approval</translate>
|
||||
</span>
|
||||
<span :class="['ui', 'green', 'basic', 'label']" v-else-if="follow.approved === true">
|
||||
<translate>Accepted</translate>
|
||||
<translate :translate-context="'Content/Library/Table/Short'">Accepted</translate>
|
||||
</span>
|
||||
<span :class="['ui', 'red', 'basic', 'label']" v-else-if="follow.approved === false">
|
||||
<translate>Rejected</translate>
|
||||
<translate :translate-context="'Content/Library/Table/Short'">Rejected</translate>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<div @click="updateApproved(follow, true)" :class="['ui', 'mini', 'icon', 'labeled', 'green', 'button']" v-if="follow.approved === null || follow.approved === false">
|
||||
<i class="ui check icon"></i> <translate>Accept</translate>
|
||||
<i class="ui check icon"></i> <translate :translate-context="'Content/Library/Button.Label'">Accept</translate>
|
||||
</div>
|
||||
<div @click="updateApproved(follow, false)" :class="['ui', 'mini', 'icon', 'labeled', 'red', 'button']" v-if="follow.approved === null || follow.approved === true">
|
||||
<i class="ui x icon"></i> <translate>Reject</translate>
|
||||
<i class="ui x icon"></i> <translate :translate-context="'Content/Library/Button.Label'">Reject</translate>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<p v-else><translate>Nobody is following this library</translate></p>
|
||||
<p v-else><translate :translate-context="'Content/Library/Paragraph'">Nobody is following this library</translate></p>
|
||||
</div>
|
||||
<div :class="['ui', 'bottom', 'attached', 'segment', {hidden: currentTab != 'tracks'}]">
|
||||
<library-files-table :filters="{library: library.uuid}"></library-files-table>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<div>
|
||||
<div class="ui stackable grid">
|
||||
<div class="five wide column">
|
||||
<h3 class="ui header"><translate>Current library</translate></h3>
|
||||
<h3 class="ui header"><translate :translate-context="'Content/Library/Title'">Current library</translate></h3>
|
||||
<library-card :library="library" />
|
||||
</div>
|
||||
</div>
|
||||
|
@ -21,7 +21,7 @@ export default {
|
|||
},
|
||||
computed: {
|
||||
links () {
|
||||
let upload = this.$gettext('Upload')
|
||||
let upload = this.$pgettext('Content/Library/Card.Button.Label/Verb', 'Upload')
|
||||
return [
|
||||
{
|
||||
name: 'libraries.detail.upload',
|
||||
|
|
|
@ -3,23 +3,23 @@
|
|||
<div class="ui inline form">
|
||||
<div class="fields">
|
||||
<div class="ui six wide field">
|
||||
<label><translate>Search</translate></label>
|
||||
<label><translate :translate-context="'Content/Library/Input.Label/Verb'">Search</translate></label>
|
||||
<form @submit.prevent="search.query = $refs.search.value">
|
||||
<input name="search" ref="search" type="text" :value="search.query" :placeholder="labels.searchPlaceholder" />
|
||||
</form>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><translate>Import status</translate></label>
|
||||
<label><translate :translate-context="'Content/Library/Dropdown.Label/Noun'">Import status</translate></label>
|
||||
<select class="ui dropdown" @change="addSearchToken('status', $event.target.value)" :value="getTokenValue('status', '')">
|
||||
<option value=""><translate>All</translate></option>
|
||||
<option value="pending"><translate>Pending</translate></option>
|
||||
<option value="skipped"><translate>Skipped</translate></option>
|
||||
<option value="errored"><translate>Failed</translate></option>
|
||||
<option value="finished"><translate>Finished</translate></option>
|
||||
<option value=""><translate :translate-context="'Content/Library/Dropdown'">All</translate></option>
|
||||
<option value="pending"><translate :translate-context="'Content/Library/Dropdown'">Pending</translate></option>
|
||||
<option value="skipped"><translate :translate-context="'Content/Library/Dropdown'">Skipped</translate></option>
|
||||
<option value="errored"><translate :translate-context="'Content/Library/Dropdown'">Failed</translate></option>
|
||||
<option value="finished"><translate :translate-context="'Content/Library/Dropdown'">Finished</translate></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><translate>Ordering</translate></label>
|
||||
<label><translate :translate-context="'Content/Library/Dropdown.Label/Noun'">Ordering</translate></label>
|
||||
<select class="ui dropdown" v-model="ordering">
|
||||
<option v-for="option in orderingOptions" :value="option[0]">
|
||||
{{ sharedLabels.filters[option[1]] }}
|
||||
|
@ -27,10 +27,10 @@
|
|||
</select>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><translate>Ordering direction</translate></label>
|
||||
<label><translate :translate-context="'Content/Library/Dropdown.Label/Noun'">Ordering direction</translate></label>
|
||||
<select class="ui dropdown" v-model="orderingDirection">
|
||||
<option value="+"><translate>Ascending</translate></option>
|
||||
<option value="-"><translate>Descending</translate></option>
|
||||
<option value="+"><translate :translate-context="'Content/Library/Dropdown'">Ascending</translate></option>
|
||||
<option value="-"><translate :translate-context="'Content/Library/Dropdown'">Descending</translate></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -52,13 +52,13 @@
|
|||
@refresh="fetchData"
|
||||
:filters="actionFilters">
|
||||
<template slot="header-cells">
|
||||
<th><translate>Title</translate></th>
|
||||
<th><translate>Artist</translate></th>
|
||||
<th><translate>Album</translate></th>
|
||||
<th><translate>Upload date</translate></th>
|
||||
<th><translate>Import status</translate></th>
|
||||
<th><translate>Duration</translate></th>
|
||||
<th><translate>Size</translate></th>
|
||||
<th><translate :translate-context="'*/*/*'">Title</translate></th>
|
||||
<th><translate :translate-context="'*/*/*'">Artist</translate></th>
|
||||
<th><translate :translate-context="'*/*/*'">Album</translate></th>
|
||||
<th><translate :translate-context="'*/*/*/Noun'">Upload date</translate></th>
|
||||
<th><translate :translate-context="'*/*/*/Noun'">Import status</translate></th>
|
||||
<th><translate :translate-context="'*/*/*'">Duration</translate></th>
|
||||
<th><translate :translate-context="'*/*/*'">Size</translate></th>
|
||||
</template>
|
||||
<template slot="row-cells" slot-scope="scope">
|
||||
<template v-if="scope.obj.track">
|
||||
|
@ -90,13 +90,13 @@
|
|||
{{ time.parse(scope.obj.duration) }}
|
||||
</td>
|
||||
<td v-else>
|
||||
<translate>N/A</translate>
|
||||
<translate :translate-context="'*/*/*'">N/A</translate>
|
||||
</td>
|
||||
<td v-if="scope.obj.size">
|
||||
{{ scope.obj.size | humanSize }}
|
||||
</td>
|
||||
<td v-else>
|
||||
<translate>N/A</translate>
|
||||
<translate :translate-context="'*/*/*'">N/A</translate>
|
||||
</td>
|
||||
</template>
|
||||
</action-table>
|
||||
|
@ -112,7 +112,7 @@
|
|||
></pagination>
|
||||
|
||||
<span v-if="result && result.results.length > 0">
|
||||
<translate
|
||||
<translate :translate-context="'Content/Library/Paragraph'"
|
||||
:translate-params="{start: ((page-1) * paginateBy) + 1, end: ((page-1) * paginateBy) + result.results.length, total: result.count}">
|
||||
Showing results %{ start }-%{ end } on %{ total }
|
||||
</translate>
|
||||
|
@ -198,23 +198,23 @@ export default {
|
|||
computed: {
|
||||
labels () {
|
||||
return {
|
||||
searchPlaceholder: this.$gettext('Search by title, artist, album…'),
|
||||
searchPlaceholder: this.$pgettext('Content/Library/Input.Placeholder', 'Search by title, artist, album…'),
|
||||
importStatuses: {
|
||||
skipped: {
|
||||
label: this.$gettext('Skipped'),
|
||||
help: this.$gettext('Track already present in one of your libraries'),
|
||||
label: this.$pgettext('Content/Library/Table/Short', 'Skipped'),
|
||||
help: this.$pgettext('Content/Library/Help text', 'This track is already present in one of your libraries'),
|
||||
},
|
||||
pending: {
|
||||
label: this.$gettext('Pending'),
|
||||
help: this.$gettext('Track uploaded, but not processed by the server yet'),
|
||||
label: this.$pgettext('Content/Library/Table/Short', 'Pending'),
|
||||
help: this.$pgettext('Content/Library/Help text', 'This track has been uploaded, but hasn\'t been processed by the server yet'),
|
||||
},
|
||||
errored: {
|
||||
label: this.$gettext('Errored'),
|
||||
help: this.$gettext('Could not process this track, ensure it is tagged correctly'),
|
||||
label: this.$pgettext('Content/Library/Table/Short', 'Errored'),
|
||||
help: this.$pgettext('Content/Library/Help text', 'This track could not be processed, please it is tagged correctly'),
|
||||
},
|
||||
finished: {
|
||||
label: this.$gettext('Finished'),
|
||||
help: this.$gettext('Imported'),
|
||||
label: this.$pgettext('Content/Library/Table/Short', 'Finished'),
|
||||
help: this.$pgettext('Content/Library/Help text', 'Imported'),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -230,8 +230,8 @@ export default {
|
|||
}
|
||||
},
|
||||
actions () {
|
||||
let deleteMsg = this.$gettext('Delete')
|
||||
let relaunchMsg = this.$gettext('Relaunch import')
|
||||
let deleteMsg = this.$pgettext('Content/Library/Dropdown/Verb', 'Delete')
|
||||
let relaunchMsg = this.$pgettext('Content/Library/Dropdown/Verb', 'Restart import')
|
||||
return [
|
||||
{
|
||||
name: 'delete',
|
||||
|
|
|
@ -1,43 +1,43 @@
|
|||
<template>
|
||||
<form class="ui form" @submit.prevent="submit">
|
||||
<p v-if="!library"><translate>Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family.</translate></p>
|
||||
<p v-if="!library"><translate :translate-context="'Content/Library/Paragraph'">Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family.</translate></p>
|
||||
<div v-if="errors.length > 0" class="ui negative message">
|
||||
<div class="header"><translate>Error</translate></div>
|
||||
<div class="header"><translate :translate-context="'Content/Library/Error message.Title'">Error</translate></div>
|
||||
<ul class="list">
|
||||
<li v-for="error in errors">{{ error }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="required field">
|
||||
<label><translate>Name</translate></label>
|
||||
<label><translate :translate-context="'Content/Library/Input.Label'">Name</translate></label>
|
||||
<input name="name" v-model="currentName" :placeholder="labels.namePlaceholder" required maxlength="100">
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><translate>Description</translate></label>
|
||||
<label><translate :translate-context="'Content/Library/Input.Label'">Description</translate></label>
|
||||
<textarea v-model="currentDescription" :placeholder="labels.descriptionPlaceholder" maxlength="2000"></textarea>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><translate>Visibility</translate></label>
|
||||
<p><translate>You are able to share your library with other people, regardless of its visibility.</translate></p>
|
||||
<label><translate :translate-context="'Content/Library/Dropdown.Label'">Visibility</translate></label>
|
||||
<p><translate :translate-context="'Content/Library/Paragraph'">You are able to share your library with other people, regardless of its visibility.</translate></p>
|
||||
<select class="ui dropdown" v-model="currentVisibilityLevel">
|
||||
<option :value="c" v-for="c in ['me', 'instance', 'everyone']">{{ labels.visibility[c] }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="ui submit button" type="submit">
|
||||
<translate v-if="library">Update library</translate>
|
||||
<translate v-else>Create library</translate>
|
||||
<translate :translate-context="'Content/Library/Button.Label/Verb'" v-if="library">Update library</translate>
|
||||
<translate :translate-context="'Content/Library/Button.Label/Verb'" v-else>Create library</translate>
|
||||
</button>
|
||||
<dangerous-button v-if="library" class="right floated basic button" color='red' @confirm="remove()">
|
||||
<translate>Delete</translate>
|
||||
<translate :translate-context="'Content/Library/Button.Label/Verb'">Delete</translate>
|
||||
<p slot="modal-header">
|
||||
<translate>Delete this library?</translate>
|
||||
<translate :translate-context="'Popup/Library/Title'">Delete this library?</translate>
|
||||
</p>
|
||||
<p slot="modal-content">
|
||||
<translate>
|
||||
<translate :translate-context="'Popup/Library/Paragraph'">
|
||||
The library and all its tracks will be deleted. This can not be undone.
|
||||
</translate>
|
||||
</p>
|
||||
<p slot="modal-confirm">
|
||||
<translate>Delete library</translate>
|
||||
<translate :translate-context="'Popup/Library/Button.Label/Verb'">Delete library</translate>
|
||||
</p>
|
||||
</dangerous-button>
|
||||
</form>
|
||||
|
@ -67,11 +67,11 @@ export default {
|
|||
},
|
||||
computed: {
|
||||
labels () {
|
||||
let namePlaceholder = this.$gettext('My awesome library')
|
||||
let descriptionPlaceholder = this.$gettext('This library contains my personal music, I hope you like it.')
|
||||
let me = this.$gettext('Nobody except me')
|
||||
let instance = this.$gettext('Everyone on this instance')
|
||||
let everyone = this.$gettext('Everyone, across all instances')
|
||||
let namePlaceholder = this.$pgettext('Content/Library/Input.Placeholder', 'My awesome library')
|
||||
let descriptionPlaceholder = this.$pgettext('Content/Library/Input.Placeholder', 'This library contains my personal music, I hope you like it.')
|
||||
let me = this.$pgettext('Content/Library/Dropdown', 'Nobody except me')
|
||||
let instance = this.$pgettext('Content/Library/Dropdown', 'Everyone on this instance')
|
||||
let everyone = this.$pgettext('Content/Library/Dropdown', 'Everyone, across all instances')
|
||||
return {
|
||||
namePlaceholder,
|
||||
descriptionPlaceholder,
|
||||
|
@ -103,10 +103,10 @@ export default {
|
|||
let msg
|
||||
if (self.library) {
|
||||
self.$emit('updated', response.data)
|
||||
msg = this.$gettext('Library updated')
|
||||
msg = this.$pgettext('Content/Library/Message', 'Library updated')
|
||||
} else {
|
||||
self.$emit('created', response.data)
|
||||
msg = this.$gettext('Library created')
|
||||
msg = this.$pgettext('Content/Library/Message', 'Library created')
|
||||
}
|
||||
self.$store.commit('ui/addMessage', {
|
||||
content: msg,
|
||||
|
@ -126,7 +126,7 @@ export default {
|
|||
let self = this
|
||||
axios.delete(`libraries/${this.library.uuid}/`).then((response) => {
|
||||
self.isLoading = false
|
||||
let msg = this.$gettext('Library deleted')
|
||||
let msg = this.$pgettext('Content/Library/Message', 'Library deleted')
|
||||
self.$emit('deleted', {})
|
||||
self.$store.commit('ui/addMessage', {
|
||||
content: msg,
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
<template>
|
||||
<section class="ui vertical aligned stripe segment">
|
||||
<div v-if="isLoading" :class="['ui', {'active': isLoading}, 'inverted', 'dimmer']">
|
||||
<div class="ui text loader"><translate>Loading Libraries…</translate></div>
|
||||
<div class="ui text loader"><translate :translate-context="'Content/Library/Paragraph'">Loading Libraries…</translate></div>
|
||||
</div>
|
||||
<div v-else class="ui text container">
|
||||
<h1 class="ui header"><translate>My libraries</translate></h1>
|
||||
<h1 class="ui header"><translate :translate-context="'Content/Library/Title'">My libraries</translate></h1>
|
||||
|
||||
<p v-if="libraries.length == 0">
|
||||
<translate>Looks like you don't have a library, it's time to create one.</translate>
|
||||
<translate :translate-context="'Content/Library/Paragraph'">Looks like you don't have a library, it's time to create one.</translate>
|
||||
</p>
|
||||
<a @click="hiddenForm = !hiddenForm">
|
||||
<i class="plus icon" v-if="hiddenForm" />
|
||||
<i class="minus icon" v-else />
|
||||
<translate>Create a new library</translate>
|
||||
<translate :translate-context="'Content/Library/Link/Verb'">Create a new library</translate>
|
||||
</a>
|
||||
<library-form :library="null" v-if="!hiddenForm" @created="libraryCreated" />
|
||||
<div class="ui hidden divider"></div>
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
<template>
|
||||
<div class="ui segment">
|
||||
<h3 class="ui header"><translate>Current usage</translate></h3>
|
||||
<h3 class="ui header"><translate :translate-context="'Content/Library/Title'">Current usage</translate></h3>
|
||||
<div v-if="isLoading" :class="['ui', {'active': isLoading}, 'inverted', 'dimmer']">
|
||||
<div class="ui text loader"><translate>Loading usage data…</translate></div>
|
||||
<div class="ui text loader"><translate :translate-context="'Content/Library/Paragraph'">Loading usage data…</translate></div>
|
||||
</div>
|
||||
<div :class="['ui', {'success': progress < 60}, {'yellow': progress >= 60 && progress < 96}, {'error': progress >= 95}, 'progress']">
|
||||
<div class="bar" :style="{width: `${progress}%`}">
|
||||
<div class="progress">{{ progress }}%</div>
|
||||
</div>
|
||||
<div class="label" v-if="quotaStatus">
|
||||
<translate :translate-params="{max: humanSize(quotaStatus.max * 1000 * 1000), current: humanSize(quotaStatus.current * 1000 * 1000)}">%{ current } used on %{ max } allowed</translate>
|
||||
<translate :translate-context="'Content/Library/Paragraph'" :translate-params="{max: humanSize(quotaStatus.max * 1000 * 1000), current: humanSize(quotaStatus.current * 1000 * 1000)}">%{ current } used on %{ max } allowed</translate>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui hidden divider"></div>
|
||||
|
@ -20,24 +20,24 @@
|
|||
{{ humanSize(quotaStatus.pending * 1000 * 1000) }}
|
||||
</div>
|
||||
<div class="label">
|
||||
<translate>Pending files</translate>
|
||||
<translate :translate-context="'Content/Library/Label'">Pending files</translate>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<router-link
|
||||
class="ui basic blue tiny button"
|
||||
:to="{name: 'content.libraries.files', query: {q: compileTokens([{field: 'status', value: 'pending'}])}}">
|
||||
<translate>View files</translate>
|
||||
<translate :translate-context="'Content/Library/Link/Verb'">View files</translate>
|
||||
</router-link>
|
||||
|
||||
<dangerous-button
|
||||
color="grey"
|
||||
class="basic tiny"
|
||||
:action="purgePendingFiles">
|
||||
<translate>Purge</translate>
|
||||
<p slot="modal-header"><translate>Purge pending files?</translate></p>
|
||||
<p slot="modal-content"><translate>Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota.</translate></p>
|
||||
<p slot="modal-confirm"><translate>Purge</translate></p>
|
||||
<translate :translate-context="'Content/Library/Button.Label/Verb'">Purge</translate>
|
||||
<p slot="modal-header"><translate :translate-context="'Popup/Library/Title'">Purge pending files?</translate></p>
|
||||
<p slot="modal-content"><translate :translate-context="'Popup/Library/Paragraph'">Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota.</translate></p>
|
||||
<p slot="modal-confirm"><translate :translate-context="'Popup/Library/Button.Label'">Purge</translate></p>
|
||||
</dangerous-button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -47,23 +47,23 @@
|
|||
{{ humanSize(quotaStatus.skipped * 1000 * 1000) }}
|
||||
</div>
|
||||
<div class="label">
|
||||
<translate>Skipped files</translate>
|
||||
<translate :translate-context="'Content/Library/Label'">Skipped files</translate>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<router-link
|
||||
class="ui basic blue tiny button"
|
||||
:to="{name: 'content.libraries.files', query: {q: compileTokens([{field: 'status', value: 'skipped'}])}}">
|
||||
<translate>View files</translate>
|
||||
<translate :translate-context="'Content/Library/Link/Verb'">View files</translate>
|
||||
</router-link>
|
||||
<dangerous-button
|
||||
color="grey"
|
||||
class="basic tiny"
|
||||
:action="purgeSkippedFiles">
|
||||
<translate>Purge</translate>
|
||||
<p slot="modal-header"><translate>Purge skipped files?</translate></p>
|
||||
<p slot="modal-content"><translate>Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota.</translate></p>
|
||||
<p slot="modal-confirm"><translate>Purge</translate></p>
|
||||
<translate :translate-context="'Content/Library/Button.Label/Verb'">Purge</translate>
|
||||
<p slot="modal-header"><translate :translate-context="'Popup/Library/Title'">Purge skipped files?</translate></p>
|
||||
<p slot="modal-content"><translate :translate-context="'Popup/Library/Paragraph'">Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota.</translate></p>
|
||||
<p slot="modal-confirm"><translate :translate-context="'Popup/Library/Button.Label'">Purge</translate></p>
|
||||
</dangerous-button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -73,23 +73,23 @@
|
|||
{{ humanSize(quotaStatus.errored * 1000 * 1000) }}
|
||||
</div>
|
||||
<div class="label">
|
||||
<translate>Errored files</translate>
|
||||
<translate :translate-context="'Content/Library/Label'">Errored files</translate>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<router-link
|
||||
class="ui basic blue tiny button"
|
||||
:to="{name: 'content.libraries.files', query: {q: compileTokens([{field: 'status', value: 'errored'}])}}">
|
||||
<translate>View files</translate>
|
||||
<translate :translate-context="'Content/Library/Link/Verb'">View files</translate>
|
||||
</router-link>
|
||||
<dangerous-button
|
||||
color="grey"
|
||||
class="basic tiny"
|
||||
:action="purgeErroredFiles">
|
||||
<translate>Purge</translate>
|
||||
<p slot="modal-header"><translate>Purge errored files?</translate></p>
|
||||
<p slot="modal-content"><translate>Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota.</translate></p>
|
||||
<p slot="modal-confirm"><translate>Purge</translate></p>
|
||||
<translate :translate-context="'Content/Library/Button.Label/Verb'">Purge</translate>
|
||||
<p slot="modal-header"><translate :translate-context="'Popup/Library/Title'">Purge errored files?</translate></p>
|
||||
<p slot="modal-content"><translate :translate-context="'Popup/Library/Paragraph'">Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota.</translate></p>
|
||||
<p slot="modal-confirm"><translate :translate-context="'Popup/Library/Button.Label'">Purge</translate></p>
|
||||
</dangerous-button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="ui vertical aligned stripe segment">
|
||||
<div v-if="isLoadingLibrary" :class="['ui', {'active': isLoadingLibrary}, 'inverted', 'dimmer']">
|
||||
<div class="ui text loader"><translate>Loading library data…</translate></div>
|
||||
<div class="ui text loader"><translate :translate-context="'Content/Library/Paragraph'">Loading library data…</translate></div>
|
||||
</div>
|
||||
<detail-area v-else :library="library">
|
||||
<file-upload :default-import-reference="defaultImportReference" :library="library" />
|
||||
|
|
Loading…
Reference in New Issue