Umožněn upload souborů k požadavkům na služební cesty a k vyúčtování služební cesty.
closes #131Verze_2.0
parent
c6ebf8959b
commit
ecd3cf426b
@ -0,0 +1,72 @@
|
|||||||
|
package info.bukova.isspst.ui;
|
||||||
|
|
||||||
|
import info.bukova.isspst.data.DataModel;
|
||||||
|
import info.bukova.isspst.data.FileMetainfo;
|
||||||
|
import info.bukova.isspst.storage.DocumentFileStorage;
|
||||||
|
import info.bukova.isspst.storage.EntityWithAttachment;
|
||||||
|
import org.zkoss.bind.annotation.BindingParam;
|
||||||
|
import org.zkoss.bind.annotation.Command;
|
||||||
|
import org.zkoss.bind.annotation.ContextParam;
|
||||||
|
import org.zkoss.bind.annotation.ContextType;
|
||||||
|
import org.zkoss.bind.annotation.Init;
|
||||||
|
import org.zkoss.bind.annotation.NotifyChange;
|
||||||
|
import org.zkoss.zk.ui.event.UploadEvent;
|
||||||
|
import org.zkoss.zk.ui.select.annotation.WireVariable;
|
||||||
|
import org.zkoss.zul.Filedownload;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Pepa Rokos
|
||||||
|
*/
|
||||||
|
public class FormWithUpload<T extends DataModel> extends FormViewModel<T> {
|
||||||
|
|
||||||
|
private List<FileMetainfo> attachments;
|
||||||
|
private List<FileMetainfo> forDelete;
|
||||||
|
@WireVariable
|
||||||
|
private DocumentFileStorage documentStorage;
|
||||||
|
|
||||||
|
@Init(superclass = true)
|
||||||
|
public void initFormWithUpload() {
|
||||||
|
if (getDataBean() instanceof EntityWithAttachment) {
|
||||||
|
attachments = ((EntityWithAttachment)getDataBean()).getAttachedFiles();
|
||||||
|
}
|
||||||
|
forDelete = new ArrayList<FileMetainfo>(); // kolekce příloh na smazání v případě uložení záznamu
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command
|
||||||
|
@NotifyChange("attachments")
|
||||||
|
public void uploadAttachment(@ContextParam(ContextType.TRIGGER_EVENT) UploadEvent upEvent) {
|
||||||
|
FileMetainfo metaInfo = documentStorage.saveAndCreateInfo(upEvent.getMedia().getByteData(),
|
||||||
|
upEvent.getMedia().getName());
|
||||||
|
|
||||||
|
((EntityWithAttachment)getDataBean()).addAttachment(metaInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command
|
||||||
|
@NotifyChange("attachments")
|
||||||
|
public void deleteAttachment(@BindingParam("attachment") FileMetainfo metaInfo) {
|
||||||
|
((EntityWithAttachment)getDataBean()).removeAttachment(metaInfo);
|
||||||
|
forDelete.add(metaInfo); // smazat až v případě uložení záznamu
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command
|
||||||
|
public void downloadAttachment(@BindingParam("attachment") FileMetainfo metaInfo) {
|
||||||
|
Filedownload.save(documentStorage.fileData(metaInfo), metaInfo.getContentType(), metaInfo.getFileName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<FileMetainfo> getAttachments() {
|
||||||
|
return attachments;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doSave() {
|
||||||
|
for (FileMetainfo info : forDelete) {
|
||||||
|
documentStorage.removeFile(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
super.doSave();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
<?page title="${labels.TravelOrdersFormTitle}" contentType="text/html;charset=UTF-8"?>
|
||||||
|
|
||||||
|
<zk xmlns="http://www.zkoss.org/2005/zul"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd">
|
||||||
|
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
|
||||||
|
|
||||||
|
<vbox>
|
||||||
|
<button image="/img/upload-016.png"
|
||||||
|
label="Připojit soubor"
|
||||||
|
upload="true"
|
||||||
|
onUpload="@command('uploadAttachment')"
|
||||||
|
sclass="nicebutton" />
|
||||||
|
<grid model="@load(vm.attachments)" height="180px">
|
||||||
|
<columns>
|
||||||
|
<column label="Soubor" width="220px"/>
|
||||||
|
<column label="Popis" hflex="max"/>
|
||||||
|
<column width="200px"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<template name="model">
|
||||||
|
<row>
|
||||||
|
<a href="@load('/api/dl/'.concat(each.pathInFilesystem).concat('/').concat(each.fileName))"
|
||||||
|
label="@load(each.fileName)"
|
||||||
|
target="blank"/>
|
||||||
|
<textbox value="@bind(each.description)" sclass="grid-textbox-max"/>
|
||||||
|
<hbox>
|
||||||
|
<button image="/img/delete-016.png" label="Odebrat" onClick="@command('deleteAttachment', attachment=each)" sclass="nicebutton"/>
|
||||||
|
<button image="/img/download-016.png" label="Stáhnout" onClick="@command('downloadAttachment', attachment=each)" sclass="nicebutton"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
</template>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</vbox>
|
||||||
|
|
||||||
|
</zk>
|
Binary file not shown.
After Width: | Height: | Size: 789 B |
Binary file not shown.
After Width: | Height: | Size: 734 B |
Binary file not shown.
After Width: | Height: | Size: 197 B |
Binary file not shown.
After Width: | Height: | Size: 650 B |
Loading…
Reference in New Issue