#-- # 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> <#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#if>#assign> <@row> <@columns md=12 lg=8 class=inputClass?string > <@formLabel for='${fieldName}' id='dropzone_${fieldName!}' class='sr-only'>#i18n{asynchronousupload.action.browse.name}@formLabel> <#assign pmultiple><#if multiple>multiple="multiple"#if>#assign> <@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}" /> @columns> @row> #macro> <#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>#if> <#assign paramGroup><#if !has_files>style="display:none;"#if>#assign> <@row> <@columns md=12 lg=8> <@div id='_file_deletion_label_${fieldName}' params=paramGroup >