mirror of
https://code.eliotberriot.com/funkwhale/funkwhale.git
synced 2025-10-06 04:29:55 +02:00
Fixed broken extraction of contexts
This commit is contained in:
parent
755f574b23
commit
72606388ff
93 changed files with 764 additions and 764 deletions
|
@ -15,27 +15,27 @@
|
|||
</h2>
|
||||
<div class="ui hidden divider"></div>
|
||||
<play-button class="orange" :tracks="album.tracks">
|
||||
<translate :translate-context="'Content/*/Button.Label/Verb, Short'">Play all</translate>
|
||||
<translate translate-context="Content/*/Button.Label/Verb, Short">Play all</translate>
|
||||
</play-button>
|
||||
|
||||
<a :href="wikipediaUrl" target="_blank" class="ui icon labeled button">
|
||||
<i class="wikipedia w icon"></i>
|
||||
<translate :translate-context="'Content/*/Button.Label/Verb'">Search on Wikipedia</translate>
|
||||
<translate translate-context="Content/*/Button.Label/Verb">Search on Wikipedia</translate>
|
||||
</a>
|
||||
<a v-if="musicbrainzUrl" :href="musicbrainzUrl" target="_blank" class="ui icon labeled button">
|
||||
<i class="external icon"></i>
|
||||
<translate :translate-context="'Content/*/Button.Label/Verb'">View on MusicBrainz</translate>
|
||||
<translate translate-context="Content/*/Button.Label/Verb">View on MusicBrainz</translate>
|
||||
</a>
|
||||
<template v-if="publicLibraries.length > 0">
|
||||
<button
|
||||
@click="showEmbedModal = !showEmbedModal"
|
||||
class="ui button icon labeled">
|
||||
<i class="code icon"></i>
|
||||
<translate :translate-context="'Content/*/Button.Label/Verb'">Embed</translate>
|
||||
<translate translate-context="Content/*/Button.Label/Verb">Embed</translate>
|
||||
</button>
|
||||
<modal :show.sync="showEmbedModal">
|
||||
<div class="header">
|
||||
<translate :translate-context="'Popup/Album/Title/Verb'">Embed this album on your website</translate>
|
||||
<translate translate-context="Popup/Album/Title/Verb">Embed this album on your website</translate>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="description">
|
||||
|
@ -45,7 +45,7 @@
|
|||
</div>
|
||||
<div class="actions">
|
||||
<div class="ui deny button">
|
||||
<translate :translate-context="'Popup/*/Button.Label/Verb'">Cancel</translate>
|
||||
<translate translate-context="Popup/*/Button.Label/Verb">Cancel</translate>
|
||||
</div>
|
||||
</div>
|
||||
</modal>
|
||||
|
@ -58,10 +58,10 @@
|
|||
tag="h2"
|
||||
class="left floated"
|
||||
:translate-params="{number: disc_number + 1}"
|
||||
:translate-context="'Content/Album/'"
|
||||
translate-context="Content/Album/"
|
||||
>Volume %{ number }</translate>
|
||||
<play-button class="right floated orange" :tracks="tracks">
|
||||
<translate :translate-context="'Content/*/Button.Label/Verb, Short'">Play all</translate>
|
||||
<translate translate-context="Content/*/Button.Label/Verb, Short">Play all</translate>
|
||||
</play-button>
|
||||
<track-table :artist="album.artist" :display-position="true" :tracks="tracks"></track-table>
|
||||
</section>
|
||||
|
@ -69,17 +69,17 @@
|
|||
<template v-else>
|
||||
<section class="ui vertical stripe segment">
|
||||
<h2>
|
||||
<translate :translate-context="'Content/*/Title/Name'">Tracks</translate>
|
||||
<translate translate-context="Content/*/Title/Name">Tracks</translate>
|
||||
</h2>
|
||||
<track-table v-if="album" :artist="album.artist" :display-position="true" :tracks="album.tracks"></track-table>
|
||||
</section>
|
||||
</template>
|
||||
<section class="ui vertical stripe segment">
|
||||
<h2>
|
||||
<translate :translate-context="'Content/*/Title/Name'">User libraries</translate>
|
||||
<translate translate-context="Content/*/Title/Name">User libraries</translate>
|
||||
</h2>
|
||||
<library-widget @loaded="libraries = $event" :url="'albums/' + id + '/libraries/'">
|
||||
<translate slot="subtitle" :translate-context="'Content/Album/Paragraph'">This album is present in the following libraries:</translate>
|
||||
<translate slot="subtitle" translate-context="Content/Album/Paragraph">This album is present in the following libraries:</translate>
|
||||
</library-widget>
|
||||
</section>
|
||||
</template>
|
||||
|
|
|
@ -2,18 +2,18 @@
|
|||
<main v-title="labels.title">
|
||||
<section class="ui vertical stripe segment">
|
||||
<h2 class="ui header">
|
||||
<translate :translate-context="'Content/Album/Title'">Browsing albums</translate>
|
||||
<translate translate-context="Content/Album/Title">Browsing albums</translate>
|
||||
</h2>
|
||||
<div :class="['ui', {'loading': isLoading}, 'form']">
|
||||
<div class="fields">
|
||||
<div class="field">
|
||||
<label>
|
||||
<translate :translate-context="'Content/Search/Input.Label/Verb'">Search</translate>
|
||||
<translate translate-context="Content/Search/Input.Label/Verb">Search</translate>
|
||||
</label>
|
||||
<input type="text" name="search" v-model="query" :placeholder="labels.searchPlaceholder"/>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><translate :translate-context="'Content/Search/Dropdown.Label/Noun'">Ordering</translate></label>
|
||||
<label><translate translate-context="Content/Search/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]] }}
|
||||
|
@ -21,14 +21,14 @@
|
|||
</select>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><translate :translate-context="'Content/Search/Dropdown.Label/Noun'">Ordering direction</translate></label>
|
||||
<label><translate translate-context="Content/Search/Dropdown.Label/Noun">Ordering direction</translate></label>
|
||||
<select class="ui dropdown" v-model="orderingDirection">
|
||||
<option value="+"><translate :translate-context="'Content/Search/Dropdown'">Ascending</translate></option>
|
||||
<option value="-"><translate :translate-context="'Content/Search/Dropdown'">Descending</translate></option>
|
||||
<option value="+"><translate translate-context="Content/Search/Dropdown">Ascending</translate></option>
|
||||
<option value="-"><translate translate-context="Content/Search/Dropdown">Descending</translate></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><translate :translate-context="'Content/Search/Dropdown.Label/Noun'">Results per page</translate></label>
|
||||
<label><translate translate-context="Content/Search/Dropdown.Label/Noun">Results per page</translate></label>
|
||||
<select class="ui dropdown" v-model="paginateBy">
|
||||
<option :value="parseInt(12)">12</option>
|
||||
<option :value="parseInt(25)">25</option>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<div class="content">
|
||||
{{ artist.name }}
|
||||
<div class="sub header" v-if="albums">
|
||||
<translate :translate-context="'Content/Artist/Paragraph'"
|
||||
<translate translate-context="Content/Artist/Paragraph"
|
||||
tag="div"
|
||||
translate-plural="%{ count } tracks in %{ albumsCount } albums"
|
||||
:translate-n="totalTracks"
|
||||
|
@ -24,27 +24,27 @@
|
|||
<div class="ui hidden divider"></div>
|
||||
<radio-button type="artist" :object-id="artist.id"></radio-button>
|
||||
<play-button :is-playable="isPlayable" class="orange" :artist="artist">
|
||||
<translate :translate-context="'Content/Artist/Button.Label/Verb'">Play all albums</translate>
|
||||
<translate translate-context="Content/Artist/Button.Label/Verb">Play all albums</translate>
|
||||
</play-button>
|
||||
|
||||
<a :href="wikipediaUrl" target="_blank" class="ui icon labeled button">
|
||||
<i class="wikipedia w icon"></i>
|
||||
<translate :translate-context="'Content/*/Button.Label/Verb'">Search on Wikipedia</translate>
|
||||
<translate translate-context="Content/*/Button.Label/Verb">Search on Wikipedia</translate>
|
||||
</a>
|
||||
<a v-if="musicbrainzUrl" :href="musicbrainzUrl" target="_blank" class="ui button">
|
||||
<i class="external icon"></i>
|
||||
<translate :translate-context="'Content/*/Button.Label/Verb'">View on MusicBrainz</translate>
|
||||
<translate translate-context="Content/*/Button.Label/Verb">View on MusicBrainz</translate>
|
||||
</a>
|
||||
<template v-if="publicLibraries.length > 0">
|
||||
<button
|
||||
@click="showEmbedModal = !showEmbedModal"
|
||||
class="ui button icon labeled">
|
||||
<i class="code icon"></i>
|
||||
<translate :translate-context="'Content/*/Button.Label/Verb'">Embed</translate>
|
||||
<translate translate-context="Content/*/Button.Label/Verb">Embed</translate>
|
||||
</button>
|
||||
<modal :show.sync="showEmbedModal">
|
||||
<div class="header">
|
||||
<translate :translate-context="'Popup/Artist/Title/Verb'">Embed this artist work on your website</translate>
|
||||
<translate translate-context="Popup/Artist/Title/Verb">Embed this artist work on your website</translate>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="description">
|
||||
|
@ -54,7 +54,7 @@
|
|||
</div>
|
||||
<div class="actions">
|
||||
<div class="ui deny button">
|
||||
<translate :translate-context="'Popup/*/Button.Label/Verb'">Cancel</translate>
|
||||
<translate translate-context="Popup/*/Button.Label/Verb">Cancel</translate>
|
||||
</div>
|
||||
</div>
|
||||
</modal>
|
||||
|
@ -68,10 +68,10 @@
|
|||
<translate>You are currently hiding content related to this artist.</translate>
|
||||
</p>
|
||||
<router-link class="right floated" :to="{name: 'settings'}">
|
||||
<translate :translate-context="'Content/Moderation/Link'">Review my filters</translate>
|
||||
<translate translate-context="Content/Moderation/Link">Review my filters</translate>
|
||||
</router-link>
|
||||
<button @click="$store.dispatch('moderation/deleteContentFilter', contentFilter.uuid)" class="ui basic tiny button">
|
||||
<translate :translate-context="'Content/Moderation/Button.Label'">Remove filter</translate>
|
||||
<translate translate-context="Content/Moderation/Button.Label">Remove filter</translate>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -80,7 +80,7 @@
|
|||
</section>
|
||||
<section v-else-if="albums && albums.length > 0" class="ui vertical stripe segment">
|
||||
<h2>
|
||||
<translate :translate-context="'Content/Artist/Title'">Albums by this artist</translate>
|
||||
<translate translate-context="Content/Artist/Title">Albums by this artist</translate>
|
||||
</h2>
|
||||
<div class="ui cards" >
|
||||
<album-card :mode="'rich'" :album="album" :key="album.id" v-for="album in albums"></album-card>
|
||||
|
@ -88,16 +88,16 @@
|
|||
</section>
|
||||
<section v-if="tracks.length > 0" class="ui vertical stripe segment">
|
||||
<h2>
|
||||
<translate :translate-context="'Content/Artist/Title'">Tracks by this artist</translate>
|
||||
<translate translate-context="Content/Artist/Title">Tracks by this artist</translate>
|
||||
</h2>
|
||||
<track-table :display-position="true" :tracks="tracks"></track-table>
|
||||
</section>
|
||||
<section class="ui vertical stripe segment">
|
||||
<h2>
|
||||
<translate :translate-context="'Content/Artist/Title'">User libraries</translate>
|
||||
<translate translate-context="Content/Artist/Title">User libraries</translate>
|
||||
</h2>
|
||||
<library-widget @loaded="libraries = $event" :url="'artists/' + id + '/libraries/'">
|
||||
<translate :translate-context="'Content/Artist/Paragraph'" slot="subtitle">This artist is present in the following libraries:</translate>
|
||||
<translate translate-context="Content/Artist/Paragraph" slot="subtitle">This artist is present in the following libraries:</translate>
|
||||
</library-widget>
|
||||
</section>
|
||||
</template>
|
||||
|
|
|
@ -2,18 +2,18 @@
|
|||
<main v-title="labels.title">
|
||||
<section class="ui vertical stripe segment">
|
||||
<h2 class="ui header">
|
||||
<translate :translate-context="'Content/Artist/Title'">Browsing artists</translate>
|
||||
<translate translate-context="Content/Artist/Title">Browsing artists</translate>
|
||||
</h2>
|
||||
<div :class="['ui', {'loading': isLoading}, 'form']">
|
||||
<div class="fields">
|
||||
<div class="field">
|
||||
<label>
|
||||
<translate :translate-context="'Content/Search/Input.Label/Verb'">Search</translate>
|
||||
<translate translate-context="Content/Search/Input.Label/Verb">Search</translate>
|
||||
</label>
|
||||
<input type="text" name="search" v-model="query" :placeholder="labels.searchPlaceholder"/>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><translate :translate-context="'Content/Search/Dropdown.Label/Noun'">Ordering</translate></label>
|
||||
<label><translate translate-context="Content/Search/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]] }}
|
||||
|
@ -21,14 +21,14 @@
|
|||
</select>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><translate :translate-context="'Content/Search/Dropdown.Label/Noun'">Ordering direction</translate></label>
|
||||
<label><translate translate-context="Content/Search/Dropdown.Label/Noun">Ordering direction</translate></label>
|
||||
<select class="ui dropdown" v-model="orderingDirection">
|
||||
<option value="+"><translate :translate-context="'Content/Search/Dropdown'">Ascending</translate></option>
|
||||
<option value="-"><translate :translate-context="'Content/Search/Dropdown'">Descending</translate></option>
|
||||
<option value="+"><translate translate-context="Content/Search/Dropdown">Ascending</translate></option>
|
||||
<option value="-"><translate translate-context="Content/Search/Dropdown">Descending</translate></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><translate :translate-context="'Content/Search/Dropdown.Label'">Results per page</translate></label>
|
||||
<label><translate translate-context="Content/Search/Dropdown.Label">Results per page</translate></label>
|
||||
<select class="ui dropdown" v-model="paginateBy">
|
||||
<option :value="parseInt(12)">12</option>
|
||||
<option :value="parseInt(25)">25</option>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<div class="content">
|
||||
<div class="header">
|
||||
<router-link :to="detailUrl">
|
||||
<translate :translate-context="'Content/Library/Card/Short'" :translate-params="{id: obj.uuid.substring(0, 8)}">Modification %{ id }</translate>
|
||||
<translate translate-context="Content/Library/Card/Short" :translate-params="{id: obj.uuid.substring(0, 8)}">Modification %{ id }</translate>
|
||||
</router-link>
|
||||
</div>
|
||||
<div class="meta">
|
||||
|
@ -11,7 +11,7 @@
|
|||
v-if="obj.target && obj.target.type === 'track'"
|
||||
:to="{name: 'library.tracks.detail', params: {id: obj.target.id }}">
|
||||
<i class="music icon"></i>
|
||||
<translate :translate-context="'Content/Library/Card/Short'" :translate-params="{id: obj.target.id, name: obj.target.repr}">Track #%{ id } - %{ name }</translate>
|
||||
<translate translate-context="Content/Library/Card/Short" :translate-params="{id: obj.target.id, name: obj.target.repr}">Track #%{ id } - %{ name }</translate>
|
||||
</router-link>
|
||||
<br>
|
||||
<human-date :date="obj.creation_date" :icon="true"></human-date>
|
||||
|
@ -19,19 +19,19 @@
|
|||
<span class="right floated">
|
||||
<span v-if="obj.is_approved && obj.is_applied">
|
||||
<i class="green check icon"></i>
|
||||
<translate :translate-context="'Content/Library/Card/Short'">Approved and applied</translate>
|
||||
<translate translate-context="Content/Library/Card/Short">Approved and applied</translate>
|
||||
</span>
|
||||
<span v-else-if="obj.is_approved">
|
||||
<i class="green check icon"></i>
|
||||
<translate :translate-context="'Content/Library/Card/Short'">Approved</translate>
|
||||
<translate translate-context="Content/Library/Card/Short">Approved</translate>
|
||||
</span>
|
||||
<span v-else-if="obj.is_approved === null">
|
||||
<i class="yellow hourglass icon"></i>
|
||||
<translate :translate-context="'Content/Library/Card/Short'">Pending review</translate>
|
||||
<translate translate-context="Content/Library/Card/Short">Pending review</translate>
|
||||
</span>
|
||||
<span v-else-if="obj.is_approved === false">
|
||||
<i class="red x icon"></i>
|
||||
<translate :translate-context="'Content/Library/Card/Short'">Rejected</translate>
|
||||
<translate translate-context="Content/Library/Card/Short">Rejected</translate>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
@ -43,9 +43,9 @@
|
|||
<table v-if="obj.type === 'update'" class="ui celled very basic fixed stacking table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><translate :translate-context="'Content/Library/Card.Table.Header/Short'">Field</translate></th>
|
||||
<th><translate :translate-context="'Content/Library/Card.Table.Header/Short'">Old value</translate></th>
|
||||
<th><translate :translate-context="'Content/Library/Card.Table.Header/Short'">New value</translate></th>
|
||||
<th><translate translate-context="Content/Library/Card.Table.Header/Short">Field</translate></th>
|
||||
<th><translate translate-context="Content/Library/Card.Table.Header/Short">Old value</translate></th>
|
||||
<th><translate translate-context="Content/Library/Card.Table.Header/Short">New value</translate></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -58,7 +58,7 @@
|
|||
</span>
|
||||
</td>
|
||||
<td v-else>
|
||||
<translate :translate-context="'*/*/*'">N/A</translate>
|
||||
<translate translate-context="*/*/*">N/A</translate>
|
||||
</td>
|
||||
|
||||
<td v-if="field.diff">
|
||||
|
@ -79,24 +79,24 @@
|
|||
v-if="canApprove && obj.is_approved !== true"
|
||||
@click="approve(true)"
|
||||
:class="['ui', {loading: isLoading}, 'green', 'basic', 'button']">
|
||||
<translate :translate-context="'Content/Library/Button.Label'">Approve</translate>
|
||||
<translate translate-context="Content/Library/Button.Label">Approve</translate>
|
||||
</button>
|
||||
<button
|
||||
v-if="canApprove && obj.is_approved === null"
|
||||
@click="approve(false)"
|
||||
:class="['ui', {loading: isLoading}, 'yellow', 'basic', 'button']">
|
||||
<translate :translate-context="'Content/Library/Button.Label'">Reject</translate>
|
||||
<translate translate-context="Content/Library/Button.Label">Reject</translate>
|
||||
</button>
|
||||
<dangerous-button
|
||||
v-if="canDelete"
|
||||
:class="['ui', {loading: isLoading}, 'basic button']"
|
||||
:action="remove">
|
||||
<translate :translate-context="'*/*/*/Verb'">Delete</translate>
|
||||
<p slot="modal-header"><translate :translate-context="'Popup/Library/Title'">Delete this suggestion?</translate></p>
|
||||
<translate translate-context="*/*/*/Verb">Delete</translate>
|
||||
<p slot="modal-header"><translate translate-context="Popup/Library/Title">Delete this suggestion?</translate></p>
|
||||
<div slot="modal-content">
|
||||
<p><translate :translate-context="'Popup/Library/Paragraph'">The suggestion will be completely removed, this action is irreversible.</translate></p>
|
||||
<p><translate translate-context="Popup/Library/Paragraph">The suggestion will be completely removed, this action is irreversible.</translate></p>
|
||||
</div>
|
||||
<p slot="modal-confirm"><translate :translate-context="'Popup/Library/Button.Label'">Delete</translate></p>
|
||||
<p slot="modal-confirm"><translate translate-context="Popup/Library/Button.Label">Delete</translate></p>
|
||||
</dangerous-button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<div v-if="submittedMutation">
|
||||
<div class="ui positive message">
|
||||
<div class="header"><translate :translate-context="'Content/Library/Paragraph'">Your edit was successfully submitted.</translate></div>
|
||||
<div class="header"><translate translate-context="Content/Library/Paragraph">Your edit was successfully submitted.</translate></div>
|
||||
</div>
|
||||
<edit-card :obj="submittedMutation" :current-state="currentState" />
|
||||
<button class="ui button" @click.prevent="submittedMutation = null">
|
||||
<translate :translate-context="'Content/Library/Button.Label'">
|
||||
<translate translate-context="Content/Library/Button.Label">
|
||||
Submit another edit
|
||||
</translate>
|
||||
</button>
|
||||
|
@ -15,28 +15,28 @@
|
|||
<edit-list :filters="editListFilters" :url="mutationsUrl" :obj="object" :currentState="currentState">
|
||||
<div slot="title">
|
||||
<template v-if="showPendingReview">
|
||||
<translate :translate-context="'Content/Library/Paragraph'">
|
||||
<translate translate-context="Content/Library/Paragraph">
|
||||
Recent edits awaiting review
|
||||
</translate>
|
||||
<button class="ui tiny basic right floated button" @click.prevent="showPendingReview = false">
|
||||
<translate :translate-context="'Content/Library/Button.Label'">
|
||||
<translate translate-context="Content/Library/Button.Label">
|
||||
Show all edits
|
||||
</translate>
|
||||
</button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<translate :translate-context="'Content/Library/Paragraph'">
|
||||
<translate translate-context="Content/Library/Paragraph">
|
||||
Recent edits
|
||||
</translate>
|
||||
<button class="ui tiny basic right floated button" @click.prevent="showPendingReview = true">
|
||||
<translate :translate-context="'Content/Library/Button.Label'">
|
||||
<translate translate-context="Content/Library/Button.Label">
|
||||
Retrict to unreviewed edits
|
||||
</translate>
|
||||
</button>
|
||||
</template>
|
||||
</div>
|
||||
<empty-state slot="empty-state">
|
||||
<translate :translate-context="'Content/Library/Paragraph'">
|
||||
<translate translate-context="Content/Library/Paragraph">
|
||||
Suggest a change using the form below.
|
||||
</translate>
|
||||
</empty-state>
|
||||
|
@ -44,13 +44,13 @@
|
|||
<form class="ui form" @submit.prevent="submit()">
|
||||
<div class="ui hidden divider"></div>
|
||||
<div v-if="errors.length > 0" class="ui negative message">
|
||||
<div class="header"><translate :translate-context="'Content/Library/Error message.Title'">Error while submitting edit</translate></div>
|
||||
<div class="header"><translate translate-context="Content/Library/Error message.Title">Error while submitting edit</translate></div>
|
||||
<ul class="list">
|
||||
<li v-for="error in errors">{{ error }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div v-if="!canEdit" class="ui message">
|
||||
<translate :translate-context="'Content/Library/Paragraph'">
|
||||
<translate translate-context="Content/Library/Paragraph">
|
||||
You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval.
|
||||
</translate>
|
||||
</div>
|
||||
|
@ -62,12 +62,12 @@
|
|||
<div v-if="values[fieldConfig.id] != initialValues[fieldConfig.id]">
|
||||
<button class="ui tiny basic right floated reset button" form="noop" @click.prevent="values[fieldConfig.id] = initialValues[fieldConfig.id]">
|
||||
<i class="undo icon"></i>
|
||||
<translate :translate-context="'Content/Library/Button.Label'" :translate-params="{value: initialValues[fieldConfig.id]}">Reset to initial value: %{ value }</translate>
|
||||
<translate translate-context="Content/Library/Button.Label" :translate-params="{value: initialValues[fieldConfig.id]}">Reset to initial value: %{ value }</translate>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label for="summary"><translate :translate-context="'*/*/*'">Summary (optional)</translate></label>
|
||||
<label for="summary"><translate translate-context="*/*/*">Summary (optional)</translate></label>
|
||||
<textarea name="change-summary" v-model="summary" id="change-summary" rows="3" :placeholder="labels.summaryPlaceholder"></textarea>
|
||||
</div>
|
||||
<router-link
|
||||
|
@ -75,11 +75,11 @@
|
|||
v-if="objectType === 'track'"
|
||||
:to="{name: 'library.tracks.detail', params: {id: object.id }}"
|
||||
>
|
||||
<translate :translate-context="'Content/*/Button.Label'">Cancel</translate>
|
||||
<translate translate-context="Content/*/Button.Label">Cancel</translate>
|
||||
</router-link>
|
||||
<button :class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']" type="submit" :disabled="isLoading || !mutationPayload">
|
||||
<translate v-if="canEdit" key="1" :translate-context="'Content/Library/Button.Label/Verb'">Submit and apply edit</translate>
|
||||
<translate v-else key="2" :translate-context="'Content/Library/Button.Label/Verb'">Submit suggestion</translate>
|
||||
<translate v-if="canEdit" key="1" translate-context="Content/Library/Button.Label/Verb">Submit and apply edit</translate>
|
||||
<translate v-else key="2" translate-context="Content/Library/Button.Label/Verb">Submit suggestion</translate>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="ui top attached tabular menu">
|
||||
<a :class="['item', {active: currentTab === 'summary'}]" @click="currentTab = 'summary'"><translate :translate-context="'Content/Library/Tab.Title/Short'">Summary</translate></a>
|
||||
<a :class="['item', {active: currentTab === 'summary'}]" @click="currentTab = 'summary'"><translate translate-context="Content/Library/Tab.Title/Short">Summary</translate></a>
|
||||
<a :class="['item', {active: currentTab === 'uploads'}]" @click="currentTab = 'uploads'">
|
||||
<translate :translate-context="'Content/Library/Tab.Title/Short'">Uploading</translate>
|
||||
<translate translate-context="Content/Library/Tab.Title/Short">Uploading</translate>
|
||||
<div v-if="files.length === 0" class="ui label">
|
||||
0
|
||||
</div>
|
||||
|
@ -15,7 +15,7 @@
|
|||
</div>
|
||||
</a>
|
||||
<a :class="['item', {active: currentTab === 'processing'}]" @click="currentTab = 'processing'">
|
||||
<translate :translate-context="'Content/Library/Tab.Title/Short'">Processing</translate>
|
||||
<translate translate-context="Content/Library/Tab.Title/Short">Processing</translate>
|
||||
<div v-if="processableFiles === 0" class="ui label">
|
||||
0
|
||||
</div>
|
||||
|
@ -29,19 +29,19 @@
|
|||
</div>
|
||||
|
||||
<div :class="['ui', 'bottom', 'attached', 'segment', {hidden: currentTab != 'summary'}]">
|
||||
<h2 class="ui header"><translate :translate-context="'Content/Library/Title/Verb'">Upload new tracks</translate></h2>
|
||||
<h2 class="ui header"><translate translate-context="Content/Library/Title/Verb">Upload new tracks</translate></h2>
|
||||
<div class="ui message">
|
||||
<p><translate :translate-context="'Content/Library/Paragraph'">You are about to upload music to your library. Before proceeding, please ensure that:</translate></p>
|
||||
<p><translate translate-context="Content/Library/Paragraph">You are about to upload music to your library. Before proceeding, please ensure that:</translate></p>
|
||||
<ul>
|
||||
<li v-if="library.privacy_level != 'me'">
|
||||
<translate :translate-context="'Content/Library/List item'">You are not uploading copyrighted content in a public library, otherwise you may be infringing the law</translate>
|
||||
<translate translate-context="Content/Library/List item">You are not uploading copyrighted content in a public library, otherwise you may be infringing the law</translate>
|
||||
</li>
|
||||
<li>
|
||||
<translate :translate-context="'Content/Library/List item'">The music files you are uploading are tagged properly.</translate>
|
||||
<a href="http://picard.musicbrainz.org/" target='_blank'><translate :translate-context="'Content/Library/Link'">We recommend using Picard for that purpose.</translate></a>
|
||||
<translate translate-context="Content/Library/List item">The music files you are uploading are tagged properly.</translate>
|
||||
<a href="http://picard.musicbrainz.org/" target='_blank'><translate translate-context="Content/Library/Link">We recommend using Picard for that purpose.</translate></a>
|
||||
</li>
|
||||
<li>
|
||||
<translate :translate-context="'Content/Library/List item'">The uploaded music files are in OGG, Flac or MP3 format</translate>
|
||||
<translate translate-context="Content/Library/List item">The uploaded music files are in OGG, Flac or MP3 format</translate>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -49,14 +49,14 @@
|
|||
<div class="ui form">
|
||||
<div class="fields">
|
||||
<div class="ui four wide field">
|
||||
<label><translate :translate-context="'Content/Library/Input.Label/Noun'">Import reference</translate></label>
|
||||
<p><translate :translate-context="'Content/Library/Paragraph'">This reference will be used to group imported files together.</translate></p>
|
||||
<label><translate translate-context="Content/Library/Input.Label/Noun">Import reference</translate></label>
|
||||
<p><translate translate-context="Content/Library/Paragraph">This reference will be used to group imported files together.</translate></p>
|
||||
<input name="import-ref" type="text" v-model="importReference" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="ui green button" @click="currentTab = 'uploads'"><translate :translate-context="'Content/Library/Button.Label'">Proceed</translate></div>
|
||||
<div class="ui green button" @click="currentTab = 'uploads'"><translate translate-context="Content/Library/Button.Label">Proceed</translate></div>
|
||||
</div>
|
||||
<div :class="['ui', 'bottom', 'attached', 'segment', {hidden: currentTab != 'uploads'}]">
|
||||
<div class="ui container">
|
||||
|
@ -73,10 +73,10 @@
|
|||
@input-file="inputFile"
|
||||
ref="upload">
|
||||
<i class="upload icon"></i>
|
||||
<translate :translate-context="'Content/Library/Paragraph/Call to action'">Click to select files to upload or drag and drop files or directories</translate>
|
||||
<translate translate-context="Content/Library/Paragraph/Call to action">Click to select files to upload or drag and drop files or directories</translate>
|
||||
<br />
|
||||
<br />
|
||||
<i><translate :translate-context="'Content/Library/Paragraph'" :translate-params="{extensions: supportedExtensions.join(', ')}">Supported extensions: %{ extensions }</translate></i>
|
||||
<i><translate translate-context="Content/Library/Paragraph" :translate-params="{extensions: supportedExtensions.join(', ')}">Supported extensions: %{ extensions }</translate></i>
|
||||
</file-upload-widget>
|
||||
</div>
|
||||
<div v-if="files.length > 0" class="table-wrapper">
|
||||
|
@ -84,9 +84,9 @@
|
|||
<table class="ui unstackable table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><translate :translate-context="'Content/Library/Table.Label'">Filename</translate></th>
|
||||
<th><translate :translate-context="'Content/Library/Table.Label'">Size</translate></th>
|
||||
<th><translate :translate-context="'Content/Library/Table.Label'">Status</translate></th>
|
||||
<th><translate translate-context="Content/Library/Table.Label">Filename</translate></th>
|
||||
<th><translate translate-context="Content/Library/Table.Label">Size</translate></th>
|
||||
<th><translate translate-context="Content/Library/Table.Label">Status</translate></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -100,14 +100,14 @@
|
|||
</span>
|
||||
</span>
|
||||
<span v-else-if="file.success" class="ui green label">
|
||||
<translate :translate-context="'Content/Library/Table'" key="1">Uploaded</translate>
|
||||
<translate translate-context="Content/Library/Table" key="1">Uploaded</translate>
|
||||
</span>
|
||||
<span v-else-if="file.active" class="ui yellow label">
|
||||
<translate :translate-context="'Content/Library/Table'" key="2">Uploading…</translate>
|
||||
<translate translate-context="Content/Library/Table" key="2">Uploading…</translate>
|
||||
({{ parseInt(file.progress) }}%)
|
||||
</span>
|
||||
<template v-else>
|
||||
<span class="ui label"><translate :translate-context="'Content/Library/Table'" key="3">Pending</translate></span>
|
||||
<span class="ui label"><translate translate-context="Content/Library/Table" key="3">Pending</translate></span>
|
||||
<button class="ui tiny basic red icon button" @click.prevent="$refs.upload.remove(file)"><i class="delete icon"></i></button>
|
||||
</template>
|
||||
</td>
|
||||
|
|
|
@ -4,17 +4,17 @@
|
|||
<div class="ui stackable three column grid">
|
||||
<div class="column">
|
||||
<track-widget :url="'history/listenings/'" :filters="{scope: 'user', ordering: '-creation_date'}">
|
||||
<template slot="title"><translate :translate-context="'Content/Home/Title'">Recently listened</translate></template>
|
||||
<template slot="title"><translate translate-context="Content/Home/Title">Recently listened</translate></template>
|
||||
</track-widget>
|
||||
</div>
|
||||
<div class="column">
|
||||
<track-widget :url="'favorites/tracks/'" :filters="{scope: 'user', ordering: '-creation_date'}">
|
||||
<template slot="title"><translate :translate-context="'Content/Home/Title'">Recently favorited</translate></template>
|
||||
<template slot="title"><translate translate-context="Content/Home/Title">Recently favorited</translate></template>
|
||||
</track-widget>
|
||||
</div>
|
||||
<div class="column">
|
||||
<playlist-widget :url="'playlists/'" :filters="{scope: 'user', playable: true, ordering: '-creation_date'}">
|
||||
<template slot="title"><translate :translate-context="'Content/Home/Title'">Playlists</translate></template>
|
||||
<template slot="title"><translate translate-context="Content/Home/Title">Playlists</translate></template>
|
||||
</playlist-widget>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -22,7 +22,7 @@
|
|||
<div class="ui stackable one column grid">
|
||||
<div class="column">
|
||||
<album-widget :filters="{playable: true, ordering: '-creation_date'}">
|
||||
<template slot="title"><translate :translate-context="'Content/Home/Title'">Recently added</translate></template>
|
||||
<template slot="title"><translate translate-context="Content/Home/Title">Recently added</translate></template>
|
||||
</album-widget>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -2,19 +2,19 @@
|
|||
<div class="main library pusher">
|
||||
<nav class="ui secondary pointing menu" role="navigation" :aria-label="labels.secondaryMenu">
|
||||
<router-link class="ui item" to="/library" exact>
|
||||
<translate :translate-context="'Menu/Home/Link/Verb'">Browse</translate>
|
||||
<translate translate-context="Menu/Home/Link/Verb">Browse</translate>
|
||||
</router-link>
|
||||
<router-link class="ui item" to="/library/albums" exact>
|
||||
<translate :translate-context="'Menu/Home/Link'">Albums</translate>
|
||||
<translate translate-context="Menu/Home/Link">Albums</translate>
|
||||
</router-link>
|
||||
<router-link class="ui item" to="/library/artists" exact>
|
||||
<translate :translate-context="'Menu/Home/Link'">Artists</translate>
|
||||
<translate translate-context="Menu/Home/Link">Artists</translate>
|
||||
</router-link>
|
||||
<router-link class="ui item" to="/library/radios" exact>
|
||||
<translate :translate-context="'Menu/Home/Link'">Radios</translate>
|
||||
<translate translate-context="Menu/Home/Link">Radios</translate>
|
||||
</router-link>
|
||||
<router-link class="ui item" to="/library/playlists" exact>
|
||||
<translate :translate-context="'Menu/Home/Link'">Playlists</translate>
|
||||
<translate translate-context="Menu/Home/Link">Playlists</translate>
|
||||
</router-link>
|
||||
</nav>
|
||||
<router-view :key="$route.fullPath"></router-view>
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
<main v-title="labels.title">
|
||||
<section class="ui vertical stripe segment">
|
||||
<h2 class="ui header">
|
||||
<translate :translate-context="'Content/Radio/Title'">Browsing radios</translate>
|
||||
<translate translate-context="Content/Radio/Title">Browsing radios</translate>
|
||||
</h2>
|
||||
<div class="ui hidden divider"></div>
|
||||
<div class="ui row">
|
||||
<h3 class="ui header">
|
||||
<translate :translate-context="'Content/Radio/Title'">Instance radios</translate>
|
||||
<translate translate-context="Content/Radio/Title">Instance radios</translate>
|
||||
</h3>
|
||||
<div class="ui cards">
|
||||
<radio-card :type="'favorites'"></radio-card>
|
||||
|
@ -18,20 +18,20 @@
|
|||
|
||||
<div class="ui hidden divider"></div>
|
||||
<h3 class="ui header">
|
||||
<translate :translate-context="'Content/Radio/Title'">User radios</translate>
|
||||
<translate translate-context="Content/Radio/Title">User radios</translate>
|
||||
</h3>
|
||||
<router-link class="ui green basic button" to="/library/radios/build" exact>
|
||||
<translate :translate-context="'Content/Radio/Button.Label/Verb'">Create your own radio</translate>
|
||||
<translate translate-context="Content/Radio/Button.Label/Verb">Create your own radio</translate>
|
||||
</router-link>
|
||||
<div class="ui hidden divider"></div>
|
||||
<div :class="['ui', {'loading': isLoading}, 'form']">
|
||||
<div class="fields">
|
||||
<div class="field">
|
||||
<label><translate :translate-context="'Content/Search/Input.Label/Verb'">Search</translate></label>
|
||||
<label><translate translate-context="Content/Search/Input.Label/Verb">Search</translate></label>
|
||||
<input name="search" type="text" v-model="query" :placeholder="labels.searchPlaceholder"/>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><translate :translate-context="'Content/Search/Dropdown.Label'">Ordering</translate></label>
|
||||
<label><translate translate-context="Content/Search/Dropdown.Label">Ordering</translate></label>
|
||||
<select class="ui dropdown" v-model="ordering">
|
||||
<option v-for="option in orderingOptions" :value="option[0]">
|
||||
{{ sharedLabels.filters[option[1]] }}
|
||||
|
@ -39,18 +39,18 @@
|
|||
</select>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><translate :translate-context="'Content/Search/Dropdown.Label'">Order</translate></label>
|
||||
<label><translate translate-context="Content/Search/Dropdown.Label">Order</translate></label>
|
||||
<select class="ui dropdown" v-model="orderingDirection">
|
||||
<option value="+">
|
||||
<translate :translate-context="'Content/Search/Dropdown'">Ascending</translate>
|
||||
<translate translate-context="Content/Search/Dropdown">Ascending</translate>
|
||||
</option>
|
||||
<option value="-">
|
||||
<translate :translate-context="'Content/Search/Dropdown'">Descending</translate>
|
||||
<translate translate-context="Content/Search/Dropdown">Descending</translate>
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><translate :translate-context="'Content/Search/Dropdown.Label'">Results per page</translate></label>
|
||||
<label><translate translate-context="Content/Search/Dropdown.Label">Results per page</translate></label>
|
||||
<select class="ui dropdown" v-model="paginateBy">
|
||||
<option :value="parseInt(12)">12</option>
|
||||
<option :value="parseInt(25)">25</option>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<div class="content">
|
||||
{{ track.title }}
|
||||
<div class="sub header">
|
||||
<div :translate-context="'Content/Track/Paragraph'"
|
||||
<div translate-context="Content/Track/Paragraph"
|
||||
v-translate="{album: track.album.title, artist: track.artist.name, albumUrl: albumUrl, artistUrl: artistUrl}"
|
||||
>From album <a class="internal" href="%{ albumUrl }">%{ album }</a> by <a class="internal" href="%{ artistUrl }">%{ artist }</a></div>
|
||||
</div>
|
||||
|
@ -23,33 +23,33 @@
|
|||
</h2>
|
||||
|
||||
<play-button class="orange" :track="track">
|
||||
<translate :translate-context="'*/Queue/Button.Label/Short, Verb'">Play</translate>
|
||||
<translate translate-context="*/Queue/Button.Label/Short, Verb">Play</translate>
|
||||
</play-button>
|
||||
<track-favorite-icon :track="track" :button="true"></track-favorite-icon>
|
||||
<track-playlist-icon :button="true" v-if="$store.state.auth.authenticated" :track="track"></track-playlist-icon>
|
||||
|
||||
<a :href="wikipediaUrl" target="_blank" class="ui icon labeled button">
|
||||
<i class="wikipedia w icon"></i>
|
||||
<translate :translate-context="'Content/*/Link/Verb'">Search on Wikipedia</translate>
|
||||
<translate translate-context="Content/*/Link/Verb">Search on Wikipedia</translate>
|
||||
</a>
|
||||
<a v-if="musicbrainzUrl" :href="musicbrainzUrl" target="_blank" class="ui icon labeled button">
|
||||
<i class="external icon"></i>
|
||||
<translate :translate-context="'Content/*/Link/Verb'">View on MusicBrainz</translate>
|
||||
<translate translate-context="Content/*/Link/Verb">View on MusicBrainz</translate>
|
||||
</a>
|
||||
<a v-if="upload" :href="downloadUrl" target="_blank" class="ui icon labeled button">
|
||||
<i class="download icon"></i>
|
||||
<translate :translate-context="'Content/Track/Link/Verb'">Download</translate>
|
||||
<translate translate-context="Content/Track/Link/Verb">Download</translate>
|
||||
</a>
|
||||
<template v-if="publicLibraries.length > 0">
|
||||
<button
|
||||
@click="showEmbedModal = !showEmbedModal"
|
||||
class="ui icon labeled button">
|
||||
<i class="code icon"></i>
|
||||
<translate :translate-context="'Content/Track/Button.Label/Verb'">Embed</translate>
|
||||
<translate translate-context="Content/Track/Button.Label/Verb">Embed</translate>
|
||||
</button>
|
||||
<modal :show.sync="showEmbedModal">
|
||||
<div class="header">
|
||||
<translate :translate-context="'Popup/Track/Title'">Embed this track on your website</translate>
|
||||
<translate translate-context="Popup/Track/Title">Embed this track on your website</translate>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="description">
|
||||
|
@ -59,7 +59,7 @@
|
|||
</div>
|
||||
<div class="actions">
|
||||
<div class="ui deny button">
|
||||
<translate :translate-context="'Popup/Track/Button/Verb'">Cancel</translate>
|
||||
<translate translate-context="Popup/Track/Button/Verb">Cancel</translate>
|
||||
</div>
|
||||
</div>
|
||||
</modal>
|
||||
|
@ -68,7 +68,7 @@
|
|||
:to="{name: 'library.tracks.edit', params: {id: track.id }}"
|
||||
class="ui icon labeled button">
|
||||
<i class="edit icon"></i>
|
||||
<translate :translate-context="'Content/Track/Button.Label/Verb'">Edit…</translate>
|
||||
<translate translate-context="Content/Track/Button.Label/Verb">Edit…</translate>
|
||||
</router-link>
|
||||
</div>
|
||||
</section>
|
||||
|
|
|
@ -3,64 +3,64 @@
|
|||
<div v-if="track">
|
||||
<section class="ui vertical stripe center aligned segment">
|
||||
<h2 class="ui header">
|
||||
<translate :translate-context="'Content/Track/Title/Noun'">Track information</translate>
|
||||
<translate translate-context="Content/Track/Title/Noun">Track information</translate>
|
||||
</h2>
|
||||
<table class="ui very basic collapsing celled center aligned table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<translate :translate-context="'Content/Track/Table.Label/Noun'">Copyright</translate>
|
||||
<translate translate-context="Content/Track/Table.Label/Noun">Copyright</translate>
|
||||
</td>
|
||||
<td v-if="track.copyright" :title="track.copyright">{{ track.copyright|truncate(50) }}</td>
|
||||
<td v-else>
|
||||
<translate :translate-context="'Content/Track/Table.Paragraph'">No copyright information available for this track</translate>
|
||||
<translate translate-context="Content/Track/Table.Paragraph">No copyright information available for this track</translate>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<translate :translate-context="'Content/Track/Table.Label/Noun'">License</translate>
|
||||
<translate translate-context="Content/Track/Table.Label/Noun">License</translate>
|
||||
</td>
|
||||
<td v-if="license">
|
||||
<a :href="license.url" target="_blank" rel="noopener noreferrer">{{ license.name }}</a>
|
||||
</td>
|
||||
<td v-else>
|
||||
<translate :translate-context="'Content/Track/Table.Paragraph'">No licensing information for this track</translate>
|
||||
<translate translate-context="Content/Track/Table.Paragraph">No licensing information for this track</translate>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<translate :translate-context="'Content/Track/Table.Label'">Duration</translate>
|
||||
<translate translate-context="Content/Track/Table.Label">Duration</translate>
|
||||
</td>
|
||||
<td v-if="upload && upload.duration">{{ time.parse(upload.duration) }}</td>
|
||||
<td v-else>
|
||||
<translate :translate-context="'*/*/*'">N/A</translate>
|
||||
<translate translate-context="*/*/*">N/A</translate>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<translate :translate-context="'Content/Track/Table.Label'">Size</translate>
|
||||
<translate translate-context="Content/Track/Table.Label">Size</translate>
|
||||
</td>
|
||||
<td v-if="upload && upload.size">{{ upload.size | humanSize }}</td>
|
||||
<td v-else>
|
||||
<translate :translate-context="'*/*/*'">N/A</translate>
|
||||
<translate translate-context="*/*/*">N/A</translate>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<translate :translate-context="'Content/Track/Table.Label'">Bitrate</translate>
|
||||
<translate translate-context="Content/Track/Table.Label">Bitrate</translate>
|
||||
</td>
|
||||
<td v-if="upload && upload.bitrate">{{ upload.bitrate | humanSize }}/s</td>
|
||||
<td v-else>
|
||||
<translate :translate-context="'*/*/*'">N/A</translate>
|
||||
<translate translate-context="*/*/*">N/A</translate>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<translate :translate-context="'Content/Track/Table.Label/Noun'">Type</translate>
|
||||
<translate translate-context="Content/Track/Table.Label/Noun">Type</translate>
|
||||
</td>
|
||||
<td v-if="upload && upload.extension">{{ upload.extension }}</td>
|
||||
<td v-else>
|
||||
<translate :translate-context="'*/*/*'">N/A</translate>
|
||||
<translate translate-context="*/*/*">N/A</translate>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -68,7 +68,7 @@
|
|||
</section>
|
||||
<section class="ui vertical stripe center aligned segment">
|
||||
<h2>
|
||||
<translate :translate-context="'Content/Track/Title'">Lyrics</translate>
|
||||
<translate translate-context="Content/Track/Title">Lyrics</translate>
|
||||
</h2>
|
||||
<div v-if="isLoadingLyrics" class="ui vertical segment">
|
||||
<div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div>
|
||||
|
@ -76,20 +76,20 @@
|
|||
<div v-if="lyrics" v-html="lyrics.content_rendered"></div>
|
||||
<template v-if="!isLoadingLyrics & !lyrics">
|
||||
<p>
|
||||
<translate :translate-context="'Content/Track/Paragraph'">No lyrics available for this track.</translate>
|
||||
<translate translate-context="Content/Track/Paragraph">No lyrics available for this track.</translate>
|
||||
</p>
|
||||
<a class="ui button" target="_blank" :href="lyricsSearchUrl">
|
||||
<i class="search icon"></i>
|
||||
<translate :translate-context="'Content/Track/Link/Verb'">Search on lyrics.wikia.com</translate>
|
||||
<translate translate-context="Content/Track/Link/Verb">Search on lyrics.wikia.com</translate>
|
||||
</a>
|
||||
</template>
|
||||
</section>
|
||||
<section class="ui vertical stripe segment">
|
||||
<h2>
|
||||
<translate :translate-context="'Content/Track/Title'">User libraries</translate>
|
||||
<translate translate-context="Content/Track/Title">User libraries</translate>
|
||||
</h2>
|
||||
<library-widget @loaded="$emit('libraries-loaded', $event)" :url="'tracks/' + id + '/libraries/'">
|
||||
<translate :translate-context="'Content/Track/Paragraph'" slot="subtitle">This track is present in the following libraries:</translate>
|
||||
<translate translate-context="Content/Track/Paragraph" slot="subtitle">This track is present in the following libraries:</translate>
|
||||
</library-widget>
|
||||
</section>
|
||||
</div>
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
<section class="ui vertical stripe segment">
|
||||
<div class="ui text container">
|
||||
<h2>
|
||||
<translate v-if="canEdit" key="1" :translate-context="'Content/*/Title'">Edit this track</translate>
|
||||
<translate v-else key="2" :translate-context="'Content/*/Title'">Suggest an edit on this track</translate>
|
||||
<translate v-if="canEdit" key="1" translate-context="Content/*/Title">Edit this track</translate>
|
||||
<translate v-else key="2" translate-context="Content/*/Title">Suggest an edit on this track</translate>
|
||||
</h2>
|
||||
<edit-form :object-type="objectType" :object="object" :can-edit="canEdit"></edit-form>
|
||||
</div>
|
||||
|
|
|
@ -3,53 +3,53 @@
|
|||
<div>
|
||||
<section>
|
||||
<h2 class="ui header">
|
||||
<translate :translate-context="'Content/Radio/Title'">Builder</translate>
|
||||
<translate translate-context="Content/Radio/Title">Builder</translate>
|
||||
</h2>
|
||||
<p><translate :translate-context="'Content/Radio/Paragraph'">You can use this interface to build your own custom radio, which will play tracks according to your criteria.</translate></p>
|
||||
<p><translate translate-context="Content/Radio/Paragraph">You can use this interface to build your own custom radio, which will play tracks according to your criteria.</translate></p>
|
||||
<div class="ui form">
|
||||
<div v-if="success" class="ui positive message">
|
||||
<div class="header">
|
||||
<template v-if="radioName">
|
||||
<translate :translate-context="'Content/Radio/Message'">Radio updated</translate>
|
||||
<translate translate-context="Content/Radio/Message">Radio updated</translate>
|
||||
</template>
|
||||
<template v-else>
|
||||
<translate :translate-context="'Content/Radio/Message'">Radio created</translate>
|
||||
<translate translate-context="Content/Radio/Message">Radio created</translate>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
<div class="">
|
||||
<div class="field">
|
||||
<label for="name"><translate :translate-context="'Content/Radio/Input.Label/Noun'">Radio name</translate></label>
|
||||
<label for="name"><translate translate-context="Content/Radio/Input.Label/Noun">Radio name</translate></label>
|
||||
<input id="name" name="name" type="text" v-model="radioName" :placeholder="labels.placeholder.name" />
|
||||
</div>
|
||||
<div class="field">
|
||||
<label for="description"><translate :translate-context="'Content/Radio/Input.Label'">Description</translate></label>
|
||||
<label for="description"><translate translate-context="Content/Radio/Input.Label">Description</translate></label>
|
||||
<textarea rows="2" id="description" type="text" v-model="radioDesc" :placeholder="labels.placeholder.description" />
|
||||
</div>
|
||||
<div class="ui toggle checkbox">
|
||||
<input id="public" type="checkbox" v-model="isPublic" />
|
||||
<label for="public"><translate :translate-context="'Content/Radio/Checkbox.Label/Verb'">Display publicly</translate></label>
|
||||
<label for="public"><translate translate-context="Content/Radio/Checkbox.Label/Verb">Display publicly</translate></label>
|
||||
</div>
|
||||
<div class="ui hidden divider"></div>
|
||||
<button :disabled="!canSave" @click="save" :class="['ui', 'green', {loading: isLoading}, 'button']">
|
||||
<translate :translate-context="'Content/Radio/Button.Label/Verb'">Save</translate>
|
||||
<translate translate-context="Content/Radio/Button.Label/Verb">Save</translate>
|
||||
</button>
|
||||
<radio-button v-if="id" type="custom" :custom-radio-id="id"></radio-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui form">
|
||||
<p>
|
||||
<translate :translate-context="'Content/Radio/Paragraph'">Add filters to customize your radio</translate>
|
||||
<translate translate-context="Content/Radio/Paragraph">Add filters to customize your radio</translate>
|
||||
</p>
|
||||
<div class="inline field">
|
||||
<select class="ui dropdown" v-model="currentFilterType">
|
||||
<option value="">
|
||||
<translate :translate-context="'Content/Radio/Dropdown.Placeholder/Verb'">Select a filter</translate>
|
||||
<translate translate-context="Content/Radio/Dropdown.Placeholder/Verb">Select a filter</translate>
|
||||
</option>
|
||||
<option v-for="f in availableFilters" :value="f.type">{{ f.label }}</option>
|
||||
</select>
|
||||
<button :disabled="!currentFilterType" @click="add" class="ui button">
|
||||
<translate :translate-context="'Content/Radio/Button.Label/Verb'">Add filter</translate>
|
||||
<translate translate-context="Content/Radio/Button.Label/Verb">Add filter</translate>
|
||||
</button>
|
||||
</div>
|
||||
<p v-if="currentFilter">
|
||||
|
@ -59,11 +59,11 @@
|
|||
<table class="ui table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="two wide"><translate :translate-context="'Content/Radio/Table.Label/Noun'">Filter name</translate></th>
|
||||
<th class="one wide"><translate :translate-context="'Content/Radio/Table.Label/Verb'">Exclude</translate></th>
|
||||
<th class="six wide"><translate :translate-context="'Content/Radio/Table.Label/Verb (Value is a List of Parameters)'">Config</translate></th>
|
||||
<th class="five wide"><translate :translate-context="'Content/Radio/Table.Label/Noun (Value is a number of Tracks)'">Candidates</translate></th>
|
||||
<th class="two wide"><translate :translate-context="'Content/Radio/Table.Label/Noun (Value is a Button)'">Actions</translate></th>
|
||||
<th class="two wide"><translate translate-context="Content/Radio/Table.Label/Noun">Filter name</translate></th>
|
||||
<th class="one wide"><translate translate-context="Content/Radio/Table.Label/Verb">Exclude</translate></th>
|
||||
<th class="six wide"><translate translate-context="Content/Radio/Table.Label/Verb (Value is a List of Parameters)">Config</translate></th>
|
||||
<th class="five wide"><translate translate-context="Content/Radio/Table.Label/Noun (Value is a number of Tracks)">Candidates</translate></th>
|
||||
<th class="two wide"><translate translate-context="Content/Radio/Table.Label/Noun (Value is a Button)">Actions</translate></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
</span>
|
||||
<modal v-if="checkResult" :show.sync="showCandidadesModal">
|
||||
<div class="header">
|
||||
<translate :translate-context="'Popup/Radio/Title/Noun'">Tracks matching filter</translate>
|
||||
<translate translate-context="Popup/Radio/Title/Noun">Tracks matching filter</translate>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="description">
|
||||
|
@ -51,13 +51,13 @@
|
|||
</div>
|
||||
<div class="actions">
|
||||
<div class="ui black deny button">
|
||||
<translate :translate-context="'Popup/Radio/Button.Label/Verb'">Cancel</translate>
|
||||
<translate translate-context="Popup/Radio/Button.Label/Verb">Cancel</translate>
|
||||
</div>
|
||||
</div>
|
||||
</modal>
|
||||
</td>
|
||||
<td>
|
||||
<button @click="$emit('delete', index)" class="ui basic red button"><translate :translate-context="'Content/Radio/Button.Label/Verb'">Remove</translate></button>
|
||||
<button @click="$emit('delete', index)" class="ui basic red button"><translate translate-context="Content/Radio/Button.Label/Verb">Remove</translate></button>
|
||||
</td>
|
||||
</tr>
|
||||
</template>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue