TimedText javascript interface to upload srt files, js2 part
authorJan Gerber <j@users.mediawiki.org>
Sat, 7 Nov 2009 17:44:50 +0000 (17:44 +0000)
committerJan Gerber <j@users.mediawiki.org>
Sat, 7 Nov 2009 17:44:50 +0000 (17:44 +0000)
js2/mwEmbed/libTimedText/mvTimeTextEdit.js [new file with mode: 0644]
js2/mwEmbed/mv_embed.js
js2/remoteMwEmbed.js

diff --git a/js2/mwEmbed/libTimedText/mvTimeTextEdit.js b/js2/mwEmbed/libTimedText/mvTimeTextEdit.js
new file mode 100644 (file)
index 0000000..622ce76
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * JS2-style edit.js
+ */
+
+// Setup configuration vars (if not set already)
+if( !mwAddMediaConfig )
+  var mwAddMediaConfig = {};
+
+var mvTimedTextEdit = {};
+
+js2AddOnloadHook( function() {
+  function getSubtitle(f) {
+      var name = f.files[0].name;
+      var srtData = f.files[0].getAsBinary();
+      srtData = srtData.replace('\r\n', '\n');
+      return srtData;
+  }
+  function uploadSubtitles() {
+    do_api_req({
+      'data': {
+        'meta' : 'siteinfo',
+        'siprop' : 'languages'
+      }
+      }, function( langDataRaw ) {
+        var langData = {};
+        var languageSelect = '<select id="timed_text_language">';
+
+        var lagRaw = langDataRaw.query.languages;
+        for(var j in lagRaw){
+          var code = lagRaw[j].code;
+          var language = lagRaw[j]['*'];
+          langData[ code ] = language;
+          languageSelect += '<option value="'+code+'">'+language+'('+code+')</option>';
+        }
+        languageSelect += '/</select>';
+                   var cBtn = {};
+                   cBtn[ gM('mwe-cancel') ] = function(){
+                           $j(this).dialog('close');
+                   }
+                   cBtn[ gM('mwe-ok') ] = function(){
+                           var file = $j('#timed_text_file_upload');
+                           var langKey = file[0].files[0].name.split('.');
+                           var extension = langKey.pop();
+                           langKey = langKey.pop();
+                           var mimeTypes = {
+                               'srt': 'text/x-srt',
+                               'cmml': 'text/cmml'
+                           }
+                           if( !mimeTypes[ extension ] ){
+                                   js_log('Error: unknown extension:'+ extension);
+                           }
+                           //get language from form
+                 langKey = $j('#timed_text_language').val();
+
+                           if(extension == "srt") {
+           var srt = getSubtitle(file[0]);
+                             $j(this).html("saving...");
+                             $j('.ui-dialog-buttonpane').remove();
+
+                 var editToken = $j('input[name=wpEditToken]').val();
+                 var title = wgTitle.split('.');
+                 title.pop();
+                 title.pop();
+                 title = title.join('.') + '.' + langKey + '.srt';
+            do_api_req({
+              'data': {
+                'action' : 'edit',
+                'title' : title,
+                'text' : srt,
+                'token': editToken
+              }
+            }, function(dialog) {
+                return function( result ) {
+                  document.location.href = wgArticlePath.replace('/$1', '?title=' + title + '&action=edit');
+                  $j(dialog).dialog('close');
+               }}(this)
+            );
+                           } else {
+                         $j(this).html("error only srt works right now.");
+                           }                     
+                   }
+        $j.addDialog("Select Subtitle to upload",
+           '<input type="file" id="timed_text_file_upload"></input><br>' + languageSelect,
+           cBtn);
+        $j('#timed_text_file_upload').change(function(ev) {
+                           var langKey = this.files[0].name.split('.');
+                           var extension = langKey.pop();
+                           langKey = langKey.pop();
+                 $j('#timed_text_language').val( langKey );
+        });
+    });
+  }
+  var button = $j('<button>');
+  button.click(uploadSubtitles)
+  button.text("Upload Subtitle");
+  $j('#toolbar').append(button);
+});
+
index 3f72a98..3c059c1 100644 (file)
@@ -144,7 +144,8 @@ lcPaths({
        "mvFirefoggRender"      : "libSequencer/mvFirefoggRender.js",
        "mvTimedEffectsEdit": "libSequencer/mvTimedEffectsEdit.js",
 
-       "mvTextInterface"       : "libTimedText/mvTextInterface.js"
+       "mvTextInterface"       : "libTimedText/mvTextInterface.js",
+       "mvTimedTextEdit"       : "libTimedText/mvTimedTextEdit.js"
 });
 
 // Dependency mapping for CSS files for self-contained included plugins:
@@ -2022,4 +2023,4 @@ function js_log( string ) {
 function js_error( string ) {
        alert( string );
        return false;
-}
\ No newline at end of file
+}
index e5cec89..55c1a47 100644 (file)
@@ -24,7 +24,9 @@ function doPageSpecificRewrite() {
        
        //timed text dispaly:
        if(wgPageName.indexOf("TimedText") === 0){
-               
+               load_mv_embed( function() {
+                       loadExternalJs( mwEmbedHostPath + '/mwEmbed/libTimedText/mvTimeTextEdit.js' + reqAguments );
+               } );
        }
        
        // Firefogg integration