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 funkwhale/funkwhale!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