blob: 1d60a6d871b04b24bbdf45793816a5a06ef4fc7d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
( function ( mw, OO ) {
/**
* Represents an object which configures an html5 FormData object to upload.
* Large files are uploaded in chunks.
*
* @param {mw.UploadWizardUpload} upload
* @param {mw.Api} api
*/
mw.ApiUploadFormDataHandler = function ( upload, api ) {
mw.ApiUploadHandler.call( this, upload, api );
this.formData = {
action: 'upload',
stash: 1,
format: 'json'
};
this.transport = new mw.FormDataTransport(
this.api,
this.formData
).on( 'update-stage', function ( stage ) {
upload.ui.setStatus( 'mwe-upwiz-' + stage );
} );
};
OO.inheritClass( mw.ApiUploadFormDataHandler, mw.ApiUploadHandler );
mw.ApiUploadFormDataHandler.prototype.abort = function () {
this.transport.abort();
};
/**
* @return {jQuery.Promise}
*/
mw.ApiUploadFormDataHandler.prototype.submit = function () {
var handler = this;
return this.configureEditToken().then( function () {
handler.beginTime = ( new Date() ).getTime();
handler.upload.ui.setStatus( 'mwe-upwiz-transport-started' );
handler.upload.ui.showTransportProgress();
return handler.transport.upload( handler.upload.file, handler.upload.title.getMainText() )
.progress( function ( fraction ) {
if ( handler.upload.state === 'aborted' ) {
handler.abort();
return;
}
if ( fraction !== null ) {
handler.upload.setTransportProgress( fraction );
}
} );
} );
};
/**
* Obtain a fresh edit token.
* If successful, store token and call a callback.
*
* @return {jQuery.Promise}
*/
mw.ApiUploadFormDataHandler.prototype.configureEditToken = function () {
var handler = this;
return this.api.getEditToken().then( function ( token ) {
handler.formData.token = token;
} );
};
}( mediaWiki, OO ) );
|