Path: blob/master/webroot/rsrc/js/phui/behavior-phui-file-upload.js
12241 views
/**1* @provides javelin-behavior-phui-file-upload2* @requires javelin-behavior3* javelin-stratcom4* javelin-dom5* phuix-dropdown-menu6*/78JX.behavior('phui-file-upload', function(config) {910function startUpload(workflow, input) {11var files = input.files;1213if (!files || !files.length) {14return;15}1617var state = {18workflow: workflow,19input: input,20waiting: 0,21phids: []22};2324var callback = JX.bind(null, didUpload, state);2526var dummy = input;27var uploader = new JX.PhabricatorDragAndDropFileUpload(dummy)28.setURI(config.uploadURI)29.setChunkThreshold(config.chunkThreshold);3031uploader.listen('didUpload', callback);32uploader.start();3334workflow.pause();35for (var ii = 0; ii < files.length; ii++) {36state.waiting++;37uploader.sendRequest(files[ii]);38}39}4041function didUpload(state, file) {42state.phids.push(file.getPHID());43state.waiting--;4445if (state.waiting) {46return;47}4849state.workflow50.addData(config.inputName, state.phids.join(', '))51.resume();52}5354JX.Workflow.listen('start', function(workflow) {55var form = workflow.getSourceForm();56if (!form) {57return;58}5960var input;61try {62input = JX.$(config.fileInputID);63} catch (ex) {64return;65}6667var local_form = JX.DOM.findAbove(input, 'form');68if (!local_form) {69return;70}7172if (local_form !== form) {73return;74}7576startUpload(workflow, input);77});7879});808182