mirror of
https://github.com/pinry/pinry.git
synced 2025-11-16 18:05:51 +01:00
Feature: Add single pin display and share link for pin
This commit is contained in:
committed by
Isaac Bythewood
parent
d7e89050a0
commit
133cd93d94
@@ -28,7 +28,7 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="is-pulled-right">
|
<div class="is-pulled-right">
|
||||||
<a :href="pinItem.referer">
|
<a :href="pinItem.referer" target="_blank">
|
||||||
<b-button
|
<b-button
|
||||||
v-show="pinItem.referer !== null"
|
v-show="pinItem.referer !== null"
|
||||||
class="meta-link"
|
class="meta-link"
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
Referer
|
Referer
|
||||||
</b-button>
|
</b-button>
|
||||||
</a>
|
</a>
|
||||||
<a :href="pinItem.original_image_url">
|
<a :href="pinItem.original_image_url" target="_blank">
|
||||||
<b-button
|
<b-button
|
||||||
v-show="pinItem.original_image_url !== null"
|
v-show="pinItem.original_image_url !== null"
|
||||||
class="meta-link"
|
class="meta-link"
|
||||||
@@ -44,11 +44,11 @@
|
|||||||
Original Image
|
Original Image
|
||||||
</b-button>
|
</b-button>
|
||||||
</a>
|
</a>
|
||||||
<b-button tag="router-link"
|
<b-button
|
||||||
:to="{ name: 'pin', params: { pinId: pinItem.id } }"
|
@click="closeAndGoTo"
|
||||||
class="meta-link"
|
class="meta-link"
|
||||||
type="is-success">
|
type="is-success">
|
||||||
Pin URL
|
Goto Pin Link
|
||||||
</b-button>
|
</b-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -63,6 +63,14 @@
|
|||||||
export default {
|
export default {
|
||||||
name: 'PinPreview',
|
name: 'PinPreview',
|
||||||
props: ['pinItem'],
|
props: ['pinItem'],
|
||||||
|
methods: {
|
||||||
|
closeAndGoTo() {
|
||||||
|
this.$parent.close();
|
||||||
|
this.$router.push(
|
||||||
|
{ name: 'pin', params: { pinId: this.pinItem.id } },
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -184,6 +184,8 @@ export default {
|
|||||||
promise = API.fetchPins(this.status.offset, null, this.pinFilters.userFilter);
|
promise = API.fetchPins(this.status.offset, null, this.pinFilters.userFilter);
|
||||||
} else if (this.pinFilters.boardFilter) {
|
} else if (this.pinFilters.boardFilter) {
|
||||||
promise = API.fetchPinsForBoard(this.pinFilters.boardFilter);
|
promise = API.fetchPinsForBoard(this.pinFilters.boardFilter);
|
||||||
|
} else if (this.pinFilters.idFilter) {
|
||||||
|
promise = API.fetchPin(this.pinFilters.idFilter);
|
||||||
} else {
|
} else {
|
||||||
promise = API.fetchPins(this.status.offset);
|
promise = API.fetchPins(this.status.offset);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,28 @@ function fetchPins(offset, tagFilter, userFilter) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function fetchPin(pinId) {
|
||||||
|
const url = `${API_PREFIX}pins/${pinId}`;
|
||||||
|
return new Promise(
|
||||||
|
(resolve, reject) => {
|
||||||
|
const p = axios.get(
|
||||||
|
url,
|
||||||
|
);
|
||||||
|
p.then(
|
||||||
|
(resp) => {
|
||||||
|
const response = {
|
||||||
|
data: { results: [resp.data], next: null },
|
||||||
|
};
|
||||||
|
resolve(response);
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
reject(error);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function fetchPinsForBoard(boardId) {
|
function fetchPinsForBoard(boardId) {
|
||||||
const url = `${API_PREFIX}boards/${boardId}`;
|
const url = `${API_PREFIX}boards/${boardId}`;
|
||||||
return new Promise(
|
return new Promise(
|
||||||
@@ -103,6 +125,7 @@ const User = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
fetchPin,
|
||||||
fetchPins,
|
fetchPins,
|
||||||
fetchPinsForBoard,
|
fetchPinsForBoard,
|
||||||
User,
|
User,
|
||||||
|
|||||||
@@ -10,10 +10,10 @@ import PHeader from '../components/PHeader.vue';
|
|||||||
import Pins from '../components/Pins.vue';
|
import Pins from '../components/Pins.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'p-header',
|
name: 'Pins4Id',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
filters: { tagFilter: null },
|
filters: { idFilter: null },
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
@@ -21,15 +21,15 @@ export default {
|
|||||||
Pins,
|
Pins,
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.initializeTag();
|
this.initialize();
|
||||||
},
|
},
|
||||||
beforeRouteUpdate(to, from, next) {
|
beforeRouteUpdate(to, from, next) {
|
||||||
this.initializeTag();
|
this.initialize();
|
||||||
next();
|
next();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
initializeTag() {
|
initialize() {
|
||||||
this.filters.tagFilter = this.$route.params.tag;
|
this.filters.idFilter = this.$route.params.pinId;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import PHeader from '../components/PHeader.vue';
|
|||||||
import Pins from '../components/Pins.vue';
|
import Pins from '../components/Pins.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'p-header',
|
name: 'Pins4Tag',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
filters: { tagFilter: null },
|
filters: { tagFilter: null },
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import PHeader from '../components/PHeader.vue';
|
|||||||
import Pins from '../components/Pins.vue';
|
import Pins from '../components/Pins.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'p-header',
|
name: 'Pins4User',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
filters: { userFilter: null },
|
filters: { userFilter: null },
|
||||||
|
|||||||
Reference in New Issue
Block a user