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