MDL-26167 lib/form: Altering Javascript so that "disabledIf" will disable the "Choose" button for a filepicker

This commit is contained in:
Aaron Wells 2011-04-12 14:30:13 +12:00
parent 91787c37e1
commit 4b72f9eb78
4 changed files with 22 additions and 2 deletions

View File

@ -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 .= '<input type="hidden" name="'.$elname.'" id="'.$id.'" value="'.$draftitemid.'" />';
$html .= '<input type="hidden" name="'.$elname.'" id="'.$id.'" value="'.$draftitemid.'" class="filepickerhidden"/>';
$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);

View File

@ -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');
}
});
}
})
},
/**

View File

@ -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)) {

View File

@ -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 = <<<EOD
<div class="filemanager-loading mdl-align" id='filepicker-loading-{$client_id}'>
$icon_progress
</div>
<div id="filepicker-wrapper-{$client_id}" class="mdl-left" style="display:none">
<div>
<input type="button" id="filepicker-button-{$client_id}" value="{$straddfile}" />
<input type="button" id="filepicker-button-{$client_id}" value="{$straddfile}"{$buttonname}/>
<span> $maxsize </span>
</div>
EOD;