MDL-31114 Filemanager drag and drop upload - displays 'drop here' message when draggi...
[moodle.git] / lib / form / filepicker.js
blob4c99ea8d4688a52d3c0c8b697a3f839d9475860e
2 M.form_filepicker = {};
3 M.form_filepicker.Y = null;
4 M.form_filepicker.instances = [];
6 M.form_filepicker.callback = function(params) {
7     var html = '<a href="'+params['url']+'">'+params['file']+'</a>';
8     document.getElementById('file_info_'+params['client_id']).innerHTML = html;
9     M.form_filepicker.add_upload_message(params['client_id']);
10     //When file is added then set status of global variable to true
11     var elementname = M.core_filepicker.instances[params['client_id']].options.elementname;
12     M.form_filepicker.instances[elementname].fileadded = true;
13     //generate event to indicate changes which will be used by disable if or validation code
14     M.form_filepicker.Y.one('#id_'+elementname).simulate('change');
17 M.form_filepicker.add_upload_message = function(client_id) {
18     var div = '<div id="filemanager-uploadmessage'+client_id+'" style="display:none" class="dndupload-target">';
19     div += M.util.get_string('droptoupload', 'moodle');
20     div += '</div>';
21     var iteminfo = document.getElementById('file_info_'+client_id);
22     iteminfo.innerHTML += div;
23     iteminfo.style.position = 'relative';
26 /**
27  * This fucntion is called for each file picker on page.
28  */
29 M.form_filepicker.init = function(Y, options) {
30     //Keep reference of YUI, so that it can be used in callback.
31     M.form_filepicker.Y = Y;
33     //For client side validation, initialize file status for this filepicker
34     M.form_filepicker.instances[options.elementname] = {};
35     M.form_filepicker.instances[options.elementname].fileadded = false;
37     //Set filepicker callback
38     options.formcallback = M.form_filepicker.callback;
40     if (!M.core_filepicker.instances[options.client_id]) {
41         M.core_filepicker.init(Y, options);
42     }
43     Y.on('click', function(e, client_id) {
44         e.preventDefault();
45         M.core_filepicker.instances[client_id].show();
46     }, '#filepicker-button-'+options.client_id, null, options.client_id);
48     var item = document.getElementById('nonjs-filepicker-'+options.client_id);
49     if (item) {
50         item.parentNode.removeChild(item);
51     }
52     item = document.getElementById('filepicker-wrapper-'+options.client_id);
53     if (item) {
54         item.style.display = '';
55         this.add_upload_message(options.client_id);
56     }
58     var dndoptions = {
59         clientid: options.client_id,
60         acceptedtypes: options.accepted_types,
61         maxfiles: -1,
62         maxbytes: options.maxbytes,
63         itemid: options.itemid,
64         repositories: options.repositories,
65         formcallback: options.formcallback,
66         containerprefix: '#file_info_',
67     };
68     M.form_dndupload.init(Y, dndoptions);