diff --git a/lib/form/filepicker.php b/lib/form/filepicker.php
index caa200919f0..c5af6e18866 100644
--- a/lib/form/filepicker.php
+++ b/lib/form/filepicker.php
@@ -77,13 +77,14 @@ class MoodleQuickForm_filepicker extends HTML_QuickForm_input {
$args->itemid = $draftitemid;
$args->maxbytes = $this->_options['maxbytes'];
$args->context = $PAGE->context;
+ $args->buttonname = $elname.'choose';
$html = $this->_getTabs();
$fp = new file_picker($args);
$options = $fp->options;
$options->context = $PAGE->context;
$html .= $OUTPUT->render($fp);
- $html .= '';
+ $html .= '';
$module = array('name'=>'form_filepicker', 'fullpath'=>'/lib/form/filepicker.js', 'requires'=>array('core_filepicker'));
$PAGE->requires->js_init_call('M.form_filepicker.init', array($fp->options), true, $module);
diff --git a/lib/form/form.js b/lib/form/form.js
index 42b9316ae2a..140a47502e3 100644
--- a/lib/form/form.js
+++ b/lib/form/form.js
@@ -198,12 +198,25 @@ M.form.initFormDependencies = function(Y, formid, dependencies) {
*/
_disableElement : function(name, disabled) {
var els = this.elementsByName(name);
+ var form = this;
els.each(function(){
if (disabled) {
this.setAttribute('disabled', 'disabled');
} else {
this.removeAttribute('disabled');
}
+
+ // Extra code to disable a filepicker
+ if (this.getAttribute('class') == 'filepickerhidden'){
+ var pickerbuttons = form.elementsByName(name + 'choose');
+ pickerbuttons.each(function(){
+ if (disabled){
+ this.setAttribute('disabled','disabled');
+ } else {
+ this.removeAttribute('disabled');
+ }
+ });
+ }
})
},
/**
diff --git a/lib/outputcomponents.php b/lib/outputcomponents.php
index 3dfdbf77c08..7e9573c4773 100644
--- a/lib/outputcomponents.php
+++ b/lib/outputcomponents.php
@@ -57,6 +57,7 @@ class file_picker implements renderable {
'itemid' => 0,
'maxbytes'=>-1,
'maxfiles'=>1,
+ 'buttonname'=>false,
);
foreach ($defaults as $key=>$value) {
if (empty($options->$key)) {
diff --git a/lib/outputrenderers.php b/lib/outputrenderers.php
index 6d89aba67e6..52c9d05a1a8 100644
--- a/lib/outputrenderers.php
+++ b/lib/outputrenderers.php
@@ -1979,13 +1979,18 @@ class core_renderer extends renderer_base {
} else {
$maxsize = get_string('maxfilesize', 'moodle', display_size($size));
}
+ if ($options->buttonname){
+ $buttonname = ' name="' . $options->buttonname . '"';
+ } else {
+ $buttonname = '';
+ }
$html = <<
$icon_progress