diff options
| author | Thomas Hackl <hackl@data-quest.de> | 2026-01-07 14:39:31 +0100 |
|---|---|---|
| committer | Thomas Hackl <hackl@data-quest.de> | 2026-01-07 14:39:31 +0100 |
| commit | 5a28d77e9a28138f42312d62f1c5ec92310ae865 (patch) | |
| tree | 26a45f2ba46ac1de4d5fd4accd5c8ea5efa40ae2 /resources/vue | |
| parent | 4f00fb8d9fea5ceead39a8145ac10d859ebdd287 (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.vue | 4 | ||||
| -rw-r--r-- | resources/vue/apps/short-urls/ShortUrlList.vue | 18 | ||||
| -rw-r--r-- | resources/vue/store/pinia/shortUrlsStore.js | 25 |
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) { |
