removed output-disable in dbms-output fetching procedure
[mediawiki.git] / js2 / mwEmbed / libTimedText / mvTimeTextEdit.js
blob8916bfe1afe2239317b632079f7397ffa2857209
1 /*
2  * JS2-style mvTimedTextEdit.js
3  */
5 // Setup configuration vars (if not set already)
6 if ( !mwAddMediaConfig )
7   var mwAddMediaConfig = { };
9 var mvTimeTextEdit = { };
11 loadGM( {
12   "mwe-upload-subs-file" : "Upload subtitle",
13   "mwe-add-subs-file-title" : "Select subtitle to upload",
14   "mwe-error-only-srt" : "You can only upload srt files.",
15   "mwe-watch-video" : "Watch video",
16   "mwe-select-other-language" : "Select another language",
17   "mwe-saving" : "saving..."
18 } )
21 js2AddOnloadHook( function() {
22   function getSubtitle( f ) {
23       var name = f.files[0].name;
24       var srtData = f.files[0].getAsBinary();
25       srtData = srtData.replace( '\r\n', '\n' );
26       return srtData;
27   }
28   function getVideoTitle() {
29     var videoTitle = wgPageName.split( '.' );
30     videoTitle.pop();
31     videoTitle.pop();
32     videoTitle = videoTitle.join( '.' ).replace( 'TimedText:', 'File:' );
33     return videoTitle;
34   }
35   function uploadSubtitles() {
36     do_api_req( {
37       'data': {
38         'meta' : 'siteinfo',
39         'siprop' : 'languages'
40       }
41       }, function( langDataRaw ) {
42         var apprefix = wgTitle.split( '.' );
43         apprefix.pop();
44         apprefix.pop();
45         apprefix = apprefix.join( '.' );
46                           do_api_req( {
47                                           'data': {
48                                                   'list' : 'allpages',
49                                                   'apprefix' : apprefix
50                                           }
51                           }, function( subData ) {
52                             var availableSubtitles = { };
53                                         for ( var i in subData.query.allpages ) {
54                                                 var subPage = subData.query.allpages[i];
55                                                 var langKey = subPage.title.split( '.' );
56                                                 var extension = langKey.pop();
57                                                 langKey = langKey.pop();
58                                                 availableSubtitles[langKey] = subPage.title;
59           }
60           var langData = { };
61           var languageSelect = '<select id="timed_text_language">';
63           var lagRaw = langDataRaw.query.languages;
64           for ( var j in lagRaw ) {
65             var code = lagRaw[j].code;
66             var language = lagRaw[j]['*'];
67             langData[ code ] = language;
68             languageSelect += '<option value="' + code + '">';
69             if ( availableSubtitles[code] ) {
70               languageSelect += language + '(' + code + ') +';
71             } else {
72               languageSelect += language + '(' + code + ') -';
73             }
74             languageSelect += '</option>';
75           }
76           languageSelect += '/</select>';
77           var cBtn = { };
78           cBtn[ gM( 'mwe-cancel' ) ] = function() {
79             $j( this ).dialog( 'close' );
80           }
81           cBtn[ gM( 'mwe-ok' ) ] = function() {
82                 // get language from form
83             langKey = $j( '#timed_text_language' ).val();
84             var title = wgPageName.split( '.' );
85             title.pop();
86             title.pop();
87             title = title.join( '.' ) + '.' + langKey + '.srt';
88             
89             var file = $j( '#timed_text_file_upload' );
90             if ( !file[0].files[0] ) {
91                 // no file to upload just jump to the lang key: 
92                 document.location.href = wgArticlePath.replace( '/$1', '?title=' + title + '&action=edit' );
93                 return ;
94             }
95             var langKey = file[0].files[0].name.split( '.' );
96             var extension = langKey.pop();
97             langKey = langKey.pop();
98             var mimeTypes = {
99                 'srt': 'text/x-srt',
100                 'cmml': 'text/cmml'
101             }
102             if ( !mimeTypes[ extension ] ) {
103               js_log( 'Error: unknown extension:' + extension );
104             }
105             
107             if ( extension == "srt" ) {
108               var srt = getSubtitle( file[0] );
109               $j( this ).text( gM( 'mwe-saving' ) );
110               $j( '.ui-dialog-buttonpane' ).remove();
112               var editToken = $j( 'input[name=wpEditToken]' ).val();
113             
114               do_api_req( {
115                 'data': {
116                   'action' : 'edit',
117                   'title' : title,
118                   'text' : srt,
119                   'token': editToken
120                 }
121               }, function( dialog ) {
122                   return function( result ) {
123                     document.location.href = wgArticlePath.replace( '/$1', '?title=' + title + '&action=edit' );
124                     $j( dialog ).dialog( 'close' );
125                  } }( this )
126               );
127             } else {
128               $j( this ).html( gM( "mwe-error-only-srt" ) );
129             }
130           }
131           $j.addDialog( gM( "mwe-add-subs-file-title" ),
132              '<input type="file" id="timed_text_file_upload"></input><br />' + languageSelect,
133              cBtn );
134           $j( '#timed_text_file_upload' ).change( function( ev ) {
135                 if ( this.files[0] ) {
136                     var langKey = this.files[0].name.split( '.' );
137                     var extension = langKey.pop();
138                     langKey = langKey.pop();
139                     $j( '#timed_text_language' ).val( langKey );
140             }
141           } );
142       } );
143     } );
144   }
145   var tselect = ( $j( '#wikiEditor-ui-top' ).length != 0 ) ? '#wikiEditor-ui-top':'#toolbar';
146   $j( tselect ).hide();
147   var ttoolbar = $j( '<div>' );
148   $j( tselect ).after( ttoolbar );
150   var button = $j( '<button>' );
151           button.click( uploadSubtitles )
152           button.text( gM( "mwe-upload-subs-file" ) );
153           ttoolbar.append( button );
154   ttoolbar.append( ' ' );
156   var button = $j( '<button>' );
157           button.click( function() { document.location.href = wgArticlePath.replace( '$1', getVideoTitle() ); } )
158           button.text( gM( "mwe-watch-video" ) );
159   ttoolbar.append( button );
161 } );