2 * JS2-style mvTimedTextEdit.js
5 // Setup configuration vars (if not set already)
6 if ( !mwAddMediaConfig )
7 var mwAddMediaConfig = { };
9 var mvTimeTextEdit = { };
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..."
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' );
28 function getVideoTitle() {
29 var videoTitle = wgPageName.split( '.' );
32 videoTitle = videoTitle.join( '.' ).replace( 'TimedText:', 'File:' );
35 function uploadSubtitles() {
39 'siprop' : 'languages'
41 }, function( langDataRaw ) {
42 var apprefix = wgTitle.split( '.' );
45 apprefix = apprefix.join( '.' );
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;
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 + ') +';
72 languageSelect += language + '(' + code + ') -';
74 languageSelect += '</option>';
76 languageSelect += '/</select>';
78 cBtn[ gM( 'mwe-cancel' ) ] = function() {
79 $j( this ).dialog( 'close' );
81 cBtn[ gM( 'mwe-ok' ) ] = function() {
82 // get language from form
83 langKey = $j( '#timed_text_language' ).val();
84 var title = wgPageName.split( '.' );
87 title = title.join( '.' ) + '.' + langKey + '.srt';
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' );
95 var langKey = file[0].files[0].name.split( '.' );
96 var extension = langKey.pop();
97 langKey = langKey.pop();
102 if ( !mimeTypes[ extension ] ) {
103 js_log( 'Error: unknown extension:' + extension );
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();
121 }, function( dialog ) {
122 return function( result ) {
123 document.location.href = wgArticlePath.replace( '/$1', '?title=' + title + '&action=edit' );
124 $j( dialog ).dialog( 'close' );
128 $j( this ).html( gM( "mwe-error-only-srt" ) );
131 $j.addDialog( gM( "mwe-add-subs-file-title" ),
132 '<input type="file" id="timed_text_file_upload"></input><br />' + languageSelect,
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 );
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 );