r64472 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r64471‎ | r64472 | r64473 >
Date:04:48, 1 April 2010
Author:dale
Status:deferred
Tags:
Comment:
* updated css loading in remote/mediaWiki.js script
* moved around some language files to better support "gender" and language fallback mappings in core mw.lang package
* moved English transforms to core mw.lang in mwEmbed
* restored preview functionality to firefogg
* small bug fix in apiProxy for empty result set parsing
* small fix in return to form updating description
* some mwEmmbed player fixes for durationHint attribute
* moved showTextInterface interface component to ctrlBuilder
* added style sheets loading to timedText interface
* bumped revision for deployment r118 in remotes/mediaWiki.js
Modified paths:
  • /branches/js2-work/phase3/js/mwEmbed/jsScriptLoader.php (modified) (history)
  • /branches/js2-work/phase3/js/mwEmbed/languages/classes/LanguageBs.js (modified) (history)
  • /branches/js2-work/phase3/js/mwEmbed/languages/classes/LanguageEn.js (deleted) (history)
  • /branches/js2-work/phase3/js/mwEmbed/loader.js (modified) (history)
  • /branches/js2-work/phase3/js/mwEmbed/modules/AddMedia/mw.Firefogg.js (modified) (history)
  • /branches/js2-work/phase3/js/mwEmbed/modules/AddMedia/mw.UploadHandler.js (modified) (history)
  • /branches/js2-work/phase3/js/mwEmbed/modules/AddMedia/mw.UploadInterface.js (modified) (history)
  • /branches/js2-work/phase3/js/mwEmbed/modules/ApiProxy/mw.ApiProxy.js (modified) (history)
  • /branches/js2-work/phase3/js/mwEmbed/modules/EmbedPlayer/mw.EmbedPlayer.js (modified) (history)
  • /branches/js2-work/phase3/js/mwEmbed/modules/EmbedPlayer/skins/ctrlBuilder.js (modified) (history)
  • /branches/js2-work/phase3/js/mwEmbed/modules/TimedText/css (added) (history)
  • /branches/js2-work/phase3/js/mwEmbed/modules/TimedText/css/mw.TimedTextEdit.css (added) (history)
  • /branches/js2-work/phase3/js/mwEmbed/modules/TimedText/loader.js (modified) (history)
  • /branches/js2-work/phase3/js/mwEmbed/modules/TimedText/mw.TimedText.js (modified) (history)
  • /branches/js2-work/phase3/js/mwEmbed/modules/TimedText/mw.TimedTextEdit.css (deleted) (history)
  • /branches/js2-work/phase3/js/mwEmbed/modules/UploadWizard/mw.Language.js (modified) (history)
  • /branches/js2-work/phase3/js/mwEmbed/mwEmbed.js (modified) (history)
  • /branches/js2-work/phase3/js/mwEmbed/remotes/mediaWiki.js (modified) (history)
  • /branches/js2-work/phase3/js/mwEmbed/tests/testLang.html (modified) (history)

Diff [purge]

Index: branches/js2-work/phase3/js/mwEmbed/languages/classes/LanguageEn.js
@@ -1,34 +0,0 @@
2 -/**
3 -* MediaWiki javascript language transformations
4 -*
5 -* port of php language converters.
6 -*
7 -* Conversions are packaged into script-loader requests per
8 -* the requested language.
9 -*
10 -* The structure of mediaWiki language/classes is preserved
11 -* as much as possible
12 -*/
13 -
14 -/**
15 - * Plural form transformations, needed for some languages.
16 - * For example, there are 3 form of plural in Russian and Polish,
17 - * depending on "count mod 10". See [[w:Plural]]
18 - * For English it is pretty simple.
19 - *
20 - * Invoked by putting {{plural:count|wordform1|wordform2}}
21 - * or {{plural:count|wordform1|wordform2|wordform3}}
22 - *
23 - * Example: {{plural:{{NUMBEROFARTICLES}}|article|articles}}
24 - *
25 - * @param count Integer: non-localized number
26 - * @param forms Array: different plural forms
27 - * @return string Correct form of plural for count in this language
28 - */
29 -
30 -mw.lang.convertPlural = function( count, forms ){
31 - if ( !forms || forms.length == 0 ) {
32 - return '';
33 - }
34 - return ( parseInt( count ) == 1 ) ? forms[0] : forms[1];
35 -};
Index: branches/js2-work/phase3/js/mwEmbed/languages/classes/LanguageBs.js
@@ -20,4 +20,4 @@
2121 default: return forms[2];
2222 }
2323 }
24 -}
\ No newline at end of file
 24+}
Index: branches/js2-work/phase3/js/mwEmbed/modules/UploadWizard/mw.Language.js
@@ -18,7 +18,7 @@
1919 * List of all languages mediaWiki supports ( Avoid an api call to get this same info )
2020 * http://commons.wikimedia.org/w/api.php?action=query&meta=siteinfo&siprop=languages&format=jsonfm
2121 *
22 - * Languages sorted by name, using tools in $SVNROOT/mediawiki/trunk/tools/langcodes
 22+ * Languages sorted by name, using tools in $SVNROOT/mediawiki/trunk/tools/langcodes
2323 * This is somewhat better than sorting by code (which produces totally bizarre results) but is not
2424 * a true lexicographic sort
2525 */
Index: branches/js2-work/phase3/js/mwEmbed/modules/TimedText/mw.TimedTextEdit.css
@@ -1,200 +0,0 @@
2 -.TimedTextEdit .leftcolumn #textinput textarea
3 -{
4 - width:512px;
5 - height:200px;
6 -}
7 -
8 -.TimedTextEdit .leftcolumn #textinput
9 -{
10 - display: block;
11 - margin: auto;
12 - position:absolute;
13 - top: 340px;
14 -}
15 -
16 -.TimedTextEdit .leftcolumn
17 -{
18 - padding: 10px;
19 - width: 890px;
20 - margin: auto;
21 -}
22 -
23 -.TimedTextEdit .rightcolumn {
24 - background-color:#606060;
25 - border:0 solid black;
26 - bottom:5px;
27 - color:#EFEFEF;
28 - left:215px;
29 - line-height:100%;
30 - margin-left:300px;
31 - padding:10px;
32 - position:absolute;
33 - right:5px;
34 - top:5px;
35 -}
36 -
37 -.TimedTextEdit .tabs
38 -{
39 - position:absolute;
40 - top: 530px;
41 -}
42 -
43 -.TimedTextEdit .tab{
44 - position:absolute;
45 - background:#888;
46 - border:1px solid black;
47 - height:30px;
48 - width:160px;
49 - padding:4px;
50 - text-align: center;
51 -}
52 -
53 -.TimedTextEdit .selected{
54 - background:#bbb;
55 - height:40px;
56 -}
57 -
58 -.TimedTextEdit #step1tab
59 -{
60 - left: 0px;
61 -}
62 -
63 -.TimedTextEdit #step2tab
64 -{
65 - left: 171px;
66 -}
67 -
68 -.TimedTextEdit #step3tab
69 -{
70 - left: 342px;
71 -}
72 -
73 -.TimedTextEdit .nextstep
74 -{
75 - position:absolute;
76 - top: 600px;
77 - left:197px;
78 - width:100px;
79 - height:25px;
80 - text-align:center;
81 - background:#77bb40;
82 - color:white;
83 - font-weight:bold;
84 - padding:12px;
85 - border: 1px solid black;
86 -}
87 -
88 -.TimedTextEdit #titles_list
89 -{
90 - background: #ddd;
91 - padding: 12px;
92 - text-align:center;
93 - position:absolute;
94 - top:340px;
95 - width:488px;
96 - height:164px;
97 -}
98 -
99 -.TimedTextEdit .current_title
100 -{
101 - font-size: larger;
102 - background: #dd8
103 -}
104 -
105 -.TimedTextEdit .time_in
106 -{
107 - font-size: xx-small;
108 - position:absolute;
109 - margin-top:2px;
110 - margin-left:2em;
111 -}
112 -
113 -.TimedTextEdit .time_out
114 -{
115 - font-size: xx-small;
116 - position:absolute;
117 - margin-top:2px;
118 - margin-left:438px;
119 -}
120 -
121 -.TimedTextEdit a {
122 - color:#aaa;
123 -}
124 -
125 -.TimedTextEdit video
126 -{
127 - height:290px;
128 - width:512px;
129 -}
130 -
131 -.TimedTextEdit .videodiv
132 -{
133 - display: block;
134 - margin: auto;
135 - position:absolute;
136 -}
137 -
138 -.TimedTextEdit .subtitles
139 -{
140 - width: 80%;
141 - margin: auto;
142 - position: relative;
143 - text-align: center;
144 - font-family: sans-serif;
145 - line-height: 2em;
146 - color: rgba(255,255,128, 1);
147 - text-shadow: rgba(0,0,0, 0.6) 1px 1px;
148 - background: rgba(0,0,0, 0.6);
149 -}
150 -
151 -.TimedTextEdit .subtitleslines1
152 -{
153 - top: -4.8em;
154 -}
155 -
156 -.TimedTextEdit.subtitleslines2
157 -{
158 - top: -6.8em;
159 -}
160 -
161 -.TimedTextEdit.subtitleslines3
162 -{
163 - top: -8.8em;
164 -}
165 -
166 -.TimedTextEdit input[type=number]
167 -{
168 - width:1.2em;
169 - padding:2px;
170 - background: #ffd;
171 - border:none;
172 -}
173 -/*
174 -.TimedTextEdit input[type=text]
175 -{
176 - background: #ffd;
177 - border:none;
178 -}
179 -*/
180 -
181 -.TimedTextEdit .hotkeybox {
182 - background: #333;
183 - padding: 5px;
184 - line-height: 200%;
185 - font-size: small;
186 - position:absolute;
187 - width:340px;
188 - bottom:10px;
189 -}
190 -
191 -.TimedTextEdit #titles_textarea {
192 - font-family: helvetica, sans-serif;
193 - line-height: 1.5em;
194 -}
195 -
196 -.TimedTextEdit .step-help{
197 - bottom:155px;
198 - overflow:auto;
199 - position:absolute;
200 - top:10px;
201 -}
\ No newline at end of file
Index: branches/js2-work/phase3/js/mwEmbed/modules/TimedText/mw.TimedText.js
@@ -182,7 +182,7 @@
183183 }
184184 return ;
185185 }
186 - // Load textSources
 186+ // Load textSources
187187 _this.loadTextSources( function() {
188188
189189 // Enable a default source and issue a request to "load it"
@@ -193,8 +193,9 @@
194194
195195 _this.textSourceSetupFlag = true;
196196
197 - if( callback )
 197+ if( callback ) {
198198 callback();
 199+ }
199200 } );
200201 },
201202
@@ -230,11 +231,11 @@
231232 'content' : _this.getMainMenu(),
232233 'zindex' : mw.getConfig( 'fullScreenIndex' ),
233234 'crumbDefaultText' : ' ',
 235+ 'autoShow': autoShow,
234236 'targetMenuContainer' : _this.menuTarget,
235 - 'autoShow' : autoShow,
236237 'positionOpts' : positionOpts,
237238 'backLinkText' : gM( 'mwe-back-btn' )
238 - } );
 239+ } )
