<#-- # The main macro is addFileInputAndfilesBox. The macro addRequiredJsFiles is used to include required JavaScript and CSS files. # Others macros are private. --> <#-- # Add required CSS and JavaScript files to use asynchronous uploads. # This is only needed in Back Office or in FO page not served by the portal service. --> <#macro addRequiredJsFiles> <#macro addFileInput fieldName handler cssClass multiple=false submitBtnName="${handler.uploadSubmitPrefix}${fieldName}" type="button" ariaDescribedby="" required=false hasError=false > <@input type='hidden' name='asynchronousupload.handler' value='${handler.handlerName}' /> <#assign inputClass>file-input<#if hasError> is-invalid <@row> <@columns md=12 lg=8 class=inputClass?string > <@formLabel for='${fieldName}' id='dropzone_${fieldName!}' class='sr-only'>#i18n{asynchronousupload.action.browse.name} <#assign pmultiple><#if multiple>multiple="multiple" <@input type='file' name='${fieldName}' placeHolder='#i18n{asynchronousupload.action.browse.name}' id='${fieldName}' class='${cssClass!} ${handler.handlerName}' params=pmultiple /> <@progressBar id="progress_${fieldName}" params=' style="display:none;"' /> <@div id="_file_error_box_${fieldName}" /> <#macro addUploadedFilesBox fieldName handler listFiles submitBtnName="${handler.uploadDeletePrefix}${fieldName}" noJs=false> <#-- file removing --> <#assign has_files = false> <#if listFiles?? && listFiles?has_content><#assign has_files = true> <#assign paramGroup><#if !has_files>style="display:none;" <@row> <@columns md=12 lg=8> <@div id='_file_deletion_label_${fieldName}' params=paramGroup >

#i18n{asynchronousupload.file.uploadedFile}

<@div id='_file_deletion_${fieldName}' class='list-group files-group'> <#assign file_index = 0> <#if has_files> <#assign index = 0 /> <@listGroup id='listUpload'> <#list listFiles as file> <#assign filename = ''> <#if file.name?? && file.name != ''> <#assign filename = file.name > <#else> <#if file.title?? && file.title != ''> <#assign filename = file.title > <#if file.size??> <#if file.size < 1024 > <#assign octetUnit="o"> <#assign octetNumber=file.size> <#elseif file.size < 1024 * 1024 > <#assign octetUnit="Ko"> <#assign octetNumber=file.size/1024> <#else > <#assign octetUnit="Mo"> <#assign octetNumber=file.size/(1024*1024)> <#if filename != '' >
<@row> <@columns>
<#-- Macro to add a file input for asynchronous and synchronous uploads. # @param fieldName The name of the field. # @param handler The associated handler service. # @param listUploadedFiles The list of files that have already been uploaded. Files must have a 'title' or a 'name' attribute. # @param inputCssClass The CSS class to add to the input if any. Default value is an empty string. # @param multiple True to use an HTML5 multiple file input, false otherwise. Default value if false. --> <#macro addFileInputAndfilesBox fieldName handler listUploadedFiles inputCssClass='' multiple=false> <@addFileInput fieldName=fieldName handler=handler cssClass=inputCssClass multiple=multiple /> <@addUploadedFilesBox fieldName=fieldName handler=handler listFiles=listUploadedFiles />