|
[MediaWiki-CVS] SVN: [54067] trunk/phase3/js2/mwEmbed: msg#01445mediawiki-cvs
http://www.mediawiki.org/wiki/Special:Code/MediaWiki/54067 Revision: 54067 Author: dale Date: 2009-07-31 02:44:37 +0000 (Fri, 31 Jul 2009) Log Message: ----------- * fixed IE bug with firefogg disabled loading js2 for upload page * added support for two-pass encoding (firefogg bzr trunk) * added support for setting in and out points Modified Paths: -------------- trunk/phase3/js2/mwEmbed/example_usage/Firefogg_Make_Advanced.html trunk/phase3/js2/mwEmbed/jsScriptLoader.php trunk/phase3/js2/mwEmbed/libAddMedia/mvAdvFirefogg.js trunk/phase3/js2/mwEmbed/mv_embed.js trunk/phase3/js2/mwEmbed/php/languages/mwEmbed.i18n.php Modified: trunk/phase3/js2/mwEmbed/example_usage/Firefogg_Make_Advanced.html =================================================================== --- trunk/phase3/js2/mwEmbed/example_usage/Firefogg_Make_Advanced.html 2009-07-31 01:37:18 UTC (rev 54066) +++ trunk/phase3/js2/mwEmbed/example_usage/Firefogg_Make_Advanced.html 2009-07-31 02:44:37 UTC (rev 54067) @@ -89,9 +89,9 @@ <br> <br> <div style="margin-right:auto;margin-left:auto;width:500px;" id="loadFogg">Loading firefogg<blink>...</blink></div> - <div style="margin-right:auto;margin-left:auto;width:500px;height:250px" id="firefogg_app"></div> + <div style="margin-right:auto;margin-left:auto;width:500px;height:230px" id="firefogg_app"></div> - <div style="height:250px"></div> + <div style="height:265px"></div> <center><span style="font:size:80%">Built using <a href="http://firefogg.org">firefogg</a>, <a href="http://www.mediawiki.org/wiki/Media_Projects_Overview#MwEmbed">MwEmbed</a> and <a href="http://jqueryui.com/">jquery.ui</a>. Supports <a href="#" id="doThemeRoller">...</a> </span> Modified: trunk/phase3/js2/mwEmbed/jsScriptLoader.php =================================================================== --- trunk/phase3/js2/mwEmbed/jsScriptLoader.php 2009-07-31 01:37:18 UTC (rev 54066) +++ trunk/phase3/js2/mwEmbed/jsScriptLoader.php 2009-07-31 02:44:37 UTC (rev 54067) @@ -273,7 +273,7 @@ $jmsg[$msgKey] = wfMsgNoTrans( $msgKey ); } //return the updated loadGM json with fixed new lines: - return 'loadGM( ' . ApiFormatJson::getJsonEncode( $jmsg ) . ')'; + return 'loadGM( ' . json_encode( $jmsg ) . ')'; } else { $this->error_msg.= "Could not parse JSON language msg in File:\n" . $this->cur_file . "\n"; Modified: trunk/phase3/js2/mwEmbed/libAddMedia/mvAdvFirefogg.js =================================================================== --- trunk/phase3/js2/mwEmbed/libAddMedia/mvAdvFirefogg.js 2009-07-31 01:37:18 UTC (rev 54066) +++ trunk/phase3/js2/mwEmbed/libAddMedia/mvAdvFirefogg.js 2009-07-31 02:44:37 UTC (rev 54067) @@ -5,14 +5,14 @@ //@@todo put all msg text into loadGM json loadGM({ - "help-sticky": "Help (Click to Keep Help on Screen)", + "help-sticky": "Help (Click to Stick)", "fogg-cg-preset": "Preset: <strong>$1</strong>", "fogg-cg-quality": "Basic Quality and Resolution Control", "fogg-cg-meta": "Meta Data for the Clip", + "fogg-cg-range" : "Encoding Range", "fogg-cg-advVideo": "Advanced Video Encoding Controls", "fogg-cg-advAudio": "Advanced Audio Encoding Controls", - "fogg-preset-custom": "Custom Settings" - + "fogg-preset-custom": "Custom Settings" }); var mvAdvFirefogg = function( iObj ){ @@ -20,7 +20,7 @@ } var default_mvAdvFirefogg_config = { //which config groups to include - 'config_groups' : ['preset', 'quality', 'meta', 'advVideo', 'advAudio'], + 'config_groups' : ['preset', 'range', 'quality', 'meta', 'advVideo', 'advAudio'], //if you want to load any custom presets must follow the mvAdvFirefogg.presetConf json outline below 'custom_presets' : {}, @@ -34,7 +34,7 @@ mvAdvFirefogg.prototype = { //the global groupings and titles for for configuration options : - config_groups : [ 'preset','quality', 'meta' ,'advVideo', 'advAudio'], + config_groups : [ 'preset', 'range', 'quality', 'meta', 'advVideo', 'advAudio'], //list of pre-sets: //local instance encoder config: default_local_settings:{ @@ -71,6 +71,24 @@ 'group' : 'quality', 'help' : "Used to set the <i>Visual Quality</i> of the encoded video. (not used if you set bitrate in advanced controls below)" }, + 'twopass':{ + 't' : "Two Pass Encoding", + 'type' : "boolean", + 'group' : "quality", + 'help' : "Two Pass Encoding enables more consitant quality by making two passes over the video file" + }, + 'starttime':{ + 't' : "Start Second", + 'type' : "float", + 'group' : "range", + 'help' : "Only encode from time in seconds" + }, + 'endtime':{ + 't' : "End Second", + 'type' : "float", + 'group' : "range", + 'help' : "only encode to time in seconds" + }, 'audioQuality': { 'd' : 1, 't' : 'Audio Quality', @@ -350,7 +368,7 @@ '<label for="_' + cK + '">' + cConf.t + ':' + '<span title="' + gM('help-sticky') + '" class="help_'+ cK + ' ui-icon ui-icon-info" style="float:left"></span>'+ - '</label></td><td>'; + '</label></td><td valign="top">'; //if we don't value for this: var dv = ( this.default_encoder_config[cK].d ) ? this.default_encoder_config[cK].d : ''; //switch on the config type @@ -358,7 +376,9 @@ case 'string': case 'date': case 'int': - out+= '<input type="text" class="_' + cK + ' text ui-widget-content ui-corner-all" value="' + dv + '" >' ; + case 'float': + var size = ( cConf.type =='string' ||cConf.type == 'date' )?'14':'4'; + out+= '<input size="' + size + '" type="text" class="_' + cK + ' text ui-widget-content ui-corner-all" value="' + dv + '" >' ; break; case 'boolean': var checked_attr = (dv===true)?' checked="true"':''; @@ -472,10 +492,13 @@ case 'boolean': $j(_this.selector + ' ._'+cK).click(function(){ _this.updateLocalValue( _this.getClassId(this), $j(this).is(":checked") ); + _this.updatePresetSelection('custom'); }) break; case 'select': case 'string': + case 'int': + case 'float': //@@check if we have a validate function on the string $j(_this.selector + ' ._'+cK).change(function(){ $j(this).val( _this.updateLocalValue( Modified: trunk/phase3/js2/mwEmbed/mv_embed.js =================================================================== --- trunk/phase3/js2/mwEmbed/mv_embed.js 2009-07-31 01:37:18 UTC (rev 54066) +++ trunk/phase3/js2/mwEmbed/mv_embed.js 2009-07-31 02:44:37 UTC (rev 54067) @@ -921,11 +921,15 @@ } $.fn.baseUploadInterface = function(iObj){ - mvJsLoader.doLoad([ - 'mvBaseUploadInterface', - '$j.ui', + mvJsLoader.doLoadDepMode([ + [ + 'mvBaseUploadInterface', + '$j.ui', + ], + [ '$j.ui.progressbar', - '$j.ui.dialog' + '$j.ui.dialog' + ] ],function(){ myUp = new mvBaseUploadInterface( iObj ); myUp.setupForm(); Modified: trunk/phase3/js2/mwEmbed/php/languages/mwEmbed.i18n.php =================================================================== --- trunk/phase3/js2/mwEmbed/php/languages/mwEmbed.i18n.php 2009-07-31 01:37:18 UTC (rev 54066) +++ trunk/phase3/js2/mwEmbed/php/languages/mwEmbed.i18n.php 2009-07-31 02:44:37 UTC (rev 54067) @@ -10,51 +10,77 @@ #<JAVASCRIPT EN REPLACE> $messages['en'] = array( /* - * js file: /libTimedText/mvTextInterface.js + * js file: /libSequencer/mvSequencer.js */ - 'select_transcript_set' => 'Select Layers', - 'auto_scroll' => 'auto scroll', - 'close' => 'close', - 'improve_transcript' => 'Improve', + 'menu_clipedit' => 'Edit Media', + 'menu_transition' => 'Transitions & Effects', + 'menu_cliplib' => 'Add Media', + 'menu_resource_overview' => 'Resource Overview', + 'menu_options' => 'Options', + 'loading_timeline' => 'Loading TimeLine <blink>...</blink>', + 'loading_user_rights' => 'Loading user rights <blink>...</blink>', + 'no_edit_permissions' => 'You don\'t have permissions to save changes to this sequence', + 'edit_clip' => 'Edit Clip', + 'edit_save' => 'Save Sequence Changes', + 'saving_wait' => 'Save in Progress (please wait)', + 'save_done' => 'Save Done', + 'edit_cancel' => 'Cancel Sequence Edit', + 'edit_cancel_confirm' => 'Are you sure you want to cancel your edit. Changes will be lost', + 'zoom_in' => 'Zoom In', + 'zoom_out' => 'Zoom Out', + 'cut_clip' => 'Cut Clips', + 'expand_track' => 'Expand Track', + 'colapse_track' => 'Collapse Track', + 'play_from_position' => 'Play From Playline Position', + 'pixle2sec' => 'pixles to seconds', + 'rmclip' => 'Remove Clip', + 'clip_in' => 'clip in', + 'clip_out' => 'clip out', + 'mv_welcome_to_sequencer' => '<h3>Welcome to the sequencer demo</h3> very <b>limited</b> functionality right now. Not much documentation yet either', + 'no_selected_resource' => '<h3>No Resource selected</h3> Select a Clip to enable editing', + 'error_edit_multiple' => '<h3>Multiple Resources Selected</h3> Select a single clip to edit it', + 'mv_editor_options' => 'Editor options', + 'mv_editor_mode' => 'Editor mode', + 'mv_simple_editor_desc' => 'simple editor (iMovie style)', + 'mv_advanced_editor_desc' => 'advanced editor (Final Cut style)', + 'mv_other_options' => 'Other Options', + 'mv_contextmenu_opt' => 'Enable Context Menus', + 'mv_sequencer_credit_line' => 'Developed by <a href="http://kaltura.com">Kaltura, Inc.</a> in partnership with the <a href="http://wikimediafoundation.org/wiki/Home">Wikimedia Foundation</a> ( <a href="#">more info</a> )', /* - * js file: /libAddMedia/mvBaseUploadInterface.js + * js file: /libSequencer/mvTimedEffectsEdit.js */ - 'upload-transcode-in-progress' => 'Doing Transcode & Upload (do not close this window)', - 'upload-in-progress' => 'Upload in Progress (do not close this window)', - 'upload-transcoded-status' => 'Transcoded', - 'uploaded-status' => 'Uploaded', - 'wgfogg_wrong_version' => 'You have firefogg installed but its outdated, <a href="http://firefogg.org">please upgrade</a> ', - 'upload-stats-fileprogres' => '$1 of $2', - 'mv_upload_completed' => 'Your upload is complete', - 'mv_upload_done' => 'Your upload <i>should be</i> accessible <a href="$1">here</a>', - 'upload-unknown-size' => 'Unknown size', - 'mv-cancel-confim' => 'Are you sure you want to cancel?', - 'successfulupload' => 'Successful Upload', - 'uploaderror' => 'Upload error', - 'uploadwarning' => 'Upload warning', - 'unknown-error' => 'Unknown Error', - 'return-to-form' => 'Return to form', - 'file-exists-duplicate' => 'This file is a duplicate of the following file', - 'fileexists' => 'A file with this name exists already, please check <b><tt>$1</tt></b> if you are not sure if you want to change it.', - 'fileexists-thumb' => '<center><b>Existing file</b></center>', - 'ignorewarning' => 'Ignore warning and save file anyway', - 'file-thumbnail-no' => 'The filename begins with <b><tt>$1</tt></b>', - 'go-to-resource' => 'Go to Resource Page', - 'wgfogg_waring_bad_extension' => 'You have selected a file with an unsuported extension (<a href="http://commons.wikimedia.org/wiki/Commons:Firefogg#Supported_File_Types">more information</a>).', - 'cancel-button' => 'Cancel', - 'ok-button' => 'OK', + 'transition_in' => 'Transition In', + 'transition_out' => 'Transition Out', + 'effects' => 'Effects Stack', + 'remove_transition' => 'Remove Transition', + 'edit_transin' => 'Edit Transition Into Clip', + 'edit_transout' => 'Edit Transition Out of Clip', /* - * js file: /libAddMedia/mvAdvFirefogg.js + * js file: /libClipEdit/mvClipEdit.js */ - 'help-sticky' => 'Help (Click to Keep Help on Screen)', - 'fogg-cg-preset' => 'Preset: <strong>$1</strong>', - 'fogg-cg-quality' => 'Basic Quality and Resolution Control', - 'fogg-cg-meta' => 'Meta Data for the Clip', - 'fogg-cg-advVideo' => 'Advanced Video Encoding Controls', - 'fogg-cg-advAudio' => 'Advanced Audio Encoding Controls', - 'fogg-preset-custom' => 'Custom Settings', + 'mv_crop' => 'Crop Image', + 'mv_apply_crop' => 'Apply Crop to Image', + 'mv_reset_crop' => 'Rest Crop', + 'mv_insert_image_page' => 'Insert Into page', + 'mv_insert_into_sequence' => 'Insert Into Sequence', + 'mv_preview_insert' => 'Preview Insert', + 'mv_cancel_image_insert' => 'Cancel Insert', + 'sc_fileopts' => 'Clip Detail Edit', + 'sc_inoutpoints' => 'Set In-Out points', + 'sc_overlays' => 'Overlays', + 'sc_audio' => 'Audio Control', + 'sc_duration' => 'Duration', + 'mv_template_properties' => 'Template Properties', + 'mv_custom_title' => 'Custom Title', + 'mv_edit_properties' => 'Edit Properties', + 'mv_other_properties' => 'Other Properties', + 'mv_resource_page' => 'Resource Page:', + 'mv_set_in_out_points' => 'Set in-out points', + 'mv_start_time' => 'Start Time', + 'mv_end_time' => 'End Time', + 'mv_preview_inout' => 'Preview/Play In-out points', /* * js file: /libAddMedia/searchLibs/metavidSearch.js @@ -67,21 +93,6 @@ 'imported_from' => '$1 imported from [$2 $3]. See the original [$4 resource page] for more info', /* - * js file: /libAddMedia/mvFirefogg.js - */ - 'fogg-select_file' => 'Select File', - 'fogg-select_new_file' => 'Select New File', - 'fogg-save_local_file' => 'Save Ogg', - 'fogg-check_for_fogg' => 'Checking for Firefogg <blink>...</blink>', - 'fogg-installed' => 'Firefogg is Installed', - 'fogg-for_improved_uplods' => 'For Improved uploads: ', - 'fogg-please_install' => '<a href="$1">Install Firefogg</a>. More <a href="http://commons.wikimedia.org/wiki/Commons:Firefogg">about firefogg</a>', - 'fogg-use_latest_fox' => 'Please first install <a href="http://www.mozilla.com/en-US/firefox/upgrade.html?from=firefogg">Firefox 3.5</a>. <i>then revisit this page to install the <b>firefogg</b> extention</i>', - 'fogg-passthrough_mode' => 'Your selected file is already ogg or not a video file', - 'fogg-transcoding' => 'Encoding Video to Ogg', - 'fogg-encoding-done' => 'Encoding Done', - - /* * js file: /libAddMedia/remoteSearchDriver.js */ 'add_media_wizard' => 'Add Media Wizard', @@ -110,54 +121,71 @@ 'missing_desc_see_soruce' => 'This Asset is missing a description. Please see the [$1 orginal source] and help describe it', /* - * js file: /libSequencer/mvSequencer.js + * js file: /libAddMedia/mvFirefogg.js */ - 'menu_clipedit' => 'Edit Media', - 'menu_transition' => 'Transitions & Effects', - 'menu_cliplib' => 'Add Media', - 'menu_resource_overview' => 'Resource Overview', - 'menu_options' => 'Options', - 'loading_timeline' => 'Loading TimeLine <blink>...</blink>', - 'loading_user_rights' => 'Loading user rights <blink>...</blink>', - 'no_edit_permissions' => 'You don\'t have permissions to save changes to this sequence', - 'edit_clip' => 'Edit Clip', - 'edit_save' => 'Save Sequence Changes', - 'saving_wait' => 'Save in Progress (please wait)', - 'save_done' => 'Save Done', - 'edit_cancel' => 'Cancel Sequence Edit', - 'edit_cancel_confirm' => 'Are you sure you want to cancel your edit. Changes will be lost', - 'zoom_in' => 'Zoom In', - 'zoom_out' => 'Zoom Out', - 'cut_clip' => 'Cut Clips', - 'expand_track' => 'Expand Track', - 'colapse_track' => 'Collapse Track', - 'play_from_position' => 'Play From Playline Position', - 'pixle2sec' => 'pixles to seconds', - 'rmclip' => 'Remove Clip', - 'clip_in' => 'clip in', - 'clip_out' => 'clip out', - 'mv_welcome_to_sequencer' => '<h3>Welcome to the sequencer demo</h3> very <b>limited</b> functionality right now. Not much documentation yet either', - 'no_selected_resource' => '<h3>No Resource selected</h3> Select a Clip to enable editing', - 'error_edit_multiple' => '<h3>Multiple Resources Selected</h3> Select a single clip to edit it', - 'mv_editor_options' => 'Editor options', - 'mv_editor_mode' => 'Editor mode', - 'mv_simple_editor_desc' => 'simple editor (iMovie style)', - 'mv_advanced_editor_desc' => 'advanced editor (Final Cut style)', - 'mv_other_options' => 'Other Options', - 'mv_contextmenu_opt' => 'Enable Context Menus', - 'mv_sequencer_credit_line' => 'Developed by <a href="http://kaltura.com">Kaltura, Inc.</a> in partnership with the <a href="http://wikimediafoundation.org/wiki/Home">Wikimedia Foundation</a> ( <a href="#">more info</a> )', + 'fogg-select_file' => 'Select File', + 'fogg-select_new_file' => 'Select New File', + 'fogg-save_local_file' => 'Save Ogg', + 'fogg-check_for_fogg' => 'Checking for Firefogg <blink>...</blink>', + 'fogg-installed' => 'Firefogg is Installed', + 'fogg-for_improved_uplods' => 'For Improved uploads: ', + 'fogg-please_install' => '<a href="$1">Install Firefogg</a>. More <a href="http://commons.wikimedia.org/wiki/Commons:Firefogg">about firefogg</a>', + 'fogg-use_latest_fox' => 'Please first install <a href="http://www.mozilla.com/en-US/firefox/upgrade.html?from=firefogg">Firefox 3.5</a> (or later). <i>then revisit this page to install the <b>firefogg</b> extention</i>', + 'fogg-passthrough_mode' => 'Your selected file is already ogg or not a video file', + 'fogg-transcoding' => 'Encoding Video to Ogg', + 'fogg-encoding-done' => 'Encoding Done', /* - * js file: /libSequencer/mvTimedEffectsEdit.js + * js file: /libAddMedia/mvBaseUploadInterface.js */ - 'transition_in' => 'Transition In', - 'transition_out' => 'Transition Out', - 'effects' => 'Effects Stack', - 'remove_transition' => 'Remove Transition', - 'edit_transin' => 'Edit Transition Into Clip', - 'edit_transout' => 'Edit Transition Out of Clip', + 'upload-transcode-in-progress' => 'Doing Transcode & Upload (do not close this window)', + 'upload-in-progress' => 'Upload in Progress (do not close this window)', + 'upload-transcoded-status' => 'Transcoded', + 'uploaded-status' => 'Uploaded', + 'wgfogg_wrong_version' => 'You have firefogg installed but its outdated, <a href="http://firefogg.org">please upgrade</a> ', + 'upload-stats-fileprogres' => '$1 of $2', + 'mv_upload_completed' => 'Your upload is complete', + 'mv_upload_done' => 'Your upload <i>should be</i> accessible <a href="$1">here</a>', + 'upload-unknown-size' => 'Unknown size', + 'mv-cancel-confim' => 'Are you sure you want to cancel?', + 'successfulupload' => 'Successful Upload', + 'uploaderror' => 'Upload error', + 'uploadwarning' => 'Upload warning', + 'unknown-error' => 'Unknown Error', + 'return-to-form' => 'Return to form', + 'file-exists-duplicate' => 'This file is a duplicate of the following file', + 'fileexists' => 'A file with this name exists already, please check <b><tt>$1</tt></b> if you are not sure if you want to change it.', + 'fileexists-thumb' => '<center><b>Existing file</b></center>', + 'ignorewarning' => 'Ignore warning and save file anyway', + 'file-thumbnail-no' => 'The filename begins with <b><tt>$1</tt></b>', + 'go-to-resource' => 'Go to Resource Page', + 'wgfogg_waring_bad_extension' => 'You have selected a file with an unsuported extension (<a href="http://commons.wikimedia.org/wiki/Commons:Firefogg#Supported_File_Types">more information</a>).', + 'cancel-button' => 'Cancel', + 'ok-button' => 'OK', /* + * js file: /libAddMedia/mvAdvFirefogg.js + */ + 'help-sticky' => 'Help (Click to Stick)', + 'fogg-cg-preset' => 'Preset: <strong>$1</strong>', + 'fogg-cg-quality' => 'Basic Quality and Resolution Control', + 'fogg-cg-meta' => 'Meta Data for the Clip', + 'fogg-cg-range' => 'Encoding Range', + 'fogg-cg-advVideo' => 'Advanced Video Encoding Controls', + 'fogg-cg-advAudio' => 'Advanced Audio Encoding Controls', + 'fogg-preset-custom' => 'Custom Settings', + + /* + * js file: /mv_embed.js + */ + 'loading_txt' => 'loading <blink>...</blink>', + 'loading_title' => 'Loading...', + 'size-gigabytes' => '$1 GB', + 'size-megabytes' => '$1 MB', + 'size-kilobytes' => '$1 K', + 'size-bytes' => '$1 B', + + /* * js file: /libEmbedVideo/embedVideo.js */ 'loading_plugin' => 'loading plugin<blink>...</blink>', @@ -197,40 +225,5 @@ 'mv_generic_missing_plugin' => 'You browser does not appear to support playback type: <b>$1</b><br> visit the <a href="http://commons.wikimedia.org/wiki/Commons:Media_help">Playback Methods</a> page to download a player<br>', 'mv_for_best_experience' => 'For a better video playback experience we recommend <b><a href="http://www.mozilla.com/en-US/firefox/upgrade.html?from=mv_embed">Firefox 3.5</a></b>', 'mv_do_not_warn_again' => 'Do not warn me again.', - - /* - * js file: /libClipEdit/mvClipEdit.js - */ - 'mv_crop' => 'Crop Image', - 'mv_apply_crop' => 'Apply Crop to Image', - 'mv_reset_crop' => 'Rest Crop', - 'mv_insert_image_page' => 'Insert Into page', - 'mv_insert_into_sequence' => 'Insert Into Sequence', - 'mv_preview_insert' => 'Preview Insert', - 'mv_cancel_image_insert' => 'Cancel Insert', - 'sc_fileopts' => 'Clip Detail Edit', - 'sc_inoutpoints' => 'Set In-Out points', - 'sc_overlays' => 'Overlays', - 'sc_audio' => 'Audio Control', - 'sc_duration' => 'Duration', - 'mv_template_properties' => 'Template Properties', - 'mv_custom_title' => 'Custom Title', - 'mv_edit_properties' => 'Edit Properties', - 'mv_other_properties' => 'Other Properties', - 'mv_resource_page' => 'Resource Page:', - 'mv_set_in_out_points' => 'Set in-out points', - 'mv_start_time' => 'Start Time', - 'mv_end_time' => 'End Time', - 'mv_preview_inout' => 'Preview/Play In-out points', - - /* - * js file: /mv_embed.js - */ - 'loading_txt' => 'loading <blink>...</blink>', - 'loading_title' => 'Loading...', - 'size-gigabytes' => '$1 GB', - 'size-megabytes' => '$1 MB', - 'size-kilobytes' => '$1 K', - 'size-bytes' => '$1 B', ); #</JAVASCRIPT EN REPLACE> \ No newline at end of file _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS@xxxxxxxxxxxxxxxxxxx https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs
|
|
||||||||||||||||||||||||||
| News | Mail Home | sitemap | FAQ | advertise |