239240 });
240241 },
241242
@@ -533,7 +534,7 @@
534535 var langKey = source.lang.toLowerCase();
535536 _this.getLanguageName ( langKey );
536537 return $j.getLineItem(
537 - gM('mwe-key-language', [langKey, unescape( mw.languages[ source.lang ] ) ] ),
 538+ gM('mwe-key-language', [langKey, unescape( mw.lang.names[ source.lang ] ) ] ),
538539 source_icon,
539540 function() {
540541 mw.log(" call selectTextSource");
@@ -548,8 +549,8 @@
549550 * @param {String} lang_key Language key
550551 */
551552 getLanguageName: function( lang_key ) {
552 - if( mw.languages[ lang_key ]) {
553 - return mw.languages[ lang_key ];
 553+ if( mw.lang.names[ lang_key ]) {
 554+ return mw.lang.names[ lang_key ];
554555 }
555556 return false
556557 },
@@ -655,6 +656,7 @@
656657 this.prevText = [];
657658 // Refresh the Menu (if it has a target to refresh)
658659 if( this.menuTarget ) {
 660+ mw.log('bind menu refresh display');
659661 this.bindMenu( this.menuTarget, false )
660662 }
661663 // Issues a "monitor" command to update the timed text for the new layout
@@ -1320,7 +1322,7 @@
13211323 * Check if the language is supported
13221324 */
13231325 isSuportedLang: function( lang_key ) {
1324 - if( mw.languages[ lang_key ]) {
 1326+ if( mw.lang.names[ lang_key ]) {
13251327 return true;
13261328 }
13271329 return false;
@@ -1342,8 +1344,10 @@
13431345 * @param {Object} options Options for the timed text menu
13441346 */
13451347 $.fn.timedText = function ( action, target ) {
1346 - if( !target )
 1348+ mw.log('fn.timedText:: ' + action + ' t: ' + target );
 1349+ if( !target ){
13471350 options = action;
 1351+ }
13481352 if( typeof options == 'undefined' )
13491353 options = {};
13501354
@@ -1355,374 +1359,12 @@
13561360 embedPlayer.timedText = new mw.TimedText( embedPlayer, options);
13571361 }
13581362
1359 - //
 1363+ //show the menu
13601364 if( action == 'showMenu' ) {
13611365 // Bind the menu to the target with autoShow = true
 1366+ mw.log('bind menu fn.timedText');
13621367 embedPlayer.timedText.bindMenu( target, true );
13631368 }
13641369 } );
13651370 }
1366 -} )( jQuery );
1367 -
1368 -/**
1369 - * List of all languages mediaWiki supports ( Avoid an api call to get this same info )
1370 - * http://commons.wikimedia.org/w/api.php?action=query&meta=siteinfo&siprop=languages&format=jsonfm
1371 - */
1372 -mw.languages = {
1373 - "aa" : "Qaf\u00e1r af",
1374 - "ab" : "\u0410\u04a7\u0441\u0443\u0430",
1375 - "ace" : "Ac\u00e8h",
1376 - "af" : "Afrikaans",
1377 - "ak" : "Akan",
1378 - "aln" : "Geg\u00eb",
1379 - "als" : "Alemannisch",
1380 - "am" : "\u12a0\u121b\u122d\u129b",
1381 - "an" : "Aragon\u00e9s",
1382 - "ang" : "Anglo-Saxon",
1383 - "ar" : "\u0627\u0644\u0639\u0631\u0628\u064a\u0629",
1384 - "arc" : "\u0710\u072a\u0721\u071d\u0710",
1385 - "arn" : "Mapudungun",
1386 - "arz" : "\u0645\u0635\u0631\u0649",
1387 - "as" : "\u0985\u09b8\u09ae\u09c0\u09af\u09bc\u09be",
1388 - "ast" : "Asturianu",
1389 - "av" : "\u0410\u0432\u0430\u0440",
1390 - "avk" : "Kotava",
1391 - "ay" : "Aymar aru",
1392 - "az" : "Az\u0259rbaycan",
1393 - "ba" : "\u0411\u0430\u0448\u04a1\u043e\u0440\u0442",
1394 - "bar" : "Boarisch",
1395 - "bat-smg" : "\u017demait\u0117\u0161ka",
1396 - "bcc" : "\u0628\u0644\u0648\u0686\u06cc \u0645\u06a9\u0631\u0627\u0646\u06cc",
1397 - "bcl" : "Bikol Central",
1398 - "be" : "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f",
1399 - "be-tarask" : "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f (\u0442\u0430\u0440\u0430\u0448\u043a\u0435\u0432\u0456\u0446\u0430)",
1400 - "be-x-old" : "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f (\u0442\u0430\u0440\u0430\u0448\u043a\u0435\u0432\u0456\u0446\u0430)",
1401 - "bg" : "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438",
1402 - "bh" : "\u092d\u094b\u091c\u092a\u0941\u0930\u0940",
1403 - "bi" : "Bislama",
1404 - "bm" : "Bamanankan",
1405 - "bn" : "\u09ac\u09be\u0982\u09b2\u09be",
1406 - "bo" : "\u0f56\u0f7c\u0f51\u0f0b\u0f61\u0f72\u0f42",
1407 - "bpy" : "\u0987\u09ae\u09be\u09b0 \u09a0\u09be\u09b0\/\u09ac\u09bf\u09b7\u09cd\u09a3\u09c1\u09aa\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09ae\u09a3\u09bf\u09aa\u09c1\u09b0\u09c0",
1408 - "bqi" : "\u0628\u062e\u062a\u064a\u0627\u0631\u064a",
1409 - "br" : "Brezhoneg",
1410 - "bs" : "Bosanski",
1411 - "bug" : "\u1a05\u1a14 \u1a15\u1a18\u1a01\u1a17",
1412 - "bxr" : "\u0411\u0443\u0440\u044f\u0430\u0434",
1413 - "ca" : "Catal\u00e0",
1414 - "cbk-zam" : "Chavacano de Zamboanga",
1415 - "cdo" : "M\u00ecng-d\u0115\u0324ng-ng\u1e73\u0304",
1416 - "ce" : "\u041d\u043e\u0445\u0447\u0438\u0439\u043d",
1417 - "ceb" : "Cebuano",
1418 - "ch" : "Chamoru",
1419 - "cho" : "Choctaw",
1420 - "chr" : "\u13e3\u13b3\u13a9",
1421 - "chy" : "Tsets\u00eahest\u00e2hese",
1422 - "ckb" : "Soran\u00ee \/ \u06a9\u0648\u0631\u062f\u06cc",
1423 - "ckb-latn" : "\u202aSoran\u00ee (lat\u00een\u00ee)\u202c",
1424 - "ckb-arab" : "\u202b\u06a9\u0648\u0631\u062f\u06cc (\u0639\u06d5\u0631\u06d5\u0628\u06cc)\u202c",
1425 - "co" : "Corsu",
1426 - "cr" : "N\u0113hiyaw\u0113win \/ \u14c0\u1426\u1403\u152d\u140d\u140f\u1423",
1427 - "crh" : "Q\u0131r\u0131mtatarca",
1428 - "crh-latn" : "\u202aQ\u0131r\u0131mtatarca (Latin)\u202c",
1429 - "crh-cyrl" : "\u202a\u041a\u044a\u044b\u0440\u044b\u043c\u0442\u0430\u0442\u0430\u0440\u0434\u0436\u0430 (\u041a\u0438\u0440\u0438\u043b\u043b)\u202c",
1430 - "cs" : "\u010cesky",
1431 - "csb" : "Kasz\u00ebbsczi",
1432 - "cu" : "\u0421\u043b\u043e\u0432\u0463\u0301\u043d\u044c\u0441\u043a\u044a \/ \u2c14\u2c0e\u2c11\u2c02\u2c21\u2c10\u2c20\u2c14\u2c0d\u2c1f",
1433 - "cv" : "\u0427\u04d1\u0432\u0430\u0448\u043b\u0430",
1434 - "cy" : "Cymraeg",
1435 - "da" : "Dansk",
1436 - "de" : "Deutsch",
1437 - "de-at" : "\u00d6sterreichisches Deutsch",
1438 - "de-ch" : "Schweizer Hochdeutsch",
1439 - "de-formal" : "Deutsch (Sie-Form)",
1440 - "diq" : "Zazaki",
1441 - "dk" : "Dansk (deprecated:da)",
1442 - "dsb" : "Dolnoserbski",
1443 - "dv" : "\u078b\u07a8\u0788\u07ac\u0780\u07a8\u0784\u07a6\u0790\u07b0",
1444 - "dz" : "\u0f47\u0f7c\u0f44\u0f0b\u0f41",
1445 - "ee" : "E\u028begbe",
1446 - "el" : "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac",
1447 - "eml" : "Emili\u00e0n e rumagn\u00f2l",
1448 - "en" : "English",
1449 - "en-gb" : "British English",
1450 - "eo" : "Esperanto",
1451 - "es" : "Espa\u00f1ol",
1452 - "et" : "Eesti",
1453 - "eu" : "Euskara",
1454 - "ext" : "Estreme\u00f1u",
1455 - "fa" : "\u0641\u0627\u0631\u0633\u06cc",
1456 - "ff" : "Fulfulde",
1457 - "fi" : "Suomi",
1458 - "fiu-vro" : "V\u00f5ro",
1459 - "fj" : "Na Vosa Vakaviti",
1460 - "fo" : "F\u00f8royskt",
1461 - "fr" : "Fran\u00e7ais",
1462 - "frc" : "Fran\u00e7ais cadien",
1463 - "frp" : "Arpetan",
1464 - "fur" : "Furlan",
1465 - "fy" : "Frysk",
1466 - "ga" : "Gaeilge",
1467 - "gag" : "Gagauz",
1468 - "gan" : "\u8d1b\u8a9e",
1469 - "gan-hans" : "\u8d63\u8bed(\u7b80\u4f53)",
1470 - "gan-hant" : "\u8d1b\u8a9e(\u7e41\u9ad4)",
1471 - "gd" : "G\u00e0idhlig",
1472 - "gl" : "Galego",
1473 - "glk" : "\u06af\u06cc\u0644\u06a9\u06cc",
1474 - "gn" : "Ava\u00f1e'\u1ebd",
1475 - "got" : "\ud800\udf32\ud800\udf3f\ud800\udf44\ud800\udf39\ud800\udf43\ud800\udf3a",
1476 - "grc" : "\u1f08\u03c1\u03c7\u03b1\u03af\u03b1 \u1f11\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u1f74",
1477 - "gsw" : "Alemannisch",
1478 - "gu" : "\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0",
1479 - "gv" : "Gaelg",
1480 - "ha" : "\u0647\u064e\u0648\u064f\u0633\u064e",
1481 - "hak" : "Hak-k\u00e2-fa",
1482 - "haw" : "Hawai`i",
1483 - "he" : "\u05e2\u05d1\u05e8\u05d9\u05ea",
1484 - "hi" : "\u0939\u093f\u0928\u094d\u0926\u0940",
1485 - "hif" : "Fiji Hindi",
1486 - "hif-deva" : "\u092b\u093c\u0940\u091c\u0940 \u0939\u093f\u0928\u094d\u0926\u0940",
1487 - "hif-latn" : "Fiji Hindi",
1488 - "hil" : "Ilonggo",
1489 - "ho" : "Hiri Motu",
1490 - "hr" : "Hrvatski",
1491 - "hsb" : "Hornjoserbsce",
1492 - "ht" : "Krey\u00f2l ayisyen",
1493 - "hu" : "Magyar",
1494 - "hy" : "\u0540\u0561\u0575\u0565\u0580\u0565\u0576",
1495 - "hz" : "Otsiherero",
1496 - "ia" : "Interlingua",
1497 - "id" : "Bahasa Indonesia",
1498 - "ie" : "Interlingue",
1499 - "ig" : "Igbo",
1500 - "ii" : "\ua187\ua259",
1501 - "ik" : "I\u00f1upiak",
1502 - "ike-cans" : "\u1403\u14c4\u1483\u144e\u1450\u1466",
1503 - "ike-latn" : "inuktitut",
1504 - "ilo" : "Ilokano",
1505 - "inh" : "\u0413\u0406\u0430\u043b\u0433\u0406\u0430\u0439 \u011eal\u011faj",
1506 - "io" : "Ido",
1507 - "is" : "\u00cdslenska",
1508 - "it" : "Italiano",
1509 - "iu" : "\u1403\u14c4\u1483\u144e\u1450\u1466\/inuktitut",
1510 - "ja" : "\u65e5\u672c\u8a9e",
1511 - "jbo" : "Lojban",
1512 - "jut" : "Jysk",
1513 - "jv" : "Basa Jawa",
1514 - "ka" : "\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8",
1515 - "kaa" : "Qaraqalpaqsha",
1516 - "kab" : "Taqbaylit",
1517 - "kg" : "Kongo",
1518 - "ki" : "G\u0129k\u0169y\u0169",
1519 - "kiu" : "Kurmanc\u00ee",
1520 - "kj" : "Kwanyama",
1521 - "kk" : "\u049a\u0430\u0437\u0430\u049b\u0448\u0430",
1522 - "kk-arab" : "\u202b\u0642\u0627\u0632\u0627\u0642\u0634\u0627 (\u062a\u0674\u0648\u062a\u06d5)\u202c",
1523 - "kk-cyrl" : "\u202a\u049a\u0430\u0437\u0430\u049b\u0448\u0430 (\u043a\u0438\u0440\u0438\u043b)\u202c",
1524 - "kk-latn" : "\u202aQazaq\u015fa (lat\u0131n)\u202c",
1525 - "kk-cn" : "\u202b\u0642\u0627\u0632\u0627\u0642\u0634\u0627 (\u062c\u06c7\u0646\u06af\u0648)\u202c",
1526 - "kk-kz" : "\u202a\u049a\u0430\u0437\u0430\u049b\u0448\u0430 (\u049a\u0430\u0437\u0430\u049b\u0441\u0442\u0430\u043d)\u202c",
1527 - "kk-tr" : "\u202aQazaq\u015fa (T\u00fcrk\u00efya)\u202c",
1528 - "kl" : "Kalaallisut",
1529 - "km" : "\u1797\u17b6\u179f\u17b6\u1781\u17d2\u1798\u17c2\u179a",
1530 - "kn" : "\u0c95\u0ca8\u0ccd\u0ca8\u0ca1",
1531 - "ko" : "\ud55c\uad6d\uc5b4",
1532 - "ko-kp" : "\ud55c\uad6d\uc5b4 (\uc870\uc120)",
1533 - "kr" : "Kanuri",
1534 - "kri" : "Krio",
1535 - "krj" : "Kinaray-a",
1536 - "ks" : "\u0915\u0936\u094d\u092e\u0940\u0930\u0940 - (\u0643\u0634\u0645\u064a\u0631\u064a)",
1537 - "ksh" : "Ripoarisch",
1538 - "ku" : "Kurd\u00ee \/ \u0643\u0648\u0631\u062f\u06cc",
1539 - "ku-latn" : "\u202aKurd\u00ee (lat\u00een\u00ee)\u202c",
1540 - "ku-arab" : "\u202b\u0643\u0648\u0631\u062f\u064a (\u0639\u06d5\u0631\u06d5\u0628\u06cc)\u202c",
1541 - "kv" : "\u041a\u043e\u043c\u0438",
1542 - "kw" : "Kernowek",
1543 - "ky" : "\u041a\u044b\u0440\u0433\u044b\u0437\u0447\u0430",
1544 - "la" : "Latina",
1545 - "lad" : "Ladino",
1546 - "lb" : "L\u00ebtzebuergesch",
1547 - "lbe" : "\u041b\u0430\u043a\u043a\u0443",
1548 - "lez" : "\u041b\u0435\u0437\u0433\u0438",
1549 - "lfn" : "Lingua Franca Nova",
1550 - "lg" : "Luganda",
1551 - "li" : "Limburgs",
1552 - "lij" : "L\u00edguru",
1553 - "lmo" : "Lumbaart",
1554 - "ln" : "Ling\u00e1la",
1555 - "lo" : "\u0ea5\u0eb2\u0ea7",
1556 - "loz" : "Silozi",
1557 - "lt" : "Lietuvi\u0173",
1558 - "lv" : "Latvie\u0161u",
1559 - "lzh" : "\u6587\u8a00",
1560 - "mai" : "\u092e\u0948\u0925\u093f\u0932\u0940",
1561 - "map-bms" : "Basa Banyumasan",
1562 - "mdf" : "\u041c\u043e\u043a\u0448\u0435\u043d\u044c",
1563 - "mg" : "Malagasy",
1564 - "mh" : "Ebon",
1565 - "mhr" : "\u041e\u043b\u044b\u043a \u041c\u0430\u0440\u0438\u0439",
1566 - "mi" : "M\u0101ori",
1567 - "mk" : "\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438",
1568 - "ml" : "\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02",
1569 - "mn" : "\u041c\u043e\u043d\u0433\u043e\u043b",
1570 - "mo" : "\u041c\u043e\u043b\u0434\u043e\u0432\u0435\u043d\u044f\u0441\u043a\u044d",
1571 - "mr" : "\u092e\u0930\u093e\u0920\u0940",
1572 - "ms" : "Bahasa Melayu",
1573 - "mt" : "Malti",
1574 - "mus" : "Mvskoke",
1575 - "mwl" : "Mirand\u00e9s",
1576 - "my" : "\u1019\u103c\u1014\u103a\u1019\u102c\u1018\u102c\u101e\u102c",
1577 - "myv" : "\u042d\u0440\u0437\u044f\u043d\u044c",
1578 - "mzn" : "\u0645\u064e\u0632\u0650\u0631\u0648\u0646\u064a",
1579 - "na" : "Dorerin Naoero",
1580 - "nah" : "N\u0101huatl",
1581 - "nan" : "B\u00e2n-l\u00e2m-g\u00fa",
1582 - "nap" : "Nnapulitano",
1583 - "nb" : "\u202aNorsk (bokm\u00e5l)\u202c",
1584 - "nds" : "Plattd\u00fc\u00fctsch",
1585 - "nds-nl" : "Nedersaksisch",
1586 - "ne" : "\u0928\u0947\u092a\u093e\u0932\u0940",
1587 - "new" : "\u0928\u0947\u092a\u093e\u0932 \u092d\u093e\u0937\u093e",
1588 - "ng" : "Oshiwambo",
1589 - "niu" : "Niu\u0113",
1590 - "nl" : "Nederlands",
1591 - "nn" : "\u202aNorsk (nynorsk)\u202c",
1592 - "no" : "\u202aNorsk (bokm\u00e5l)\u202c",
1593 - "nov" : "Novial",
1594 - "nrm" : "Nouormand",
1595 - "nso" : "Sesotho sa Leboa",
1596 - "nv" : "Din\u00e9 bizaad",
1597 - "ny" : "Chi-Chewa",
1598 - "oc" : "Occitan",
1599 - "om" : "Oromoo",
1600 - "or" : "\u0b13\u0b21\u0b3c\u0b3f\u0b06",
1601 - "os" : "\u0418\u0440\u043e\u043d\u0430\u0443",
1602 - "pa" : "\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40",
1603 - "pag" : "Pangasinan",
1604 - "pam" : "Kapampangan",
1605 - "pap" : "Papiamentu",
1606 - "pcd" : "Picard",
1607 - "pdc" : "Deitsch",
1608 - "pdt" : "Plautdietsch",
1609 - "pfl" : "Pf\u00e4lzisch",
1610 - "pi" : "\u092a\u093e\u093f\u0934",
1611 - "pih" : "Norfuk \/ Pitkern",
1612 - "pl" : "Polski",
1613 - "pms" : "Piemont\u00e8is",
1614 - "pnb" : "\u067e\u0646\u062c\u0627\u0628\u06cc",
1615 - "pnt" : "\u03a0\u03bf\u03bd\u03c4\u03b9\u03b1\u03ba\u03ac",
1616 - "ps" : "\u067e\u069a\u062a\u0648",
1617 - "pt" : "Portugu\u00eas",
1618 - "pt-br" : "Portugu\u00eas do Brasil",
1619 - "qu" : "Runa Simi",
1620 - "rif" : "Tarifit",
1621 - "rm" : "Rumantsch",
1622 - "rmy" : "Romani",
1623 - "rn" : "Kirundi",
1624 - "ro" : "Rom\u00e2n\u0103",
1625 - "roa-rup" : "Arm\u00e3neashce",
1626 - "roa-tara" : "Tarand\u00edne",
1627 - "ru" : "\u0420\u0443\u0441\u0441\u043a\u0438\u0439",
1628 - "ruq" : "Vl\u0103he\u015fte",
1629 - "ruq-cyrl" : "\u0412\u043b\u0430\u0445\u0435\u0441\u0442\u0435",
1630 - "ruq-latn" : "Vl\u0103he\u015fte",
1631 - "rw" : "Kinyarwanda",
1632 - "sa" : "\u0938\u0902\u0938\u094d\u0915\u0943\u0924",
1633 - "sah" : "\u0421\u0430\u0445\u0430 \u0442\u044b\u043b\u0430",
1634 - "sc" : "Sardu",
1635 - "scn" : "Sicilianu",
1636 - "sco" : "Scots",
1637 - "sd" : "\u0633\u0646\u068c\u064a",
1638 - "sdc" : "Sassaresu",
1639 - "se" : "S\u00e1megiella",
1640 - "sei" : "Cmique Itom",
1641 - "sg" : "S\u00e4ng\u00f6",
1642 - "sh" : "Srpskohrvatski \/ \u0421\u0440\u043f\u0441\u043a\u043e\u0445\u0440\u0432\u0430\u0442\u0441\u043a\u0438",
1643 - "shi" : "Ta\u0161l\u1e25iyt",
1644 - "si" : "\u0dc3\u0dd2\u0d82\u0dc4\u0dbd",
1645 - "simple" : "Simple English",
1646 - "sk" : "Sloven\u010dina",
1647 - "sl" : "Sloven\u0161\u010dina",
1648 - "sli" : "Schl\u00e4sch",
1649 - "sm" : "Gagana Samoa",
1650 - "sma" : "\u00c5arjelsaemien",
1651 - "sn" : "chiShona",
1652 - "so" : "Soomaaliga",
1653 - "sq" : "Shqip",
1654 - "sr" : "\u0421\u0440\u043f\u0441\u043a\u0438 \/ Srpski",
1655 - "sr-ec" : "\u0421\u0440\u043f\u0441\u043a\u0438 (\u045b\u0438\u0440\u0438\u043b\u0438\u0446\u0430)",
1656 - "sr-el" : "Srpski (latinica)",
1657 - "srn" : "Sranantongo",
1658 - "ss" : "SiSwati",
1659 - "st" : "Sesotho",
1660 - "stq" : "Seeltersk",
1661 - "su" : "Basa Sunda",
1662 - "sv" : "Svenska",
1663 - "sw" : "Kiswahili",
1664 - "szl" : "\u015al\u016fnski",
1665 - "ta" : "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd",
1666 - "tcy" : "\u0ca4\u0cc1\u0cb3\u0cc1",
1667 - "te" : "\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41",
1668 - "tet" : "Tetun",
1669 - "tg" : "\u0422\u043e\u04b7\u0438\u043a\u04e3",
1670 - "tg-cyrl" : "\u0422\u043e\u04b7\u0438\u043a\u04e3",
1671 - "tg-latn" : "tojik\u012b",
1672 - "th" : "\u0e44\u0e17\u0e22",
1673 - "ti" : "\u1275\u130d\u122d\u129b",
1674 - "tk" : "T\u00fcrkmen\u00e7e",
1675 - "tl" : "Tagalog",
1676 - "tn" : "Setswana",
1677 - "to" : "lea faka-Tonga",
1678 - "tokipona" : "Toki Pona",
1679 - "tp" : "Toki Pona (deprecated:tokipona)",
1680 - "tpi" : "Tok Pisin",
1681 - "tr" : "T\u00fcrk\u00e7e",
1682 - "ts" : "Xitsonga",
1683 - "tt" : "\u0422\u0430\u0442\u0430\u0440\u0447\u0430\/Tatar\u00e7a",
1684 - "tt-cyrl" : "\u0422\u0430\u0442\u0430\u0440\u0447\u0430",
1685 - "tt-latn" : "Tatar\u00e7a",
1686 - "tum" : "chiTumbuka",
1687 - "tw" : "Twi",
1688 - "ty" : "Reo M\u0101`ohi",
1689 - "tyv" : "\u0422\u044b\u0432\u0430 \u0434\u044b\u043b",
1690 - "udm" : "\u0423\u0434\u043c\u0443\u0440\u0442",
1691 - "ug" : "Uyghurche\u200e \/ \u0626\u06c7\u064a\u063a\u06c7\u0631\u0686\u06d5",
1692 - "ug-arab" : "\u0626\u06c7\u064a\u063a\u06c7\u0631\u0686\u06d5",
1693 - "ug-latn" : "Uyghurche\u200e",
1694 - "uk" : "\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430",
1695 - "ur" : "\u0627\u0631\u062f\u0648",
1696 - "uz" : "O'zbek",
1697 - "ve" : "Tshivenda",
1698 - "vec" : "V\u00e8neto",
1699 - "vep" : "Vepsan kel'",
1700 - "vi" : "Ti\u1ebfng Vi\u1ec7t",
1701 - "vls" : "West-Vlams",
1702 - "vo" : "Volap\u00fck",
1703 - "vro" : "V\u00f5ro",
1704 - "wa" : "Walon",
1705 - "war" : "Winaray",
1706 - "wo" : "Wolof",
1707 - "wuu" : "\u5434\u8bed",
1708 - "xal" : "\u0425\u0430\u043b\u044c\u043c\u0433",
1709 - "xh" : "isiXhosa",
1710 - "xmf" : "\u10db\u10d0\u10e0\u10d2\u10d0\u10da\u10e3\u10e0\u10d8",
1711 - "yi" : "\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9",
1712 - "yo" : "Yor\u00f9b\u00e1",
1713 - "yue" : "\u7cb5\u8a9e",
1714 - "za" : "Vahcuengh",
1715 - "zea" : "Ze\u00eauws",
1716 - "zh" : "\u4e2d\u6587",
1717 - "zh-classical" : "\u6587\u8a00",
1718 - "zh-cn" : "\u202a\u4e2d\u6587(\u4e2d\u56fd\u5927\u9646)\u202c",
1719 - "zh-hans" : "\u202a\u4e2d\u6587(\u7b80\u4f53)\u202c",
1720 - "zh-hant" : "\u202a\u4e2d\u6587(\u7e41\u9ad4)\u202c",
1721 - "zh-hk" : "\u202a\u4e2d\u6587(\u9999\u6e2f)\u202c",
1722 - "zh-min-nan" : "B\u00e2n-l\u00e2m-g\u00fa",
1723 - "zh-mo" : "\u202a\u4e2d\u6587(\u6fb3\u9580)\u202c",
1724 - "zh-my" : "\u202a\u4e2d\u6587(\u9a6c\u6765\u897f\u4e9a)\u202c",
1725 - "zh-sg" : "\u202a\u4e2d\u6587(\u65b0\u52a0\u5761)\u202c",
1726 - "zh-tw" : "\u202a\u4e2d\u6587(\u53f0\u7063)\u202c",
1727 - "zh-yue" : "\u7cb5\u8a9e",
1728 - "zu" : "isiZulu"
1729 -};
 1371+} )( jQuery );
