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