Merge branch 'missing-localization' into 'develop'
Missing localization See merge request funkwhale/funkwhale!289
This commit is contained in:
commit
31ae2ecf06
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -12,7 +12,8 @@ xgettext --language=JavaScript --keyword=npgettext:1c,2,3 \
|
||||||
--from-code=utf-8 --join-existing --no-wrap \
|
--from-code=utf-8 --join-existing --no-wrap \
|
||||||
--package-name=$(node -e "console.log(require('./package.json').name);") \
|
--package-name=$(node -e "console.log(require('./package.json').name);") \
|
||||||
--package-version=$(node -e "console.log(require('./package.json').version);") \
|
--package-version=$(node -e "console.log(require('./package.json').version);") \
|
||||||
--output $locales_dir/app.pot $js_sources
|
--output $locales_dir/app.pot $js_sources \
|
||||||
|
--no-wrap
|
||||||
|
|
||||||
# Fix broken files path/lines in pot
|
# Fix broken files path/lines in pot
|
||||||
sed -e 's|#: src/|#: front/src/|' -i $locales_dir/app.pot
|
sed -e 's|#: src/|#: front/src/|' -i $locales_dir/app.pot
|
||||||
|
@ -23,6 +24,6 @@ for lang in $locales; do \
|
||||||
po_file=$locales_dir/$lang/LC_MESSAGES/app.po; \
|
po_file=$locales_dir/$lang/LC_MESSAGES/app.po; \
|
||||||
echo "msgmerge --update $po_file "; \
|
echo "msgmerge --update $po_file "; \
|
||||||
mkdir -p $(dirname $po_file); \
|
mkdir -p $(dirname $po_file); \
|
||||||
[ -f $po_file ] && msgmerge --lang=$lang --update $po_file $locales_dir/app.pot || msginit --no-translator --locale=$lang --input=$locales_dir/app.pot --output-file=$po_file; \
|
[ -f $po_file ] && msgmerge --lang=$lang --update $po_file $locales_dir/app.pot --no-wrap || msginit --no-wrap --no-translator --locale=$lang --input=$locales_dir/app.pot --output-file=$po_file; \
|
||||||
msgattrib --no-wrap --no-obsolete -o $po_file $po_file; \
|
msgattrib --no-wrap --no-obsolete -o $po_file $po_file; \
|
||||||
done;
|
done;
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
<div id="app">
|
<div id="app">
|
||||||
<div class="ui main text container instance-chooser" v-if="!$store.state.instance.instanceUrl">
|
<div class="ui main text container instance-chooser" v-if="!$store.state.instance.instanceUrl">
|
||||||
<div class="ui padded segment">
|
<div class="ui padded segment">
|
||||||
<h1 class="ui header">{{ $gettext('Choose your instance') }}</h1>
|
<h1 class="ui header"><translate>Choose your instance</translate></h1>
|
||||||
<form class="ui form" @submit.prevent="$store.dispatch('instance/setUrl', instanceUrl)">
|
<form class="ui form" @submit.prevent="$store.dispatch('instance/setUrl', instanceUrl)">
|
||||||
<p>{{ $gettext('You need to select an instance in order to continue') }}</p>
|
<p><translate>You need to select an instance in order to continue</translate></p>
|
||||||
<div class="ui action input">
|
<div class="ui action input">
|
||||||
<input type="text" v-model="instanceUrl">
|
<input type="text" v-model="instanceUrl">
|
||||||
<button type="submit" class="ui button">{{ $gettext('Submit') }}</button>
|
<button type="submit" class="ui button"><translate>Submit</translate></button>
|
||||||
</div>
|
</div>
|
||||||
<p>{{ $gettext('Suggested choices') }}</p>
|
<p>{{ $gettext('Suggested choices') }}</p>
|
||||||
<div class="ui bulleted list">
|
<div class="ui bulleted list">
|
||||||
|
@ -30,17 +30,17 @@
|
||||||
<h4 v-translate class="ui header">Links</h4>
|
<h4 v-translate class="ui header">Links</h4>
|
||||||
<div class="ui link list">
|
<div class="ui link list">
|
||||||
<router-link class="item" to="/about">
|
<router-link class="item" to="/about">
|
||||||
{{ $gettext('About this instance') }}
|
<translate>About this instance</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<a href="https://funkwhale.audio" class="item" target="_blank">{{ $gettext('Official website') }}</a>
|
<a href="https://funkwhale.audio" class="item" target="_blank"><translate>Official website</translate></a>
|
||||||
<a href="https://docs.funkwhale.audio" class="item" target="_blank">{{ $gettext('Documentation') }}</a>
|
<a href="https://docs.funkwhale.audio" class="item" target="_blank"><translate>Documentation</translate></a>
|
||||||
<a href="https://code.eliotberriot.com/funkwhale/funkwhale" class="item" target="_blank">
|
<a href="https://code.eliotberriot.com/funkwhale/funkwhale" class="item" target="_blank">
|
||||||
<translate :translate-params="{version: version}" v-if="version">Source code (%{version})</translate>
|
<translate :translate-params="{version: version}" v-if="version">Source code (%{version})</translate>
|
||||||
<translate v-else>Source code</translate>
|
<translate v-else>Source code</translate>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://code.eliotberriot.com/funkwhale/funkwhale/issues" class="item" target="_blank">{{ $gettext('Issue tracker') }}</a>
|
<a href="https://code.eliotberriot.com/funkwhale/funkwhale/issues" class="item" target="_blank"><translate>Issue tracker</translate></a>
|
||||||
<a @click="switchInstance" class="item" >
|
<a @click="switchInstance" class="item" >
|
||||||
{{ $gettext('Use another instance') }}
|
<translate>Use another instance</translate>
|
||||||
<template v-if="$store.state.instance.instanceUrl !== '/'">
|
<template v-if="$store.state.instance.instanceUrl !== '/'">
|
||||||
<br>
|
<br>
|
||||||
({{ $store.state.instance.instanceUrl }})
|
({{ $store.state.instance.instanceUrl }})
|
||||||
|
|
|
@ -6,20 +6,20 @@
|
||||||
<template v-if="instance.name.value" :template-params="{instance: instance.name}">
|
<template v-if="instance.name.value" :template-params="{instance: instance.name}">
|
||||||
About %{ instance }
|
About %{ instance }
|
||||||
</template>
|
</template>
|
||||||
<template v-else="instance.name.value">{{ $gettext('About this instance') }}</template>
|
<template v-else="instance.name.value"><translate>About this instance</translate></template>
|
||||||
</h1>
|
</h1>
|
||||||
<stats></stats>
|
<stats></stats>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<p v-if="!instance.short_description.value && !instance.long_description.value">
|
<p v-if="!instance.short_description.value && !instance.long_description.value">
|
||||||
{{ $gettext('Unfortunately, owners of this instance did not yet take the time to complete this page.') }}
|
<translate>Unfortunately, owners of this instance did not yet take the time to complete this page.</translate>
|
||||||
</p>
|
</p>
|
||||||
<router-link
|
<router-link
|
||||||
class="ui button"
|
class="ui button"
|
||||||
v-if="$store.state.auth.availablePermissions['settings']"
|
v-if="$store.state.auth.availablePermissions['settings']"
|
||||||
:to="{path: '/manage/settings', hash: 'instance'}">
|
:to="{path: '/manage/settings', hash: 'instance'}">
|
||||||
<i class="pencil icon"></i>{{ $gettext('Edit instance info') }}
|
<i class="pencil icon"></i><translate>Edit instance info</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div
|
<div
|
||||||
v-if="instance.short_description.value"
|
v-if="instance.short_description.value"
|
||||||
|
|
|
@ -3,15 +3,15 @@
|
||||||
<div class="ui vertical center aligned stripe segment">
|
<div class="ui vertical center aligned stripe segment">
|
||||||
<div class="ui text container">
|
<div class="ui text container">
|
||||||
<h1 class="ui huge header">
|
<h1 class="ui huge header">
|
||||||
{{ $gettext('Welcome on Funkwhale') }}
|
<translate>Welcome on Funkwhale</translate>
|
||||||
</h1>
|
</h1>
|
||||||
<p>{{ $gettext('We think listening to music should be simple.') }}</p>
|
<p><translate>We think listening to music should be simple.</translate></p>
|
||||||
<router-link class="ui icon button" to="/about">
|
<router-link class="ui icon button" to="/about">
|
||||||
<i class="info icon"></i>
|
<i class="info icon"></i>
|
||||||
{{ $gettext('Learn more about this instance') }}
|
<translate>Learn more about this instance</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link class="ui icon teal button" to="/library">
|
<router-link class="ui icon teal button" to="/library">
|
||||||
{{ $gettext('Get me to the library') }}
|
<translate>Get me to the library</translate>
|
||||||
<i class="right arrow icon"></i>
|
<i class="right arrow icon"></i>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
|
@ -22,9 +22,9 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="eight wide left floated column">
|
<div class="eight wide left floated column">
|
||||||
<h2 class="ui header">
|
<h2 class="ui header">
|
||||||
{{ $gettext('Why funkwhale?') }}
|
<translate>Why funkwhale?</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<p>{{ $gettext('That\'s simple: we loved Grooveshark and we want to build something even better.') }}</p>
|
<p><translate>That's simple: we loved Grooveshark and we want to build something even better.</translate></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="four wide left floated column">
|
<div class="four wide left floated column">
|
||||||
<img class="ui medium image" src="../assets/logo/logo.png" />
|
<img class="ui medium image" src="../assets/logo/logo.png" />
|
||||||
|
@ -35,26 +35,26 @@
|
||||||
<div class="ui middle aligned stackable text container">
|
<div class="ui middle aligned stackable text container">
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<h2 class="ui header">
|
<h2 class="ui header">
|
||||||
{{ $gettext('Unlimited music') }}
|
<translate>Unlimited music</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<p>{{ $gettext('Funkwhale is designed to make it easy to listen to music you like, or to discover new artists.') }}</p>
|
<p><translate>Funkwhale is designed to make it easy to listen to music you like, or to discover new artists.</translate></p>
|
||||||
<div class="ui list">
|
<div class="ui list">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<i class="sound icon"></i>
|
<i class="sound icon"></i>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ $gettext('Click once, listen for hours using built-in radios') }}
|
<translate>Click once, listen for hours using built-in radios</translate>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<i class="heart icon"></i>
|
<i class="heart icon"></i>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ $gettext('Keep a track of your favorite songs') }}
|
<translate>Keep a track of your favorite songs</translate>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<i class="list icon"></i>
|
<i class="list icon"></i>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ $gettext('Playlists? We got them') }}
|
<translate>Playlists? We got them</translate>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -62,14 +62,14 @@
|
||||||
<div class="ui middle aligned stackable text container">
|
<div class="ui middle aligned stackable text container">
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<h2 class="ui header">
|
<h2 class="ui header">
|
||||||
{{ $gettext('Clean library') }}
|
<translate>Clean library</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<p>{{ $gettext('Funkwhale takes care of handling your music') }}.</p>
|
<p><translate>Funkwhale takes care of handling your music</translate>.</p>
|
||||||
<div class="ui list">
|
<div class="ui list">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<i class="download icon"></i>
|
<i class="download icon"></i>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ $gettext('Import music from various platforms, such as YouTube or SoundCloud') }}
|
<translate>Import music from various platforms, such as YouTube or SoundCloud</translate>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
|
@ -86,7 +86,7 @@
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<i class="plus icon"></i>
|
<i class="plus icon"></i>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ $gettext('Covers, lyrics, our goal is to have them all ;)') }}
|
<translate>Covers, lyrics, our goal is to have them all ;)</translate>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -94,20 +94,20 @@
|
||||||
<div class="ui middle aligned stackable text container">
|
<div class="ui middle aligned stackable text container">
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<h2 class="ui header">
|
<h2 class="ui header">
|
||||||
{{ $gettext('Easy to use') }}
|
<translate>Easy to use</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<p>{{ $gettext('Funkwhale is dead simple to use.') }}</p>
|
<p><translate>Funkwhale is dead simple to use.</translate></p>
|
||||||
<div class="ui list">
|
<div class="ui list">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<i class="book icon"></i>
|
<i class="book icon"></i>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ $gettext('No add-ons, no plugins : you only need a web library') }}
|
<translate>No add-ons, no plugins : you only need a web library</translate>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<i class="wizard icon"></i>
|
<i class="wizard icon"></i>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ $gettext('Access your music from a clean interface that focus on what really matters') }}
|
<translate>Access your music from a clean interface that focus on what really matters</translate>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -115,26 +115,26 @@
|
||||||
<div class="ui middle aligned stackable text container">
|
<div class="ui middle aligned stackable text container">
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<h2 class="ui header">
|
<h2 class="ui header">
|
||||||
{{ $gettext('Your music, your way') }}
|
<translate>Your music, your way</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<p>{{ $gettext('Funkwhale is free and gives you control on your music.') }}</p>
|
<p><translate>Funkwhale is free and gives you control on your music.</translate></p>
|
||||||
<div class="ui list">
|
<div class="ui list">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<i class="smile icon"></i>
|
<i class="smile icon"></i>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ $gettext('The plaform is free and open-source, you can install it and modify it without worries') }}
|
<translate>The plaform is free and open-source, you can install it and modify it without worries</translate>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<i class="protect icon"></i>
|
<i class="protect icon"></i>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ $gettext('We do not track you or bother you with ads') }}
|
<translate>We do not track you or bother you with ads</translate>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<i class="users icon"></i>
|
<i class="users icon"></i>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ $gettext('You can invite friends and family to your instance so they can enjoy your music') }}
|
<translate>You can invite friends and family to your instance so they can enjoy your music</translate>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -5,14 +5,14 @@
|
||||||
<h1 class="ui huge header">
|
<h1 class="ui huge header">
|
||||||
<i class="warning icon"></i>
|
<i class="warning icon"></i>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<strike>{{ $gettext('Whale') }}</strike> {{ $gettext('Page not found!') }}
|
<strike><translate>Whale') }}</strike> {{ $gettext('Page not found!</translate>
|
||||||
</div>
|
</div>
|
||||||
</h1>
|
</h1>
|
||||||
<p>{{ $gettext('We\'re sorry, the page you asked for does not exist:') }}</p>
|
<p><translate>We're sorry, the page you asked for does not exist:</translate></p>
|
||||||
<a :href="path">{{ path }}</a>
|
<a :href="path">{{ path }}</a>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<router-link class="ui icon button" to="/">
|
<router-link class="ui icon button" to="/">
|
||||||
{{ $gettext('Go to home page') }}
|
<translate>Go to home page</translate>
|
||||||
<i class="right arrow icon"></i>
|
<i class="right arrow icon"></i>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -16,11 +16,11 @@
|
||||||
|
|
||||||
<div class="menu-area">
|
<div class="menu-area">
|
||||||
<div class="ui compact fluid two item inverted menu">
|
<div class="ui compact fluid two item inverted menu">
|
||||||
<a class="active item" @click="selectedTab = 'library'" data-tab="library">Browse</a>
|
<a class="active item" @click="selectedTab = 'library'" data-tab="library"><translate>Browse</translate></a>
|
||||||
<a class="item" @click="selectedTab = 'queue'" data-tab="queue">
|
<a class="item" @click="selectedTab = 'queue'" data-tab="queue">
|
||||||
{{ $gettext('Queue') }}
|
<translate>Queue</translate>
|
||||||
<template v-if="queue.tracks.length === 0">
|
<template v-if="queue.tracks.length === 0">
|
||||||
{{ $gettext('(empty)') }}
|
<translate>(empty)</translate>
|
||||||
</template>
|
</template>
|
||||||
<translate v-else :translate-params="{index: queue.currentIndex + 1, length: queue.tracks.length}">
|
<translate v-else :translate-params="{index: queue.currentIndex + 1, length: queue.tracks.length}">
|
||||||
(%{ index } of %{ length })
|
(%{ index } of %{ length })
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
<div class="ui bottom attached active tab" data-tab="library">
|
<div class="ui bottom attached active tab" data-tab="library">
|
||||||
<div class="ui inverted vertical large fluid menu">
|
<div class="ui inverted vertical large fluid menu">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="header">{{ $gettext('My account') }}</div>
|
<div class="header"><translate>My account</translate></div>
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
<router-link class="item" v-if="$store.state.auth.authenticated" :to="{name: 'profile', params: {username: $store.state.auth.username}}">
|
<router-link class="item" v-if="$store.state.auth.authenticated" :to="{name: 'profile', params: {username: $store.state.auth.username}}">
|
||||||
<i class="user icon"></i>
|
<i class="user icon"></i>
|
||||||
|
@ -40,34 +40,34 @@
|
||||||
Logged in as %{ username }
|
Logged in as %{ username }
|
||||||
</translate>
|
</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link class="item" v-if="$store.state.auth.authenticated" :to="{name: 'logout'}"><i class="sign out icon"></i>{{ $gettext('Logout') }}</router-link>
|
<router-link class="item" v-if="$store.state.auth.authenticated" :to="{name: 'logout'}"><i class="sign out icon"></i><translate>Logout</translate></router-link>
|
||||||
<router-link class="item" v-else :to="{name: 'login'}"><i class="sign in icon"></i>{{ $gettext('Login') }}</router-link>
|
<router-link class="item" v-else :to="{name: 'login'}"><i class="sign in icon"></i><translate>Login</translate></router-link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="header">{{ $gettext('Music') }}</div>
|
<div class="header"><translate>Music</translate></div>
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
<router-link class="item" :to="{path: '/library'}"><i class="sound icon"> </i>{{ $gettext('Browse library') }}</router-link>
|
<router-link class="item" :to="{path: '/library'}"><i class="sound icon"> </i><translate>Browse library</translate></router-link>
|
||||||
<router-link class="item" v-if="$store.state.auth.authenticated" :to="{path: '/favorites'}"><i class="heart icon"></i>{{ $gettext('Favorites') }}</router-link>
|
<router-link class="item" v-if="$store.state.auth.authenticated" :to="{path: '/favorites'}"><i class="heart icon"></i><translate>Favorites</translate></router-link>
|
||||||
<a
|
<a
|
||||||
@click="$store.commit('playlists/chooseTrack', null)"
|
@click="$store.commit('playlists/chooseTrack', null)"
|
||||||
v-if="$store.state.auth.authenticated"
|
v-if="$store.state.auth.authenticated"
|
||||||
class="item">
|
class="item">
|
||||||
<i class="list icon"></i>{{ $gettext('Playlists') }}
|
<i class="list icon"></i><translate>Playlists</translate>
|
||||||
</a>
|
</a>
|
||||||
<router-link
|
<router-link
|
||||||
v-if="$store.state.auth.authenticated"
|
v-if="$store.state.auth.authenticated"
|
||||||
class="item" :to="{path: '/activity'}"><i class="bell icon"></i>{{ $gettext('Activity') }}</router-link>
|
class="item" :to="{path: '/activity'}"><i class="bell icon"></i><translate>Activity</translate></router-link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item" v-if="showAdmin">
|
<div class="item" v-if="showAdmin">
|
||||||
<div class="header">{{ $gettext('Administration') }}</div>
|
<div class="header"><translate>Administration</translate></div>
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
<router-link
|
<router-link
|
||||||
class="item"
|
class="item"
|
||||||
v-if="$store.state.auth.availablePermissions['library']"
|
v-if="$store.state.auth.availablePermissions['library']"
|
||||||
:to="{name: 'manage.library.files'}">
|
:to="{name: 'manage.library.files'}">
|
||||||
<i class="book icon"></i>{{ $gettext('Library') }}
|
<i class="book icon"></i><translate>Library</translate>
|
||||||
<div
|
<div
|
||||||
:class="['ui', {'teal': $store.state.ui.notifications.importRequests > 0}, 'label']"
|
:class="['ui', {'teal': $store.state.ui.notifications.importRequests > 0}, 'label']"
|
||||||
:title="$gettext('Pending import requests')">
|
:title="$gettext('Pending import requests')">
|
||||||
|
@ -78,13 +78,13 @@
|
||||||
class="item"
|
class="item"
|
||||||
v-else-if="$store.state.auth.availablePermissions['upload']"
|
v-else-if="$store.state.auth.availablePermissions['upload']"
|
||||||
to="/library/import/launch">
|
to="/library/import/launch">
|
||||||
<i class="download icon"></i>{{ $gettext('Import music') }}
|
<i class="download icon"></i><translate>Import music</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link
|
<router-link
|
||||||
class="item"
|
class="item"
|
||||||
v-if="$store.state.auth.availablePermissions['federation']"
|
v-if="$store.state.auth.availablePermissions['federation']"
|
||||||
:to="{path: '/manage/federation/libraries'}">
|
:to="{path: '/manage/federation/libraries'}">
|
||||||
<i class="sitemap icon"></i>{{ $gettext('Federation') }}
|
<i class="sitemap icon"></i><translate>Federation</translate>
|
||||||
<div
|
<div
|
||||||
:class="['ui', {'teal': $store.state.ui.notifications.federation > 0}, 'label']"
|
:class="['ui', {'teal': $store.state.ui.notifications.federation > 0}, 'label']"
|
||||||
:title="$gettext('Pending follow requests')">
|
:title="$gettext('Pending follow requests')">
|
||||||
|
@ -94,13 +94,13 @@
|
||||||
class="item"
|
class="item"
|
||||||
v-if="$store.state.auth.availablePermissions['settings']"
|
v-if="$store.state.auth.availablePermissions['settings']"
|
||||||
:to="{path: '/manage/settings'}">
|
:to="{path: '/manage/settings'}">
|
||||||
<i class="settings icon"></i>{{ $gettext('Settings') }}
|
<i class="settings icon"></i><translate>Settings</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link
|
<router-link
|
||||||
class="item"
|
class="item"
|
||||||
v-if="$store.state.auth.availablePermissions['settings']"
|
v-if="$store.state.auth.availablePermissions['settings']"
|
||||||
:to="{name: 'manage.users.users.list'}">
|
:to="{name: 'manage.users.users.list'}">
|
||||||
<i class="users icon"></i>{{ $gettext('Users') }}
|
<i class="users icon"></i><translate>Users</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -110,7 +110,7 @@
|
||||||
<i class="history icon"></i>
|
<i class="history icon"></i>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
{{ $gettext('Do you want to restore your previous queue?') }}
|
<translate>Do you want to restore your previous queue?</translate>
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
<translate
|
<translate
|
||||||
|
@ -121,8 +121,8 @@
|
||||||
</translate>
|
</translate>
|
||||||
</p>
|
</p>
|
||||||
<div class="ui two buttons">
|
<div class="ui two buttons">
|
||||||
<div @click="queue.restore()" class="ui basic inverted green button">{{ $gettext('Yes') }}</div>
|
<div @click="queue.restore()" class="ui basic inverted green button"><translate>Yes</translate></div>
|
||||||
<div @click="queue.removePrevious()" class="ui basic inverted red button">{{ $gettext('No') }}</div>
|
<div @click="queue.removePrevious()" class="ui basic inverted red button"><translate>No</translate></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -153,10 +153,10 @@
|
||||||
<div v-if="$store.state.radios.running" class="ui black message">
|
<div v-if="$store.state.radios.running" class="ui black message">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<i class="feed icon"></i> {{ $gettext('You have a radio playing') }}
|
<i class="feed icon"></i> <translate>You have a radio playing</translate>
|
||||||
</div>
|
</div>
|
||||||
<p>{{ $gettext('New tracks will be appended here automatically.') }}</p>
|
<p><translate>New tracks will be appended here automatically.</translate></p>
|
||||||
<div @click="$store.dispatch('radios/stop')" class="ui basic inverted red button">{{ $gettext('Stop radio') }}</div>
|
<div @click="$store.dispatch('radios/stop')" class="ui basic inverted red button"><translate>Stop radio</translate></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,13 +3,13 @@
|
||||||
<div class="ui divider" />
|
<div class="ui divider" />
|
||||||
<h3 class="ui header">{{ group.label }}</h3>
|
<h3 class="ui header">{{ group.label }}</h3>
|
||||||
<div v-if="errors.length > 0" class="ui negative message">
|
<div v-if="errors.length > 0" class="ui negative message">
|
||||||
<div class="header">{{ $gettext('Error while saving settings') }}</div>
|
<div class="header"><translate>Error while saving settings</translate></div>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li v-for="error in errors">{{ error }}</li>
|
<li v-for="error in errors">{{ error }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="result" class="ui positive message">
|
<div v-if="result" class="ui positive message">
|
||||||
{{ $gettext('Settings updated successfully.') }}
|
<translate>Settings updated successfully.</translate>
|
||||||
</div>
|
</div>
|
||||||
<p v-if="group.help">{{ group.help }}</p>
|
<p v-if="group.help">{{ group.help }}</p>
|
||||||
<div v-for="setting in settings" class="ui field">
|
<div v-for="setting in settings" class="ui field">
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
:class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']">
|
:class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']">
|
||||||
{{ $gettext('Save') }}
|
<translate>Save</translate>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -6,14 +6,14 @@
|
||||||
:disabled="!playable"
|
:disabled="!playable"
|
||||||
:class="['ui', {loading: isLoading}, {'mini': discrete}, {disabled: !playable}, 'button']">
|
:class="['ui', {loading: isLoading}, {'mini': discrete}, {disabled: !playable}, 'button']">
|
||||||
<i class="ui play icon"></i>
|
<i class="ui play icon"></i>
|
||||||
<template v-if="!discrete"><slot>{{ $gettext('Play') }}</slot></template>
|
<template v-if="!discrete"><slot><translate>Play</translate></slot></template>
|
||||||
</button>
|
</button>
|
||||||
<div v-if="!discrete" :class="['ui', {disabled: !playable}, 'floating', 'dropdown', 'icon', 'button']">
|
<div v-if="!discrete" :class="['ui', {disabled: !playable}, 'floating', 'dropdown', 'icon', 'button']">
|
||||||
<i class="dropdown icon"></i>
|
<i class="dropdown icon"></i>
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
<div class="item" :disabled="!playable" @click="add"><i class="plus icon"></i>{{ $gettext('Add to queue') }}</div>
|
<div class="item" :disabled="!playable" @click="add"><i class="plus icon"></i><translate>Add to queue</translate></div>
|
||||||
<div class="item" :disabled="!playable" @click="addNext()"><i class="step forward icon"></i>{{ $gettext('Play next') }}</div>
|
<div class="item" :disabled="!playable" @click="addNext()"><i class="step forward icon"></i><translate>Play next</translate></div>
|
||||||
<div class="item" :disabled="!playable" @click="addNext(true)"><i class="arrow down icon"></i>{{ $gettext('Play now') }}</div>
|
<div class="item" :disabled="!playable" @click="addNext(true)"><i class="arrow down icon"></i><translate>Play now</translate></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<h2>{{ $gettext('Search for some music') }}</h2>
|
<h2><translate>Search for some music</translate></h2>
|
||||||
<div :class="['ui', {'loading': isLoading }, 'search']">
|
<div :class="['ui', {'loading': isLoading }, 'search']">
|
||||||
<div class="ui icon big input">
|
<div class="ui icon big input">
|
||||||
<i class="search icon"></i>
|
<i class="search icon"></i>
|
||||||
|
@ -8,22 +8,22 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<template v-if="query.length > 0">
|
<template v-if="query.length > 0">
|
||||||
<h3 class="ui title">{{ $gettext('Artists') }}</h3>
|
<h3 class="ui title"><translate>Artists</translate></h3>
|
||||||
<div v-if="results.artists.length > 0" class="ui stackable three column grid">
|
<div v-if="results.artists.length > 0" class="ui stackable three column grid">
|
||||||
<div class="column" :key="artist.id" v-for="artist in results.artists">
|
<div class="column" :key="artist.id" v-for="artist in results.artists">
|
||||||
<artist-card class="fluid" :artist="artist" ></artist-card>
|
<artist-card class="fluid" :artist="artist" ></artist-card>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p v-else>{{ $gettext('Sorry, we did not found any artist matching your query') }}</p>
|
<p v-else><translate>Sorry, we did not found any artist matching your query</translate></p>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="query.length > 0">
|
<template v-if="query.length > 0">
|
||||||
<h3 class="ui title">{{ $gettext('Albums') }}</h3>
|
<h3 class="ui title"><translate>Albums</translate></h3>
|
||||||
<div v-if="results.albums.length > 0" class="ui stackable three column grid">
|
<div v-if="results.albums.length > 0" class="ui stackable three column grid">
|
||||||
<div class="column" :key="album.id" v-for="album in results.albums">
|
<div class="column" :key="album.id" v-for="album in results.albums">
|
||||||
<album-card class="fluid" :album="album" ></album-card>
|
<album-card class="fluid" :album="album" ></album-card>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p v-else>{{ $gettext('Sorry, we did not found any album matching your query') }}</p>
|
<p v-else><translate>Sorry, we did not found any album matching your query</translate></p>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -41,14 +41,14 @@
|
||||||
<translate :translate-params="{count: album.tracks.length - initialTracks}" :translate-n="album.tracks.length - initialTracks" translate-plural="Show %{ count } more tracks">Show 1 more track</translate>
|
<translate :translate-params="{count: album.tracks.length - initialTracks}" :translate-n="album.tracks.length - initialTracks" translate-plural="Show %{ count } more tracks">Show 1 more track</translate>
|
||||||
</em>
|
</em>
|
||||||
<em v-else @click="showAllTracks = false" class="expand">
|
<em v-else @click="showAllTracks = false" class="expand">
|
||||||
{{ $gettext('Collapse') }}
|
<translate>Collapse</translate>
|
||||||
</em>
|
</em>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="extra content">
|
<div class="extra content">
|
||||||
<play-button class="mini basic orange right floated" :tracks="album.tracks">
|
<play-button class="mini basic orange right floated" :tracks="album.tracks">
|
||||||
{{ $gettext('Play all') }}
|
<translate>Play all</translate>
|
||||||
</play-button>
|
</play-button>
|
||||||
<span>
|
<span>
|
||||||
<i class="music icon"></i>
|
<i class="music icon"></i>
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
<translate :translate-params="{count: artist.albums.length - initialAlbums}" :translate-n="artist.albums.length - initialAlbums" translate-plural="Show %{ count } more albums">Show 1 more album</translate>
|
<translate :translate-params="{count: artist.albums.length - initialAlbums}" :translate-n="artist.albums.length - initialAlbums" translate-plural="Show %{ count } more albums">Show 1 more album</translate>
|
||||||
</em>
|
</em>
|
||||||
<em v-else @click="showAllAlbums = false" class="expand">
|
<em v-else @click="showAllAlbums = false" class="expand">
|
||||||
{{ $gettext('Collapse') }}
|
<translate>Collapse</translate>
|
||||||
</em>
|
</em>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
<translate :translate-params="{count: artist.albums.length}" :translate-n="artist.albums.length" translate-plural="%{ count } albums">1 album</translate>
|
<translate :translate-params="{count: artist.albums.length}" :translate-n="artist.albums.length" translate-plural="%{ count } albums">1 album</translate>
|
||||||
</span>
|
</span>
|
||||||
<play-button class="mini basic orange right floated" :artist="artist.id">
|
<play-button class="mini basic orange right floated" :artist="artist.id">
|
||||||
{{ $gettext('Play all') }}
|
<translate>Play all</translate>
|
||||||
</play-button>
|
</play-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -40,7 +40,7 @@ curl -G -o "{{ track.files[0].filename }}" <template v-if="$store.state.auth.aut
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
<div class="ui black deny button">{{ $gettext('Cancel') }}</div>
|
<div class="ui black deny button"><translate>Cancel</translate></div>
|
||||||
</div>
|
</div>
|
||||||
</modal>
|
</modal>
|
||||||
</th>
|
</th>
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
<div class="main pusher" v-title="'Log In'">
|
<div class="main pusher" v-title="'Log In'">
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<div class="ui small text container">
|
<div class="ui small text container">
|
||||||
<h2>{{ $gettext('Log in to your Funkwhale account') }}</h2>
|
<h2><translate>Log in to your Funkwhale account</translate></h2>
|
||||||
<form class="ui form" @submit.prevent="submit()">
|
<form class="ui form" @submit.prevent="submit()">
|
||||||
<div v-if="error" class="ui negative message">
|
<div v-if="error" class="ui negative message">
|
||||||
<div class="header">{{ $gettext('We cannot log you in') }}</div>
|
<div class="header"><translate>We cannot log you in</translate></div>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li v-if="error == 'invalid_credentials'">{{ $gettext('Please double-check your username/password couple is correct') }}</li>
|
<li v-if="error == 'invalid_credentials'">{{ $gettext('Please double-check your username/password couple is correct') }}</li>
|
||||||
<li v-else>{{ $gettext('An unknown error happend, this can mean the server is down or cannot be reached') }}</li>
|
<li v-else>{{ $gettext('An unknown error happend, this can mean the server is down or cannot be reached') }}</li>
|
||||||
|
@ -13,9 +13,9 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>
|
<label>
|
||||||
{{ $gettext('Username or email') }} |
|
<translate>Username or email</translate> |
|
||||||
<router-link :to="{path: '/signup'}">
|
<router-link :to="{path: '/signup'}">
|
||||||
{{ $gettext('Create an account') }}
|
<translate>Create an account</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
|
@ -30,9 +30,9 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>
|
<label>
|
||||||
{{ $gettext('Password') }} |
|
<translate>Password</translate> |
|
||||||
<router-link :to="{name: 'auth.password-reset', query: {email: credentials.username}}">
|
<router-link :to="{name: 'auth.password-reset', query: {email: credentials.username}}">
|
||||||
{{ $gettext('Reset your password') }}
|
<translate>Reset your password</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
</label>
|
</label>
|
||||||
<password-input :index="2" required v-model="credentials.password" />
|
<password-input :index="2" required v-model="credentials.password" />
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<div class="ui small text container">
|
<div class="ui small text container">
|
||||||
<h2>
|
<h2>
|
||||||
{{ $gettext('Are you sure you want to log out?') }}
|
<translate>Are you sure you want to log out?</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<p v-translate="{username: $store.state.auth.username}">You are currently logged in as %{ username }</p>
|
<p v-translate="{username: $store.state.auth.username}">You are currently logged in as %{ username }</p>
|
||||||
<button class="ui button" @click="$store.dispatch('auth/logout')">{{ $gettext('Yes, log me out!') }}</button>
|
<button class="ui button" @click="$store.dispatch('auth/logout')"><translate>Yes, log me out!</translate></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="main pusher" v-title="username + '\'s Profile'">
|
<div class="main pusher" v-title="username + ''s Profile'">
|
||||||
<div v-if="isLoading" class="ui vertical segment">
|
<div v-if="isLoading" class="ui vertical segment">
|
||||||
<div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div>
|
<div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -13,15 +13,15 @@
|
||||||
</div>
|
</div>
|
||||||
</h2>
|
</h2>
|
||||||
<div class="ui basic green label">
|
<div class="ui basic green label">
|
||||||
{{ $gettext('This is you!') }}
|
<translate>This is you!</translate>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="$store.state.auth.profile.is_staff" class="ui yellow label">
|
<div v-if="$store.state.auth.profile.is_staff" class="ui yellow label">
|
||||||
<i class="star icon"></i>
|
<i class="star icon"></i>
|
||||||
{{ $gettext('Staff member') }}
|
<translate>Staff member</translate>
|
||||||
</div>
|
</div>
|
||||||
<router-link class="ui tiny basic button" :to="{path: '/settings'}">
|
<router-link class="ui tiny basic button" :to="{path: '/settings'}">
|
||||||
<i class="setting icon"> </i>
|
<i class="setting icon"> </i>
|
||||||
{{ $gettext('Settings...') }}
|
<translate>Settings...</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,16 +3,16 @@
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<div class="ui small text container">
|
<div class="ui small text container">
|
||||||
<h2 class="ui header">
|
<h2 class="ui header">
|
||||||
{{ $gettext('Account settings') }}
|
<translate>Account settings</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<form class="ui form" @submit.prevent="submitSettings()">
|
<form class="ui form" @submit.prevent="submitSettings()">
|
||||||
<div v-if="settings.success" class="ui positive message">
|
<div v-if="settings.success" class="ui positive message">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
{{ $gettext('Settings updated') }}
|
<translate>Settings updated</translate>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="settings.errors.length > 0" class="ui negative message">
|
<div v-if="settings.errors.length > 0" class="ui negative message">
|
||||||
<div class="header">{{ $gettext('We cannot save your settings') }}</div>
|
<div class="header"><translate>We cannot save your settings</translate></div>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li v-for="error in settings.errors">{{ error }}</li>
|
<li v-for="error in settings.errors">{{ error }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -25,26 +25,26 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<button :class="['ui', {'loading': isLoading}, 'button']" type="submit">
|
<button :class="['ui', {'loading': isLoading}, 'button']" type="submit">
|
||||||
{{ $gettext('Update settings') }}
|
<translate>Update settings</translate>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<div class="ui small text container">
|
<div class="ui small text container">
|
||||||
<h2 class="ui header">
|
<h2 class="ui header">
|
||||||
{{ $gettext('Change my password') }}
|
<translate>Change my password</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<div class="ui message">
|
<div class="ui message">
|
||||||
{{ $gettext('Changing your password will also change your Subsonic API password if you have requested one.') }}
|
<translate>Changing your password will also change your Subsonic API password if you have requested one.</translate>
|
||||||
{{ $gettext('You will have to update your password on your clients that use this password.') }}
|
<translate>You will have to update your password on your clients that use this password.</translate>
|
||||||
</div>
|
</div>
|
||||||
<form class="ui form" @submit.prevent="submitPassword()">
|
<form class="ui form" @submit.prevent="submitPassword()">
|
||||||
<div v-if="passwordError" class="ui negative message">
|
<div v-if="passwordError" class="ui negative message">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
{{ $gettext('Cannot change your password') }}
|
<translate>Cannot change your password</translate>
|
||||||
</div>
|
</div>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li v-if="passwordError == 'invalid_credentials'">{{ $gettext('Please double-check your password is correct') }}</li>
|
<li v-if="passwordError == 'invalid_credentials'"><translate>Please double-check your password is correct</translate></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
|
@ -60,16 +60,16 @@
|
||||||
color="yellow"
|
color="yellow"
|
||||||
:class="['ui', {'loading': isLoading}, 'button']"
|
:class="['ui', {'loading': isLoading}, 'button']"
|
||||||
:action="submitPassword">
|
:action="submitPassword">
|
||||||
{{ $gettext('Change password') }}
|
<translate>Change password</translate>
|
||||||
<p slot="modal-header">{{ $gettext('Change your password?') }}</p>
|
<p slot="modal-header"><translate>Change your password?</translate></p>
|
||||||
<div slot="modal-content">
|
<div slot="modal-content">
|
||||||
<p>{{ $gettext("Changing your password will have the following consequences") }}</p>
|
<p>{{ $gettext("Changing your password will have the following consequences") }}</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>{{ $gettext('You will be logged out from this session and have to log out with the new one') }}</li>
|
<li><translate>You will be logged out from this session and have to log out with the new one</translate></li>
|
||||||
<li>{{ $gettext('Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password') }}</li>
|
<li><translate>Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password</translate></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<p slot="modal-confirm">{{ $gettext('Disable access') }}</p>
|
<p slot="modal-confirm"><translate>Disable access</translate></p>
|
||||||
</dangerous-button>
|
</dangerous-button>
|
||||||
</form>
|
</form>
|
||||||
<div class="ui hidden divider" />
|
<div class="ui hidden divider" />
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
:class="['ui', {'loading': isLoadingInstanceSetting}, 'form']"
|
:class="['ui', {'loading': isLoadingInstanceSetting}, 'form']"
|
||||||
@submit.prevent="submit()">
|
@submit.prevent="submit()">
|
||||||
<p class="ui message" v-if="!$store.state.instance.settings.users.registration_enabled.value">
|
<p class="ui message" v-if="!$store.state.instance.settings.users.registration_enabled.value">
|
||||||
{{ $gettext('Registration are closed on this instance, you will need an invitation code to signup.') }}
|
<translate>Registration are closed on this instance, you will need an invitation code to signup.</translate>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div v-if="errors.length > 0" class="ui negative message">
|
<div v-if="errors.length > 0" class="ui negative message">
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
<template>
|
<template>
|
||||||
<form class="ui form" @submit.prevent="requestNewToken()">
|
<form class="ui form" @submit.prevent="requestNewToken()">
|
||||||
<h2>{{ $gettext('Subsonic API password') }}</h2>
|
<h2><translate>Subsonic API password</translate></h2>
|
||||||
<p class="ui message" v-if="!subsonicEnabled">
|
<p class="ui message" v-if="!subsonicEnabled">
|
||||||
{{ $gettext('The Subsonic API is not available on this Funkwhale instance.') }}
|
<translate>The Subsonic API is not available on this Funkwhale instance.</translate>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
{{ $gettext('Funkwhale is compatible with other music players that support the Subsonic API.') }}
|
<translate>Funkwhale is compatible with other music players that support the Subsonic API.</translate>
|
||||||
{{ $gettext('You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance.') }}
|
<translate>You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance.</translate>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
{{ $gettext('However, accessing Funkwhale from those clients require a separate password you can set below.') }}
|
<translate>However, accessing Funkwhale from those clients require a separate password you can set below.</translate>
|
||||||
</p>
|
</p>
|
||||||
<p><a href="https://docs.funkwhale.audio/users/apps.html#subsonic-compatible-clients" target="_blank">
|
<p><a href="https://docs.funkwhale.audio/users/apps.html#subsonic-compatible-clients" target="_blank">
|
||||||
{{ $gettext('Discover how to use Funkwhale from other apps') }}
|
<translate>Discover how to use Funkwhale from other apps</translate>
|
||||||
</a></p>
|
</a></p>
|
||||||
<div v-if="success" class="ui positive message">
|
<div v-if="success" class="ui positive message">
|
||||||
<div class="header">{{ successMessage }}</div>
|
<div class="header">{{ successMessage }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="subsonicEnabled && errors.length > 0" class="ui negative message">
|
<div v-if="subsonicEnabled && errors.length > 0" class="ui negative message">
|
||||||
<div class="header">{{ $gettext('Error') }}</div>
|
<div class="header"><translate>Error</translate></div>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li v-for="error in errors">{{ error }}</li>
|
<li v-for="error in errors">{{ error }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -32,25 +32,25 @@
|
||||||
color="grey"
|
color="grey"
|
||||||
:class="['ui', {'loading': isLoading}, 'button']"
|
:class="['ui', {'loading': isLoading}, 'button']"
|
||||||
:action="requestNewToken">
|
:action="requestNewToken">
|
||||||
{{ $gettext('Request a new password') }}
|
<translate>Request a new password</translate>
|
||||||
<p slot="modal-header">{{ $gettext('Request a new Subsonic API password?') }}</p>
|
<p slot="modal-header"><translate>Request a new Subsonic API password?</translate></p>
|
||||||
<p slot="modal-content">{{ $gettext('This will log you out from existing devices that use the current password.') }}</p>
|
<p slot="modal-content"><translate>This will log you out from existing devices that use the current password.</translate></p>
|
||||||
<p slot="modal-confirm">{{ $gettext('Request a new password') }}</p>
|
<p slot="modal-confirm"><translate>Request a new password</translate></p>
|
||||||
</dangerous-button>
|
</dangerous-button>
|
||||||
<button
|
<button
|
||||||
v-else
|
v-else
|
||||||
color="grey"
|
color="grey"
|
||||||
:class="['ui', {'loading': isLoading}, 'button']"
|
:class="['ui', {'loading': isLoading}, 'button']"
|
||||||
@click="requestNewToken">{{ $gettext('Request a password') }}</button>
|
@click="requestNewToken"><translate>Request a password</translate></button>
|
||||||
<dangerous-button
|
<dangerous-button
|
||||||
v-if="token"
|
v-if="token"
|
||||||
color="yellow"
|
color="yellow"
|
||||||
:class="['ui', {'loading': isLoading}, 'button']"
|
:class="['ui', {'loading': isLoading}, 'button']"
|
||||||
:action="disable">
|
:action="disable">
|
||||||
{{ $gettext('Disable Subsonic access') }}
|
<translate>Disable Subsonic access</translate>
|
||||||
<p slot="modal-header">{{ $gettext('Disable Subsonic API access?') }}</p>
|
<p slot="modal-header"><translate>Disable Subsonic API access?</translate></p>
|
||||||
<p slot="modal-content">{{ $gettext('This will completely disable access to the Subsonic API using from account.') }}</p>
|
<p slot="modal-content"><translate>This will completely disable access to the Subsonic API using from account.</translate></p>
|
||||||
<p slot="modal-confirm">{{ $gettext('Disable access') }}</p>
|
<p slot="modal-confirm"><translate>Disable access</translate></p>
|
||||||
</dangerous-button>
|
</dangerous-button>
|
||||||
</template>
|
</template>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<div class="ui small form">
|
<div class="ui small form">
|
||||||
<div class="ui inline fields">
|
<div class="ui inline fields">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Actions') }}</label>
|
<label><translate>Actions</translate></label>
|
||||||
<select class="ui dropdown" v-model="currentActionName">
|
<select class="ui dropdown" v-model="currentActionName">
|
||||||
<option v-for="action in actions" :value="action.name">
|
<option v-for="action in actions" :value="action.name">
|
||||||
{{ action.label }}
|
{{ action.label }}
|
||||||
|
@ -19,13 +19,13 @@
|
||||||
@click="launchAction"
|
@click="launchAction"
|
||||||
:disabled="checked.length === 0"
|
:disabled="checked.length === 0"
|
||||||
:class="['ui', {disabled: checked.length === 0}, {'loading': actionLoading}, 'button']">
|
:class="['ui', {disabled: checked.length === 0}, {'loading': actionLoading}, 'button']">
|
||||||
{{ $gettext('Go') }}</div>
|
<translate>Go</translate></div>
|
||||||
<dangerous-button
|
<dangerous-button
|
||||||
v-else-if="!currentAction.isDangerous" :class="['ui', {disabled: checked.length === 0}, {'loading': actionLoading}, 'button']"
|
v-else-if="!currentAction.isDangerous" :class="['ui', {disabled: checked.length === 0}, {'loading': actionLoading}, 'button']"
|
||||||
confirm-color="green"
|
confirm-color="green"
|
||||||
color=""
|
color=""
|
||||||
@confirm="launchAction">
|
@confirm="launchAction">
|
||||||
{{ $gettext('Go') }}
|
<translate>Go</translate>
|
||||||
<p slot="modal-header">
|
<p slot="modal-header">
|
||||||
<translate
|
<translate
|
||||||
:translate-n="objectsData.count"
|
:translate-n="objectsData.count"
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
<p slot="modal-content">
|
<p slot="modal-content">
|
||||||
{{ $gettext('This may affect a lot of elements, please double check this is really what you want.')}}
|
{{ $gettext('This may affect a lot of elements, please double check this is really what you want.')}}
|
||||||
</p>
|
</p>
|
||||||
<p slot="modal-confirm">{{ $gettext('Launch') }}</p>
|
<p slot="modal-confirm"><translate>Launch</translate></p>
|
||||||
</dangerous-button>
|
</dangerous-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="count field">
|
<div class="count field">
|
||||||
|
@ -67,13 +67,13 @@
|
||||||
</translate>
|
</translate>
|
||||||
</a>
|
</a>
|
||||||
<a @click="selectAll = false" v-else>
|
<a @click="selectAll = false" v-else>
|
||||||
{{ $gettext('Select only current page') }}
|
<translate>Select only current page</translate>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="actionErrors.length > 0" class="ui negative message">
|
<div v-if="actionErrors.length > 0" class="ui negative message">
|
||||||
<div class="header">{{ $gettext('Error while applying action') }}</div>
|
<div class="header"><translate>Error while applying action</translate></div>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li v-for="error in actionErrors">{{ error }}</li>
|
<li v-for="error in actionErrors">{{ error }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<modal class="small" :show.sync="showModal">
|
<modal class="small" :show.sync="showModal">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<slot name="modal-header">
|
<slot name="modal-header">
|
||||||
{{ $gettext('Do you want to confirm this action?') }}
|
<translate>Do you want to confirm this action?</translate>
|
||||||
</slot>
|
</slot>
|
||||||
</div>
|
</div>
|
||||||
<div class="scrolling content">
|
<div class="scrolling content">
|
||||||
|
@ -15,11 +15,11 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
<div class="ui cancel button">
|
<div class="ui cancel button">
|
||||||
{{ $gettext('Cancel') }}
|
<translate>Cancel</translate>
|
||||||
</div>
|
</div>
|
||||||
<div :class="['ui', 'confirm', confirmButtonColor, 'button']" @click="confirm">
|
<div :class="['ui', 'confirm', confirmButtonColor, 'button']" @click="confirm">
|
||||||
<slot name="modal-confirm">
|
<slot name="modal-confirm">
|
||||||
{{ $gettext('Confirm') }}
|
<translate>Confirm</translate>
|
||||||
</slot>
|
</slot>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -12,13 +12,13 @@
|
||||||
@click="collapsed = false"
|
@click="collapsed = false"
|
||||||
v-if="truncated && collapsed"
|
v-if="truncated && collapsed"
|
||||||
class="expand">
|
class="expand">
|
||||||
{{ $gettext('Expand') }}
|
<translate>Expand</translate>
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
@click="collapsed = true"
|
@click="collapsed = true"
|
||||||
v-if="truncated && !collapsed"
|
v-if="truncated && !collapsed"
|
||||||
class="collapse">
|
class="collapse">
|
||||||
{{ $gettext('Collapse') }}
|
<translate>Collapse</translate>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="ui vertical center aligned stripe segment">
|
<div class="ui vertical center aligned stripe segment">
|
||||||
<div :class="['ui', {'active': isLoading}, 'inverted', 'dimmer']">
|
<div :class="['ui', {'active': isLoading}, 'inverted', 'dimmer']">
|
||||||
<div class="ui text loader">
|
<div class="ui text loader">
|
||||||
{{ $gettext('Loading your favorites...') }}
|
<translate>Loading your favorites...</translate>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<h2 v-if="results" class="ui center aligned icon header">
|
<h2 v-if="results" class="ui center aligned icon header">
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
<div :class="['ui', {'loading': isLoading}, 'form']">
|
<div :class="['ui', {'loading': isLoading}, 'form']">
|
||||||
<div class="fields">
|
<div class="fields">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering') }}</label>
|
<label><translate>Ordering</translate></label>
|
||||||
<select class="ui dropdown" v-model="ordering">
|
<select class="ui dropdown" v-model="ordering">
|
||||||
<option v-for="option in orderingOptions" :value="option[0]">
|
<option v-for="option in orderingOptions" :value="option[0]">
|
||||||
{{ option[1] }}
|
{{ option[1] }}
|
||||||
|
@ -29,14 +29,14 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering direction') }}</label>
|
<label><translate>Ordering direction</translate></label>
|
||||||
<select class="ui dropdown" v-model="orderingDirection">
|
<select class="ui dropdown" v-model="orderingDirection">
|
||||||
<option value="+">{{ $gettext('Ascending') }}</option>
|
<option value="+"><translate>Ascending</translate></option>
|
||||||
<option value="-">{{ $gettext('Descending') }}</option>
|
<option value="-"><translate>Descending</translate></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Results per page') }}</label>
|
<label><translate>Results per page</translate></label>
|
||||||
<select class="ui dropdown" v-model="paginateBy">
|
<select class="ui dropdown" v-model="paginateBy">
|
||||||
<option :value="parseInt(12)">12</option>
|
<option :value="parseInt(12)">12</option>
|
||||||
<option :value="parseInt(25)">25</option>
|
<option :value="parseInt(25)">25</option>
|
||||||
|
|
|
@ -13,13 +13,13 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<span class="right floated" v-if="following">
|
<span class="right floated" v-if="following">
|
||||||
<i class="check icon"></i>{{ $gettext('Following') }}
|
<i class="check icon"></i><translate>Following</translate>
|
||||||
</span>
|
</span>
|
||||||
<span class="right floated" v-else-if="manuallyApprovesFollowers">
|
<span class="right floated" v-else-if="manuallyApprovesFollowers">
|
||||||
<i class="lock icon"></i>{{ $gettext('Followers only') }}
|
<i class="lock icon"></i><translate>Followers only</translate>
|
||||||
</span>
|
</span>
|
||||||
<span class="right floated" v-else>
|
<span class="right floated" v-else>
|
||||||
<i class="open lock icon"></i>{{ $gettext('Open') }}
|
<i class="open lock icon"></i><translate>Open</translate>
|
||||||
</span>
|
</span>
|
||||||
<span v-if="totalItems">
|
<span v-if="totalItems">
|
||||||
<i class="music icon"></i>
|
<i class="music icon"></i>
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
<div class="extra content">
|
<div class="extra content">
|
||||||
<template v-if="awaitingApproval">
|
<template v-if="awaitingApproval">
|
||||||
<i class="clock icon"></i>
|
<i class="clock icon"></i>
|
||||||
{{ $gettext('Follow request pending approval') }}
|
<translate>Follow request pending approval</translate>
|
||||||
</template>
|
</template>
|
||||||
<div
|
<div
|
||||||
v-if="!library"
|
v-if="!library"
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
v-else
|
v-else
|
||||||
class="ui basic button"
|
class="ui basic button"
|
||||||
:to="{name: 'federation.libraries.detail', params: {id: library.uuid }}">
|
:to="{name: 'federation.libraries.detail', params: {id: library.uuid }}">
|
||||||
{{ $gettext('Detail') }}
|
<translate>Detail</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<div class="ui checkbox">
|
<div class="ui checkbox">
|
||||||
<input v-model="pending" type="checkbox">
|
<input v-model="pending" type="checkbox">
|
||||||
<label>
|
<label>
|
||||||
{{ $gettext('Pending approval') }}
|
<translate>Pending approval</translate>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -36,23 +36,23 @@
|
||||||
<td>
|
<td>
|
||||||
<template v-if="follow.approved === true">
|
<template v-if="follow.approved === true">
|
||||||
<i class="check icon"></i>
|
<i class="check icon"></i>
|
||||||
{{ $gettext('Approved') }}
|
<translate>Approved</translate>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="follow.approved === false">
|
<template v-else-if="follow.approved === false">
|
||||||
<i class="x icon"></i>
|
<i class="x icon"></i>
|
||||||
{{ $gettext('Refused') }}
|
<translate>Refused</translate>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<i class="clock icon"></i>
|
<i class="clock icon"></i>
|
||||||
{{ $gettext('Pending') }}
|
<translate>Pending</translate>
|
||||||
</template>
|
</template>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<dangerous-button v-if="follow.approved !== false" class="tiny basic labeled icon" color='red' @confirm="updateFollow(follow, false)">
|
<dangerous-button v-if="follow.approved !== false" class="tiny basic labeled icon" color='red' @confirm="updateFollow(follow, false)">
|
||||||
<i class="x icon"></i>
|
<i class="x icon"></i>
|
||||||
{{ $gettext('Deny') }}
|
<translate>Deny</translate>
|
||||||
<p slot="modal-header">
|
<p slot="modal-header">
|
||||||
{{ $gettext('Deny access?') }}
|
<translate>Deny access?</translate>
|
||||||
</p>
|
</p>
|
||||||
<p slot="modal-content">
|
<p slot="modal-content">
|
||||||
<translate
|
<translate
|
||||||
|
@ -61,14 +61,14 @@
|
||||||
</translate>
|
</translate>
|
||||||
</p>
|
</p>
|
||||||
<p slot="modal-confirm">
|
<p slot="modal-confirm">
|
||||||
{{ $gettext('Deny') }}
|
<translate>Deny</translate>
|
||||||
</p>
|
</p>
|
||||||
</dangerous-button>
|
</dangerous-button>
|
||||||
<dangerous-button v-if="follow.approved !== true" class="tiny basic labeled icon" color='green' @confirm="updateFollow(follow, true)">
|
<dangerous-button v-if="follow.approved !== true" class="tiny basic labeled icon" color='green' @confirm="updateFollow(follow, true)">
|
||||||
<i class="check icon"></i>
|
<i class="check icon"></i>
|
||||||
{{ $gettext('Approve') }}
|
<translate>Approve</translate>
|
||||||
<p slot="modal-header">
|
<p slot="modal-header">
|
||||||
{{ $gettext('Approve access?') }}
|
<translate>Approve access?</translate>
|
||||||
</p>
|
</p>
|
||||||
<p slot="modal-content">
|
<p slot="modal-content">
|
||||||
<translate
|
<translate
|
||||||
|
@ -76,7 +76,7 @@
|
||||||
By confirming, %{ username } will be granted access to your library.
|
By confirming, %{ username } will be granted access to your library.
|
||||||
</translate>
|
</translate>
|
||||||
<p slot="modal-confirm">
|
<p slot="modal-confirm">
|
||||||
{{ $gettext('Approve') }}
|
<translate>Approve</translate>
|
||||||
</p>
|
</p>
|
||||||
</dangerous-button>
|
</dangerous-button>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
<template>
|
<template>
|
||||||
<form class="ui form" @submit.prevent="fetchInstanceInfo">
|
<form class="ui form" @submit.prevent="fetchInstanceInfo">
|
||||||
<h3 class="ui header">
|
<h3 class="ui header">
|
||||||
{{ $gettext('Federate with a new instance') }}
|
<translate>Federate with a new instance</translate>
|
||||||
</h3>
|
</h3>
|
||||||
<p>
|
<p>
|
||||||
{{ $gettext('Use this form to scan an instance and setup federation.') }}
|
<translate>Use this form to scan an instance and setup federation.</translate>
|
||||||
</p>
|
</p>
|
||||||
<div v-if="errors.length > 0 || scanErrors.length > 0" class="ui negative message">
|
<div v-if="errors.length > 0 || scanErrors.length > 0" class="ui negative message">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
{{ $gettext('Error while scanning library') }}
|
<translate>Error while scanning library</translate>
|
||||||
</div>
|
</div>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li v-for="error in errors">{{ error }}</li>
|
<li v-for="error in errors">{{ error }}</li>
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
<div class="ui two fields">
|
<div class="ui two fields">
|
||||||
<div class="ui field">
|
<div class="ui field">
|
||||||
<label>
|
<label>
|
||||||
{{ $gettext('Library name') }}
|
<translate>Library name</translate>
|
||||||
</label>
|
</label>
|
||||||
<input v-model="libraryUsername" type="text" placeholder="library@demo.funkwhale.audio" />
|
<input v-model="libraryUsername" type="text" placeholder="library@demo.funkwhale.audio" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
:disabled="isLoading"
|
:disabled="isLoading"
|
||||||
:class="['ui', 'icon', {loading: isLoading}, 'button']">
|
:class="['ui', 'icon', {loading: isLoading}, 'button']">
|
||||||
<i class="search icon"></i>
|
<i class="search icon"></i>
|
||||||
{{ $gettext('Launch scan') }}
|
<translate>Launch scan</translate>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,16 +3,16 @@
|
||||||
<div class="ui inline form">
|
<div class="ui inline form">
|
||||||
<div class="fields">
|
<div class="fields">
|
||||||
<div class="ui field">
|
<div class="ui field">
|
||||||
<label>{{ $gettext('Search') }}</label>
|
<label><translate>Search</translate></label>
|
||||||
<input type="text" v-model="search" placeholder="Search by title, artist, domain..." />
|
<input type="text" v-model="search" placeholder="Search by title, artist, domain..." />
|
||||||
</div>
|
</div>
|
||||||
<div class="ui field">
|
<div class="ui field">
|
||||||
<label>{{ $gettext('Import status') }}</label>
|
<label><translate>Import status</translate></label>
|
||||||
<select class="ui dropdown" v-model="importedFilter">
|
<select class="ui dropdown" v-model="importedFilter">
|
||||||
<option :value="null">{{ $gettext('Any') }}</option>
|
<option :value="null"><translate>Any</translate></option>
|
||||||
<option :value="'imported'">{{ $gettext('Imported') }}</option>
|
<option :value="'imported'"><translate>Imported</translate></option>
|
||||||
<option :value="'not_imported'">{{ $gettext('Not imported') }}</option>
|
<option :value="'not_imported'"><translate>Not imported</translate></option>
|
||||||
<option :value="'import_pending'">{{ $gettext('Import pending') }}</option>
|
<option :value="'import_pending'"><translate>Import pending</translate></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -29,12 +29,12 @@
|
||||||
:action-url="'federation/library-tracks/action/'"
|
:action-url="'federation/library-tracks/action/'"
|
||||||
:filters="actionFilters">
|
:filters="actionFilters">
|
||||||
<template slot="header-cells">
|
<template slot="header-cells">
|
||||||
<th>{{ $gettext('Status') }}</th>
|
<th><translate>Status</translate></th>
|
||||||
<th>{{ $gettext('Title') }}</th>
|
<th><translate>Title</translate></th>
|
||||||
<th>{{ $gettext('Artist') }}</th>
|
<th><translate>Artist</translate></th>
|
||||||
<th>{{ $gettext('Album') }}</th>
|
<th><translate>Album</translate></th>
|
||||||
<th>{{ $gettext('Published date') }}</th>
|
<th><translate>Published date</translate></th>
|
||||||
<th v-if="showLibrary">{{ $gettext('Library') }}</th>
|
<th v-if="showLibrary"><translate>Library</translate></th>
|
||||||
</template>
|
</template>
|
||||||
<template slot="action-success-footer" slot-scope="scope">
|
<template slot="action-success-footer" slot-scope="scope">
|
||||||
<router-link
|
<router-link
|
||||||
|
@ -48,9 +48,9 @@
|
||||||
</template>
|
</template>
|
||||||
<template slot="row-cells" slot-scope="scope">
|
<template slot="row-cells" slot-scope="scope">
|
||||||
<td>
|
<td>
|
||||||
<span v-if="scope.obj.status === 'imported'" class="ui basic green label">{{ $gettext('In library') }}</span>
|
<span v-if="scope.obj.status === 'imported'" class="ui basic green label"><translate>In library</translate></span>
|
||||||
<span v-else-if="scope.obj.status === 'import_pending'" class="ui basic yellow label">{{ $gettext('Import pending') }}</span>
|
<span v-else-if="scope.obj.status === 'import_pending'" class="ui basic yellow label"><translate>Import pending</translate></span>
|
||||||
<span v-else class="ui basic label">{{ $gettext('Not imported') }}</span>
|
<span v-else class="ui basic label"><translate>Not imported</translate></span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span :title="scope.obj.title">{{ scope.obj.title|truncate(30) }}</span>
|
<span :title="scope.obj.title">{{ scope.obj.title|truncate(30) }}</span>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<div v-if="stats" class="ui stackable two column grid">
|
<div v-if="stats" class="ui stackable two column grid">
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<h3 class="ui left aligned header">
|
<h3 class="ui left aligned header">
|
||||||
{{ $gettext('User activity') }}
|
<translate>User activity</translate>
|
||||||
</h3>
|
</h3>
|
||||||
<div v-if="stats" class="ui mini horizontal statistics">
|
<div v-if="stats" class="ui mini horizontal statistics">
|
||||||
<div class="statistic">
|
<div class="statistic">
|
||||||
|
@ -11,19 +11,19 @@
|
||||||
<i class="green user icon"></i>
|
<i class="green user icon"></i>
|
||||||
{{ stats.users }}
|
{{ stats.users }}
|
||||||
</div>
|
</div>
|
||||||
<div class="label">{{ $gettext('users') }}</div>
|
<div class="label"><translate>users</translate></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="statistic">
|
<div class="statistic">
|
||||||
<div class="value">
|
<div class="value">
|
||||||
<i class="orange sound icon"></i> {{ stats.listenings }}
|
<i class="orange sound icon"></i> {{ stats.listenings }}
|
||||||
</div>
|
</div>
|
||||||
<div class="label">{{ $gettext('tracks listened') }}</div>
|
<div class="label"><translate>tracks listened</translate></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="statistic">
|
<div class="statistic">
|
||||||
<div class="value">
|
<div class="value">
|
||||||
<i class="pink heart icon"></i> {{ stats.trackFavorites }}
|
<i class="pink heart icon"></i> {{ stats.trackFavorites }}
|
||||||
</div>
|
</div>
|
||||||
<div class="label">{{ $gettext('Tracks favorited') }}</div>
|
<div class="label"><translate>Tracks favorited</translate></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -34,25 +34,25 @@
|
||||||
<div class="value">
|
<div class="value">
|
||||||
{{ parseInt(stats.musicDuration) }}
|
{{ parseInt(stats.musicDuration) }}
|
||||||
</div>
|
</div>
|
||||||
<div class="label">{{ $gettext('Hours of music') }}</div>
|
<div class="label"><translate>Hours of music</translate></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="statistic">
|
<div class="statistic">
|
||||||
<div class="value">
|
<div class="value">
|
||||||
{{ stats.artists }}
|
{{ stats.artists }}
|
||||||
</div>
|
</div>
|
||||||
<div class="label">{{ $gettext('Artists') }}</div>
|
<div class="label"><translate>Artists</translate></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="statistic">
|
<div class="statistic">
|
||||||
<div class="value">
|
<div class="value">
|
||||||
{{ stats.albums }}
|
{{ stats.albums }}
|
||||||
</div>
|
</div>
|
||||||
<div class="label">{{ $gettext('Albums') }}</div>
|
<div class="label"><translate>Albums</translate></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="statistic">
|
<div class="statistic">
|
||||||
<div class="value">
|
<div class="value">
|
||||||
{{ stats.tracks }}
|
{{ stats.tracks }}
|
||||||
</div>
|
</div>
|
||||||
<div class="label">{{ $gettext('tracks') }}</div>
|
<div class="label"><translate>tracks</translate></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -20,28 +20,28 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="ui basic buttons">
|
<div class="ui basic buttons">
|
||||||
<router-link class="ui button" :to="{name: 'library.artists.detail', params: {id: album.artist.id }}">
|
<router-link class="ui button" :to="{name: 'library.artists.detail', params: {id: album.artist.id }}">
|
||||||
{{ $gettext('Artist page') }}
|
<translate>Artist page</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
</h2>
|
</h2>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<play-button class="orange" :tracks="album.tracks">
|
<play-button class="orange" :tracks="album.tracks">
|
||||||
{{ $gettext('Play all') }}
|
<translate>Play all</translate>
|
||||||
</play-button>
|
</play-button>
|
||||||
|
|
||||||
<a :href="wikipediaUrl" target="_blank" class="ui button">
|
<a :href="wikipediaUrl" target="_blank" class="ui button">
|
||||||
<i class="wikipedia icon"></i>
|
<i class="wikipedia icon"></i>
|
||||||
{{ $gettext('Search on Wikipedia') }}
|
<translate>Search on Wikipedia</translate>
|
||||||
</a>
|
</a>
|
||||||
<a :href="musicbrainzUrl" target="_blank" class="ui button">
|
<a :href="musicbrainzUrl" target="_blank" class="ui button">
|
||||||
<i class="external icon"></i>
|
<i class="external icon"></i>
|
||||||
{{ $gettext('View on MusicBrainz') }}
|
<translate>View on MusicBrainz</translate>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<h2>
|
<h2>
|
||||||
{{ $gettext('Tracks') }}
|
<translate>Tracks</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<track-table v-if="album" :display-position="true" :tracks="album.tracks"></track-table>
|
<track-table v-if="album" :display-position="true" :tracks="album.tracks"></track-table>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -24,16 +24,16 @@
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<radio-button type="artist" :object-id="artist.id"></radio-button>
|
<radio-button type="artist" :object-id="artist.id"></radio-button>
|
||||||
<play-button class="orange" :artist="artist.id">
|
<play-button class="orange" :artist="artist.id">
|
||||||
{{ $gettext('Play all albums') }}
|
<translate>Play all albums</translate>
|
||||||
</play-button>
|
</play-button>
|
||||||
|
|
||||||
<a :href="wikipediaUrl" target="_blank" class="ui button">
|
<a :href="wikipediaUrl" target="_blank" class="ui button">
|
||||||
<i class="wikipedia icon"></i>
|
<i class="wikipedia icon"></i>
|
||||||
{{ $gettext('Search on Wikipedia') }}
|
<translate>Search on Wikipedia</translate>
|
||||||
</a>
|
</a>
|
||||||
<a :href="musicbrainzUrl" target="_blank" class="ui button">
|
<a :href="musicbrainzUrl" target="_blank" class="ui button">
|
||||||
<i class="external icon"></i>
|
<i class="external icon"></i>
|
||||||
{{ $gettext('View on MusicBrainz') }}
|
<translate>View on MusicBrainz</translate>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="albums" class="ui vertical stripe segment">
|
<div v-else-if="albums" class="ui vertical stripe segment">
|
||||||
<h2>
|
<h2>
|
||||||
{{ $gettext('Albums by this artist') }}
|
<translate>Albums by this artist</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<div class="ui stackable doubling three column grid">
|
<div class="ui stackable doubling three column grid">
|
||||||
<div class="column" :key="album.id" v-for="album in albums">
|
<div class="column" :key="album.id" v-for="album in albums">
|
||||||
|
|
|
@ -2,18 +2,18 @@
|
||||||
<div v-title="'Artists'">
|
<div v-title="'Artists'">
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<h2 class="ui header">
|
<h2 class="ui header">
|
||||||
{{ $gettext('Browsing artists') }}
|
<translate>Browsing artists</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<div :class="['ui', {'loading': isLoading}, 'form']">
|
<div :class="['ui', {'loading': isLoading}, 'form']">
|
||||||
<div class="fields">
|
<div class="fields">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>
|
<label>
|
||||||
{{ $gettext('Search') }}
|
<translate>Search</translate>
|
||||||
</label>
|
</label>
|
||||||
<input type="text" v-model="query" placeholder="Enter an artist name..."/>
|
<input type="text" v-model="query" placeholder="Enter an artist name..."/>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering') }}</label>
|
<label><translate>Ordering</translate></label>
|
||||||
<select class="ui dropdown" v-model="ordering">
|
<select class="ui dropdown" v-model="ordering">
|
||||||
<option v-for="option in orderingOptions" :value="option[0]">
|
<option v-for="option in orderingOptions" :value="option[0]">
|
||||||
{{ option[1] }}
|
{{ option[1] }}
|
||||||
|
@ -21,14 +21,14 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering direction') }}</label>
|
<label><translate>Ordering direction</translate></label>
|
||||||
<select class="ui dropdown" v-model="orderingDirection">
|
<select class="ui dropdown" v-model="orderingDirection">
|
||||||
<option value="+">Ascending</option>
|
<option value="+">Ascending</option>
|
||||||
<option value="-">Descending</option>
|
<option value="-">Descending</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Results per page') }}</label>
|
<label><translate>Results per page</translate></label>
|
||||||
<select class="ui dropdown" v-model="paginateBy">
|
<select class="ui dropdown" v-model="paginateBy">
|
||||||
<option :value="parseInt(12)">12</option>
|
<option :value="parseInt(12)">12</option>
|
||||||
<option :value="parseInt(25)">25</option>
|
<option :value="parseInt(25)">25</option>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<div class="ui stackable three column grid">
|
<div class="ui stackable three column grid">
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<h2 class="ui header">
|
<h2 class="ui header">
|
||||||
{{ $gettext('Latest artists') }}
|
<translate>Latest artists</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<div :class="['ui', {'active': isLoadingArtists}, 'inline', 'loader']"></div>
|
<div :class="['ui', {'active': isLoadingArtists}, 'inline', 'loader']"></div>
|
||||||
<div v-if="artists.length > 0" v-for="artist in artists.slice(0, 3)" :key="artist.id" class="ui cards">
|
<div v-if="artists.length > 0" v-for="artist in artists.slice(0, 3)" :key="artist.id" class="ui cards">
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<h2 class="ui header">
|
<h2 class="ui header">
|
||||||
{{ $gettext('Radios') }}
|
<translate>Radios</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<radio-card :type="'favorites'"></radio-card>
|
<radio-card :type="'favorites'"></radio-card>
|
||||||
<radio-card :type="'random'"></radio-card>
|
<radio-card :type="'random'"></radio-card>
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<h2 class="ui header">
|
<h2 class="ui header">
|
||||||
{{ $gettext('Music requests') }}
|
<translate>Music requests</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<request-form v-if="$store.state.auth.authenticated"></request-form>
|
<request-form v-if="$store.state.auth.authenticated"></request-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,23 +2,23 @@
|
||||||
<div class="main library pusher">
|
<div class="main library pusher">
|
||||||
<div class="ui secondary pointing menu">
|
<div class="ui secondary pointing menu">
|
||||||
<router-link class="ui item" to="/library" exact>
|
<router-link class="ui item" to="/library" exact>
|
||||||
{{ $gettext('Browse') }}
|
<translate>Browse</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link class="ui item" to="/library/artists" exact>
|
<router-link class="ui item" to="/library/artists" exact>
|
||||||
{{ $gettext('Artists') }}
|
<translate>Artists</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link class="ui item" to="/library/radios" exact>
|
<router-link class="ui item" to="/library/radios" exact>
|
||||||
{{ $gettext('Radios') }}
|
<translate>Radios</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link class="ui item" to="/library/playlists" exact>
|
<router-link class="ui item" to="/library/playlists" exact>
|
||||||
{{ $gettext('Playlists') }}
|
<translate>Playlists</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="ui secondary right menu">
|
<div class="ui secondary right menu">
|
||||||
<router-link v-if="showImports" class="ui item" to="/library/import/launch" exact>
|
<router-link v-if="showImports" class="ui item" to="/library/import/launch" exact>
|
||||||
{{ $gettext('Import') }}
|
<translate>Import</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link v-if="showImports" class="ui item" to="/library/import/batches">
|
<router-link v-if="showImports" class="ui item" to="/library/import/batches">
|
||||||
{{ $gettext('Import batches') }}
|
<translate>Import batches</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,20 +2,20 @@
|
||||||
<div v-title="'Radios'">
|
<div v-title="'Radios'">
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<h2 class="ui header">
|
<h2 class="ui header">
|
||||||
{{ $gettext('Browsing radios') }}
|
<translate>Browsing radios</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<router-link class="ui green basic button" to="/library/radios/build" exact>
|
<router-link class="ui green basic button" to="/library/radios/build" exact>
|
||||||
{{ $gettext('Create your own radio') }}
|
<translate>Create your own radio</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<div :class="['ui', {'loading': isLoading}, 'form']">
|
<div :class="['ui', {'loading': isLoading}, 'form']">
|
||||||
<div class="fields">
|
<div class="fields">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Search') }}</label>
|
<label><translate>Search</translate></label>
|
||||||
<input type="text" v-model="query" placeholder="Enter a radio name..."/>
|
<input type="text" v-model="query" placeholder="Enter a radio name..."/>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering') }}</label>
|
<label><translate>Ordering</translate></label>
|
||||||
<select class="ui dropdown" v-model="ordering">
|
<select class="ui dropdown" v-model="ordering">
|
||||||
<option v-for="option in orderingOptions" :value="option[0]">
|
<option v-for="option in orderingOptions" :value="option[0]">
|
||||||
{{ option[1] }}
|
{{ option[1] }}
|
||||||
|
@ -23,18 +23,18 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering direction') }}</label>
|
<label><translate>Ordering direction</translate></label>
|
||||||
<select class="ui dropdown" v-model="orderingDirection">
|
<select class="ui dropdown" v-model="orderingDirection">
|
||||||
<option value="+">
|
<option value="+">
|
||||||
{{ $gettext('Ascending') }}
|
<translate>Ascending</translate>
|
||||||
</option>
|
</option>
|
||||||
<option value="-">
|
<option value="-">
|
||||||
{{ $gettext('Descending') }}
|
<translate>Descending</translate>
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Results per page') }}</label>
|
<label><translate>Results per page</translate></label>
|
||||||
<select class="ui dropdown" v-model="paginateBy">
|
<select class="ui dropdown" v-model="paginateBy">
|
||||||
<option :value="parseInt(12)">12</option>
|
<option :value="parseInt(12)">12</option>
|
||||||
<option :value="parseInt(25)">25</option>
|
<option :value="parseInt(25)">25</option>
|
||||||
|
|
|
@ -18,17 +18,17 @@
|
||||||
<br>
|
<br>
|
||||||
<div class="ui basic buttons">
|
<div class="ui basic buttons">
|
||||||
<router-link class="ui button" :to="{name: 'library.albums.detail', params: {id: track.album.id }}">
|
<router-link class="ui button" :to="{name: 'library.albums.detail', params: {id: track.album.id }}">
|
||||||
{{ $gettext('Album page') }}
|
<translate>Album page</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link class="ui button" :to="{name: 'library.artists.detail', params: {id: track.artist.id }}">
|
<router-link class="ui button" :to="{name: 'library.artists.detail', params: {id: track.artist.id }}">
|
||||||
{{ $gettext('Artist page') }}
|
<translate>Artist page</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<play-button class="orange" :track="track">
|
<play-button class="orange" :track="track">
|
||||||
{{ $gettext('Play') }}
|
<translate>Play</translate>
|
||||||
</play-button>
|
</play-button>
|
||||||
<track-favorite-icon :track="track" :button="true"></track-favorite-icon>
|
<track-favorite-icon :track="track" :button="true"></track-favorite-icon>
|
||||||
<track-playlist-icon
|
<track-playlist-icon
|
||||||
|
@ -38,53 +38,53 @@
|
||||||
|
|
||||||
<a :href="wikipediaUrl" target="_blank" class="ui button">
|
<a :href="wikipediaUrl" target="_blank" class="ui button">
|
||||||
<i class="wikipedia icon"></i>
|
<i class="wikipedia icon"></i>
|
||||||
{{ $gettext('Search on Wikipedia') }}
|
<translate>Search on Wikipedia</translate>
|
||||||
</a>
|
</a>
|
||||||
<a :href="musicbrainzUrl" target="_blank" class="ui button">
|
<a :href="musicbrainzUrl" target="_blank" class="ui button">
|
||||||
<i class="external icon"></i>
|
<i class="external icon"></i>
|
||||||
{{ $gettext('View on MusicBrainz') }}
|
<translate>View on MusicBrainz</translate>
|
||||||
</a>
|
</a>
|
||||||
<a v-if="downloadUrl" :href="downloadUrl" target="_blank" class="ui button">
|
<a v-if="downloadUrl" :href="downloadUrl" target="_blank" class="ui button">
|
||||||
<i class="download icon"></i>
|
<i class="download icon"></i>
|
||||||
{{ $gettext('Download') }}
|
<translate>Download</translate>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="file" class="ui vertical stripe center aligned segment">
|
<div v-if="file" class="ui vertical stripe center aligned segment">
|
||||||
<h2 class="ui header">{{ $gettext('Track information') }}</h2>
|
<h2 class="ui header"><translate>Track information</translate></h2>
|
||||||
<table class="ui very basic collapsing celled center aligned table">
|
<table class="ui very basic collapsing celled center aligned table">
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{ $gettext('Duration') }}
|
<translate>Duration</translate>
|
||||||
</td>
|
</td>
|
||||||
<td v-if="file.duration">
|
<td v-if="file.duration">
|
||||||
{{ time.parse(file.duration) }}
|
{{ time.parse(file.duration) }}
|
||||||
</td>
|
</td>
|
||||||
<td v-else>
|
<td v-else>
|
||||||
{{ $gettext('N/A') }}
|
<translate>N/A</translate>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{ $gettext('Size') }}
|
<translate>Size</translate>
|
||||||
</td>
|
</td>
|
||||||
<td v-if="file.size">
|
<td v-if="file.size">
|
||||||
{{ file.size | humanSize }}
|
{{ file.size | humanSize }}
|
||||||
</td>
|
</td>
|
||||||
<td v-else>
|
<td v-else>
|
||||||
{{ $gettext('N/A') }}
|
<translate>N/A</translate>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{ $gettext('Bitrate') }}
|
<translate>Bitrate</translate>
|
||||||
</td>
|
</td>
|
||||||
<td v-if="file.bitrate">
|
<td v-if="file.bitrate">
|
||||||
{{ file.bitrate | humanSize }}/s
|
{{ file.bitrate | humanSize }}/s
|
||||||
</td>
|
</td>
|
||||||
<td v-else>
|
<td v-else>
|
||||||
{{ $gettext('N/A') }}
|
<translate>N/A</translate>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@ -92,7 +92,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="ui vertical stripe center aligned segment">
|
<div class="ui vertical stripe center aligned segment">
|
||||||
<h2>
|
<h2>
|
||||||
{{ $gettext('Lyrics') }}
|
<translate>Lyrics</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<div v-if="isLoadingLyrics" class="ui vertical segment">
|
<div v-if="isLoadingLyrics" class="ui vertical segment">
|
||||||
<div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div>
|
<div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div>
|
||||||
|
@ -100,10 +100,10 @@
|
||||||
<div v-if="lyrics" v-html="lyrics.content_rendered">
|
<div v-if="lyrics" v-html="lyrics.content_rendered">
|
||||||
</div>
|
</div>
|
||||||
<template v-if="!isLoadingLyrics & !lyrics">
|
<template v-if="!isLoadingLyrics & !lyrics">
|
||||||
<p>{{ $gettext('No lyrics available for this track.') }}</p>
|
<p><translate>No lyrics available for this track.</translate></p>
|
||||||
<a class="ui button" target="_blank" :href="lyricsSearchUrl">
|
<a class="ui button" target="_blank" :href="lyricsSearchUrl">
|
||||||
<i class="search icon"></i>
|
<i class="search icon"></i>
|
||||||
{{ $gettext('Search on lyrics.wikia.com') }}
|
<translate>Search on lyrics.wikia.com</translate>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
</h3>
|
</h3>
|
||||||
<form class="ui form" @submit.prevent="">
|
<form class="ui form" @submit.prevent="">
|
||||||
<h6 class="ui header">
|
<h6 class="ui header">
|
||||||
{{ $gettext('Filter album types') }}
|
<translate>Filter album types</translate>
|
||||||
</h6>
|
</h6>
|
||||||
<div class="inline fields">
|
<div class="inline fields">
|
||||||
<div class="field" v-for="t in availableReleaseTypes">
|
<div class="field" v-for="t in availableReleaseTypes">
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Query template') }}</label>
|
<label><translate>Query template</translate></label>
|
||||||
<input v-model="customQueryTemplate" />
|
<input v-model="customQueryTemplate" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<strong>{{ $gettext('Import batch') }}</strong>
|
<strong><translate>Import batch</translate></strong>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
#{{ batch.id }}
|
#{{ batch.id }}
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<strong>{{ $gettext('Launch date') }}</strong>
|
<strong><translate>Launch date</translate></strong>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<human-date :date="batch.creation_date"></human-date>
|
<human-date :date="batch.creation_date"></human-date>
|
||||||
|
@ -24,22 +24,22 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-if="batch.user">
|
<tr v-if="batch.user">
|
||||||
<td>
|
<td>
|
||||||
<strong>{{ $gettext('Submitted by') }}</strong>
|
<strong><translate>Submitted by</translate></strong>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<username :username="batch.user.username" />
|
<username :username="batch.user.username" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-if="stats">
|
<tr v-if="stats">
|
||||||
<td><strong>{{ $gettext('Pending') }}</strong></td>
|
<td><strong><translate>Pending</translate></strong></td>
|
||||||
<td>{{ stats.pending }}</td>
|
<td>{{ stats.pending }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-if="stats">
|
<tr v-if="stats">
|
||||||
<td><strong>{{ $gettext('Skipped') }}</strong></td>
|
<td><strong><translate>Skipped</translate></strong></td>
|
||||||
<td>{{ stats.skipped }}</td>
|
<td>{{ stats.skipped }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-if="stats">
|
<tr v-if="stats">
|
||||||
<td><strong>{{ $gettext('Errored') }}</strong></td>
|
<td><strong><translate>Errored</translate></strong></td>
|
||||||
<td>
|
<td>
|
||||||
{{ stats.errored }}
|
{{ stats.errored }}
|
||||||
<button
|
<button
|
||||||
|
@ -52,7 +52,7 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-if="stats">
|
<tr v-if="stats">
|
||||||
<td><strong>{{ $gettext('Finished') }}</strong></td>
|
<td><strong><translate>Finished</translate></strong></td>
|
||||||
<td>{{ stats.finished }}/{{ stats.count}}</td>
|
<td>{{ stats.finished }}/{{ stats.count}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@ -60,17 +60,17 @@
|
||||||
<div class="ui inline form">
|
<div class="ui inline form">
|
||||||
<div class="fields">
|
<div class="fields">
|
||||||
<div class="ui field">
|
<div class="ui field">
|
||||||
<label>{{ $gettext('Search') }}</label>
|
<label><translate>Search</translate></label>
|
||||||
<input type="text" v-model="jobFilters.search" placeholder="Search by source..." />
|
<input type="text" v-model="jobFilters.search" placeholder="Search by source..." />
|
||||||
</div>
|
</div>
|
||||||
<div class="ui field">
|
<div class="ui field">
|
||||||
<label>{{ $gettext('Status') }}</label>
|
<label><translate>Status</translate></label>
|
||||||
<select class="ui dropdown" v-model="jobFilters.status">
|
<select class="ui dropdown" v-model="jobFilters.status">
|
||||||
<option :value="null">{{ $gettext('Any') }}</option>
|
<option :value="null"><translate>Any</translate></option>
|
||||||
<option :value="'pending'">{{ $gettext('Pending') }}</option>
|
<option :value="'pending'"><translate>Pending</translate></option>
|
||||||
<option :value="'errored'">{{ $gettext('Errored') }}</option>
|
<option :value="'errored'"><translate>Errored</translate></option>
|
||||||
<option :value="'finished'">{{ $gettext('Success') }}</option>
|
<option :value="'finished'"><translate>Success</translate></option>
|
||||||
<option :value="'skipped'">{{ $gettext('Skipped') }}</option>
|
<option :value="'skipped'"><translate>Skipped</translate></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -78,11 +78,11 @@
|
||||||
<table v-if="jobResult" class="ui unstackable table">
|
<table v-if="jobResult" class="ui unstackable table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{{ $gettext('Job ID') }}</th>
|
<th><translate>Job ID</translate></th>
|
||||||
<th>{{ $gettext('Recording MusicBrainz ID') }}</th>
|
<th><translate>Recording MusicBrainz ID</translate></th>
|
||||||
<th>{{ $gettext('Source') }}</th>
|
<th><translate>Source</translate></th>
|
||||||
<th>{{ $gettext('Status') }}</th>
|
<th><translate>Status</translate></th>
|
||||||
<th>{{ $gettext('Track') }}</th>
|
<th><translate>Track</translate></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
|
@ -5,25 +5,25 @@
|
||||||
<div class="ui inline form">
|
<div class="ui inline form">
|
||||||
<div class="fields">
|
<div class="fields">
|
||||||
<div class="ui field">
|
<div class="ui field">
|
||||||
<label>{{ $gettext('Search') }}</label>
|
<label><translate>Search</translate></label>
|
||||||
<input type="text" v-model="filters.search" placeholder="Search by submitter, source..." />
|
<input type="text" v-model="filters.search" placeholder="Search by submitter, source..." />
|
||||||
</div>
|
</div>
|
||||||
<div class="ui field">
|
<div class="ui field">
|
||||||
<label>{{ $gettext('Status') }}</label>
|
<label><translate>Status</translate></label>
|
||||||
<select class="ui dropdown" v-model="filters.status">
|
<select class="ui dropdown" v-model="filters.status">
|
||||||
<option :value="null">{{ $gettext('Any') }}</option>
|
<option :value="null"><translate>Any</translate></option>
|
||||||
<option :value="'pending'">{{ $gettext('Pending') }}</option>
|
<option :value="'pending'"><translate>Pending</translate></option>
|
||||||
<option :value="'errored'">{{ $gettext('Errored') }}</option>
|
<option :value="'errored'"><translate>Errored</translate></option>
|
||||||
<option :value="'finished'">{{ $gettext('Success') }}</option>
|
<option :value="'finished'"><translate>Success</translate></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui field">
|
<div class="ui field">
|
||||||
<label>{{ $gettext('Import source') }}</label>
|
<label><translate>Import source</translate></label>
|
||||||
<select class="ui dropdown" v-model="filters.source">
|
<select class="ui dropdown" v-model="filters.source">
|
||||||
<option :value="null">{{ $gettext('Any') }}</option>
|
<option :value="null"><translate>Any</translate></option>
|
||||||
<option :value="'shell'">{{ $gettext('CLI') }}</option>
|
<option :value="'shell'"><translate>CLI</translate></option>
|
||||||
<option :value="'api'">{{ $gettext('API') }}</option>
|
<option :value="'api'"><translate>API</translate></option>
|
||||||
<option :value="'federation'">{{ $gettext('Federation') }}</option>
|
<option :value="'federation'"><translate>Federation</translate></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -32,12 +32,12 @@
|
||||||
<table v-if="result && result.results.length > 0" class="ui unstackable table">
|
<table v-if="result && result.results.length > 0" class="ui unstackable table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{{ $gettext('ID') }}</th>
|
<th><translate>ID</translate></th>
|
||||||
<th>{{ $gettext('Launch date') }}</th>
|
<th><translate>Launch date</translate></th>
|
||||||
<th>{{ $gettext('Jobs') }}</th>
|
<th><translate>Jobs</translate></th>
|
||||||
<th>{{ $gettext('Status') }}</th>
|
<th><translate>Status</translate></th>
|
||||||
<th>{{ $gettext('Source') }}</th>
|
<th><translate>Source</translate></th>
|
||||||
<th>{{ $gettext('Submitted by') }}</th>
|
<th><translate>Submitted by</translate></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
<div>
|
<div>
|
||||||
<div v-if="batch" class="ui container">
|
<div v-if="batch" class="ui container">
|
||||||
<div class="ui message">
|
<div class="ui message">
|
||||||
{{ $gettext('Ensure your music files are properly tagged before uploading them.') }}
|
<translate>Ensure your music files are properly tagged before uploading them.</translate>
|
||||||
<a href="http://picard.musicbrainz.org/" target='_blank'>{{ $gettext('We recommend using Picard for that purpose.') }}</a>
|
<a href="http://picard.musicbrainz.org/" target='_blank'><translate>We recommend using Picard for that purpose.</translate></a>
|
||||||
</div>
|
</div>
|
||||||
<file-upload-widget
|
<file-upload-widget
|
||||||
:class="['ui', 'icon', 'left', 'floated', 'button']"
|
:class="['ui', 'icon', 'left', 'floated', 'button']"
|
||||||
|
@ -20,30 +20,30 @@
|
||||||
@input-file="inputFile"
|
@input-file="inputFile"
|
||||||
ref="upload">
|
ref="upload">
|
||||||
<i class="upload icon"></i>
|
<i class="upload icon"></i>
|
||||||
{{ $gettext('Select files to upload...') }}
|
<translate>Select files to upload...</translate>
|
||||||
</file-upload-widget>
|
</file-upload-widget>
|
||||||
<button
|
<button
|
||||||
:class="['ui', 'right', 'floated', 'icon', {disabled: files.length === 0}, 'button']"
|
:class="['ui', 'right', 'floated', 'icon', {disabled: files.length === 0}, 'button']"
|
||||||
v-if="!$refs.upload || !$refs.upload.active" @click.prevent="startUpload()">
|
v-if="!$refs.upload || !$refs.upload.active" @click.prevent="startUpload()">
|
||||||
<i class="play icon" aria-hidden="true"></i>
|
<i class="play icon" aria-hidden="true"></i>
|
||||||
{{ $gettext('Start Upload') }}
|
<translate>Start Upload</translate>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="ui right floated icon yellow button" v-else @click.prevent="$refs.upload.active = false">
|
<button type="button" class="ui right floated icon yellow button" v-else @click.prevent="$refs.upload.active = false">
|
||||||
<i class="pause icon" aria-hidden="true"></i>
|
<i class="pause icon" aria-hidden="true"></i>
|
||||||
{{ $gettext('Stop Upload') }}
|
<translate>Stop Upload</translate>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui hidden clearing divider"></div>
|
<div class="ui hidden clearing divider"></div>
|
||||||
<template v-if="batch">{{ $gettext('Once all your files are uploaded, simply click the following button to check the import status.') }}</template>
|
<template v-if="batch"><translate>Once all your files are uploaded, simply click the following button to check the import status.</translate></template>
|
||||||
<router-link class="ui basic button" v-if="batch" :to="{name: 'library.import.batches.detail', params: {id: batch.id }}">
|
<router-link class="ui basic button" v-if="batch" :to="{name: 'library.import.batches.detail', params: {id: batch.id }}">
|
||||||
{{ $gettext('Import detail page') }}
|
<translate>Import detail page</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<table class="ui single line table">
|
<table class="ui single line table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{{ $gettext('File name') }}</th>
|
<th><translate>File name</translate></th>
|
||||||
<th>{{ $gettext('Size') }}</th>
|
<th><translate>Size</translate></th>
|
||||||
<th>{{ $gettext('Status') }}</th>
|
<th><translate>Status</translate></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -54,10 +54,10 @@
|
||||||
<span v-if="file.error" class="ui red label">
|
<span v-if="file.error" class="ui red label">
|
||||||
{{ file.error }}
|
{{ file.error }}
|
||||||
</span>
|
</span>
|
||||||
<span v-else-if="file.success" class="ui green label">{{ $gettext('Success') }}</span>
|
<span v-else-if="file.success" class="ui green label"><translate>Success</translate></span>
|
||||||
<span v-else-if="file.active" class="ui yellow label">{{ $gettext('Uploading...') }}</span>
|
<span v-else-if="file.active" class="ui yellow label"><translate>Uploading...</translate></span>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<span class="ui label">{{ $gettext('Pending') }}</span>
|
<span class="ui label"><translate>Pending</translate></span>
|
||||||
<button class="ui tiny basic red icon button" @click.prevent="$refs.upload.remove(file)"><i class="delete icon"></i></button>
|
<button class="ui tiny basic red icon button" @click.prevent="$refs.upload.remove(file)"><i class="delete icon"></i></button>
|
||||||
</template>
|
</template>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -4,30 +4,30 @@
|
||||||
<div class="ui top three attached ordered steps">
|
<div class="ui top three attached ordered steps">
|
||||||
<a @click="currentStep = 0" :class="['step', {'active': currentStep === 0}, {'completed': currentStep > 0}]">
|
<a @click="currentStep = 0" :class="['step', {'active': currentStep === 0}, {'completed': currentStep > 0}]">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="title">{{ $gettext('Import source') }}</div>
|
<div class="title"><translate>Import source</translate></div>
|
||||||
<div class="description">{{ $gettext('Uploaded files or external source') }}</div>
|
<div class="description"><translate>Uploaded files or external source</translate></div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
<a @click="currentStep = 1" :class="['step', {'active': currentStep === 1}, {'completed': currentStep > 1}]">
|
<a @click="currentStep = 1" :class="['step', {'active': currentStep === 1}, {'completed': currentStep > 1}]">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="title">{{ $gettext('Metadata') }}</div>
|
<div class="title"><translate>Metadata</translate></div>
|
||||||
<div class="description">{{ $gettext('Grab corresponding metadata') }}</div>
|
<div class="description"><translate>Grab corresponding metadata</translate></div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
<a @click="currentStep = 2" :class="['step', {'active': currentStep === 2}, {'completed': currentStep > 2}]">
|
<a @click="currentStep = 2" :class="['step', {'active': currentStep === 2}, {'completed': currentStep > 2}]">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="title">{{ $gettext('Music') }}</div>
|
<div class="title"><translate>Music</translate></div>
|
||||||
<div class="description">{{ $gettext('Select relevant sources or files for import') }}</div>
|
<div class="description"><translate>Select relevant sources or files for import</translate></div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<div class="ui centered buttons">
|
<div class="ui centered buttons">
|
||||||
<button @click="currentStep -= 1" :disabled="currentStep === 0" class="ui icon button"><i class="left arrow icon"></i>
|
<button @click="currentStep -= 1" :disabled="currentStep === 0" class="ui icon button"><i class="left arrow icon"></i>
|
||||||
{{ $gettext('Previous step') }}
|
<translate>Previous step</translate>
|
||||||
</button>
|
</button>
|
||||||
<button @click="nextStep()" v-if="currentStep < 2" class="ui icon button">
|
<button @click="nextStep()" v-if="currentStep < 2" class="ui icon button">
|
||||||
{{ $gettext('Next step') }}
|
<translate>Next step</translate>
|
||||||
<i class="right arrow icon"></i>
|
<i class="right arrow icon"></i>
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
|
@ -57,13 +57,13 @@
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<div class="ui attached segment">
|
<div class="ui attached segment">
|
||||||
<template v-if="currentStep === 0">
|
<template v-if="currentStep === 0">
|
||||||
<p>{{ $gettext('First, choose where you want to import the music from') }}</p>
|
<p><translate>First, choose where you want to import the music from</translate></p>
|
||||||
<form class="ui form">
|
<form class="ui form">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<div class="ui radio checkbox">
|
<div class="ui radio checkbox">
|
||||||
<input type="radio" id="external" value="external" v-model="currentSource">
|
<input type="radio" id="external" value="external" v-model="currentSource">
|
||||||
<label for="external">
|
<label for="external">
|
||||||
{{ $gettext('External source. Supported backends') }}
|
<translate>External source. Supported backends</translate>
|
||||||
<div v-for="backend in backends" class="ui basic label">
|
<div v-for="backend in backends" class="ui basic label">
|
||||||
<i v-if="backend.icon" :class="[backend.icon, 'icon']"></i>
|
<i v-if="backend.icon" :class="[backend.icon, 'icon']"></i>
|
||||||
{{ backend.label }}
|
{{ backend.label }}
|
||||||
|
@ -74,7 +74,7 @@
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<div class="ui radio checkbox">
|
<div class="ui radio checkbox">
|
||||||
<input type="radio" id="upload" value="upload" v-model="currentSource">
|
<input type="radio" id="upload" value="upload" v-model="currentSource">
|
||||||
<label for="upload">{{ $gettext('File upload') }}</label>
|
<label for="upload"><translate>File upload</translate></label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@ -83,7 +83,7 @@
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<form class="ui form" @submit.prevent="">
|
<form class="ui form" @submit.prevent="">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Search an entity you want to import:') }}</label>
|
<label><translate>Search an entity you want to import:</translate></label>
|
||||||
<metadata-search
|
<metadata-search
|
||||||
:mb-type="mbType"
|
:mb-type="mbType"
|
||||||
:mb-id="mbId"
|
:mb-id="mbId"
|
||||||
|
@ -91,17 +91,17 @@
|
||||||
@type-changed="updateType"></metadata-search>
|
@type-changed="updateType"></metadata-search>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<div class="ui horizontal divider">{{ $gettext('Or') }}</div>
|
<div class="ui horizontal divider"><translate>Or</translate></div>
|
||||||
<form class="ui form" @submit.prevent="">
|
<form class="ui form" @submit.prevent="">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Input a MusicBrainz ID manually:') }}</label>
|
<label><translate>Input a MusicBrainz ID manually:</translate></label>
|
||||||
<input type="text" v-model="currentId" />
|
<input type="text" v-model="currentId" />
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<template v-if="currentType && currentId">
|
<template v-if="currentType && currentId">
|
||||||
<h4 class="ui header">
|
<h4 class="ui header">
|
||||||
{{ $gettext('You will import:') }}
|
<translate>You will import:</translate>
|
||||||
</h4>
|
</h4>
|
||||||
<component
|
<component
|
||||||
:mbId="currentId"
|
:mbId="currentId"
|
||||||
|
@ -109,7 +109,7 @@
|
||||||
@metadata-changed="this.updateMetadata"
|
@metadata-changed="this.updateMetadata"
|
||||||
></component>
|
></component>
|
||||||
</template>
|
</template>
|
||||||
<p>{{ $gettext('You can also skip this step and enter metadata manually.') }}</p>
|
<p><translate>You can also skip this step and enter metadata manually.</translate></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<h5 class="ui header">What is metadata?</h5>
|
<h5 class="ui header">What is metadata?</h5>
|
||||||
|
@ -145,9 +145,9 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="ui vertical stripe segment" v-if="currentRequest">
|
<div class="ui vertical stripe segment" v-if="currentRequest">
|
||||||
<h3 class="ui header">
|
<h3 class="ui header">
|
||||||
{{ $gettext('Music request') }}
|
<translate>Music request</translate>
|
||||||
</h3>
|
</h3>
|
||||||
<p>{{ $gettext('This import will be associated with the music request below. After the import is finished, the request will be marked as fulfilled.') }}</p>
|
<p><translate>This import will be associated with the music request below. After the import is finished, the request will be marked as fulfilled.</translate></p>
|
||||||
<request-card :request="currentRequest" :import-action="false"></request-card>
|
<request-card :request="currentRequest" :import-action="false"></request-card>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<div class="sub header">
|
<div class="sub header">
|
||||||
<div class="ui toggle checkbox">
|
<div class="ui toggle checkbox">
|
||||||
<input type="checkbox" v-model="enabled" />
|
<input type="checkbox" v-model="enabled" />
|
||||||
<label>{{ $gettext('Import this release') }}</label>
|
<label><translate>Import this release</translate></label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
|
@ -9,13 +9,13 @@
|
||||||
</h5>
|
</h5>
|
||||||
<div class="ui toggle checkbox">
|
<div class="ui toggle checkbox">
|
||||||
<input type="checkbox" v-model="enabled" />
|
<input type="checkbox" v-model="enabled" />
|
||||||
<label>{{ $gettext('Import this track') }}</label>
|
<label><translate>Import this track</translate></label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="three wide column" v-if="enabled">
|
<div class="three wide column" v-if="enabled">
|
||||||
<form class="ui mini form" @submit.prevent="">
|
<form class="ui mini form" @submit.prevent="">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Source') }}</label>
|
<label><translate>Source</translate></label>
|
||||||
<select v-model="currentBackendId">
|
<select v-model="currentBackendId">
|
||||||
<option v-for="backend in backends" :value="backend.id">
|
<option v-for="backend in backends" :value="backend.id">
|
||||||
{{ backend.label }}
|
{{ backend.label }}
|
||||||
|
@ -40,9 +40,9 @@
|
||||||
<div class="four wide column" v-if="enabled">
|
<div class="four wide column" v-if="enabled">
|
||||||
<form class="ui mini form" @submit.prevent="">
|
<form class="ui mini form" @submit.prevent="">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Search query') }}</label>
|
<label><translate>Search query</translate></label>
|
||||||
<input type="text" v-model="query" />
|
<input type="text" v-model="query" />
|
||||||
<label>{{ $gettext('Imported URL') }}</label>
|
<label><translate>Imported URL</translate></label>
|
||||||
<input type="text" v-model="importedUrl" />
|
<input type="text" v-model="importedUrl" />
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -3,38 +3,38 @@
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
<h2 class="ui header">
|
<h2 class="ui header">
|
||||||
{{ $gettext('Builder') }}
|
<translate>Builder</translate>
|
||||||
</h2>
|
</h2>
|
||||||
<p>{{ $gettext('You can use this interface to build your own custom radio, which will play tracks according to your criteria.') }}</p>
|
<p><translate>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 class="ui form">
|
||||||
<div class="inline fields">
|
<div class="inline fields">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label for="name">{{ $gettext('Radio name') }}</label>
|
<label for="name"><translate>Radio name</translate></label>
|
||||||
<input id="name" type="text" v-model="radioName" placeholder="My awesome radio" />
|
<input id="name" type="text" v-model="radioName" placeholder="My awesome radio" />
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<input id="public" type="checkbox" v-model="isPublic" />
|
<input id="public" type="checkbox" v-model="isPublic" />
|
||||||
<label for="public">{{ $gettext('Display publicly') }}</label>
|
<label for="public"><translate>Display publicly</translate></label>
|
||||||
</div>
|
</div>
|
||||||
<button :disabled="!canSave" @click="save" class="ui green button">
|
<button :disabled="!canSave" @click="save" class="ui green button">
|
||||||
{{ $gettext('Save') }}
|
<translate>Save</translate>
|
||||||
</button>
|
</button>
|
||||||
<radio-button v-if="id" type="custom" :custom-radio-id="id"></radio-button>
|
<radio-button v-if="id" type="custom" :custom-radio-id="id"></radio-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui form">
|
<div class="ui form">
|
||||||
<p>
|
<p>
|
||||||
{{ $gettext('Add filters to customize your radio') }}
|
<translate>Add filters to customize your radio</translate>
|
||||||
</p>
|
</p>
|
||||||
<div class="inline field">
|
<div class="inline field">
|
||||||
<select class="ui dropdown" v-model="currentFilterType">
|
<select class="ui dropdown" v-model="currentFilterType">
|
||||||
<option value="">
|
<option value="">
|
||||||
{{ $gettext('Select a filter') }}
|
<translate>Select a filter</translate>
|
||||||
</option>
|
</option>
|
||||||
<option v-for="f in availableFilters" :value="f.type">{{ f.label }}</option>
|
<option v-for="f in availableFilters" :value="f.type">{{ f.label }}</option>
|
||||||
</select>
|
</select>
|
||||||
<button :disabled="!currentFilterType" @click="add" class="ui button">
|
<button :disabled="!currentFilterType" @click="add" class="ui button">
|
||||||
{{ $gettext('Add filter') }}
|
<translate>Add filter</translate>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<p v-if="currentFilter">
|
<p v-if="currentFilter">
|
||||||
|
@ -44,11 +44,11 @@
|
||||||
<table class="ui table">
|
<table class="ui table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="two wide">{{ $gettext('Filter name') }}</th>
|
<th class="two wide"><translate>Filter name</translate></th>
|
||||||
<th class="one wide">{{ $gettext('Exclude') }}</th>
|
<th class="one wide"><translate>Exclude</translate></th>
|
||||||
<th class="six wide">{{ $gettext('Config') }}</th>
|
<th class="six wide"><translate>Config</translate></th>
|
||||||
<th class="five wide">{{ $gettext('Candidates') }}</th>
|
<th class="five wide"><translate>Candidates</translate></th>
|
||||||
<th class="two wide">{{ $gettext('Actions') }}</th>
|
<th class="two wide"><translate>Actions</translate></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
</span>
|
</span>
|
||||||
<modal v-if="checkResult" :show.sync="showCandidadesModal">
|
<modal v-if="checkResult" :show.sync="showCandidadesModal">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
{{ $gettext('Track matching filter') }}
|
<translate>Track matching filter</translate>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="description">
|
<div class="description">
|
||||||
|
@ -51,13 +51,13 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
<div class="ui black deny button">
|
<div class="ui black deny button">
|
||||||
{{ $gettext('Cancel') }}
|
<translate>Cancel</translate>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</modal>
|
</modal>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<button @click="$emit('delete', index)" class="ui basic red button">{{ $gettext('Remove') }}</button>
|
<button @click="$emit('delete', index)" class="ui basic red button"><translate>Remove</translate></button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
<div class="ui inline form">
|
<div class="ui inline form">
|
||||||
<div class="fields">
|
<div class="fields">
|
||||||
<div class="ui field">
|
<div class="ui field">
|
||||||
<label>{{ $gettext('Search') }}</label>
|
<label><translate>Search</translate></label>
|
||||||
<input type="text" v-model="search" placeholder="Search by title, artist, domain..." />
|
<input type="text" v-model="search" placeholder="Search by title, artist, domain..." />
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering') }}</label>
|
<label><translate>Ordering</translate></label>
|
||||||
<select class="ui dropdown" v-model="ordering">
|
<select class="ui dropdown" v-model="ordering">
|
||||||
<option v-for="option in orderingOptions" :value="option[0]">
|
<option v-for="option in orderingOptions" :value="option[0]">
|
||||||
{{ option[1] }}
|
{{ option[1] }}
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering direction') }}</label>
|
<label><translate>Ordering direction</translate></label>
|
||||||
<select class="ui dropdown" v-model="orderingDirection">
|
<select class="ui dropdown" v-model="orderingDirection">
|
||||||
<option value="+">Ascending</option>
|
<option value="+">Ascending</option>
|
||||||
<option value="-">Descending</option>
|
<option value="-">Descending</option>
|
||||||
|
@ -35,14 +35,14 @@
|
||||||
:action-url="'manage/library/track-files/action/'"
|
:action-url="'manage/library/track-files/action/'"
|
||||||
:filters="actionFilters">
|
:filters="actionFilters">
|
||||||
<template slot="header-cells">
|
<template slot="header-cells">
|
||||||
<th>{{ $gettext('Title') }}</th>
|
<th><translate>Title</translate></th>
|
||||||
<th>{{ $gettext('Artist') }}</th>
|
<th><translate>Artist</translate></th>
|
||||||
<th>{{ $gettext('Album') }}</th>
|
<th><translate>Album</translate></th>
|
||||||
<th>{{ $gettext('Import date') }}</th>
|
<th><translate>Import date</translate></th>
|
||||||
<th>{{ $gettext('Type') }}</th>
|
<th><translate>Type</translate></th>
|
||||||
<th>{{ $gettext('Bitrate') }}</th>
|
<th><translate>Bitrate</translate></th>
|
||||||
<th>{{ $gettext('Duration') }}</th>
|
<th><translate>Duration</translate></th>
|
||||||
<th>{{ $gettext('Size') }}</th>
|
<th><translate>Size</translate></th>
|
||||||
</template>
|
</template>
|
||||||
<template slot="row-cells" slot-scope="scope">
|
<template slot="row-cells" slot-scope="scope">
|
||||||
<td>
|
<td>
|
||||||
|
@ -61,25 +61,25 @@
|
||||||
{{ scope.obj.audio_mimetype }}
|
{{ scope.obj.audio_mimetype }}
|
||||||
</td>
|
</td>
|
||||||
<td v-else>
|
<td v-else>
|
||||||
{{ $gettext('N/A') }}
|
<translate>N/A</translate>
|
||||||
</td>
|
</td>
|
||||||
<td v-if="scope.obj.bitrate">
|
<td v-if="scope.obj.bitrate">
|
||||||
{{ scope.obj.bitrate | humanSize }}/s
|
{{ scope.obj.bitrate | humanSize }}/s
|
||||||
</td>
|
</td>
|
||||||
<td v-else>
|
<td v-else>
|
||||||
{{ $gettext('N/A') }}
|
<translate>N/A</translate>
|
||||||
</td>
|
</td>
|
||||||
<td v-if="scope.obj.duration">
|
<td v-if="scope.obj.duration">
|
||||||
{{ time.parse(scope.obj.duration) }}
|
{{ time.parse(scope.obj.duration) }}
|
||||||
</td>
|
</td>
|
||||||
<td v-else>
|
<td v-else>
|
||||||
{{ $gettext('N/A') }}
|
<translate>N/A</translate>
|
||||||
</td>
|
</td>
|
||||||
<td v-if="scope.obj.size">
|
<td v-if="scope.obj.size">
|
||||||
{{ scope.obj.size | humanSize }}
|
{{ scope.obj.size | humanSize }}
|
||||||
</td>
|
</td>
|
||||||
<td v-else>
|
<td v-else>
|
||||||
{{ $gettext('N/A') }}
|
<translate>N/A</translate>
|
||||||
</td>
|
</td>
|
||||||
</template>
|
</template>
|
||||||
</action-table>
|
</action-table>
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
<div class="ui inline form">
|
<div class="ui inline form">
|
||||||
<div class="fields">
|
<div class="fields">
|
||||||
<div class="ui field">
|
<div class="ui field">
|
||||||
<label>{{ $gettext('Search') }}</label>
|
<label><translate>Search</translate></label>
|
||||||
<input type="text" v-model="search" placeholder="Search by artist, username, comment..." />
|
<input type="text" v-model="search" placeholder="Search by artist, username, comment..." />
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering') }}</label>
|
<label><translate>Ordering</translate></label>
|
||||||
<select class="ui dropdown" v-model="ordering">
|
<select class="ui dropdown" v-model="ordering">
|
||||||
<option v-for="option in orderingOptions" :value="option[0]">
|
<option v-for="option in orderingOptions" :value="option[0]">
|
||||||
{{ option[1] }}
|
{{ option[1] }}
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering direction') }}</label>
|
<label><translate>Ordering direction</translate></label>
|
||||||
<select class="ui dropdown" v-model="orderingDirection">
|
<select class="ui dropdown" v-model="orderingDirection">
|
||||||
<option value="+">Ascending</option>
|
<option value="+">Ascending</option>
|
||||||
<option value="-">Descending</option>
|
<option value="-">Descending</option>
|
||||||
|
@ -24,11 +24,11 @@
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext("Status") }}</label>
|
<label>{{ $gettext("Status") }}</label>
|
||||||
<select class="ui dropdown" v-model="status">
|
<select class="ui dropdown" v-model="status">
|
||||||
<option :value="null">{{ $gettext('All') }}</option>
|
<option :value="null"><translate>All</translate></option>
|
||||||
<option :value="'pending'">{{ $gettext('Pending') }}</option>
|
<option :value="'pending'"><translate>Pending</translate></option>
|
||||||
<option :value="'accepted'">{{ $gettext('Accepted') }}</option>
|
<option :value="'accepted'"><translate>Accepted</translate></option>
|
||||||
<option :value="'imported'">{{ $gettext('Imported') }}</option>
|
<option :value="'imported'"><translate>Imported</translate></option>
|
||||||
<option :value="'closed'">{{ $gettext('Closed') }}</option>
|
<option :value="'closed'"><translate>Closed</translate></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -45,24 +45,24 @@
|
||||||
:action-url="'manage/requests/import-requests/action/'"
|
:action-url="'manage/requests/import-requests/action/'"
|
||||||
:filters="actionFilters">
|
:filters="actionFilters">
|
||||||
<template slot="header-cells">
|
<template slot="header-cells">
|
||||||
<th>{{ $gettext('User') }}</th>
|
<th><translate>User</translate></th>
|
||||||
<th>{{ $gettext('Status') }}</th>
|
<th><translate>Status</translate></th>
|
||||||
<th>{{ $gettext('Artist') }}</th>
|
<th><translate>Artist</translate></th>
|
||||||
<th>{{ $gettext('Albums') }}</th>
|
<th><translate>Albums</translate></th>
|
||||||
<th>{{ $gettext('Comment') }}</th>
|
<th><translate>Comment</translate></th>
|
||||||
<th>{{ $gettext('Creation date') }}</th>
|
<th><translate>Creation date</translate></th>
|
||||||
<th>{{ $gettext('Import date') }}</th>
|
<th><translate>Import date</translate></th>
|
||||||
<th>{{ $gettext('Actions') }}</th>
|
<th><translate>Actions</translate></th>
|
||||||
</template>
|
</template>
|
||||||
<template slot="row-cells" slot-scope="scope">
|
<template slot="row-cells" slot-scope="scope">
|
||||||
<td>
|
<td>
|
||||||
{{ scope.obj.user.username }}
|
{{ scope.obj.user.username }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span class="ui green basic label" v-if="scope.obj.status === 'imported'">{{ $gettext('Imported') }}</span>
|
<span class="ui green basic label" v-if="scope.obj.status === 'imported'"><translate>Imported</translate></span>
|
||||||
<span class="ui pink basic label" v-else-if="scope.obj.status === 'accepted'">{{ $gettext('Accepted') }}</span>
|
<span class="ui pink basic label" v-else-if="scope.obj.status === 'accepted'"><translate>Accepted</translate></span>
|
||||||
<span class="ui yellow basic label" v-else-if="scope.obj.status === 'pending'">{{ $gettext('Pending') }}</span>
|
<span class="ui yellow basic label" v-else-if="scope.obj.status === 'pending'"><translate>Pending</translate></span>
|
||||||
<span class="ui red basic label" v-else-if="scope.obj.status === 'closed'">{{ $gettext('Closed') }}</span>
|
<span class="ui red basic label" v-else-if="scope.obj.status === 'closed'"><translate>Closed</translate></span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span :title="scope.obj.artist_name">{{ scope.obj.artist_name|truncate(30) }}</span>
|
<span :title="scope.obj.artist_name">{{ scope.obj.artist_name|truncate(30) }}</span>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div>
|
<div>
|
||||||
<form class="ui form" @submit.prevent="submit">
|
<form class="ui form" @submit.prevent="submit">
|
||||||
<div v-if="errors.length > 0" class="ui negative message">
|
<div v-if="errors.length > 0" class="ui negative message">
|
||||||
<div class="header">{{ $gettext('Error while creating invitation') }}</div>
|
<div class="header"><translate>Error while creating invitation</translate></div>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li v-for="error in errors">{{ error }}</li>
|
<li v-for="error in errors">{{ error }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="ui field">
|
<div class="ui field">
|
||||||
<button :class="['ui', {loading: isLoading}, 'button']" :disabled="isLoading" type="submit">
|
<button :class="['ui', {loading: isLoading}, 'button']" :disabled="isLoading" type="submit">
|
||||||
{{ $gettext('Get a new invitation') }}
|
<translate>Get a new invitation</translate>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -24,8 +24,8 @@
|
||||||
<table class="ui ui basic table">
|
<table class="ui ui basic table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{{ $gettext('Code') }}</th>
|
<th><translate>Code</translate></th>
|
||||||
<th>{{ $gettext('Share link') }}</th>
|
<th><translate>Share link</translate></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<button class="ui basic button" @click="invitations = []">{{ $gettext('Clear') }}</button>
|
<button class="ui basic button" @click="invitations = []"><translate>Clear</translate></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="ui inline form">
|
<div class="ui inline form">
|
||||||
<div class="fields">
|
<div class="fields">
|
||||||
<div class="ui field">
|
<div class="ui field">
|
||||||
<label>{{ $gettext('Search') }}</label>
|
<label><translate>Search</translate></label>
|
||||||
<input type="text" v-model="search" placeholder="Search by username, email, code..." />
|
<input type="text" v-model="search" placeholder="Search by username, email, code..." />
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
|
@ -17,9 +17,9 @@
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext("Status") }}</label>
|
<label>{{ $gettext("Status") }}</label>
|
||||||
<select class="ui dropdown" v-model="isOpen">
|
<select class="ui dropdown" v-model="isOpen">
|
||||||
<option :value="null">{{ $gettext('All') }}</option>
|
<option :value="null"><translate>All</translate></option>
|
||||||
<option :value="true">{{ $gettext('Open') }}</option>
|
<option :value="true"><translate>Open</translate></option>
|
||||||
<option :value="false">{{ $gettext('Expired/used') }}</option>
|
<option :value="false"><translate>Expired/used</translate></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -36,20 +36,20 @@
|
||||||
:action-url="'manage/users/invitations/action/'"
|
:action-url="'manage/users/invitations/action/'"
|
||||||
:filters="actionFilters">
|
:filters="actionFilters">
|
||||||
<template slot="header-cells">
|
<template slot="header-cells">
|
||||||
<th>{{ $gettext('Owner') }}</th>
|
<th><translate>Owner</translate></th>
|
||||||
<th>{{ $gettext('Status') }}</th>
|
<th><translate>Status</translate></th>
|
||||||
<th>{{ $gettext('Creation date') }}</th>
|
<th><translate>Creation date</translate></th>
|
||||||
<th>{{ $gettext('Expiration date') }}</th>
|
<th><translate>Expiration date</translate></th>
|
||||||
<th>{{ $gettext('Code') }}</th>
|
<th><translate>Code</translate></th>
|
||||||
</template>
|
</template>
|
||||||
<template slot="row-cells" slot-scope="scope">
|
<template slot="row-cells" slot-scope="scope">
|
||||||
<td>
|
<td>
|
||||||
<router-link :to="{name: 'manage.users.users.detail', params: {id: scope.obj.id }}">{{ scope.obj.owner.username }}</router-link>
|
<router-link :to="{name: 'manage.users.users.detail', params: {id: scope.obj.id }}">{{ scope.obj.owner.username }}</router-link>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span v-if="scope.obj.users.length > 0" class="ui green basic label">{{ $gettext('Used') }}</span>
|
<span v-if="scope.obj.users.length > 0" class="ui green basic label"><translate>Used</translate></span>
|
||||||
<span v-else-if="moment().isAfter(scope.obj.expiration_date)" class="ui red basic label">{{ $gettext('Expired') }}</span>
|
<span v-else-if="moment().isAfter(scope.obj.expiration_date)" class="ui red basic label"><translate>Expired</translate></span>
|
||||||
<span v-else class="ui basic label">{{ $gettext('Not used') }}</span>
|
<span v-else class="ui basic label"><translate>Not used</translate></span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<human-date :date="scope.obj.creation_date"></human-date>
|
<human-date :date="scope.obj.creation_date"></human-date>
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
<div class="ui inline form">
|
<div class="ui inline form">
|
||||||
<div class="fields">
|
<div class="fields">
|
||||||
<div class="ui field">
|
<div class="ui field">
|
||||||
<label>{{ $gettext('Search') }}</label>
|
<label><translate>Search</translate></label>
|
||||||
<input type="text" v-model="search" placeholder="Search by username, email, name..." />
|
<input type="text" v-model="search" placeholder="Search by username, email, name..." />
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering') }}</label>
|
<label><translate>Ordering</translate></label>
|
||||||
<select class="ui dropdown" v-model="ordering">
|
<select class="ui dropdown" v-model="ordering">
|
||||||
<option v-for="option in orderingOptions" :value="option[0]">
|
<option v-for="option in orderingOptions" :value="option[0]">
|
||||||
{{ option[1] }}
|
{{ option[1] }}
|
||||||
|
@ -15,10 +15,10 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering direction') }}</label>
|
<label><translate>Ordering direction</translate></label>
|
||||||
<select class="ui dropdown" v-model="orderingDirection">
|
<select class="ui dropdown" v-model="orderingDirection">
|
||||||
<option value="+">{{ $gettext('Ascending') }}</option>
|
<option value="+"><translate>Ascending</translate></option>
|
||||||
<option value="-">{{ $gettext('Descending') }}</option>
|
<option value="-"><translate>Descending</translate></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -35,13 +35,13 @@
|
||||||
:action-url="'manage/library/track-files/action/'"
|
:action-url="'manage/library/track-files/action/'"
|
||||||
:filters="actionFilters">
|
:filters="actionFilters">
|
||||||
<template slot="header-cells">
|
<template slot="header-cells">
|
||||||
<th>{{ $gettext('Username') }}</th>
|
<th><translate>Username</translate></th>
|
||||||
<th>{{ $gettext('Email') }}</th>
|
<th><translate>Email</translate></th>
|
||||||
<th>{{ $gettext('Account status') }}</th>
|
<th><translate>Account status</translate></th>
|
||||||
<th>{{ $gettext('Sign-up') }}</th>
|
<th><translate>Sign-up</translate></th>
|
||||||
<th>{{ $gettext('Last activity') }}</th>
|
<th><translate>Last activity</translate></th>
|
||||||
<th>{{ $gettext('Permissions') }}</th>
|
<th><translate>Permissions</translate></th>
|
||||||
<th>{{ $gettext('Status') }}</th>
|
<th><translate>Status</translate></th>
|
||||||
</template>
|
</template>
|
||||||
<template slot="row-cells" slot-scope="scope">
|
<template slot="row-cells" slot-scope="scope">
|
||||||
<td>
|
<td>
|
||||||
|
@ -59,7 +59,7 @@
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<human-date v-if="scope.obj.last_activity" :date="scope.obj.last_activity"></human-date>
|
<human-date v-if="scope.obj.last_activity" :date="scope.obj.last_activity"></human-date>
|
||||||
<template v-else>{{ $gettext('N/A') }}</template>
|
<template v-else><translate>N/A</translate></template>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<template v-for="p in permissions">
|
<template v-for="p in permissions">
|
||||||
|
@ -67,9 +67,9 @@
|
||||||
</template>
|
</template>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span v-if="scope.obj.is_superuser" class="ui pink label">{{ $gettext('Admin') }}</span>
|
<span v-if="scope.obj.is_superuser" class="ui pink label"><translate>Admin</translate></span>
|
||||||
<span v-else-if="scope.obj.is_staff" class="ui purple label">{{ $gettext('Staff member') }}</span>
|
<span v-else-if="scope.obj.is_staff" class="ui purple label"><translate>Staff member</translate></span>
|
||||||
<span v-else class="ui basic label">{{ $gettext('regular user') }}</span>
|
<span v-else class="ui basic label"><translate>regular user</translate></span>
|
||||||
</td>
|
</td>
|
||||||
</template>
|
</template>
|
||||||
</action-table>
|
</action-table>
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
<div class="ui text container">
|
<div class="ui text container">
|
||||||
<playlist-form @updated="$emit('playlist-updated', $event)" :title="false" :playlist="playlist"></playlist-form>
|
<playlist-form @updated="$emit('playlist-updated', $event)" :title="false" :playlist="playlist"></playlist-form>
|
||||||
<h3 class="ui top attached header">
|
<h3 class="ui top attached header">
|
||||||
{{ $gettext('Playlist editor') }}
|
<translate>Playlist editor</translate>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="ui attached segment">
|
<div class="ui attached segment">
|
||||||
<template v-if="status === 'loading'">
|
<template v-if="status === 'loading'">
|
||||||
<div class="ui active tiny inline loader"></div>
|
<div class="ui active tiny inline loader"></div>
|
||||||
{{ $gettext('Syncing changes to server...') }}
|
<translate>Syncing changes to server...</translate>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="status === 'errored'">
|
<template v-else-if="status === 'errored'">
|
||||||
<i class="red close icon"></i>
|
<i class="red close icon"></i>
|
||||||
{{ $gettext('An error occured while saving your changes') }}
|
<translate>An error occured while saving your changes</translate>
|
||||||
<div v-if="errors.length > 0" class="ui negative message">
|
<div v-if="errors.length > 0" class="ui negative message">
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li v-for="error in errors">{{ error }}</li>
|
<li v-for="error in errors">{{ error }}</li>
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="status === 'saved'">
|
<template v-else-if="status === 'saved'">
|
||||||
<i class="green check icon"></i> {{ $gettext('Changes synced with server') }}
|
<i class="green check icon"></i> <translate>Changes synced with server</translate>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui bottom attached segment">
|
<div class="ui bottom attached segment">
|
||||||
|
@ -38,12 +38,12 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<dangerous-button :disabled="plts.length === 0" class="labeled right floated icon" color='yellow' :action="clearPlaylist">
|
<dangerous-button :disabled="plts.length === 0" class="labeled right floated icon" color='yellow' :action="clearPlaylist">
|
||||||
<i class="eraser icon"></i> {{ $gettext('Clear playlist') }}
|
<i class="eraser icon"></i> <translate>Clear playlist</translate>
|
||||||
<p slot="modal-header">
|
<p slot="modal-header">
|
||||||
<translate :translate-params="{playlist: playlist.name}">Do you want to clear the playlist "%{ playlist }"?</translate>
|
<translate :translate-params="{playlist: playlist.name}">Do you want to clear the playlist "%{ playlist }"?</translate>
|
||||||
</p>
|
</p>
|
||||||
<p slot="modal-content">{{ $gettext('This will remove all tracks from this playlist and cannot be undone.') }}</p>
|
<p slot="modal-content"><translate>This will remove all tracks from this playlist and cannot be undone.</translate></p>
|
||||||
<p slot="modal-confirm">{{ $gettext('Clear playlist') }}</p>
|
<p slot="modal-confirm"><translate>Clear playlist</translate></p>
|
||||||
</dangerous-button>
|
</dangerous-button>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<template v-if="plts.length > 0">
|
<template v-if="plts.length > 0">
|
||||||
|
|
|
@ -1,29 +1,29 @@
|
||||||
<template>
|
<template>
|
||||||
<form class="ui form" @submit.prevent="submit()">
|
<form class="ui form" @submit.prevent="submit()">
|
||||||
<h4 v-if="title" class="ui header">{{ $gettext('Create a new playlist') }}</h4>
|
<h4 v-if="title" class="ui header"><translate>Create a new playlist</translate></h4>
|
||||||
<div v-if="success" class="ui positive message">
|
<div v-if="success" class="ui positive message">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<template v-if="playlist">
|
<template v-if="playlist">
|
||||||
{{ $gettext('Playlist updated') }}
|
<translate>Playlist updated</translate>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
{{ $gettext('Playlist created') }}
|
<translate>Playlist created</translate>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="errors.length > 0" class="ui negative message">
|
<div v-if="errors.length > 0" class="ui negative message">
|
||||||
<div class="header">{{ $gettext('We cannot create the playlist') }}</div>
|
<div class="header"><translate>We cannot create the playlist</translate></div>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li v-for="error in errors">{{ error }}</li>
|
<li v-for="error in errors">{{ error }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="three fields">
|
<div class="three fields">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Playlist name') }}</label>
|
<label><translate>Playlist name</translate></label>
|
||||||
<input v-model="name" required type="text" placeholder="My awesome playlist" />
|
<input v-model="name" required type="text" placeholder="My awesome playlist" />
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Playlist visibility') }}</label>
|
<label><translate>Playlist visibility</translate></label>
|
||||||
<select class="ui dropdown" v-model="privacyLevel">
|
<select class="ui dropdown" v-model="privacyLevel">
|
||||||
<option :value="c.value" v-for="c in privacyLevelChoices">{{ c.label }}</option>
|
<option :value="c.value" v-for="c in privacyLevelChoices">{{ c.label }}</option>
|
||||||
</select>
|
</select>
|
||||||
|
@ -31,8 +31,8 @@
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label> </label>
|
<label> </label>
|
||||||
<button :class="['ui', 'fluid', {'loading': isLoading}, 'button']" type="submit">
|
<button :class="['ui', 'fluid', {'loading': isLoading}, 'button']" type="submit">
|
||||||
<template v-if="playlist">{{ $gettext('Update playlist') }}</template>
|
<template v-if="playlist"><translate>Update playlist</translate></template>
|
||||||
<template v-else>{{ $gettext('Create playlist') }}</template>
|
<template v-else><translate>Create playlist</translate></template>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<modal @update:show="update" :show="$store.state.playlists.showModal">
|
<modal @update:show="update" :show="$store.state.playlists.showModal">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
{{ $gettext('Manage playlists') }}
|
<translate>Manage playlists</translate>
|
||||||
</div>
|
</div>
|
||||||
<div class="scrolling content">
|
<div class="scrolling content">
|
||||||
<div class="description">
|
<div class="description">
|
||||||
<template v-if="track">
|
<template v-if="track">
|
||||||
<h4 class="ui header">{{ $gettext('Current track') }}</h4>
|
<h4 class="ui header"><translate>Current track</translate></h4>
|
||||||
<div
|
<div
|
||||||
v-translate="{artist: track.artist.name, title: track.title}"
|
v-translate="{artist: track.artist.name, title: track.title}"
|
||||||
:template-params="{artist: track.artist.name, title: track.title}">
|
:template-params="{artist: track.artist.name, title: track.title}">
|
||||||
|
@ -18,20 +18,20 @@
|
||||||
<playlist-form></playlist-form>
|
<playlist-form></playlist-form>
|
||||||
<div class="ui divider"></div>
|
<div class="ui divider"></div>
|
||||||
<div v-if="errors.length > 0" class="ui negative message">
|
<div v-if="errors.length > 0" class="ui negative message">
|
||||||
<div class="header">{{ $gettext('We cannot add the track to a playlist') }}</div>
|
<div class="header"><translate>We cannot add the track to a playlist</translate></div>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li v-for="error in errors">{{ error }}</li>
|
<li v-for="error in errors">{{ error }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<h4 class="ui header">{{ $gettext('Available playlists') }}</h4>
|
<h4 class="ui header"><translate>Available playlists</translate></h4>
|
||||||
<table class="ui unstackable very basic table">
|
<table class="ui unstackable very basic table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th>{{ $gettext('Name') }}</th>
|
<th><translate>Name</translate></th>
|
||||||
<th class="sorted descending">{{ $gettext('Last modification') }}</th>
|
<th class="sorted descending"><translate>Last modification</translate></th>
|
||||||
<th>{{ $gettext('Tracks') }}</th>
|
<th><translate>Tracks</translate></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
@ -52,7 +52,7 @@
|
||||||
class="ui green icon basic small right floated button"
|
class="ui green icon basic small right floated button"
|
||||||
:title="$gettext('Add to this playlist')"
|
:title="$gettext('Add to this playlist')"
|
||||||
@click="addToPlaylist(playlist.id)">
|
@click="addToPlaylist(playlist.id)">
|
||||||
<i class="plus icon"></i> {{ $gettext('Add track') }}
|
<i class="plus icon"></i> <translate>Add track</translate>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
<div class="ui cancel button">{{ $gettext('Cancel') }}</div>
|
<div class="ui cancel button"><translate>Cancel</translate></div>
|
||||||
</div>
|
</div>
|
||||||
</modal>
|
</modal>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
v-if="button"
|
v-if="button"
|
||||||
:class="['ui', 'button']">
|
:class="['ui', 'button']">
|
||||||
<i class="list icon"></i>
|
<i class="list icon"></i>
|
||||||
{{ $gettext('Add to playlist...') }}
|
<translate>Add to playlist...</translate>
|
||||||
</button>
|
</button>
|
||||||
<i
|
<i
|
||||||
v-else
|
v-else
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<button @click="toggleRadio" :class="['ui', 'blue', {'inverted': running}, 'button']">
|
<button @click="toggleRadio" :class="['ui', 'blue', {'inverted': running}, 'button']">
|
||||||
<i class="ui feed icon"></i>
|
<i class="ui feed icon"></i>
|
||||||
<template v-if="running">{{ $gettext('Stop') }}</template>
|
<template v-if="running"><translate>Stop</translate></template>
|
||||||
<template v-else>{{ $gettext('Start') }}</template>
|
<template v-else><translate>Start</translate></template>
|
||||||
radio
|
radio
|
||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
class="ui basic yellow button"
|
class="ui basic yellow button"
|
||||||
v-if="$store.state.auth.authenticated && type === 'custom' && customRadio.user === $store.state.auth.profile.id"
|
v-if="$store.state.auth.authenticated && type === 'custom' && customRadio.user === $store.state.auth.profile.id"
|
||||||
:to="{name: 'library.radios.edit', params: {id: customRadioId }}">
|
:to="{name: 'library.radios.edit', params: {id: customRadioId }}">
|
||||||
{{ $gettext('Edit...') }}
|
<translate>Edit...</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<radio-button class="right floated button" :type="type" :custom-radio-id="customRadioId"></radio-button>
|
<radio-button class="right floated button" :type="type" :custom-radio-id="customRadioId"></radio-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
<button
|
<button
|
||||||
@click="createImport"
|
@click="createImport"
|
||||||
v-if="request.status === 'pending' && importAction && $store.state.auth.availablePermissions['library']"
|
v-if="request.status === 'pending' && importAction && $store.state.auth.availablePermissions['library']"
|
||||||
class="ui mini basic green right floated button">{{ $gettext('Create import') }}</button>
|
class="ui mini basic green right floated button"><translate>Create import</translate></button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,30 +1,30 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<form v-if="!over" class="ui form" @submit.prevent="submit">
|
<form v-if="!over" class="ui form" @submit.prevent="submit">
|
||||||
<p>{{ $gettext('Something\'s missing in the library? Let us know what you would like to listen!') }}</p>
|
<p><translate>Something's missing in the library? Let us know what you would like to listen!</translate></p>
|
||||||
<div class="required field">
|
<div class="required field">
|
||||||
<label>{{ $gettext('Artist name') }}</label>
|
<label><translate>Artist name</translate></label>
|
||||||
<input v-model="currentArtistName" placeholder="The Beatles, Mickael Jackson…" required maxlength="200">
|
<input v-model="currentArtistName" placeholder="The Beatles, Mickael Jackson…" required maxlength="200">
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Albums') }}</label>
|
<label><translate>Albums</translate></label>
|
||||||
<p>{{ $gettext('Leave this field empty if you\'re requesting the whole discography.') }}</p>
|
<p><translate>Leave this field empty if you're requesting the whole discography.</translate></p>
|
||||||
<input v-model="currentAlbums" placeholder="The White Album, Thriller…" maxlength="2000">
|
<input v-model="currentAlbums" placeholder="The White Album, Thriller…" maxlength="2000">
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Comment') }}</label>
|
<label><translate>Comment</translate></label>
|
||||||
<textarea v-model="currentComment" rows="3" placeholder="Use this comment box to add details to your request if needed" maxlength="2000"></textarea>
|
<textarea v-model="currentComment" rows="3" placeholder="Use this comment box to add details to your request if needed" maxlength="2000"></textarea>
|
||||||
</div>
|
</div>
|
||||||
<button class="ui submit button" type="submit">{{ $gettext('Submit') }}</button>
|
<button class="ui submit button" type="submit"><translate>Submit</translate></button>
|
||||||
</form>
|
</form>
|
||||||
<div v-else class="ui success message">
|
<div v-else class="ui success message">
|
||||||
<div class="header">Request submitted!</div>
|
<div class="header">Request submitted!</div>
|
||||||
<p>{{ $gettext('We\'ve received your request, you\'ll get some groove soon ;)') }}</p>
|
<p><translate>We've received your request, you'll get some groove soon ;)</translate></p>
|
||||||
<button @click="reset" class="ui button">{{ $gettext('Submit another request') }}</button>
|
<button @click="reset" class="ui button"><translate>Submit another request</translate></button>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="requests.length > 0">
|
<div v-if="requests.length > 0">
|
||||||
<div class="ui divider"></div>
|
<div class="ui divider"></div>
|
||||||
<h3 class="ui header">{{ $gettext('Pending requests') }}</h3>
|
<h3 class="ui header"><translate>Pending requests</translate></h3>
|
||||||
<div class="ui list">
|
<div class="ui list">
|
||||||
<div v-for="request in requests" class="item">
|
<div v-for="request in requests" class="item">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="four wide column">
|
<div class="four wide column">
|
||||||
<div class="ui sticky vertical secondary menu">
|
<div class="ui sticky vertical secondary menu">
|
||||||
<div class="header item">{{ $gettext('Sections') }}</div>
|
<div class="header item"><translate>Sections</translate></div>
|
||||||
<a :class="['menu', {active: group.id === current}, 'item']"
|
<a :class="['menu', {active: group.id === current}, 'item']"
|
||||||
@click.prevent="scrollTo(group.id)"
|
@click.prevent="scrollTo(group.id)"
|
||||||
:href="'#' + group.id"
|
:href="'#' + group.id"
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
<div class="ui secondary pointing menu">
|
<div class="ui secondary pointing menu">
|
||||||
<router-link
|
<router-link
|
||||||
class="ui item"
|
class="ui item"
|
||||||
:to="{name: 'manage.library.files'}">{{ $gettext('Files') }}</router-link>
|
:to="{name: 'manage.library.files'}"><translate>Files</translate></router-link>
|
||||||
<router-link
|
<router-link
|
||||||
class="ui item"
|
class="ui item"
|
||||||
:to="{name: 'manage.library.requests'}">
|
:to="{name: 'manage.library.requests'}">
|
||||||
{{ $gettext('Import requests') }}
|
<translate>Import requests</translate>
|
||||||
<div
|
<div
|
||||||
:class="['ui', {'teal': $store.state.ui.notifications.importRequests > 0}, 'label']"
|
:class="['ui', {'teal': $store.state.ui.notifications.importRequests > 0}, 'label']"
|
||||||
:title="$gettext('Pending import requests')">
|
:title="$gettext('Pending import requests')">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-title="'Files'">
|
<div v-title="'Files'">
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<h2 class="ui header">{{ $gettext('Library files') }}</h2>
|
<h2 class="ui header"><translate>Library files</translate></h2>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<library-files-table :show-library="true"></library-files-table>
|
<library-files-table :show-library="true"></library-files-table>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-title="$gettext('Import requests')">
|
<div v-title="$gettext('Import requests')">
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<h2 class="ui header">{{ $gettext('Import requests') }}</h2>
|
<h2 class="ui header"><translate>Import requests</translate></h2>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<library-requests-table></library-requests-table>
|
<library-requests-table></library-requests-table>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
<div class="ui secondary pointing menu">
|
<div class="ui secondary pointing menu">
|
||||||
<router-link
|
<router-link
|
||||||
class="ui item"
|
class="ui item"
|
||||||
:to="{name: 'manage.users.users.list'}">{{ $gettext('Users') }}</router-link>
|
:to="{name: 'manage.users.users.list'}"><translate>Users</translate></router-link>
|
||||||
<router-link
|
<router-link
|
||||||
class="ui item"
|
class="ui item"
|
||||||
:to="{name: 'manage.users.invitations.list'}">{{ $gettext('Invitations') }}</router-link>
|
:to="{name: 'manage.users.invitations.list'}"><translate>Invitations</translate></router-link>
|
||||||
</div>
|
</div>
|
||||||
<router-view :key="$route.fullPath"></router-view>
|
<router-view :key="$route.fullPath"></router-view>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-title="$gettext('Invitations')">
|
<div v-title="$gettext('Invitations')">
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<h2 class="ui header">{{ $gettext('Invitations') }}</h2>
|
<h2 class="ui header"><translate>Invitations</translate></h2>
|
||||||
<invitation-form></invitation-form>
|
<invitation-form></invitation-form>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<invitations-table></invitations-table>
|
<invitations-table></invitations-table>
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{ $gettext('Name') }}
|
<translate>Name</translate>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{ object.name }}
|
{{ object.name }}
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{ $gettext('Email address') }}
|
<translate>Email address</translate>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{ object.email }}
|
{{ object.email }}
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{ $gettext('Sign-up') }}
|
<translate>Sign-up</translate>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<human-date :date="object.date_joined"></human-date>
|
<human-date :date="object.date_joined"></human-date>
|
||||||
|
@ -43,16 +43,16 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{ $gettext('Last activity') }}
|
<translate>Last activity</translate>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<human-date v-if="object.last_activity" :date="object.last_activity"></human-date>
|
<human-date v-if="object.last_activity" :date="object.last_activity"></human-date>
|
||||||
<template v-else>{{ $gettext('N/A') }}</template>
|
<template v-else><translate>N/A</translate></template>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{ $gettext('Account active') }}
|
<translate>Account active</translate>
|
||||||
<span :data-tooltip="$gettext('Determine if the user account is active or not. Inactive users cannot login or user the service.')"><i class="question circle icon"></i></span>
|
<span :data-tooltip="$gettext('Determine if the user account is active or not. Inactive users cannot login or user the service.')"><i class="question circle icon"></i></span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -66,7 +66,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{ $gettext('Permissions') }}
|
<translate>Permissions</translate>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<select
|
<select
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<button @click="fetchData" class="ui basic button">{{ $gettext('Refresh') }}</button>
|
<button @click="fetchData" class="ui basic button"><translate>Refresh</translate></button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-title="$gettext('Users')">
|
<div v-title="$gettext('Users')">
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<h2 class="ui header">{{ $gettext('Users') }}</h2>
|
<h2 class="ui header"><translate>Users</translate></h2>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<users-table></users-table>
|
<users-table></users-table>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,29 +2,29 @@
|
||||||
<div class="main pusher" v-title="$gettext('Confirm your email')">
|
<div class="main pusher" v-title="$gettext('Confirm your email')">
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<div class="ui small text container">
|
<div class="ui small text container">
|
||||||
<h2>{{ $gettext('Confirm your email') }}</h2>
|
<h2><translate>Confirm your email</translate></h2>
|
||||||
<form v-if="!success" class="ui form" @submit.prevent="submit()">
|
<form v-if="!success" class="ui form" @submit.prevent="submit()">
|
||||||
<div v-if="errors.length > 0" class="ui negative message">
|
<div v-if="errors.length > 0" class="ui negative message">
|
||||||
<div class="header">{{ $gettext('Error while confirming your email') }}</div>
|
<div class="header"><translate>Error while confirming your email</translate></div>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li v-for="error in errors">{{ error }}</li>
|
<li v-for="error in errors">{{ error }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Confirmation code') }}</label>
|
<label><translate>Confirmation code</translate></label>
|
||||||
<input type="text" required v-model="key" />
|
<input type="text" required v-model="key" />
|
||||||
</div>
|
</div>
|
||||||
<router-link :to="{path: '/login'}">
|
<router-link :to="{path: '/login'}">
|
||||||
{{ $gettext('Back to login') }}
|
<translate>Back to login</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<button :class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']" type="submit">
|
<button :class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']" type="submit">
|
||||||
{{ $gettext('Confirm your email') }}</button>
|
<translate>Confirm your email</translate></button>
|
||||||
</form>
|
</form>
|
||||||
<div v-else class="ui positive message">
|
<div v-else class="ui positive message">
|
||||||
<div class="header">{{ $gettext('Email confirmed') }}</div>
|
<div class="header"><translate>Email confirmed</translate></div>
|
||||||
<p>{{ $gettext('Your email address was confirmed, you can now use the service without limitations.') }}</p>
|
<p><translate>Your email address was confirmed, you can now use the service without limitations.</translate></p>
|
||||||
<router-link :to="{name: 'login'}">
|
<router-link :to="{name: 'login'}">
|
||||||
{{ $gettext('Proceed to login') }}
|
<translate>Proceed to login</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,17 +2,17 @@
|
||||||
<div class="main pusher" v-title="$gettext('Reset your password')">
|
<div class="main pusher" v-title="$gettext('Reset your password')">
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<div class="ui small text container">
|
<div class="ui small text container">
|
||||||
<h2>{{ $gettext('Reset your password') }}</h2>
|
<h2><translate>Reset your password</translate></h2>
|
||||||
<form class="ui form" @submit.prevent="submit()">
|
<form class="ui form" @submit.prevent="submit()">
|
||||||
<div v-if="errors.length > 0" class="ui negative message">
|
<div v-if="errors.length > 0" class="ui negative message">
|
||||||
<div class="header">{{ $gettext('Error while asking for a password reset') }}</div>
|
<div class="header"><translate>Error while asking for a password reset</translate></div>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li v-for="error in errors">{{ error }}</li>
|
<li v-for="error in errors">{{ error }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<p>{{ $gettext('Use this form to request a password reset. We will send an email to the given address with instructions to reset your password.') }}</p>
|
<p><translate>Use this form to request a password reset. We will send an email to the given address with instructions to reset your password.</translate></p>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Account\'s email') }}</label>
|
<label><translate>Account's email</translate></label>
|
||||||
<input
|
<input
|
||||||
required
|
required
|
||||||
ref="email"
|
ref="email"
|
||||||
|
@ -22,10 +22,10 @@
|
||||||
v-model="email">
|
v-model="email">
|
||||||
</div>
|
</div>
|
||||||
<router-link :to="{path: '/login'}">
|
<router-link :to="{path: '/login'}">
|
||||||
{{ $gettext('Back to login') }}
|
<translate>Back to login</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<button :class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']" type="submit">
|
<button :class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']" type="submit">
|
||||||
{{ $gettext('Ask for a password reset') }}</button>
|
<translate>Ask for a password reset</translate></button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,34 +2,34 @@
|
||||||
<div class="main pusher" v-title="$gettext('Change your password')">
|
<div class="main pusher" v-title="$gettext('Change your password')">
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<div class="ui small text container">
|
<div class="ui small text container">
|
||||||
<h2>{{ $gettext('Change your password') }}</h2>
|
<h2><translate>Change your password</translate></h2>
|
||||||
<form v-if="!success" class="ui form" @submit.prevent="submit()">
|
<form v-if="!success" class="ui form" @submit.prevent="submit()">
|
||||||
<div v-if="errors.length > 0" class="ui negative message">
|
<div v-if="errors.length > 0" class="ui negative message">
|
||||||
<div class="header">{{ $gettext('Error while changing your password') }}</div>
|
<div class="header"><translate>Error while changing your password</translate></div>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li v-for="error in errors">{{ error }}</li>
|
<li v-for="error in errors">{{ error }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<template v-if="token && uid">
|
<template v-if="token && uid">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('New password') }}</label>
|
<label><translate>New password</translate></label>
|
||||||
<password-input v-model="newPassword" />
|
<password-input v-model="newPassword" />
|
||||||
</div>
|
</div>
|
||||||
<router-link :to="{path: '/login'}">
|
<router-link :to="{path: '/login'}">
|
||||||
{{ $gettext('Back to login') }}
|
<translate>Back to login</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<button :class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']" type="submit">
|
<button :class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']" type="submit">
|
||||||
{{ $gettext('Update your password') }}</button>
|
<translate>Update your password</translate></button>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<p>{{ $gettext('If the email address provided in the previous step is valid and binded to a user account, you should receive an email with reset instructions in the next couple of minutes.') }}</p>
|
<p><translate>If the email address provided in the previous step is valid and binded to a user account, you should receive an email with reset instructions in the next couple of minutes.</translate></p>
|
||||||
</template>
|
</template>
|
||||||
</form>
|
</form>
|
||||||
<div v-else class="ui positive message">
|
<div v-else class="ui positive message">
|
||||||
<div class="header">{{ $gettext('Password updated successfully') }}</div>
|
<div class="header"><translate>Password updated successfully</translate></div>
|
||||||
<p>{{ $gettext('Your password has been updated successfully.') }}</p>
|
<p><translate>Your password has been updated successfully.</translate></p>
|
||||||
<router-link :to="{name: 'login'}">
|
<router-link :to="{name: 'login'}">
|
||||||
{{ $gettext('Proceed to login') }}
|
<translate>Proceed to login</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,15 +3,15 @@
|
||||||
<div class="ui secondary pointing menu">
|
<div class="ui secondary pointing menu">
|
||||||
<router-link
|
<router-link
|
||||||
class="ui item"
|
class="ui item"
|
||||||
:to="{name: 'federation.libraries.list'}">{{ $gettext('Libraries') }}</router-link>
|
:to="{name: 'federation.libraries.list'}"><translate>Libraries</translate></router-link>
|
||||||
<router-link
|
<router-link
|
||||||
class="ui item"
|
class="ui item"
|
||||||
:to="{name: 'federation.tracks.list'}">{{ $gettext('Tracks') }}</router-link>
|
:to="{name: 'federation.tracks.list'}"><translate>Tracks</translate></router-link>
|
||||||
<div class="ui secondary right menu">
|
<div class="ui secondary right menu">
|
||||||
<router-link
|
<router-link
|
||||||
class="ui item"
|
class="ui item"
|
||||||
:to="{name: 'federation.followers.list'}">
|
:to="{name: 'federation.followers.list'}">
|
||||||
{{ $gettext('Followers') }}
|
<translate>Followers</translate>
|
||||||
<div class="ui teal label" :title="$gettext('Pending requests')">{{ requestsCount }}</div>
|
<div class="ui teal label" :title="$gettext('Pending requests')">{{ requestsCount }}</div>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -19,18 +19,18 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td >
|
<td >
|
||||||
{{ $gettext('Follow status') }}
|
<translate>Follow status</translate>
|
||||||
<span :data-tooltip="$gettext('This indicate if the remote library granted you access')"><i class="question circle icon"></i></span>
|
<span :data-tooltip="$gettext('This indicate if the remote library granted you access')"><i class="question circle icon"></i></span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<template v-if="object.follow.approved === null">
|
<template v-if="object.follow.approved === null">
|
||||||
<i class="loading icon"></i> {{ $gettext('Pending approval') }}
|
<i class="loading icon"></i> <translate>Pending approval</translate>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="object.follow.approved === true">
|
<template v-else-if="object.follow.approved === true">
|
||||||
<i class="check icon"></i> {{ $gettext('Following') }}
|
<i class="check icon"></i> <translate>Following</translate>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="object.follow.approved === false">
|
<template v-else-if="object.follow.approved === false">
|
||||||
<i class="x icon"></i> {{ $gettext('Not following') }}
|
<i class="x icon"></i> <translate>Not following</translate>
|
||||||
</template>
|
</template>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{ $gettext('Federation') }}
|
<translate>Federation</translate>
|
||||||
<span :data-tooltip="$gettext('Use this flag to enable/disable federation with this library')"><i class="question circle icon"></i></span>
|
<span :data-tooltip="$gettext('Use this flag to enable/disable federation with this library')"><i class="question circle icon"></i></span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -54,7 +54,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{ $gettext('Auto importing') }}
|
<translate>Auto importing</translate>
|
||||||
<span :data-tooltip="$gettext('When enabled, auto importing will automatically import new tracks published in this library')"><i class="question circle icon"></i></span>
|
<span :data-tooltip="$gettext('When enabled, auto importing will automatically import new tracks published in this library')"><i class="question circle icon"></i></span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
-->
|
-->
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $gettext('Library size') }}</td>
|
<td><translate>Library size</translate></td>
|
||||||
<td>
|
<td>
|
||||||
<template v-if="object.tracks_count">
|
<template v-if="object.tracks_count">
|
||||||
<translate
|
<translate
|
||||||
|
@ -93,13 +93,13 @@
|
||||||
</translate>
|
</translate>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
{{ $gettext('Unkwnown') }}
|
<translate>Unkwnown</translate>
|
||||||
</template>
|
</template>
|
||||||
</td>
|
</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $gettext('Last fetched') }}</td>
|
<td><translate>Last fetched</translate></td>
|
||||||
<td>
|
<td>
|
||||||
<human-date v-if="object.fetched_date" :date="object.fetched_date"></human-date>
|
<human-date v-if="object.fetched_date" :date="object.fetched_date"></human-date>
|
||||||
<template v-else>Never</template>
|
<template v-else>Never</template>
|
||||||
|
@ -107,10 +107,10 @@
|
||||||
@click="scan"
|
@click="scan"
|
||||||
v-if="!scanTrigerred"
|
v-if="!scanTrigerred"
|
||||||
:class="['ui', 'basic', {loading: isScanLoading}, 'button']">
|
:class="['ui', 'basic', {loading: isScanLoading}, 'button']">
|
||||||
<i class="sync icon"></i> {{ $gettext('Trigger scan') }}
|
<i class="sync icon"></i> <translate>Trigger scan</translate>
|
||||||
</button>
|
</button>
|
||||||
<button v-else class="ui success button">
|
<button v-else class="ui success button">
|
||||||
<i class="check icon"></i> {{ $gettext('Scan triggered!') }}
|
<i class="check icon"></i> <translate>Scan triggered!</translate>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
|
@ -120,10 +120,10 @@
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<button @click="fetchData" class="ui basic button">{{ $gettext('Refresh') }}</button>
|
<button @click="fetchData" class="ui basic button"><translate>Refresh</translate></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<h2>{{ $gettext('Tracks available in this library') }}</h2>
|
<h2><translate>Tracks available in this library</translate></h2>
|
||||||
<library-track-table v-if="!isLoading" :filters="{library: id}"></library-track-table>
|
<library-track-table v-if="!isLoading" :filters="{library: id}"></library-track-table>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-title="'Followers'">
|
<div v-title="'Followers'">
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<h2 class="ui header">{{ $gettext('Browsing followers') }}</h2>
|
<h2 class="ui header"><translate>Browsing followers</translate></h2>
|
||||||
<p>
|
<p>
|
||||||
{{ $gettext('Be careful when accepting follow requests, as it means the follower will have access to your entire library.') }}
|
<translate>Be careful when accepting follow requests, as it means the follower will have access to your entire library.</translate>
|
||||||
</p>
|
</p>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<library-follow-table></library-follow-table>
|
<library-follow-table></library-follow-table>
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-title="'Libraries'">
|
<div v-title="'Libraries'">
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<h2 class="ui header">{{ $gettext('Browsing libraries') }}</h2>
|
<h2 class="ui header"><translate>Browsing libraries</translate></h2>
|
||||||
<router-link
|
<router-link
|
||||||
class="ui basic green button"
|
class="ui basic green button"
|
||||||
:to="{name: 'federation.libraries.scan'}">
|
:to="{name: 'federation.libraries.scan'}">
|
||||||
<i class="plus icon"></i>
|
<i class="plus icon"></i>
|
||||||
{{ $gettext('Add a new library') }}
|
<translate>Add a new library</translate>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<div :class="['ui', {'loading': isLoading}, 'form']">
|
<div :class="['ui', {'loading': isLoading}, 'form']">
|
||||||
<div class="fields">
|
<div class="fields">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Search') }}</label>
|
<label><translate>Search</translate></label>
|
||||||
<input class="search" type="text" v-model="query" placeholder="Enter an library domain name..."/>
|
<input class="search" type="text" v-model="query" placeholder="Enter an library domain name..."/>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering') }}</label>
|
<label><translate>Ordering</translate></label>
|
||||||
<select class="ui dropdown" v-model="ordering">
|
<select class="ui dropdown" v-model="ordering">
|
||||||
<option v-for="option in orderingOptions" :value="option[0]">
|
<option v-for="option in orderingOptions" :value="option[0]">
|
||||||
{{ option[1] }}
|
{{ option[1] }}
|
||||||
|
@ -24,14 +24,14 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering direction') }}</label>
|
<label><translate>Ordering direction</translate></label>
|
||||||
<select class="ui dropdown" v-model="orderingDirection">
|
<select class="ui dropdown" v-model="orderingDirection">
|
||||||
<option value="+">{{ $gettext('Ascending') }}</option>
|
<option value="+"><translate>Ascending</translate></option>
|
||||||
<option value="-">{{ $gettext('Descending') }}</option>
|
<option value="-"><translate>Descending</translate></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Results per page') }}</label>
|
<label><translate>Results per page</translate></label>
|
||||||
<select class="ui dropdown" v-model="paginateBy">
|
<select class="ui dropdown" v-model="paginateBy">
|
||||||
<option :value="parseInt(12)">12</option>
|
<option :value="parseInt(12)">12</option>
|
||||||
<option :value="parseInt(25)">25</option>
|
<option :value="parseInt(25)">25</option>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-title="'Federated tracks'">
|
<div v-title="'Federated tracks'">
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<h2 class="ui header">{{ $gettext('Browsing federated tracks') }}</h2>
|
<h2 class="ui header"><translate>Browsing federated tracks</translate></h2>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<library-track-table :show-library="true"></library-track-table>
|
<library-track-table :show-library="true"></library-track-table>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
<div class="main pusher" v-title="'Instance Timeline'">
|
<div class="main pusher" v-title="'Instance Timeline'">
|
||||||
<div class="ui vertical center aligned stripe segment">
|
<div class="ui vertical center aligned stripe segment">
|
||||||
<div v-if="isLoading" :class="['ui', {'active': isLoading}, 'inverted', 'dimmer']">
|
<div v-if="isLoading" :class="['ui', {'active': isLoading}, 'inverted', 'dimmer']">
|
||||||
<div class="ui text loader">{{ $gettext('Loading timeline...') }}</div>
|
<div class="ui text loader"><translate>Loading timeline...</translate></div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="ui text container">
|
<div v-else class="ui text container">
|
||||||
<h1 class="ui header">{{ $gettext('Recent activity on this instance') }}</h1>
|
<h1 class="ui header"><translate>Recent activity on this instance</translate></h1>
|
||||||
<div class="ui feed">
|
<div class="ui feed">
|
||||||
<component
|
<component
|
||||||
class="event"
|
class="event"
|
||||||
|
|
|
@ -20,22 +20,22 @@
|
||||||
</div>
|
</div>
|
||||||
</h2>
|
</h2>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
<play-button class="orange" :tracks="tracks">{{ $gettext('Play all') }}</play-button>
|
<play-button class="orange" :tracks="tracks"><translate>Play all</translate></play-button>
|
||||||
<button
|
<button
|
||||||
class="ui icon button"
|
class="ui icon button"
|
||||||
v-if="playlist.user.id === $store.state.auth.profile.id"
|
v-if="playlist.user.id === $store.state.auth.profile.id"
|
||||||
@click="edit = !edit">
|
@click="edit = !edit">
|
||||||
<i class="pencil icon"></i>
|
<i class="pencil icon"></i>
|
||||||
<template v-if="edit">{{ $gettext('End edition') }}</template>
|
<template v-if="edit"><translate>End edition</translate></template>
|
||||||
<template v-else>{{ $gettext('Edit...') }}</template>
|
<template v-else><translate>Edit...</translate></template>
|
||||||
</button>
|
</button>
|
||||||
<dangerous-button v-if="playlist.user.id === $store.state.auth.profile.id" class="labeled icon" :action="deletePlaylist">
|
<dangerous-button v-if="playlist.user.id === $store.state.auth.profile.id" class="labeled icon" :action="deletePlaylist">
|
||||||
<i class="trash icon"></i> {{ $gettext('Delete') }}
|
<i class="trash icon"></i> <translate>Delete</translate>
|
||||||
<p slot="modal-header">
|
<p slot="modal-header">
|
||||||
<translate :translate-params="{playlist: playlist.name}">Do you want to delete the playlist "%{ playlist }"?</translate>
|
<translate :translate-params="{playlist: playlist.name}">Do you want to delete the playlist "%{ playlist }"?</translate>
|
||||||
</p>
|
</p>
|
||||||
<p slot="modal-content">{{ $gettext('This will completely delete this playlist and cannot be undone.') }}</p>
|
<p slot="modal-content"><translate>This will completely delete this playlist and cannot be undone.</translate></p>
|
||||||
<p slot="modal-confirm">{{ $gettext('Delete playlist') }}</p>
|
<p slot="modal-confirm"><translate>Delete playlist</translate></p>
|
||||||
</dangerous-button>
|
</dangerous-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-title="$gettext('Playlists')">
|
<div v-title="$gettext('Playlists')">
|
||||||
<div class="ui vertical stripe segment">
|
<div class="ui vertical stripe segment">
|
||||||
<h2 class="ui header">{{ $gettext('Browsing playlists') }}</h2>
|
<h2 class="ui header"><translate>Browsing playlists</translate></h2>
|
||||||
<div :class="['ui', {'loading': isLoading}, 'form']">
|
<div :class="['ui', {'loading': isLoading}, 'form']">
|
||||||
<template v-if="$store.state.auth.authenticated">
|
<template v-if="$store.state.auth.authenticated">
|
||||||
<button
|
<button
|
||||||
@click="$store.commit('playlists/chooseTrack', null)"
|
@click="$store.commit('playlists/chooseTrack', null)"
|
||||||
class="ui basic green button">{{ $gettext('Manage your playlists') }}</button>
|
class="ui basic green button"><translate>Manage your playlists</translate></button>
|
||||||
<div class="ui hidden divider"></div>
|
<div class="ui hidden divider"></div>
|
||||||
</template>
|
</template>
|
||||||
<div class="fields">
|
<div class="fields">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Search') }}</label>
|
<label><translate>Search</translate></label>
|
||||||
<input type="text" v-model="query" :placeholder="$gettext('Enter an playlist name...')"/>
|
<input type="text" v-model="query" :placeholder="$gettext('Enter an playlist name...')"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering') }}</label>
|
<label><translate>Ordering</translate></label>
|
||||||
<select class="ui dropdown" v-model="ordering">
|
<select class="ui dropdown" v-model="ordering">
|
||||||
<option v-for="option in orderingOptions" :value="option[0]">
|
<option v-for="option in orderingOptions" :value="option[0]">
|
||||||
{{ option[1] }}
|
{{ option[1] }}
|
||||||
|
@ -23,14 +23,14 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Ordering direction') }}</label>
|
<label><translate>Ordering direction</translate></label>
|
||||||
<select class="ui dropdown" v-model="orderingDirection">
|
<select class="ui dropdown" v-model="orderingDirection">
|
||||||
<option value="+">{{ $gettext('Ascending') }}</option>
|
<option value="+"><translate>Ascending</translate></option>
|
||||||
<option value="-">{{ $gettext('Descending') }}</option>
|
<option value="-"><translate>Descending</translate></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>{{ $gettext('Results per page') }}</label>
|
<label><translate>Results per page</translate></label>
|
||||||
<select class="ui dropdown" v-model="paginateBy">
|
<select class="ui dropdown" v-model="paginateBy">
|
||||||
<option :value="parseInt(12)">12</option>
|
<option :value="parseInt(12)">12</option>
|
||||||
<option :value="parseInt(25)">25</option>
|
<option :value="parseInt(25)">25</option>
|
||||||
|
|
Loading…
Reference in New Issue