aboutsummaryrefslogtreecommitdiff
path: root/resources/vue
diff options
context:
space:
mode:
authorThomas Hackl <hackl@data-quest.de>2026-01-07 14:39:31 +0100
committerThomas Hackl <hackl@data-quest.de>2026-01-07 14:39:31 +0100
commit5a28d77e9a28138f42312d62f1c5ec92310ae865 (patch)
tree26a45f2ba46ac1de4d5fd4accd5c8ea5efa40ae2 /resources/vue
parent4f00fb8d9fea5ceead39a8145ac10d859ebdd287 (diff)
Resolve "Kurz-URLs: Nach Erstellung wird der Link nicht in die Zwischenablage kopiert"
Closes #6121 Merge request studip/studip!4652
Diffstat (limited to 'resources/vue')
-rw-r--r--resources/vue/apps/short-urls/ShortUrlLink.vue4
-rw-r--r--resources/vue/apps/short-urls/ShortUrlList.vue18
-rw-r--r--resources/vue/store/pinia/shortUrlsStore.js25
3 files changed, 19 insertions, 28 deletions
diff --git a/resources/vue/apps/short-urls/ShortUrlLink.vue b/resources/vue/apps/short-urls/ShortUrlLink.vue
index f2a168a..dacf1fe 100644
--- a/resources/vue/apps/short-urls/ShortUrlLink.vue
+++ b/resources/vue/apps/short-urls/ShortUrlLink.vue
@@ -52,7 +52,9 @@ function openDialog() {
}
async function save() {
- await store.storeShortUrl(newLink.value);
+ const data = await store.storeShortUrl(newLink.value);
+
+ navigator.clipboard.writeText(STUDIP.URLHelper.getURL(data.meta['alias-link'], {}, true));
closeDialog();
}
diff --git a/resources/vue/apps/short-urls/ShortUrlList.vue b/resources/vue/apps/short-urls/ShortUrlList.vue
index a575772..0325fc8 100644
--- a/resources/vue/apps/short-urls/ShortUrlList.vue
+++ b/resources/vue/apps/short-urls/ShortUrlList.vue
@@ -51,7 +51,7 @@
<td>
<button class="as-link copy-link"
:title="$gettext('In die Zwischenablage kopieren')"
- @click.prevent="copyToClipboard(shortUrl.attributes.alias)">
+ @click.prevent="copyToClipboard(shortUrl.meta['alias-link'])">
<studip-icon shape="clipboard" />
</button>
<a :href="store.getShortUrl(shortUrl.attributes.alias)" :title="$gettext('Titel des Kurzlinks')">
@@ -70,7 +70,7 @@
@qrcode="createQrCode(shortUrl)"
@edit="editShortUrl(shortUrl)"
@delete="store.deleteShortUrl(shortUrl.id)"
- @copy="copyToClipboard(shortUrl.attributes.alias)"
+ @copy="copyToClipboard(shortUrl.meta['alias-link'])"
/>
</td>
</tr>
@@ -145,13 +145,8 @@ const formatDate = (datestring) => {
.join(' ');
}
-const getAliasLink = (alias) => {
- return STUDIP.URLHelper.getURL('dispatch.php/u/r/' + alias, {}, true);
-}
-
-const copyToClipboard = (alias) => {
- const shortUrl = getAliasLink(alias);
- navigator.clipboard.writeText(shortUrl);
+const copyToClipboard = (link) => {
+ navigator.clipboard.writeText(STUDIP.URLHelper.getURL(link, {}, true));
STUDIP.Report.success($gettext('Sie finden den Link in der Zwischenablage'));
}
@@ -159,7 +154,7 @@ const copyToClipboard = (alias) => {
* Create a QR code and trigger download as png.
*/
const createQrCode = (shortLink) => {
- qrUrl.value = getAliasLink(shortLink.attributes.alias);
+ qrUrl.value = STUDIP.URLHelper.getURL(shortLink.meta['alias-link'], {}, true);
nextTick().then(() => {
const png = qrcode.value.querySelector('canvas').toDataURL('image/png');
const link = document.createElement('a');
@@ -179,7 +174,8 @@ const closeEditDialog = () => {
}
const save = async () => {
- await store.storeShortUrl(currentlyEditing.value);
+ const data = await store.storeShortUrl(currentlyEditing.value);
+ copyToClipboard(data.meta['alias-link']);
closeEditDialog();
}
diff --git a/resources/vue/store/pinia/shortUrlsStore.js b/resources/vue/store/pinia/shortUrlsStore.js
index 6b972c2..7e63867 100644
--- a/resources/vue/store/pinia/shortUrlsStore.js
+++ b/resources/vue/store/pinia/shortUrlsStore.js
@@ -21,28 +21,21 @@ export const useShortUrlsStore = defineStore('shortUrls', () => {
return shortUrls.value.find(item => item.id === id);
}
- function storeShortUrl(shortUrl) {
+ async function storeShortUrl(shortUrl) {
const index = shortUrls.value.findIndex(item => item.id === shortUrl.id);
+ let response = {};
// Not found in store, create a new entry.
if (index === -1) {
- STUDIP.jsonapi.withPromises().post('short-urls', {data: {data: shortUrl}})
- .then(response => {
- shortUrls.value.push(response.data)
- STUDIP.Report.success($gettext('Der Kurzlink wurde gespeichert.'));
- })
- .catch(error => STUDIP.Report.error($gettext('Fehler beim Erstellen des Kurzlinks'), error));
-
+ response = await STUDIP.jsonapi.withPromises().post('short-urls', {data: {data: shortUrl}});
+ shortUrls.value.push(response.data);
} else {
- STUDIP.jsonapi.withPromises().patch(`short-urls/${shortUrl.id}`, {data: {data: shortUrl}})
- .then(response => {
- shortUrls.value[index] = response.data;
- STUDIP.Report.success($gettext('Der Kurzlink wurde gespeichert.'));
- })
- .catch(error => {
- STUDIP.Report.error($gettext('Fehler beim Speichern des Kurzlinks'), error)
- });
+ response = await STUDIP.jsonapi.withPromises().patch(`short-urls/${shortUrl.id}`, {data: {data: shortUrl}});
+ shortUrls.value[index] = response.data;
}
+
+ STUDIP.Report.success($gettext('Der Kurzlink wurde gespeichert.'));
+ return response.data;
}
function deleteShortUrl(id) {