diff --git a/htdocs/artefact/file/form/elements/filebrowser.php b/htdocs/artefact/file/form/elements/filebrowser.php index 11c1be6..54eec77 100644 --- a/htdocs/artefact/file/form/elements/filebrowser.php +++ b/htdocs/artefact/file/form/elements/filebrowser.php @@ -107,10 +107,20 @@ function pieform_element_filebrowser(Pieform $form, $element) { $smarty->assign('agreementtext', get_string('uploadcopyrightdefaultcontent', 'install')); } } + else if (!isset($config['simpleupload'])) { + $config['simpleupload'] = 1; + } + if ($config['upload']) { $maxuploadsize = display_size(get_max_upload_size(!$institution && !$group)); $smarty->assign('maxuploadsize', $maxuploadsize); $smarty->assign('phpmaxfilesize', get_max_upload_size(false)); + if ($config['select']) { + // Force the user to upload using a submit button instead of + // beginning the upload as soon as a file is chosen. + // Workaround for firefox & bug #623648. + $config['submitbutton'] = 1; + } } if (!empty($element['browsehelp'])) { diff --git a/htdocs/artefact/file/js/filebrowser.js b/htdocs/artefact/file/js/filebrowser.js index 3c806c5..70c66f2 100644 --- a/htdocs/artefact/file/js/filebrowser.js +++ b/htdocs/artefact/file/js/filebrowser.js @@ -85,7 +85,12 @@ function FileBrowser(idprefix, folderid, config, globalconfig) { } }); } - connect(self.id + '_userfile', 'onchange', self.upload_submit); + if (self.config.submitbutton && $(self.id + '_uploadsubmit')) { + connect(self.id + '_uploadsubmit', 'onclick', self.upload_submit); + } + else { + connect(self.id + '_userfile', 'onchange', self.upload_submit); + } } this.upload_validate = function () { @@ -128,7 +133,12 @@ function FileBrowser(idprefix, folderid, config, globalconfig) { 'name':'userfile', 'size':40 })); - connect(self.id + '_userfile', 'onchange', self.upload_submit); + if (self.config.submitbutton && $(self.id + '_uploadsubmit')) { + connect(self.id + '_uploadsubmit', 'onclick', self.upload_submit); + } + else { + connect(self.id + '_userfile', 'onchange', self.upload_submit); + } $(self.id + '_upload').value = 0; return false; } diff --git a/htdocs/artefact/file/theme/raw/form/filebrowser.tpl b/htdocs/artefact/file/theme/raw/form/filebrowser.tpl index 9c2e260..de87b66 100644 --- a/htdocs/artefact/file/theme/raw/form/filebrowser.tpl +++ b/htdocs/artefact/file/theme/raw/form/filebrowser.tpl @@ -38,6 +38,9 @@ {if $config.upload} + {* config.uploadagreement: disable the file chooser unless the agreement is checked *} + {* config.simpleupload: the form only contains a file chooser *} + {* config.submitbutton: add submit button even if js is enabled & don't start uploading as soon as a file is chosen *} @@ -49,24 +52,24 @@ {$agreementtext|clean_html|safe} + {/if} - + - {else} - - + + - {/if} {/if} {if $config.createfolder}
({str tag=maxuploadsize section=artefact.file} {$maxuploadsize}) - - + {if $config.uploadagreement}{/if}
-
({str tag=maxuploadsize section=artefact.file} {$maxuploadsize})
+ {if $config.submitbutton} + + {/if}