\ No newline at end of file
Index: branches/js2-work/phase3/js/mwEmbed/modules/TimedText/css/mw.TimedTextEdit.css
@@ -0,0 +1,200 @@
 2+.TimedTextEdit .leftcolumn #textinput textarea
 3+{
 4+ width:512px;
 5+ height:200px;
 6+}
 7+
 8+.TimedTextEdit .leftcolumn #textinput
 9+{
 10+ display: block;
 11+ margin: auto;
 12+ position:absolute;
 13+ top: 340px;
 14+}
 15+
 16+.TimedTextEdit .leftcolumn
 17+{
 18+ padding: 10px;
 19+ width: 890px;
 20+ margin: auto;
 21+}
 22+
 23+.TimedTextEdit .rightcolumn {
 24+ background-color:#606060;
 25+ border:0 solid black;
 26+ bottom:5px;
 27+ color:#EFEFEF;
 28+ left:215px;
 29+ line-height:100%;
 30+ margin-left:300px;
 31+ padding:10px;
 32+ position:absolute;
 33+ right:5px;
 34+ top:5px;
 35+}
 36+
 37+.TimedTextEdit .tabs
 38+{
 39+ position:absolute;
 40+ top: 530px;
 41+}
 42+
 43+.TimedTextEdit .tab{
 44+ position:absolute;
 45+ background:#888;
 46+ border:1px solid black;
 47+ height:30px;
 48+ width:160px;
 49+ padding:4px;
 50+ text-align: center;
 51+}
 52+
 53+.TimedTextEdit .selected{
 54+ background:#bbb;
 55+ height:40px;
 56+}
 57+
 58+.TimedTextEdit #step1tab
 59+{
 60+ left: 0px;
 61+}
 62+
 63+.TimedTextEdit #step2tab
 64+{
 65+ left: 171px;
 66+}
 67+
 68+.TimedTextEdit #step3tab
 69+{
 70+ left: 342px;
 71+}
 72+
 73+.TimedTextEdit .nextstep
 74+{
 75+ position:absolute;
 76+ top: 600px;
 77+ left:197px;
 78+ width:100px;
 79+ height:25px;
 80+ text-align:center;
 81+ background:#77bb40;
 82+ color:white;
 83+ font-weight:bold;
 84+ padding:12px;
 85+ border: 1px solid black;
 86+}
 87+
 88+.TimedTextEdit #titles_list
 89+{
 90+ background: #ddd;
 91+ padding: 12px;
 92+ text-align:center;
 93+ position:absolute;
 94+ top:340px;
 95+ width:488px;
 96+ height:164px;
 97+}
 98+
 99+.TimedTextEdit .current_title
 100+{
 101+ font-size: larger;
 102+ background: #dd8
 103+}
 104+
 105+.TimedTextEdit .time_in
 106+{
 107+ font-size: xx-small;
 108+ position:absolute;
 109+ margin-top:2px;
 110+ margin-left:2em;
 111+}
 112+
 113+.TimedTextEdit .time_out
 114+{
 115+ font-size: xx-small;
 116+ position:absolute;
 117+ margin-top:2px;
 118+ margin-left:438px;
 119+}
 120+
 121+.TimedTextEdit a {
 122+ color:#aaa;
 123+}
 124+
 125+.TimedTextEdit video
 126+{
 127+ height:290px;
 128+ width:512px;
 129+}
 130+
 131+.TimedTextEdit .videodiv
 132+{
 133+ display: block;
 134+ margin: auto;
 135+ position:absolute;
 136+}
 137+
 138+.TimedTextEdit .subtitles
 139+{
 140+ width: 80%;
 141+ margin: auto;
 142+ position: relative;
 143+ text-align: center;
 144+ font-family: sans-serif;
 145+ line-height: 2em;
 146+ color: rgba(255,255,128, 1);
 147+ text-shadow: rgba(0,0,0, 0.6) 1px 1px;
 148+ background: rgba(0,0,0, 0.6);
 149+}
 150+
 151+.TimedTextEdit .subtitleslines1
 152+{
 153+ top: -4.8em;
 154+}
 155+
 156+.TimedTextEdit.subtitleslines2
 157+{
 158+ top: -6.8em;
 159+}
 160+
 161+.TimedTextEdit.subtitleslines3
 162+{
 163+ top: -8.8em;
 164+}
 165+
 166+.TimedTextEdit input[type=number]
 167+{
 168+ width:1.2em;
 169+ padding:2px;
 170+ background: #ffd;
 171+ border:none;
 172+}
 173+/*
 174+.TimedTextEdit input[type=text]
 175+{
 176+ background: #ffd;
 177+ border:none;
 178+}
 179+*/
 180+
 181+.TimedTextEdit .hotkeybox {
 182+ background: #333;
 183+ padding: 5px;
 184+ line-height: 200%;
 185+ font-size: small;
 186+ position:absolute;
 187+ width:340px;
 188+ bottom:10px;
 189+}
 190+
 191+.TimedTextEdit #titles_textarea {
 192+ font-family: helvetica, sans-serif;
 193+ line-height: 1.5em;
 194+}
 195+
 196+.TimedTextEdit .step-help{
 197+ bottom:155px;
 198+ overflow:auto;
 199+ position:absolute;
 200+ top:10px;
 201+}
