mirror of
https://github.com/TeamPiped/Piped.git
synced 2024-08-14 23:57:27 +00:00
Add live indicator for videos, pretranslate more components.
This commit is contained in:
parent
0a35dcfd85
commit
9b18f2eff2
16 changed files with 41 additions and 39 deletions
|
@ -13,7 +13,7 @@
|
||||||
</a>
|
</a>
|
||||||
<a class="ml-2" href="https://github.com/TeamPiped/Piped#donations">
|
<a class="ml-2" href="https://github.com/TeamPiped/Piped#donations">
|
||||||
<font-awesome-icon :icon="['fab', 'bitcoin']" />
|
<font-awesome-icon :icon="['fab', 'bitcoin']" />
|
||||||
<span v-text="$t('actions.donations')" />
|
<span v-t="'actions.donations'" />
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
v-if="authenticated"
|
v-if="authenticated"
|
||||||
class="btn"
|
class="btn"
|
||||||
@click="subscribeHandler"
|
@click="subscribeHandler"
|
||||||
v-text="$t(`actions.${subscribed ? 'unsubscribe' : 'subscribe'}`)"
|
v-t="`actions.${subscribed ? 'unsubscribe' : 'subscribe'}`"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<div class="comment-header">
|
<div class="comment-header">
|
||||||
<div v-if="comment.pinned" class="comment-pinned">
|
<div v-if="comment.pinned" class="comment-pinned">
|
||||||
<font-awesome-icon icon="thumbtack" />
|
<font-awesome-icon icon="thumbtack" />
|
||||||
<span class="ml-1.5" v-text="$t('comment.pinned_by')" />
|
<span class="ml-1.5" v-t="'comment.pinned_by'" />
|
||||||
<span v-text="uploader" />
|
<span v-text="uploader" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<p v-text="message" />
|
<p v-text="message" />
|
||||||
<button @click="toggleTrace" class="btn" v-text="$t('actions.show_more')" />
|
<button @click="toggleTrace" class="btn" v-t="'actions.show_more'" />
|
||||||
<p ref="stacktrace" class="whitespace-pre-wrap" hidden v-text="error" />
|
<p ref="stacktrace" class="whitespace-pre-wrap" hidden v-text="error" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<h1 class="font-bold text-center" v-text="$t('titles.history')" />
|
<h1 class="font-bold text-center" v-t="'titles.history'" />
|
||||||
|
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<a class="btn w-auto" @click="login" v-text="$t('titles.login')" />
|
<a class="btn w-auto" @click="login" v-t="'titles.login'" />
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,17 +1,13 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<button @click="$router.go(-1) || $router.push('/')">
|
<button @click="$router.go(-1) || $router.push('/')">
|
||||||
<font-awesome-icon icon="chevron-left" /><span class="ml-1.5" v-text="$t('actions.back')" />
|
<font-awesome-icon icon="chevron-left" /><span class="ml-1.5" v-t="'actions.back'" />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<h1 v-t="'titles.preferences'" class="font-bold text-center" />
|
<h1 v-t="'titles.preferences'" class="font-bold text-center" />
|
||||||
<hr />
|
<hr />
|
||||||
<h2>SponsorBlock</h2>
|
<h2>SponsorBlock</h2>
|
||||||
<p>
|
<p><span v-t="'actions.uses_api_from'" /><a class="link" href="https://sponsor.ajay.app/">sponsor.ajay.app</a></p>
|
||||||
<span v-text="$t('actions.uses_api_from')" /><a class="link" href="https://sponsor.ajay.app/"
|
|
||||||
>sponsor.ajay.app</a
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<label for="chkEnableSponsorblock"><strong v-t="'actions.enable_sponsorblock'" /></label>
|
<label for="chkEnableSponsorblock"><strong v-t="'actions.enable_sponsorblock'" /></label>
|
||||||
<br />
|
<br />
|
||||||
<input
|
<input
|
||||||
|
@ -159,19 +155,19 @@
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th v-text="$t('preferences.instance_name')" />
|
<th v-t="'preferences.instance_name'" />
|
||||||
<th v-text="$t('preferences.instance_locations')" />
|
<th v-t="'preferences.instance_locations'" />
|
||||||
<th v-text="$t('preferences.has_cdn')" />
|
<th v-t="'preferences.has_cdn'" />
|
||||||
<th v-text="$t('preferences.ssl_score')" />
|
<th v-t="'preferences.ssl_score'" />
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody v-for="instance in instances" :key="instance.name">
|
<tbody v-for="instance in instances" :key="instance.name">
|
||||||
<tr>
|
<tr>
|
||||||
<td v-text="instance.name" />
|
<td v-text="instance.name" />
|
||||||
<td v-text="instance.locations" />
|
<td v-text="instance.locations" />
|
||||||
<td v-text="$t(`actions.${instance.cdn === 'Yes' ? 'yes' : 'no'}`)" />
|
<td v-t="`actions.${instance.cdn === 'Yes' ? 'yes' : 'no'}`" />
|
||||||
<td>
|
<td>
|
||||||
<a :href="sslScore(instance.apiurl)" target="_blank" v-text="$t('actions.view_ssl_score')" />
|
<a :href="sslScore(instance.apiurl)" target="_blank" v-t="'actions.view_ssl_score'" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<a class="btn w-auto" @click="register" v-text="$t('titles.register')" />
|
<a class="btn w-auto" @click="register" v-t="'titles.register'" />
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="results" class="video-grid">
|
<div v-if="results" class="video-grid">
|
||||||
<div v-for="result in results.items" :key="result.url">
|
<template v-for="result in results.items" :key="result.url">
|
||||||
<VideoItem v-if="shouldUseVideoItem(result)" :video="result" height="94" width="168" />
|
<VideoItem v-if="shouldUseVideoItem(result)" :video="result" height="94" width="168" />
|
||||||
<div v-if="!shouldUseVideoItem(result)">
|
<div v-if="!shouldUseVideoItem(result)">
|
||||||
<router-link :to="result.url">
|
<router-link :to="result.url">
|
||||||
|
@ -53,7 +53,7 @@
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<label for="ddlSortBy" v-text="$t('actions.sort_by')" />
|
<label for="ddlSortBy" v-t="'actions.sort_by'" />
|
||||||
<select id="ddlSortBy" v-model="selectedSort" class="select w-auto">
|
<select id="ddlSortBy" v-model="selectedSort" class="select w-auto">
|
||||||
<option v-for="(value, key) in options" v-t="`actions.${key}`" :key="key" :value="value" />
|
<option v-for="(value, key) in options" v-t="`actions.${key}`" :key="key" :value="value" />
|
||||||
</select>
|
</select>
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<h1 class="font-bold text-center" v-text="$t('titles.subscriptions')" />
|
<h1 class="font-bold text-center" v-t="'titles.subscriptions'" />
|
||||||
|
|
||||||
<div v-if="authenticated">
|
<div v-if="authenticated">
|
||||||
<button class="btn mr-0.5">
|
<button class="btn mr-0.5">
|
||||||
<router-link to="/import" v-text="$t('actions.import_from_json')" />
|
<router-link to="/import" v-t="'actions.import_from_json'" />
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button class="btn" @click="exportHandler" v-text="$t('actions.export_to_json')" />
|
<button class="btn" @click="exportHandler" v-t="'actions.export_to_json'" />
|
||||||
</div>
|
</div>
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
<button
|
<button
|
||||||
class="btn !w-min"
|
class="btn !w-min"
|
||||||
@click="handleButton(subscription)"
|
@click="handleButton(subscription)"
|
||||||
v-text="$t(`actions.${subscription.subscribed ? 'unsubscribe' : 'subscribe'}`)"
|
v-t="`actions.${subscription.subscribed ? 'unsubscribe' : 'subscribe'}`"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -4,15 +4,14 @@
|
||||||
<img :height="height" :width="width" class="w-full" :src="video.thumbnail" alt="" loading="lazy" />
|
<img :height="height" :width="width" class="w-full" :src="video.thumbnail" alt="" loading="lazy" />
|
||||||
<div class="relative text-sm">
|
<div class="relative text-sm">
|
||||||
<span
|
<span
|
||||||
v-if="video.duration"
|
class="thumbnail-overlay thumbnail-right"
|
||||||
class="thumbnail-overlay bottom-5px right-5px px-5px"
|
v-if="video.duration > 0"
|
||||||
v-text="timeFormat(video.duration)"
|
v-text="timeFormat(video.duration)"
|
||||||
/>
|
/>
|
||||||
<span
|
<i18n-t v-else keypath="video.live" class="thumbnail-overlay thumbnail-right !bg-red-600" tag="div">
|
||||||
v-if="video.watched"
|
<font-awesome-icon class="!w-3" :icon="['fas', 'broadcast-tower']" />
|
||||||
class="thumbnail-overlay bottom-5px left-5px px-5px"
|
</i18n-t>
|
||||||
v-text="$t('video.watched')"
|
<span v-if="video.watched" class="thumbnail-overlay bottom-5px left-5px" v-t="'video.watched'" />
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
@ -74,7 +73,11 @@
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.thumbnail-overlay {
|
.thumbnail-overlay {
|
||||||
@apply rounded-md absolute bg-black text-white bg-opacity-75;
|
@apply rounded-md absolute bg-black text-white bg-opacity-75 px-5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thumbnail-right {
|
||||||
|
@apply bottom-5px right-5px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-text="$t('actions.loading')" />
|
<div v-t="'actions.loading'" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -77,7 +77,7 @@
|
||||||
v-if="authenticated"
|
v-if="authenticated"
|
||||||
class="btn relative ml-auto"
|
class="btn relative ml-auto"
|
||||||
@click="subscribeHandler"
|
@click="subscribeHandler"
|
||||||
v-text="$t(`actions.${subscribed ? 'unsubscribe' : 'subscribe'}`)"
|
v-t="`actions.${subscribed ? 'unsubscribe' : 'subscribe'}`"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@
|
||||||
<button
|
<button
|
||||||
class="btn mb-2"
|
class="btn mb-2"
|
||||||
@click="showDesc = !showDesc"
|
@click="showDesc = !showDesc"
|
||||||
v-text="$t(`actions.${showDesc ? 'minimize_description' : 'show_description'}`)"
|
v-t="`actions.${showDesc ? 'minimize_description' : 'show_description'}`"
|
||||||
/>
|
/>
|
||||||
<!-- eslint-disable-next-line vue/no-v-html -->
|
<!-- eslint-disable-next-line vue/no-v-html -->
|
||||||
<p v-show="showDesc" class="break-words" v-html="purifyHTML(video.description)" />
|
<p v-show="showDesc" class="break-words" v-html="purifyHTML(video.description)" />
|
||||||
|
@ -122,7 +122,7 @@
|
||||||
<a
|
<a
|
||||||
class="btn mb-2 sm:hidden"
|
class="btn mb-2 sm:hidden"
|
||||||
@click="showRecs = !showRecs"
|
@click="showRecs = !showRecs"
|
||||||
v-text="$t(`actions.${showRecs ? 'minimize_recommendations' : 'show_recommendations'}`)"
|
v-t="`actions.${showRecs ? 'minimize_recommendations' : 'show_recommendations'}`"
|
||||||
/>
|
/>
|
||||||
<hr v-show="showRecs" />
|
<hr v-show="showRecs" />
|
||||||
<div v-show="showRecs || !smallView">
|
<div v-show="showRecs || !smallView">
|
||||||
|
|
|
@ -91,7 +91,8 @@
|
||||||
"watched": "Watched",
|
"watched": "Watched",
|
||||||
"sponsor_segments": "Sponsors Segments",
|
"sponsor_segments": "Sponsors Segments",
|
||||||
"ratings_disabled": "Ratings Disabled",
|
"ratings_disabled": "Ratings Disabled",
|
||||||
"chapters": "Chapters"
|
"chapters": "Chapters",
|
||||||
|
"live": "{0} Live"
|
||||||
},
|
},
|
||||||
"search": {
|
"search": {
|
||||||
"did_you_mean": "Did you mean: {0}?"
|
"did_you_mean": "Did you mean: {0}?"
|
||||||
|
|
|
@ -13,6 +13,7 @@ import {
|
||||||
faLevelDownAlt,
|
faLevelDownAlt,
|
||||||
faTv,
|
faTv,
|
||||||
faLevelUpAlt,
|
faLevelUpAlt,
|
||||||
|
faBroadcastTower,
|
||||||
} from "@fortawesome/free-solid-svg-icons";
|
} from "@fortawesome/free-solid-svg-icons";
|
||||||
import { faGithub, faBitcoin, faYoutube } from "@fortawesome/free-brands-svg-icons";
|
import { faGithub, faBitcoin, faYoutube } from "@fortawesome/free-brands-svg-icons";
|
||||||
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
|
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
|
||||||
|
@ -32,6 +33,7 @@ library.add(
|
||||||
faLevelDownAlt,
|
faLevelDownAlt,
|
||||||
faLevelUpAlt,
|
faLevelUpAlt,
|
||||||
faTv,
|
faTv,
|
||||||
|
faBroadcastTower,
|
||||||
);
|
);
|
||||||
|
|
||||||
import router from "@/router/router.js";
|
import router from "@/router/router.js";
|
||||||
|
|
Loading…
Reference in a new issue