AccompanyingCourseWorkEdit: download existing documents

This commit is contained in:
nobohan 2022-03-14 14:42:04 +01:00
parent 9f0ab5aee7
commit 1beae4d713
5 changed files with 63 additions and 6 deletions

View File

@ -61,13 +61,13 @@ class StoredObject implements AsyncFileInterface, Document
/** /**
* @var int[] * @var int[]
* @ORM\Column(type="json", name="iv") * @ORM\Column(type="json", name="iv")
* @Serializer\Groups({"write"}) * @Serializer\Groups({"read", "write"})
*/ */
private array $iv = []; private array $iv = [];
/** /**
* @ORM\Column(type="json", name="key") * @ORM\Column(type="json", name="key")
* @Serializer\Groups({"write"}) * @Serializer\Groups({"read", "write"})
*/ */
private array $keyInfos = []; private array $keyInfos = [];

View File

@ -73,6 +73,7 @@ var download = (button) => {
button.type = mimeType; button.type = mimeType;
button.textContent = labelReady; button.textContent = labelReady;
if (hasFilename) { if (hasFilename) {
button.download = filename; button.download = filename;
if (extension !== false) { if (extension !== false) {
button.download = button.download + '.' + extension; button.download = button.download + '.' + extension;
@ -92,4 +93,4 @@ window.addEventListener('load', function(e) {
initializeButtons(e.target); initializeButtons(e.target);
}); });
module.exports = initializeButtons; export { initializeButtons, download };

View File

@ -1,6 +1,6 @@
var algo = 'AES-CBC'; var algo = 'AES-CBC';
import Dropzone from 'dropzone'; import Dropzone from 'dropzone';
var initializeDownload = require('./downloader.js'); import { initializeButtons } from './downloader.js';
/** /**
@ -359,7 +359,7 @@ var insertDownloadButton = (zone, zoneData) => {
addBelowButton(newButton, zone, zoneData); addBelowButton(newButton, zone, zoneData);
//zone.appendChild(newButton); //zone.appendChild(newButton);
initializeDownload(zone); initializeButtons(zone);
}; };
window.addEventListener('load', function(e) { window.addEventListener('load', function(e) {

View File

@ -0,0 +1,45 @@
<template>
<a
class="btn btn-download"
:title="$t(buttonTitle)"
:data-key=JSON.stringify(storedObject.keyInfos)
:data-iv=JSON.stringify(storedObject.iv)
:data-mime-type=storedObject.type
:data-label-preparing="$t('dataLabelPreparing')"
:data-label-ready="$t('dataLabelReady')"
:data-temp-url-get-generator="url"
@click.once="downloadDocument">
</a>
</template>
<script>
import { download } from '../../module/async_upload/downloader';
const i18n = {
messages: {
fr: {
dataLabelPreparing: "Chargement...",
dataLabelReady: "",
}
}
};
export default {
name: "AddAsyncUploadDownloader",
i18n,
props: [
'buttonTitle',
'storedObject'
],
computed: {
url() {
return `/asyncupload/temp_url/generate/GET?object_name=${this.storedObject.filename}`;
}
},
methods: {
downloadDocument(e) {
download(e.target);
}
}
}
</script>

View File

@ -108,6 +108,14 @@
> >
</add-async-upload> </add-async-upload>
</li> </li>
<li>
<add-async-upload-downloader
:buttonTitle="$t('download')"
:storedObject="d.storedObject"
>
</add-async-upload-downloader>
</li>
<li> <li>
<a :href="buildEditLink(d.storedObject)" class="btn btn-wopilink"></a> <a :href="buildEditLink(d.storedObject)" class="btn btn-wopilink"></a>
</li> </li>
@ -162,6 +170,7 @@ import { mapGetters, mapState } from 'vuex';
import PickTemplate from 'ChillDocGeneratorAssets/vuejs/_components/PickTemplate.vue'; import PickTemplate from 'ChillDocGeneratorAssets/vuejs/_components/PickTemplate.vue';
import {buildLink} from 'ChillDocGeneratorAssets/lib/document-generator'; import {buildLink} from 'ChillDocGeneratorAssets/lib/document-generator';
import AddAsyncUpload from 'ChillDocStoreAssets/vuejs/_components/AddAsyncUpload.vue'; import AddAsyncUpload from 'ChillDocStoreAssets/vuejs/_components/AddAsyncUpload.vue';
import AddAsyncUploadDownloader from 'ChillDocStoreAssets/vuejs/_components/AddAsyncUploadDownloader.vue';
import ListWorkflowModal from 'ChillMainAssets/vuejs/_components/EntityWorkflow/ListWorkflowModal.vue'; import ListWorkflowModal from 'ChillMainAssets/vuejs/_components/EntityWorkflow/ListWorkflowModal.vue';
import {buildLinkCreate} from 'ChillMainAssets/lib/entity-workflow/api.js'; import {buildLinkCreate} from 'ChillMainAssets/lib/entity-workflow/api.js';
@ -187,7 +196,8 @@ const i18n = {
document_title: "Titre du document", document_title: "Titre du document",
template_title: "Nom du template", template_title: "Nom du template",
browse: "Ajouter un document", browse: "Ajouter un document",
replace: "Remplacer" replace: "Remplacer",
download: "Télécharger le fichier existant"
} }
} }
}; };
@ -199,6 +209,7 @@ export default {
ckeditor: CKEditor.component, ckeditor: CKEditor.component,
PickTemplate, PickTemplate,
AddAsyncUpload, AddAsyncUpload,
AddAsyncUploadDownloader,
ListWorkflowModal, ListWorkflowModal,
}, },
i18n, i18n,