\ No newline at end of file
Property changes on: branches/js2-work/phase3/js/mwEmbed/modules/TimedText/css/mw.TimedTextEdit.css
___________________________________________________________________
Added: svn:mergeinfo
1202 Merged /branches/REL1_15/phase3/js2/mwEmbed/libTimedText/mw.TimedTextEdit.css:r51646
2203 Merged /branches/sqlite/js2/mwEmbed/libTimedText/mw.TimedTextEdit.css:r58211-58321
Index: branches/js2-work/phase3/js/mwEmbed/modules/TimedText/loader.js
@@ -2,24 +2,24 @@
33 * TimedText loader.
44 */
55 mw.addClassFilePaths( {
6 - "mw.TimedText" : "modules/TimedText/mw.TimedText.js",
 6+ "mw.TimedText" : "modules/TimedText/mw.TimedText.js",
77 "mw.TimedTextEdit" : "modules/TimedText/mw.TimedTextEdit.js",
 8+ "mw.style.TimedTextEdit" : "modules/TimedText/css/mw.TimedTextEdit.css",
 9+
810 "$j.fn.menu" : "modules/TimedText/jquery.menu/jquery.menu.js",
 11+ "mw.style.jquerymenu" : "modules/TimedText/jquery.menu/jquery.menu.css",
912
 13+
1014 "RemoteMwTimedText" : "modules/TimedText/remotes/RemoteMwTimedText.js"
1115 });
1216
13 -/*
14 -Add css dependency:
15 -mw.addClassStyleSheetDependency( {
16 - "$j.fn.menu" : "modules/TimedText/jquery.menu/jquery.menu.css",
17 - "mw.TimedTextEdit": "modules/TimedText/mw.TimedTextEdit.css"
18 -});
19 -*/
20 -
2117 // TimedText module
2218 mw.addModuleLoader( 'TimedText', function( callback ) {
23 - mw.load( [ '$j.fn.menu', 'mw.TimedText' ], function() {
 19+ mw.load( [
 20+ '$j.fn.menu',
 21+ 'mw.TimedText',
 22+ "mw.style.jquerymenu"
 23+ ], function() {
2424 callback( 'TimedText' );
2525 } );
2626 });
@@ -30,8 +30,10 @@
3131 [
3232 '$j.ui',
3333 '$j.fn.menu',
 34+ "mw.style.jquerymenu",
3435 'mw.TimedText',
35 - 'mw.TimedTextEdit'
 36+ 'mw.TimedTextEdit',
 37+ 'mw.style.TimedTextEdit'
3638 ],
3739 [
3840 '$j.ui.dialog',
Index: branches/js2-work/phase3/js/mwEmbed/modules/AddMedia/mw.Firefogg.js
@@ -525,8 +525,9 @@
526526 })
527527 );
528528 },
 529+
529530 /**
530 - * Create controls for showing a transcode/crop/resize preview
 531+ * Create controls for showing a transcode preview
531532 */
532533 createPreviewControls: function() {
533534 var _this = this;
@@ -787,11 +788,10 @@
788789 return false;
789790 }
790791 // Setup the interface progress indicator:
791 - _this.ui.setup( {
 792+ _this.ui.setup( {
792793 'title' : gM( 'fogg-transcoding' ),
793794 'statusType' : 'transcode'
794795 } );
795 -
796796 // Add the preview controls if transcoding:
797797 if ( !_this.getEncoderSettings()[ 'passthrough' ] ) {
798798 _this.createPreviewControls();
@@ -952,15 +952,15 @@
953953 mw.log( "firefogg: doUpload:: " );
954954
955955 // Add the preview controls if transcoding:
956 - if ( !_this.getEncoderSettings()['passthrough'] ) {
957 - _this.createPreviewControls();
958 -
 956+ if ( !_this.getEncoderSettings()['passthrough'] ) {
959957 // Setup the firefogg transcode dialog (if not passthrough )
960958 _this.ui.setup( {
961959 'title' : gM( 'mwe-upload-transcode-in-progress' ),
962960 'statusType' : 'transcode'
963961 } );
964962
 963+ // setup preview controls:
 964+ _this.createPreviewControls();
965965 }
966966 // Update the formData 'comment' per the upload description
967967 $j(this.form).find("[name='comment']").val( _this.getUploadDescription() );
Index: branches/js2-work/phase3/js/mwEmbed/modules/AddMedia/mw.UploadHandler.js
@@ -32,7 +32,7 @@
3333 "filestatus" : "Copyright status:"
3434 });
3535
36 -var default_bui_options = {
 36+var default_uh_options = {
3737 // Target api to upload to
3838 'apiUrl' : null,
3939
@@ -58,7 +58,9 @@
5959 'selectFileCb': null,
6060
6161 // Callback called when an upload completes or is canceld and we want to re-activeate the form
62 - 'returnToFormCb' : null
 62+ 'returnToFormCb' : null,
 63+
 64+ 'uploadDescription' : null
6365
6466 };
6567
@@ -121,12 +123,12 @@
122124
123125 /**
124126 * Object initialization
125 - * @param {Object} options BaseUpload options see default_bui_options
 127+ * @param {Object} options BaseUpload options see default_uh_options
126128 */
127129 init: function( options ) {
128130 if ( !options )
129131 options = {};
130 - $j.extend( this, default_bui_options, options );
 132+ $j.extend( this, default_uh_options, options );
131133
132134 // Set a apiUrl if unset
133135 if( !this.apiUrl ) {
@@ -231,6 +233,7 @@
232234 })
233235 )
234236 }
 237+
235238 var uploadDesc = _this.getUploadDescription();
236239 if( uploadDesc ) {
237240 $form.find("[name='comment']").val( uploadDesc );
@@ -513,7 +516,7 @@
514517 * @return {String}
515518 * value of wpUploadDescription
516519 */
517 - getUploadDescription: function() {
 520+ getUploadDescription: function() {
518521 //Special case of upload.js commons hack:
519522 var comment_value = $j( '#wpUploadDescription' ).val();
520523 if( comment_value == '' ) {
@@ -533,8 +536,7 @@
534537 // Run the JS equivalent of SpecialUpload.php getInitialPageText
535538 comment_value = this.getCommentText( comment_value, license, copyStatus, source );
536539 }
537 - mw.log( 'getCommentText:: new val:' + comment_value );
538 - this.uploadDescription = comment_value;
 540+ mw.log( 'getCommentText:: new val:' + comment_value );
539541 return comment_value;
540542 },
541543
@@ -789,8 +791,11 @@
790792 case 'ignoreWarnings':
791793 this.ignoreWarningsSubmit();
792794 break;
 795+ case 'returnToForm':
 796+ this.rewriteDescriptionText = false;
 797+ break;
793798 case 'disableDirectSubmit':
794 - this.formDirectSubmit = false;
 799+ this.formDirectSubmit = false;
795800 break;
796801 default:
797802 mw.log( "Error reciveUploadAction:: unkown action: " + action );
Index: branches/js2-work/phase3/js/mwEmbed/modules/AddMedia/mw.UploadInterface.js
@@ -425,8 +425,10 @@
426426 */
427427 returnToForm: function( dialogElement ){
428428 $j( dialogElement ).dialog( 'close' );
429 -
430 - // Dissable direct submit on the transport ( so send via sendUploadAction )
 429+ //retun to form actions
 430+ this.sendUploadAction( 'returnToForm' );
 431+
 432+ // Disable direct submit on the transport ( so send via sendUploadAction )
431433 this.sendUploadAction( 'disableDirectSubmit' );
432434
433435 // returnToFormCb
Index: branches/js2-work/phase3/js/mwEmbed/modules/EmbedPlayer/mw.EmbedPlayer.js
@@ -1091,7 +1091,7 @@
10921092 * @param {Element} element <video>, <source> or <mediaSource> <text> element.
10931093 */
10941094 tryAddSource: function( element ) {
1095 - mw.log( 'f:tryAddSource:' + $j( element ).attr( "src" ) );
 1095+ //mw.log( 'f:tryAddSource:' + $j( element ).attr( "src" ) );
10961096 var newSrc = $j( element ).attr( 'src' );
10971097 if ( newSrc ) {
10981098 // make sure an existing element with the same src does not already exist:
@@ -1104,13 +1104,7 @@
11051105 }
11061106 }
11071107 var source = new mediaSource( element );
1108 - // Inherit some properties from the parent <video> element if unset:
1109 - if ( !source.duration && this.duration )
1110 - source.duration = this.duration;
1111 -
1112 - if ( !source.startOffset && this.startOffset )
1113 - source.startOffset = praserFloat( this.startOffset );
1114 -
 1108+
11151109 mw.log( 'pushed source to stack' + source + 'sl:' + this.sources.length );
11161110 this.sources.push( source );
11171111 return source;
@@ -1297,7 +1291,7 @@
12981292 _this.duration = $j( element ).attr( 'duration' );
12991293 }
13001294 if ( !_this.duration && $j( element ).attr( 'durationHint' ) ) {
1301 - _this.durationHint = $j( videoElement ).attr( 'durationHint' );
 1295+ _this.durationHint = $j( element ).attr( 'durationHint' );
13021296 // Convert duration hint if needed:
13031297 _this.duration = mw.npt2seconds( _this.durationHint );
13041298 }
@@ -2287,61 +2281,9 @@
22882282 this.displayOverlay( gM( 'mwe-could_not_find_linkback' ) );
22892283 }
22902284 }
2291 - },
 2285+ },
22922286
2293 -
22942287 /**
2295 - * Loads the text interface library and show the text interface near the player.
2296 - */
2297 - showTextInterface: function() {
2298 - var _this = this;
2299 - mw.log('showTextInterface:');
2300 -
2301 - var $menu = $j( '#timedTextMenu_' + this.id );
2302 - //This may be unnessesary .. we just need to show a spiner somewhere
2303 - if ( $menu.length != 0 ) {
2304 - // Hide show the menu:
2305 - if( $menu.is( ':visible' ) ) {
2306 - $menu.hide( "fast" );
2307 - }else{
2308 - $menu.show("fast");
2309 - }
2310 - }else{
2311 - var loc = this.$interface.position();
2312 - //Setup the menu:
2313 - var playerHeight = ( parseInt( this.height ) + this.ctrlBuilder.getHeight() );
2314 - $j('body').append(
2315 - $j('<div>')
2316 - .addClass('ui-widget ui-widget-content ui-corner-all')
2317 - .attr( 'id', 'timedTextMenu_' + _this.id )
2318 - .loadingSpinner()
2319 - .css( {
2320 - 'position' : 'absolute',
2321 - 'z-index' : 10,
2322 - 'height' : '180px',
2323 - 'width' : '180px',
2324 - 'font-size' : '12px'
2325 - } ).hide()
2326 - );
2327 - // Load text interface ( if not already loaded )
2328 - mw.load( 'TimedText', function() {
2329 - $j( '#' + _this.id ).timedText( 'showMenu', '#timedTextMenu_' + _this.id );
2330 - });
2331 - }
2332 - },
2333 -
2334 - /**
2335 - * Close the text interface
2336 - */
2337 - closeTextInterface:function() {
2338 - mw.log( 'closeTextInterface ' + typeof this.textInterface );
2339 - if ( typeof this.textInterface !== 'undefined' ) {
2340 - this.textInterface.close();
2341 - }
2342 - },
2343 -
2344 -
2345 - /**
23462288 * Base Embed Controls
23472289 */
23482290
Index: branches/js2-work/phase3/js/mwEmbed/modules/EmbedPlayer/skins/ctrlBuilder.js
@@ -808,6 +808,7 @@
809809 if( ! this.supportedMenuItems[ i ] ) {
810810 continue;
811811 }
 812+
812813 $optionsMenu.append(
813814 this.optionMenuItems[i]( this )
814815 );
@@ -1157,6 +1158,48 @@
11581159 },
11591160
11601161 /**
 1162+ * Show the text interface library and show the text interface near the player.
 1163+ */
 1164+ showTextInterface: function() {
 1165+ var _this = this;
 1166+ var embedPlayer = this.embedPlayer;
 1167+ mw.log('ttt:showTextInterface::');
 1168+
 1169+ var $menu = $j( '#timedTextMenu_' + embedPlayer.id );
 1170+ //This may be unnessesary .. we just need to show a sppiner somewhere
 1171+ if ( $menu.length != 0 ) {
 1172+ // Hide show the menu:
 1173+ if( $menu.is( ':visible' ) ) {
 1174+ $menu.hide( "fast" );
 1175+ }else{
 1176+ $menu.show("fast");
 1177+ }
 1178+ }else{
 1179+ var loc = embedPlayer.$interface.find( '.rButton.timed-text' ).offset();
 1180+ //Setup the menu:
 1181+ $j('body').append(
 1182+ $j('<div>')
 1183+ .addClass('ui-widget ui-widget-content ui-corner-all')
 1184+ .attr( 'id', 'timedTextMenu_' + embedPlayer.id )
 1185+ .css( {
 1186+ 'position' : 'absolute',
 1187+ 'z-index' : 10,
 1188+ 'height' : '180px',
 1189+ 'width' : '180px',
 1190+ 'font-size' : '12px',
 1191+ 'display' : 'none'
 1192+ } )
 1193+
 1194+ );
 1195+ // Load text interface ( if not already loaded )
 1196+ mw.load( 'TimedText', function() {
 1197+ mw.log('ttt:TimedText CB .. do timedText bind::');
 1198+ $j( '#' + embedPlayer.id ).timedText( 'showMenu', '#timedTextMenu_' + embedPlayer.id );
 1199+ });
 1200+ }
 1201+ },
 1202+
 1203+ /**
11611204 * Loads sources and calls showDownloadWithSources
11621205 * @param {Object} $target jQuery target to output to
11631206 */
@@ -1428,7 +1471,7 @@
14291472 // Captions binding:
14301473 .buttonHover()
14311474 .click( function() {
1432 - ctrlObj.embedPlayer.showTextInterface();
 1475+ ctrlObj.showTextInterface();
14331476 } )
14341477 }
14351478 },
Index: branches/js2-work/phase3/js/mwEmbed/modules/ApiProxy/mw.ApiProxy.js
@@ -641,19 +641,14 @@
642642 clientRequest.request[ 'format' ] = 'json';
643643
644644 mw.log(" do post request to: " + wgScriptPath + '/api' + wgScriptExtension );
645 - /*
646 - for( var i in clientRequest.request ) {
647 - mw.log("req: " + i + " = " + clientRequest.request[i] );
648 - }
649 - */
650645
651646 // Process the API request. We don't use mw.getJSON since we need to "post"
652647 $j.post( wgScriptPath + '/api' + wgScriptExtension,
653648 clientRequest.request,
654649 function( data ) {
655 - mw.log(" server api request got data: " + data );
 650+ mw.log(" server api request got data: " + JSON.stringify( data ) );
656651 // Send the result data to the client
657 - sendClientMsg( JSON.parse( data ) );
 652+ sendClientMsg( data );
658653 }
659654 );
660655 }
Index: branches/js2-work/phase3/js/mwEmbed/mwEmbed.js
@@ -316,7 +316,8 @@
317317 mw.lang.magicSetup = function() {
318318 if ( !mw.lang.doneSetup ) {
319319 mw.addTemplateTransform ( {
320 - 'PLURAL' : mw.lang.procPLURAL
 320+ 'PLURAL' : mw.lang.procPLURAL,
 321+ 'GENDER' : mw.lang.procGENDER
321322 } )
322323
323324 mw.lang.doneSetup = true;
@@ -325,6 +326,407 @@
326327 }
327328
328329 /**
 330+ * List of all languages mediaWiki supports ( Avoid an api call to get this same info )
 331+ * http://commons.wikimedia.org/w/api.php?action=query&meta=siteinfo&siprop=languages&format=jsonfm
 332+ */
 333+ mw.lang.names = {
 334+ "aa" : "Qaf\u00e1r af",
 335+ "ab" : "\u0410\u04a7\u0441\u0443\u0430",
 336+ "ace" : "Ac\u00e8h",
 337+ "af" : "Afrikaans",
 338+ "ak" : "Akan",
 339+ "aln" : "Geg\u00eb",
 340+ "als" : "Alemannisch",
 341+ "am" : "\u12a0\u121b\u122d\u129b",
 342+ "an" : "Aragon\u00e9s",
 343+ "ang" : "Anglo-Saxon",
 344+ "ar" : "\u0627\u0644\u0639\u0631\u0628\u064a\u0629",
 345+ "arc" : "\u0710\u072a\u0721\u071d\u0710",
 346+ "arn" : "Mapudungun",
 347+ "arz" : "\u0645\u0635\u0631\u0649",
 348+ "as" : "\u0985\u09b8\u09ae\u09c0\u09af\u09bc\u09be",
 349+ "ast" : "Asturianu",
 350+ "av" : "\u0410\u0432\u0430\u0440",
 351+ "avk" : "Kotava",
 352+ "ay" : "Aymar aru",
 353+ "az" : "Az\u0259rbaycan",
 354+ "ba" : "\u0411\u0430\u0448\u04a1\u043e\u0440\u0442",
 355+ "bar" : "Boarisch",
 356+ "bat-smg" : "\u017demait\u0117\u0161ka",
 357+ "bcc" : "\u0628\u0644\u0648\u0686\u06cc \u0645\u06a9\u0631\u0627\u0646\u06cc",
 358+ "bcl" : "Bikol Central",
 359+ "be" : "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f",
 360+ "be-tarask" : "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f (\u0442\u0430\u0440\u0430\u0448\u043a\u0435\u0432\u0456\u0446\u0430)",
 361+ "be-x-old" : "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f (\u0442\u0430\u0440\u0430\u0448\u043a\u0435\u0432\u0456\u0446\u0430)",
 362+ "bg" : "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438",
 363+ "bh" : "\u092d\u094b\u091c\u092a\u0941\u0930\u0940",
 364+ "bi" : "Bislama",
 365+ "bm" : "Bamanankan",
 366+ "bn" : "\u09ac\u09be\u0982\u09b2\u09be",
 367+ "bo" : "\u0f56\u0f7c\u0f51\u0f0b\u0f61\u0f72\u0f42",
 368+ "bpy" : "\u0987\u09ae\u09be\u09b0 \u09a0\u09be\u09b0\/\u09ac\u09bf\u09b7\u09cd\u09a3\u09c1\u09aa\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09ae\u09a3\u09bf\u09aa\u09c1\u09b0\u09c0",
 369+ "bqi" : "\u0628\u062e\u062a\u064a\u0627\u0631\u064a",
 370+ "br" : "Brezhoneg",
 371+ "bs" : "Bosanski",
 372+ "bug" : "\u1a05\u1a14 \u1a15\u1a18\u1a01\u1a17",
 373+ "bxr" : "\u0411\u0443\u0440\u044f\u0430\u0434",
 374+ "ca" : "Catal\u00e0",
 375+ "cbk-zam" : "Chavacano de Zamboanga",
 376+ "cdo" : "M\u00ecng-d\u0115\u0324ng-ng\u1e73\u0304",
 377+ "ce" : "\u041d\u043e\u0445\u0447\u0438\u0439\u043d",
 378+ "ceb" : "Cebuano",
 379+ "ch" : "Chamoru",
 380+ "cho" : "Choctaw",
 381+ "chr" : "\u13e3\u13b3\u13a9",
 382+ "chy" : "Tsets\u00eahest\u00e2hese",
 383+ "ckb" : "Soran\u00ee \/ \u06a9\u0648\u0631\u062f\u06cc",
 384+ "ckb-latn" : "\u202aSoran\u00ee (lat\u00een\u00ee)\u202c",
 385+ "ckb-arab" : "\u202b\u06a9\u0648\u0631\u062f\u06cc (\u0639\u06d5\u0631\u06d5\u0628\u06cc)\u202c",
 386+ "co" : "Corsu",
 387+ "cr" : "N\u0113hiyaw\u0113win \/ \u14c0\u1426\u1403\u152d\u140d\u140f\u1423",
 388+ "crh" : "Q\u0131r\u0131mtatarca",
 389+ "crh-latn" : "\u202aQ\u0131r\u0131mtatarca (Latin)\u202c",
 390+ "crh-cyrl" : "\u202a\u041a\u044a\u044b\u0440\u044b\u043c\u0442\u0430\u0442\u0430\u0440\u0434\u0436\u0430 (\u041a\u0438\u0440\u0438\u043b\u043b)\u202c",
 391+ "cs" : "\u010cesky",
 392+ "csb" : "Kasz\u00ebbsczi",
 393+ "cu" : "\u0421\u043b\u043e\u0432\u0463\u0301\u043d\u044c\u0441\u043a\u044a \/ \u2c14\u2c0e\u2c11\u2c02\u2c21\u2c10\u2c20\u2c14\u2c0d\u2c1f",
 394+ "cv" : "\u0427\u04d1\u0432\u0430\u0448\u043b\u0430",
 395+ "cy" : "Cymraeg",
 396+ "da" : "Dansk",
 397+ "de" : "Deutsch",
 398+ "de-at" : "\u00d6sterreichisches Deutsch",
 399+ "de-ch" : "Schweizer Hochdeutsch",
 400+ "de-formal" : "Deutsch (Sie-Form)",
 401+ "diq" : "Zazaki",
 402+ "dk" : "Dansk (deprecated:da)",
 403+ "dsb" : "Dolnoserbski",
 404+ "dv" : "\u078b\u07a8\u0788\u07ac\u0780\u07a8\u0784\u07a6\u0790\u07b0",
 405+ "dz" : "\u0f47\u0f7c\u0f44\u0f0b\u0f41",
 406+ "ee" : "E\u028begbe",
 407+ "el" : "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac",
 408+ "eml" : "Emili\u00e0n e rumagn\u00f2l",
 409+ "en" : "English",
 410+ "en-gb" : "British English",
 411+ "eo" : "Esperanto",
 412+ "es" : "Espa\u00f1ol",
 413+ "et" : "Eesti",
 414+ "eu" : "Euskara",
 415+ "ext" : "Estreme\u00f1u",
 416+ "fa" : "\u0641\u0627\u0631\u0633\u06cc",
 417+ "ff" : "Fulfulde",
 418+ "fi" : "Suomi",
 419+ "fiu-vro" : "V\u00f5ro",
 420+ "fj" : "Na Vosa Vakaviti",
 421+ "fo" : "F\u00f8royskt",
 422+ "fr" : "Fran\u00e7ais",
 423+ "frc" : "Fran\u00e7ais cadien",
 424+ "frp" : "Arpetan",
 425+ "fur" : "Furlan",
 426+ "fy" : "Frysk",
 427+ "ga" : "Gaeilge",
 428+ "gag" : "Gagauz",
 429+ "gan" : "\u8d1b\u8a9e",
 430+ "gan-hans" : "\u8d63\u8bed(\u7b80\u4f53)",
 431+ "gan-hant" : "\u8d1b\u8a9e(\u7e41\u9ad4)",
 432+ "gd" : "G\u00e0idhlig",
 433+ "gl" : "Galego",
 434+ "glk" : "\u06af\u06cc\u0644\u06a9\u06cc",
 435+ "gn" : "Ava\u00f1e'\u1ebd",
 436+ "got" : "\ud800\udf32\ud800\udf3f\ud800\udf44\ud800\udf39\ud800\udf43\ud800\udf3a",
 437+ "grc" : "\u1f08\u03c1\u03c7\u03b1\u03af\u03b1 \u1f11\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u1f74",
 438+ "gsw" : "Alemannisch",
 439+ "gu" : "\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0",
 440+ "gv" : "Gaelg",
 441+ "ha" : "\u0647\u064e\u0648\u064f\u0633\u064e",
 442+ "hak" : "Hak-k\u00e2-fa",
 443+ "haw" : "Hawai`i",
 444+ "he" : "\u05e2\u05d1\u05e8\u05d9\u05ea",
 445+ "hi" : "\u0939\u093f\u0928\u094d\u0926\u0940",
 446+ "hif" : "Fiji Hindi",
 447+ "hif-deva" : "\u092b\u093c\u0940\u091c\u0940 \u0939\u093f\u0928\u094d\u0926\u0940",
 448+ "hif-latn" : "Fiji Hindi",
 449+ "hil" : "Ilonggo",
 450+ "ho" : "Hiri Motu",
 451+ "hr" : "Hrvatski",
 452+ "hsb" : "Hornjoserbsce",
 453+ "ht" : "Krey\u00f2l ayisyen",
 454+ "hu" : "Magyar",
 455+ "hy" : "\u0540\u0561\u0575\u0565\u0580\u0565\u0576",
 456+ "hz" : "Otsiherero",
 457+ "ia" : "Interlingua",
 458+ "id" : "Bahasa Indonesia",
 459+ "ie" : "Interlingue",
 460+ "ig" : "Igbo",
 461+ "ii" : "\ua187\ua259",
 462+ "ik" : "I\u00f1upiak",
 463+ "ike-cans" : "\u1403\u14c4\u1483\u144e\u1450\u1466",
 464+ "ike-latn" : "inuktitut",
 465+ "ilo" : "Ilokano",
 466+ "inh" : "\u0413\u0406\u0430\u043b\u0433\u0406\u0430\u0439 \u011eal\u011faj",
 467+ "io" : "Ido",
 468+ "is" : "\u00cdslenska",
 469+ "it" : "Italiano",
 470+ "iu" : "\u1403\u14c4\u1483\u144e\u1450\u1466\/inuktitut",
 471+ "ja" : "\u65e5\u672c\u8a9e",
 472+ "jbo" : "Lojban",
 473+ "jut" : "Jysk",
 474+ "jv" : "Basa Jawa",
 475+ "ka" : "\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8",
 476+ "kaa" : "Qaraqalpaqsha",
 477+ "kab" : "Taqbaylit",
 478+ "kg" : "Kongo",
 479+ "ki" : "G\u0129k\u0169y\u0169",
 480+ "kiu" : "Kurmanc\u00ee",
 481+ "kj" : "Kwanyama",
 482+ "kk" : "\u049a\u0430\u0437\u0430\u049b\u0448\u0430",
 483+ "kk-arab" : "\u202b\u0642\u0627\u0632\u0627\u0642\u0634\u0627 (\u062a\u0674\u0648\u062a\u06d5)\u202c",
 484+ "kk-cyrl" : "\u202a\u049a\u0430\u0437\u0430\u049b\u0448\u0430 (\u043a\u0438\u0440\u0438\u043b)\u202c",
 485+ "kk-latn" : "\u202aQazaq\u015fa (lat\u0131n)\u202c",
 486+ "kk-cn" : "\u202b\u0642\u0627\u0632\u0627\u0642\u0634\u0627 (\u062c\u06c7\u0646\u06af\u0648)\u202c",
 487+ "kk-kz" : "\u202a\u049a\u0430\u0437\u0430\u049b\u0448\u0430 (\u049a\u0430\u0437\u0430\u049b\u0441\u0442\u0430\u043d)\u202c",
 488+ "kk-tr" : "\u202aQazaq\u015fa (T\u00fcrk\u00efya)\u202c",
 489+ "kl" : "Kalaallisut",
 490+ "km" : "\u1797\u17b6\u179f\u17b6\u1781\u17d2\u1798\u17c2\u179a",
 491+ "kn" : "\u0c95\u0ca8\u0ccd\u0ca8\u0ca1",
 492+ "ko" : "\ud55c\uad6d\uc5b4",
 493+ "ko-kp" : "\ud55c\uad6d\uc5b4 (\uc870\uc120)",
 494+ "kr" : "Kanuri",
 495+ "kri" : "Krio",
 496+ "krj" : "Kinaray-a",
 497+ "ks" : "\u0915\u0936\u094d\u092e\u0940\u0930\u0940 - (\u0643\u0634\u0645\u064a\u0631\u064a)",
 498+ "ksh" : "Ripoarisch",
 499+ "ku" : "Kurd\u00ee \/ \u0643\u0648\u0631\u062f\u06cc",
 500+ "ku-latn" : "\u202aKurd\u00ee (lat\u00een\u00ee)\u202c",
 501+ "ku-arab" : "\u202b\u0643\u0648\u0631\u062f\u064a (\u0639\u06d5\u0631\u06d5\u0628\u06cc)\u202c",
 502+ "kv" : "\u041a\u043e\u043c\u0438",
 503+ "kw" : "Kernowek",
 504+ "ky" : "\u041a\u044b\u0440\u0433\u044b\u0437\u0447\u0430",
 505+ "la" : "Latina",
 506+ "lad" : "Ladino",
 507+ "lb" : "L\u00ebtzebuergesch",
 508+ "lbe" : "\u041b\u0430\u043a\u043a\u0443",
 509+ "lez" : "\u041b\u0435\u0437\u0433\u0438",
 510+ "lfn" : "Lingua Franca Nova",
 511+ "lg" : "Luganda",
 512+ "li" : "Limburgs",
 513+ "lij" : "L\u00edguru",
 514+ "lmo" : "Lumbaart",
 515+ "ln" : "Ling\u00e1la",
 516+ "lo" : "\u0ea5\u0eb2\u0ea7",
 517+ "loz" : "Silozi",
 518+ "lt" : "Lietuvi\u0173",
 519+ "lv" : "Latvie\u0161u",
 520+ "lzh" : "\u6587\u8a00",
 521+ "mai" : "\u092e\u0948\u0925\u093f\u0932\u0940",
 522+ "map-bms" : "Basa Banyumasan",
 523+ "mdf" : "\u041c\u043e\u043a\u0448\u0435\u043d\u044c",
 524+ "mg" : "Malagasy",
 525+ "mh" : "Ebon",
 526+ "mhr" : "\u041e\u043b\u044b\u043a \u041c\u0430\u0440\u0438\u0439",
 527+ "mi" : "M\u0101ori",
 528+ "mk" : "\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438",
 529+ "ml" : "\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02",
 530+ "mn" : "\u041c\u043e\u043d\u0433\u043e\u043b",
 531+ "mo" : "\u041c\u043e\u043b\u0434\u043e\u0432\u0435\u043d\u044f\u0441\u043a\u044d",
 532+ "mr" : "\u092e\u0930\u093e\u0920\u0940",
 533+ "ms" : "Bahasa Melayu",
 534+ "mt" : "Malti",
 535+ "mus" : "Mvskoke",
 536+ "mwl" : "Mirand\u00e9s",
 537+ "my" : "\u1019\u103c\u1014\u103a\u1019\u102c\u1018\u102c\u101e\u102c",
 538+ "myv" : "\u042d\u0440\u0437\u044f\u043d\u044c",
 539+ "mzn" : "\u0645\u064e\u0632\u0650\u0631\u0648\u0646\u064a",
 540+ "na" : "Dorerin Naoero",
 541+ "nah" : "N\u0101huatl",
 542+ "nan" : "B\u00e2n-l\u00e2m-g\u00fa",
 543+ "nap" : "Nnapulitano",
 544+ "nb" : "\u202aNorsk (bokm\u00e5l)\u202c",
 545+ "nds" : "Plattd\u00fc\u00fctsch",
 546+ "nds-nl" : "Nedersaksisch",
 547+ "ne" : "\u0928\u0947\u092a\u093e\u0932\u0940",
 548+ "new" : "\u0928\u0947\u092a\u093e\u0932 \u092d\u093e\u0937\u093e",
 549+ "ng" : "Oshiwambo",
 550+ "niu" : "Niu\u0113",
 551+ "nl" : "Nederlands",
 552+ "nn" : "\u202aNorsk (nynorsk)\u202c",
 553+ "no" : "\u202aNorsk (bokm\u00e5l)\u202c",
 554+ "nov" : "Novial",
 555+ "nrm" : "Nouormand",
 556+ "nso" : "Sesotho sa Leboa",
 557+ "nv" : "Din\u00e9 bizaad",
 558+ "ny" : "Chi-Chewa",
 559+ "oc" : "Occitan",
 560+ "om" : "Oromoo",
 561+ "or" : "\u0b13\u0b21\u0b3c\u0b3f\u0b06",
 562+ "os" : "\u0418\u0440\u043e\u043d\u0430\u0443",
 563+ "pa" : "\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40",
 564+ "pag" : "Pangasinan",
 565+ "pam" : "Kapampangan",
 566+ "pap" : "Papiamentu",
 567+ "pcd" : "Picard",
 568+ "pdc" : "Deitsch",
 569+ "pdt" : "Plautdietsch",
 570+ "pfl" : "Pf\u00e4lzisch",
 571+ "pi" : "\u092a\u093e\u093f\u0934",
 572+ "pih" : "Norfuk \/ Pitkern",
 573+ "pl" : "Polski",
 574+ "pms" : "Piemont\u00e8is",
 575+ "pnb" : "\u067e\u0646\u062c\u0627\u0628\u06cc",
 576+ "pnt" : "\u03a0\u03bf\u03bd\u03c4\u03b9\u03b1\u03ba\u03ac",
 577+ "ps" : "\u067e\u069a\u062a\u0648",
 578+ "pt" : "Portugu\u00eas",
 579+ "pt-br" : "Portugu\u00eas do Brasil",
 580+ "qu" : "Runa Simi",
 581+ "rif" : "Tarifit",
 582+ "rm" : "Rumantsch",
 583+ "rmy" : "Romani",
 584+ "rn" : "Kirundi",
 585+ "ro" : "Rom\u00e2n\u0103",
 586+ "roa-rup" : "Arm\u00e3neashce",
 587+ "roa-tara" : "Tarand\u00edne",
 588+ "ru" : "\u0420\u0443\u0441\u0441\u043a\u0438\u0439",
 589+ "ruq" : "Vl\u0103he\u015fte",
 590+ "ruq-cyrl" : "\u0412\u043b\u0430\u0445\u0435\u0441\u0442\u0435",
 591+ "ruq-latn" : "Vl\u0103he\u015fte",
 592+ "rw" : "Kinyarwanda",
 593+ "sa" : "\u0938\u0902\u0938\u094d\u0915\u0943\u0924",
 594+ "sah" : "\u0421\u0430\u0445\u0430 \u0442\u044b\u043b\u0430",
 595+ "sc" : "Sardu",
 596+ "scn" : "Sicilianu",
 597+ "sco" : "Scots",
 598+ "sd" : "\u0633\u0646\u068c\u064a",
 599+ "sdc" : "Sassaresu",
 600+ "se" : "S\u00e1megiella",
 601+ "sei" : "Cmique Itom",
 602+ "sg" : "S\u00e4ng\u00f6",
 603+ "sh" : "Srpskohrvatski \/ \u0421\u0440\u043f\u0441\u043a\u043e\u0445\u0440\u0432\u0430\u0442\u0441\u043a\u0438",
 604+ "shi" : "Ta\u0161l\u1e25iyt",
 605+ "si" : "\u0dc3\u0dd2\u0d82\u0dc4\u0dbd",
 606+ "simple" : "Simple English",
 607+ "sk" : "Sloven\u010dina",
 608+ "sl" : "Sloven\u0161\u010dina",
 609+ "sli" : "Schl\u00e4sch",
 610+ "sm" : "Gagana Samoa",
 611+ "sma" : "\u00c5arjelsaemien",
 612+ "sn" : "chiShona",
 613+ "so" : "Soomaaliga",
 614+ "sq" : "Shqip",
 615+ "sr" : "\u0421\u0440\u043f\u0441\u043a\u0438 \/ Srpski",
 616+ "sr-ec" : "\u0421\u0440\u043f\u0441\u043a\u0438 (\u045b\u0438\u0440\u0438\u043b\u0438\u0446\u0430)",
 617+ "sr-el" : "Srpski (latinica)",
 618+ "srn" : "Sranantongo",
 619+ "ss" : "SiSwati",
 620+ "st" : "Sesotho",
 621+ "stq" : "Seeltersk",
 622+ "su" : "Basa Sunda",
 623+ "sv" : "Svenska",
 624+ "sw" : "Kiswahili",
 625+ "szl" : "\u015al\u016fnski",
 626+ "ta" : "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd",
 627+ "tcy" : "\u0ca4\u0cc1\u0cb3\u0cc1",
 628+ "te" : "\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41",
 629+ "tet" : "Tetun",
 630+ "tg" : "\u0422\u043e\u04b7\u0438\u043a\u04e3",
 631+ "tg-cyrl" : "\u0422\u043e\u04b7\u0438\u043a\u04e3",
 632+ "tg-latn" : "tojik\u012b",
 633+ "th" : "\u0e44\u0e17\u0e22",
 634+ "ti" : "\u1275\u130d\u122d\u129b",
 635+ "tk" : "T\u00fcrkmen\u00e7e",
 636+ "tl" : "Tagalog",
 637+ "tn" : "Setswana",
 638+ "to" : "lea faka-Tonga",
 639+ "tokipona" : "Toki Pona",
 640+ "tp" : "Toki Pona (deprecated:tokipona)",
 641+ "tpi" : "Tok Pisin",
 642+ "tr" : "T\u00fcrk\u00e7e",
 643+ "ts" : "Xitsonga",
 644+ "tt" : "\u0422\u0430\u0442\u0430\u0440\u0447\u0430\/Tatar\u00e7a",
 645+ "tt-cyrl" : "\u0422\u0430\u0442\u0430\u0440\u0447\u0430",
 646+ "tt-latn" : "Tatar\u00e7a",
 647+ "tum" : "chiTumbuka",
 648+ "tw" : "Twi",
 649+ "ty" : "Reo M\u0101`ohi",
 650+ "tyv" : "\u0422\u044b\u0432\u0430 \u0434\u044b\u043b",
 651+ "udm" : "\u0423\u0434\u043c\u0443\u0440\u0442",
 652+ "ug" : "Uyghurche\u200e \/ \u0626\u06c7\u064a\u063a\u06c7\u0631\u0686\u06d5",
 653+ "ug-arab" : "\u0626\u06c7\u064a\u063a\u06c7\u0631\u0686\u06d5",
 654+ "ug-latn" : "Uyghurche\u200e",
 655+ "uk" : "\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430",
 656+ "ur" : "\u0627\u0631\u062f\u0648",
 657+ "uz" : "O'zbek",
 658+ "ve" : "Tshivenda",
 659+ "vec" : "V\u00e8neto",
 660+ "vep" : "Vepsan kel'",
 661+ "vi" : "Ti\u1ebfng Vi\u1ec7t",
 662+ "vls" : "West-Vlams",
 663+ "vo" : "Volap\u00fck",
 664+ "vro" : "V\u00f5ro",
 665+ "wa" : "Walon",
 666+ "war" : "Winaray",
 667+ "wo" : "Wolof",
 668+ "wuu" : "\u5434\u8bed",
 669+ "xal" : "\u0425\u0430\u043b\u044c\u043c\u0433",
 670+ "xh" : "isiXhosa",
 671+ "xmf" : "\u10db\u10d0\u10e0\u10d2\u10d0\u10da\u10e3\u10e0\u10d8",
 672+ "yi" : "\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9",
 673+ "yo" : "Yor\u00f9b\u00e1",
 674+ "yue" : "\u7cb5\u8a9e",
 675+ "za" : "Vahcuengh",
 676+ "zea" : "Ze\u00eauws",
 677+ "zh" : "\u4e2d\u6587",
 678+ "zh-classical" : "\u6587\u8a00",
 679+ "zh-cn" : "\u202a\u4e2d\u6587(\u4e2d\u56fd\u5927\u9646)\u202c",
 680+ "zh-hans" : "\u202a\u4e2d\u6587(\u7b80\u4f53)\u202c",
 681+ "zh-hant" : "\u202a\u4e2d\u6587(\u7e41\u9ad4)\u202c",
 682+ "zh-hk" : "\u202a\u4e2d\u6587(\u9999\u6e2f)\u202c",
 683+ "zh-min-nan" : "B\u00e2n-l\u00e2m-g\u00fa",
 684+ "zh-mo" : "\u202a\u4e2d\u6587(\u6fb3\u9580)\u202c",
 685+ "zh-my" : "\u202a\u4e2d\u6587(\u9a6c\u6765\u897f\u4e9a)\u202c",
 686+ "zh-sg" : "\u202a\u4e2d\u6587(\u65b0\u52a0\u5761)\u202c",
 687+ "zh-tw" : "\u202a\u4e2d\u6587(\u53f0\u7063)\u202c",
 688+ "zh-yue" : "\u7cb5\u8a9e",
 689+ "zu" : "isiZulu"
 690+ };
 691+
 692+ // Language classes ( has a file in /languages/classes/Language{code}.js )
 693+ // ( for languages that overide default transforms )
 694+ mw.lang.transformClass = ['en', 'am', 'ar', 'bat_smg', 'be_tarak', 'be', 'bh',
 695+ 'bs', 'cs', 'cu', 'cy', 'dsb', 'fr', 'ga', 'gd', 'gv', 'he', 'hi',
 696+ 'hr', 'hsb', 'hy', 'ksh', 'ln', 'lt', 'lv', 'mg', 'mk', 'mo', 'mt',
 697+ 'nso', 'pl', 'pt_br', 'ro', 'ru', 'se', 'sh', 'sk', 'sl', 'sma',
 698+ 'sr_ec', 'sr_el', 'sr', 'ti', 'tl', 'uk', 'wa'
 699+ ];
 700+
 701+ /**
 702+ * Plural form transformations, needed for some languages.
 703+ * For example, there are 3 form of plural in Russian and Polish,
 704+ * depending on "count mod 10". See [[w:Plural]]
 705+ * For English it is pretty simple.
 706+ *
 707+ * Invoked by putting {{plural:count|wordform1|wordform2}}
 708+ * or {{plural:count|wordform1|wordform2|wordform3}}
 709+ *
 710+ * Example: {{plural:{{NUMBEROFARTICLES}}|article|articles}}
 711+ *
 712+ * @param count Integer: non-localized number
 713+ * @param forms Array: different plural forms
 714+ * @return string Correct form of plural for count in this language
 715+ */
 716+
 717+ /**
 718+ * Base gender transform function
 719+ */
 720+ mw.lang.gender = function( gender, forms ) {
 721+ if ( ! forms.length ) {
 722+ return '';
 723+ }
 724+ forms = mw.lang.preConvertPlural( forms, 2 );
 725+ if ( gender === 'male' ) return forms[0];
 726+ if ( gender === 'female' ) return forms[1];
 727+ return ( forms[2] ) ? forms[2] : forms[0];
 728+ }
 729+
 730+ /**
329731 * Process the PLURAL template substitution
330732 * @param {Object} template Template object
331733 *
@@ -351,13 +753,21 @@
352754 return mw.lang.convertPlural( parseInt( count ), tObj.param );
353755
354756 }
355 - // Could not proccess plural return first form or nothing
 757+ // Could not process plural return first form or nothing
356758 if( tObj.param[0] ) {
357759 return tObj.param[0];
358760 }
359761 return '';
360762 };
361 -
 763+ /*
 764+ * Base convertPlural function:
 765+ */
 766+ mw.lang.convertPlural = function( count, forms ){
 767+ if ( !forms || forms.length == 0 ) {
 768+ return '';
 769+ }
 770+ return ( parseInt( count ) == 1 ) ? forms[0] : forms[1];
 771+ };
362772 /**
363773 * Checks that convertPlural was given an array and pads it to requested
364774 * amount of forms by copying the last one.
@@ -419,12 +829,17 @@
420830 * @return true if valid language, false if not
421831 */
422832 mw.isValidLang = function( langKey ) {
423 - var langList = mw.getConfig( 'languageCodeList');
424 - for(var i =0; i < langList.length; i++) {
425 - if( langList[i] == langKey ) {
 833+ return ( mw.lang.names[ langKey ] )? true : false;
 834+ }
 835+ /**
 836+ * Checks if a language key has a transform class file
 837+ */
 838+ mw.hasLangTransform = function( langKey ) {
 839+ for( var i =0; i < mw.lang.transformClass; i++) {
 840+ if( langKey == mw.lang.transformClass[i] ){
426841 return true;
427 - }
428 - }
 842+ }
 843+ }
429844 return false;
430845 }
431846
@@ -890,7 +1305,14 @@
8911306 *
8921307 * @param {Function} callback Function called once loading is complete
8931308 */
894 - load: function( loadRequest, callback ) {
 1309+ load: function( loadRequest, instanceCallback ) {
 1310+ // Ensure the callback is only called once per load instance
 1311+ var callback = function(){
 1312+ if( instanceCallback ){
 1313+ instanceCallback( loadRequest );
 1314+ instanceCallback = null;
 1315+ }
 1316+ }
8951317 // Check for empty loadRequest ( directly return the callback )
8961318 if( mw.isEmpty( loadRequest ) ) {
8971319 mw.log( 'Empty load request: ' + loadRequest );
@@ -1238,7 +1660,7 @@
12391661 callback( requestName )
12401662 }
12411663 // Setup the function queue if unset
1242 - if( ! mwLoadDoneCB[ requestName ] ) {
 1664+ if( typeof mwLoadDoneCB[ requestName ] != 'object' ) {
12431665 mwLoadDoneCB[ requestName ] = [];
12441666 }
12451667 mwLoadDoneCB[ requestName ].push( callback );
@@ -1967,8 +2389,9 @@
19682390 mw.addStyleString = function( cssClassName, cssString ) {
19692391 // Set the style to true ( to not request it again )
19702392 mw.style[ cssClassName ] = true;
 2393+ mw.log(" Style: " + cssClassName + ' has been set' );
19712394 // Wait for the DOM to be ready before adding in the css:
1972 - mw.ready(function(){
 2395+ mw.ready( function() {
19732396 $j( 'head' ).append(
19742397 $j( '<style/>' )
19752398 .attr( {
@@ -1979,7 +2402,7 @@
19802403 cssString
19812404 )
19822405 );
1983 - });
 2406+ } );
19842407 };
19852408
19862409 /**
@@ -2544,10 +2967,15 @@
25452968 // Add the language ( if set )
25462969 if( mw.getConfig( 'userLanguage' ) ) {
25472970 var langCode = mw.getConfig( 'userLanguage' );
2548 - // Upper case the first letter:
2549 - langCode = langCode.substr(0,1).toUpperCase() + langCode.substr( 1, langCode.length );
2550 - loaderRequest.push( 'languages/classes/Language' +
2551 - langCode + '.js' );
 2971+
 2972+ // Grab the language if language class if not default 'en' and
 2973+ // the langCode has a transform Class
 2974+ if( langCode != 'en' && mw.hasLangTransform( langCode ) ){
 2975+ // Upper case the first letter:
 2976+ langCode = langCode.substr(0,1).toUpperCase() + langCode.substr( 1, langCode.length );
 2977+ loaderRequest.push( 'languages/classes/Language' +
 2978+ langCode + '.js' );
 2979+ }
25522980 }
25532981
25542982 mw.setConfig('loaderContext', '' );
@@ -2811,7 +3239,8 @@
28123240 }
28133241
28143242 } )( jQuery );
2815 - }
 3243+ }
 3244+
28163245 } )( window.mw );
28173246
28183247
@@ -2823,10 +3252,7 @@
28243253 // Set global gM shortcut:
28253254 window[ 'gM' ] = mw.getMsg;
28263255
2827 -// Setup legacy global shortcuts:
2828 -var loadRS = mw.lang.loadRS;
28293256
2830 -
28313257 /**
28323258 * Add the core mvEmbed Messages ( will be localized by script server )
28333259 */
Index: branches/js2-work/phase3/js/mwEmbed/jsScriptLoader.php
@@ -251,6 +251,7 @@
252252 }
253253 return false;
254254 }
 255+
255256 /**
256257 * Get the javascript text content from a given classKey
257258 *
Index: branches/js2-work/phase3/js/mwEmbed/remotes/mediaWiki.js
@@ -4,7 +4,8 @@
55 */
66 var urlparts = getRemoteEmbedPath();
77 var mwEmbedHostPath = urlparts[0];
8 -var mwRemoteVersion = 'r117';
 8+var mwRemoteVersion = 'r118';
 9+var mwUseScriptLoader = true;
910
1011 // Log the mwRemote version ( will determine what version of js we get )
1112 if( window.console ){
@@ -21,8 +22,6 @@
2223 }
2324 }
2425
25 -var mwUseScriptLoader = ( mwReqParam['debug'] != 'true');
26 -
2726 // Use wikibits onLoad hook: ( since we don't have js2 / mw object loaded )
2827 addOnloadHook( function() {
2928 doPageSpecificRewrite();
@@ -172,31 +171,30 @@
173172 * ( front-loaded to avoid extra requests )
174173 */
175174 function mwLoadPlayer( callback ){
176 - //Load the video style sheets:
177 - importStylesheetURI( mwEmbedHostPath + '/mwEmbed/skins/common/common.css?' + mwGetReqArgs() );
178 - importStylesheetURI( mwEmbedHostPath + '/mwEmbed/skins/kskin/EmbedPlayer.css?' + mwGetReqArgs() );
179 -
180 - var jsSetVideo = [
 175+ // the jsPlayerRequest includes both javascript and style sheets for the embedPlayer
 176+ var jsPlayerRequest = [
 177+ 'mw.style.common',
181178 'mw.EmbedPlayer',
182179 '$j.ui',
183180 'ctrlBuilder',
184181 '$j.cookie',
185182 '$j.ui.slider',
186183 'kskinConfig',
 184+ 'mw.style.kskin',
187185 '$j.fn.menu',
188186 'mw.TimedText'
189187 ];
190188 // Quick sniff use java if IE and native if firefox
191189 // ( other browsers will run detect and get on-demand )
192190 if (navigator.userAgent.indexOf("MSIE") != -1){
193 - jsSetVideo.push( 'javaEmbed' );
 191+ jsPlayerRequest.push( 'javaEmbed' );
194192 }
195193
196194 if ( navigator.userAgent && navigator.userAgent.indexOf("Firefox") != -1 ){
197 - jsSetVideo.push( 'nativeEmbed' );
 195+ jsPlayerRequest.push( 'nativeEmbed' );
198196 }
199197
200 - loadMwEmbed( jsSetVideo, function() {
 198+ loadMwEmbed( jsPlayerRequest, function() {
201199 callback();
202200 });
203201 }
Index: branches/js2-work/phase3/js/mwEmbed/loader.js
@@ -76,15 +76,6 @@
7777 //If we are in debug mode ( results in fresh debug javascript includes )
7878 'debug' : false,
7979
80 - // Valid language codes ( has a file in /languages/classes/Language{code}.js )
81 - // TODO: mirror the mediaWiki language "fallback" system
82 - 'languageCodeList': ['en', 'am', 'ar', 'bat_smg', 'be_tarak', 'be', 'bh',
83 - 'bs', 'cs', 'cu', 'cy', 'dsb', 'fr', 'ga', 'gd', 'gv', 'he', 'hi',
84 - 'hr', 'hsb', 'hy', 'ksh', 'ln', 'lt', 'lv', 'mg', 'mk', 'mo', 'mt',
85 - 'nso', 'pl', 'pt_br', 'ro', 'ru', 'se', 'sh', 'sk', 'sl', 'sma',
86 - 'sr_ec', 'sr_el', 'sr', 'ti', 'tl', 'uk', 'wa'
87 - ],
88 -
8980 // Default request timeout ( for cases where we inlucde js and normal browser timeout can't be used )
9081 // stored in seconds
9182 'defaultRequestTimeout' : 30,
Index: branches/js2-work/phase3/js/mwEmbed/tests/testLang.html
@@ -11,8 +11,8 @@
1212
1313 mw.ready( function(){
1414 //for just setting one or two to test at a time for debug
15 - //var langTestSet = [ 'lt' ]; //pl
16 - var langTestSet = mw.getConfig( 'languageCodeList' );
 15+ var langTestSet = [ 'es' ]; //pl
 16+ //var langTestSet = mw.getConfig( 'languageCodeList' );
1717
1818 //do mauall script loaders calls to test multiple languages:
1919 function doLangTable( langSet ){
@@ -24,8 +24,12 @@
2525 [0,10],
2626 [1,2],
2727 [3,30]
28 - ]
 28+ ],
 29+ 'contributions-title' : [0,1,2]
2930 };
 31+ // Set-up base convert plural and gender (to restore if no language class is set)
 32+ var baseConvertPlural = mw.lang.convertPlural;
 33+ var baseGender = mw.lang.gender;
3034
3135 var passTest=0;
3236 var failTest=0;
@@ -38,9 +42,16 @@
3943 mw.log(" doProcLangKey: " + langKey );
4044 // Clear out the old digitTransformTable
4145 mw.lang.digitTransformTable = null;
42 - //Load the current language js file
43 - var langName = 'Language' + langKey.substr(0,1).toUpperCase() + langKey.substr( 1,langKey.length );
44 - $j.getScript( '../languages/classes/' + langName + '.js' , function(){
 46+ // Load the current language js file if it has a langKey
 47+ if( mw.hasLangTransform (langKey ) ){
 48+ var langName = 'Language' + langKey.substr(0,1).toUpperCase() + langKey.substr( 1,langKey.length );
 49+ $j.getScript( '../languages/classes/' + langName + '.js' , function(){
 50+ doLangTest();
 51+ });
 52+ } else {
 53+ doLangTest();
 54+ }
 55+ function doLangTest(){
4556 // Get the current language mw.testLang js
4657 $j.getScript( '../../../mwScriptLoader.php?class=mw.testLang&debug=true&uselang='+langKey, function(){
4758 var o='';
@@ -133,7 +144,7 @@
134145 //put the output into the page:
135146 $j('#table_out').append( o );
136147 });
137 - });
 148+ }
138149 }//procc lang key:
139150
140151 doProcLangKey( langSet.pop() );

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r118sysop can now delete pages from edit form too (for redirect pages)magnus_manske10:08, 11 February 2002

Status & tagging log