Skip to content
Snippets Groups Projects
Commit 36631439 authored by Agate's avatar Agate :speech_balloon:
Browse files

Merge branch 'remote-link' into 'develop'

Added link to origin pod for track, album, artist, profile, channel and library

See merge request !1219
parents bae2a5f6 89037a76
No related branches found
No related tags found
No related merge requests found
...@@ -20,6 +20,15 @@ ...@@ -20,6 +20,15 @@
<button class="ui floating dropdown circular icon basic button" :title="labels.more" v-dropdown="{direction: 'downward'}"> <button class="ui floating dropdown circular icon basic button" :title="labels.more" v-dropdown="{direction: 'downward'}">
<i class="ellipsis vertical icon"></i> <i class="ellipsis vertical icon"></i>
<div class="menu"> <div class="menu">
<a
:href="object.fid"
v-if="domain != $store.getters['instance/domain']"
target="_blank"
class="basic item">
<i class="external icon"></i>
<translate :translate-params="{domain: domain}" translate-context="Content/*/Button.Label/Verb">View on %{ domain }</translate>
</a>
<div <div
role="button" role="button"
v-if="isEmbedable" v-if="isEmbedable"
...@@ -86,6 +95,7 @@ import EmbedWizard from "@/components/audio/EmbedWizard" ...@@ -86,6 +95,7 @@ import EmbedWizard from "@/components/audio/EmbedWizard"
import Modal from '@/components/semantic/Modal' import Modal from '@/components/semantic/Modal'
import ReportMixin from '@/components/mixins/Report' import ReportMixin from '@/components/mixins/Report'
import {getDomain} from '@/utils'
export default { export default {
mixins: [ReportMixin], mixins: [ReportMixin],
...@@ -108,6 +118,11 @@ export default { ...@@ -108,6 +118,11 @@ export default {
} }
}, },
computed: { computed: {
domain () {
if (this.object) {
return getDomain(this.object.fid)
}
},
labels() { labels() {
return { return {
more: this.$pgettext('*/*/Button.Label/Noun', "More…"), more: this.$pgettext('*/*/Button.Label/Noun', "More…"),
......
...@@ -57,6 +57,15 @@ ...@@ -57,6 +57,15 @@
<button class="ui floating dropdown icon button" ref="dropdown" v-dropdown> <button class="ui floating dropdown icon button" ref="dropdown" v-dropdown>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
<a
:href="object.fid"
v-if="domain != $store.getters['instance/domain']"
target="_blank"
class="basic item">
<i class="external icon"></i>
<translate :translate-params="{domain: domain}" translate-context="Content/*/Button.Label/Verb">View on %{ domain }</translate>
</a>
<button <button
role="button" role="button"
v-if="publicLibraries.length > 0" v-if="publicLibraries.length > 0"
...@@ -137,6 +146,8 @@ import RadioButton from "@/components/radios/Button" ...@@ -137,6 +146,8 @@ import RadioButton from "@/components/radios/Button"
import TagsList from "@/components/tags/List" import TagsList from "@/components/tags/List"
import ReportMixin from '@/components/mixins/Report' import ReportMixin from '@/components/mixins/Report'
import {getDomain} from '@/utils'
const FETCH_URL = "albums/" const FETCH_URL = "albums/"
export default { export default {
...@@ -205,6 +216,11 @@ export default { ...@@ -205,6 +216,11 @@ export default {
} }
}, },
computed: { computed: {
domain () {
if (this.object) {
return getDomain(this.object.fid)
}
},
isPlayable() { isPlayable() {
return ( return (
this.object.albums.filter(a => { this.object.albums.filter(a => {
......
...@@ -44,6 +44,14 @@ ...@@ -44,6 +44,14 @@
<button class="ui floating dropdown circular icon basic button" :title="labels.more" v-dropdown="{direction: 'downward'}"> <button class="ui floating dropdown circular icon basic button" :title="labels.more" v-dropdown="{direction: 'downward'}">
<i class="ellipsis vertical icon"></i> <i class="ellipsis vertical icon"></i>
<div class="menu" style="right: 0; left: auto"> <div class="menu" style="right: 0; left: auto">
<a
:href="track.fid"
v-if="domain != $store.getters['instance/domain']"
target="_blank"
class="basic item">
<i class="external icon"></i>
<translate :translate-params="{domain: domain}" translate-context="Content/*/Button.Label/Verb">View on %{ domain }</translate>
</a>
<div <div
role="button" role="button"
v-if="publicLibraries.length > 0" v-if="publicLibraries.length > 0"
...@@ -116,6 +124,7 @@ ...@@ -116,6 +124,7 @@
import time from "@/utils/time" import time from "@/utils/time"
import axios from "axios" import axios from "axios"
import url from "@/utils/url" import url from "@/utils/url"
import {getDomain} from '@/utils'
import logger from "@/logging" import logger from "@/logging"
import PlayButton from "@/components/audio/PlayButton" import PlayButton from "@/components/audio/PlayButton"
import TrackFavoriteIcon from "@/components/favorites/TrackFavoriteIcon" import TrackFavoriteIcon from "@/components/favorites/TrackFavoriteIcon"
...@@ -190,6 +199,11 @@ export default { ...@@ -190,6 +199,11 @@ export default {
} }
}, },
computed: { computed: {
domain () {
if (this.track) {
return getDomain(this.track.fid)
}
},
publicLibraries () { publicLibraries () {
return this.libraries.filter(l => { return this.libraries.filter(l => {
return l.privacy_level === 'everyone' return l.privacy_level === 'everyone'
......
...@@ -51,3 +51,9 @@ export function checkRedirectToLogin (store, router) { ...@@ -51,3 +51,9 @@ export function checkRedirectToLogin (store, router) {
router.push({name: 'login', query: {next: router.currentRoute.fullPath}}) router.push({name: 'login', query: {next: router.currentRoute.fullPath}})
} }
} }
export function getDomain (url) {
let parser = document.createElement("a")
parser.href = url
return parser.hostname
}
\ No newline at end of file
...@@ -9,6 +9,14 @@ ...@@ -9,6 +9,14 @@
<button class="ui pointing dropdown icon small basic right floated button" ref="dropdown" v-dropdown="{direction: 'downward'}" style="position: absolute; right: 1em; top: 1em;"> <button class="ui pointing dropdown icon small basic right floated button" ref="dropdown" v-dropdown="{direction: 'downward'}" style="position: absolute; right: 1em; top: 1em;">
<i class="ellipsis vertical icon"></i> <i class="ellipsis vertical icon"></i>
<div class="menu"> <div class="menu">
<a
:href="object.fid"
v-if="object.domain != $store.getters['instance/domain']"
target="_blank"
class="basic item">
<i class="external icon"></i>
<translate :translate-params="{domain: object.domain}" translate-context="Content/*/Button.Label/Verb">View on %{ domain }</translate>
</a>
<div <div
role="button" role="button"
class="basic item" class="basic item"
......
...@@ -84,6 +84,14 @@ ...@@ -84,6 +84,14 @@
<i class="code icon"></i> <i class="code icon"></i>
<translate translate-context="Content/*/Button.Label/Verb">Embed</translate> <translate translate-context="Content/*/Button.Label/Verb">Embed</translate>
</a> </a>
<a
:href="object.url"
v-if="object.actor.domain != $store.getters['instance/domain']"
target="_blank"
class="basic item">
<i class="external icon"></i>
<translate :translate-params="{domain: object.actor.domain}" translate-context="Content/*/Button.Label/Verb">View on %{ domain }</translate>
</a>
<div class="divider"></div> <div class="divider"></div>
<a <a
href="" href=""
......
...@@ -7,6 +7,14 @@ ...@@ -7,6 +7,14 @@
<button class="ui pointing dropdown icon small basic right floated button" ref="dropdown" v-dropdown="{direction: 'downward'}" style="position: absolute; right: 1em; top: 1em;"> <button class="ui pointing dropdown icon small basic right floated button" ref="dropdown" v-dropdown="{direction: 'downward'}" style="position: absolute; right: 1em; top: 1em;">
<i class="ellipsis vertical icon"></i> <i class="ellipsis vertical icon"></i>
<div class="menu"> <div class="menu">
<a
:href="object.fid"
v-if="object.actor.domain != $store.getters['instance/domain']"
target="_blank"
class="basic item">
<i class="external icon"></i>
<translate :translate-params="{domain: object.actor.domain}" translate-context="Content/*/Button.Label/Verb">View on %{ domain }</translate>
</a>
<div <div
role="button" role="button"
class="basic item" class="basic item"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment