[dev] [commit] r1066 - phplib templates/common wwwbase/js

automailer at dexonline.ro automailer at dexonline.ro
Tue Jan 21 16:29:16 EET 2014


Author: cata
Date: Tue Jan 21 16:29:16 2014
New Revision: 1066

Log:
Add Romanian sorting to the MediaWiki sortable tables.

Added:
   wwwbase/js/tablesorter.dev.js
Modified:
   phplib/SmartyWrap.php
   templates/common/wikiArticle.ihtml

Modified: phplib/SmartyWrap.php
==============================================================================
--- phplib/SmartyWrap.php	Tue Jan 21 14:31:12 2014	(r1065)
+++ phplib/SmartyWrap.php	Tue Jan 21 16:29:16 2014	(r1066)
@@ -187,28 +187,31 @@
         break;
       case 'jqnotice':         self::$jsFiles[5] = 'jquery.notice.js'; break;
       case 'jqTableDnd':       self::$jsFiles[6] = 'jquery.tablednd.0.7.min.js?v=1'; break;
-      case 'tablesorter':      self::$jsFiles[7] = 'jquery.tablesorter.min.js?v=3'; break;
-      case 'pager':            self::$jsFiles[8] = 'jquery.tablesorter.pager.js'; break;
-      case 'elfinder':         self::$jsFiles[9] = 'elfinder.min.js?v=1'; break; 
-      case 'windowEngine':     self::$jsFiles[10] = 'jquery-wm.js'; break;
-      case 'cookie':           self::$jsFiles[11] = 'jquery.cookie.js?v=1'; break;
-      case 'dex':              self::$jsFiles[12] = 'dex.js?v=25'; break;
-      case 'flex':             self::$jsFiles[13] = 'flex.js?v=2'; break;
-      case 'mobile':           self::$jsFiles[14] = 'mobile.js?v=2'; break;
-      case 'hangman':          self::$jsFiles[15] = 'hangman.js?v=5'; break;
-      case 'mill':             self::$jsFiles[16] = 'mill.js?v=3'; break;
-      case 'wotd':             self::$jsFiles[17] = 'wotd.js?v=1';
-      case 'lexemEdit':        self::$jsFiles[18] = 'lexemEdit.js?v=10'; break;
-      case 'jcrop':            self::$jsFiles[19] = 'jquery.Jcrop.min.js?v=2'; break;
-      case 'easyui':           self::$jsFiles[20] = 'easyui-1.3.5/easyloader.js?v=1'; break;
-      case 'select2':          self::$jsFiles[21] = 'select2.min.js?v=3'; break;
-      case 'select2Dev':       self::$jsFiles[22] = 'select2Dev.js?v=2'; break;
-      case 'visualTag':        self::$jsFiles[23] = 'visualTag.js'; break;
+      case 'tablesorter':
+        self::$jsFiles[7] = 'jquery.tablesorter.min.js?v=3';
+        self::$jsFiles[8] = 'tablesorter.dev.js?v=1';
+        break;
+      case 'pager':            self::$jsFiles[9] = 'jquery.tablesorter.pager.js'; break;
+      case 'elfinder':         self::$jsFiles[10] = 'elfinder.min.js?v=1'; break; 
+      case 'windowEngine':     self::$jsFiles[11] = 'jquery-wm.js'; break;
+      case 'cookie':           self::$jsFiles[12] = 'jquery.cookie.js?v=1'; break;
+      case 'dex':              self::$jsFiles[13] = 'dex.js?v=25'; break;
+      case 'flex':             self::$jsFiles[14] = 'flex.js?v=2'; break;
+      case 'mobile':           self::$jsFiles[15] = 'mobile.js?v=2'; break;
+      case 'hangman':          self::$jsFiles[16] = 'hangman.js?v=5'; break;
+      case 'mill':             self::$jsFiles[17] = 'mill.js?v=3'; break;
+      case 'wotd':             self::$jsFiles[18] = 'wotd.js?v=1';
+      case 'lexemEdit':        self::$jsFiles[19] = 'lexemEdit.js?v=10'; break;
+      case 'jcrop':            self::$jsFiles[20] = 'jquery.Jcrop.min.js?v=2'; break;
+      case 'easyui':           self::$jsFiles[21] = 'easyui-1.3.5/easyloader.js?v=1'; break;
+      case 'select2':          self::$jsFiles[22] = 'select2.min.js?v=3'; break;
+      case 'select2Dev':       self::$jsFiles[23] = 'select2Dev.js?v=2'; break;
+      case 'visualTag':        self::$jsFiles[24] = 'visualTag.js'; break;
       case 'gallery':          
-        self::$jsFiles[24] = 'colorbox/jquery.colorbox-min.js';
-        self::$jsFiles[25] = 'colorbox/jquery.colorbox-ro.js';
-        self::$jsFiles[26] = 'dexGallery.js?v=2';
-        self::$jsFiles[27] = 'jcanvas.min.js';
+        self::$jsFiles[25] = 'colorbox/jquery.colorbox-min.js';
+        self::$jsFiles[26] = 'colorbox/jquery.colorbox-ro.js';
+        self::$jsFiles[27] = 'dexGallery.js?v=2';
+        self::$jsFiles[28] = 'jcanvas.min.js';
         break;
       default:
         FlashMessage::add("Cannot load JS script {$id}");

Modified: templates/common/wikiArticle.ihtml
==============================================================================
--- templates/common/wikiArticle.ihtml	Tue Jan 21 14:31:12 2014	(r1065)
+++ templates/common/wikiArticle.ihtml	Tue Jan 21 16:29:16 2014	(r1066)
@@ -37,17 +37,6 @@
   {/foreach}
 {/foreach}
 
-{* Some tables have the "sortable" class. Make them sortable. *}
 <script>
-{literal}
-  $(function() {
-    // Add the <thead> element. Mediawiki does not give us that.
-    $('table.sortable').prepend(
-      $('<thead></thead>').append($('table.sortable tr:first').remove())
-    );
-    $("table.sortable").tablesorter({
-      sortList: [[0,0]],
-    });
-  });
-{/literal}
+  $(tablesorterMediaWikiInit);
 </script>

Added: wwwbase/js/tablesorter.dev.js
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ wwwbase/js/tablesorter.dev.js	Tue Jan 21 16:29:16 2014	(r1066)
@@ -0,0 +1,28 @@
+/* Functions on top of the jQuery tablesorter plugin */
+
+var order = 'aăâbcdefghiîjklmnopqrsștțuvwxyz';
+
+/* Sortable tables imported from MediaWiki have the "sortable" class. Make them sortable here too. */
+function tablesorterMediaWikiInit() {
+  // Add the <thead> element. Mediawiki does not give us that.
+  $('table.sortable').prepend(
+    $('<thead></thead>').append($('table.sortable tr:first').remove())
+  );
+  $("table.sortable").tablesorter({
+    textExtraction: extractAscii,
+  });
+}
+
+// Renumber the 31 Romanian letters with ASCII codes 60-90. Discard other characters.
+function extractAscii(node) {
+  var s = $(node).text().toLowerCase();
+  var result = '';
+  for (var i = 0; i < s.length; i++) {
+    var c = s.charAt(i);
+    var pos = order.indexOf(c);
+    if (pos != -1) {
+      result += String.fromCharCode(pos + 60);
+    }
+  }
+  return result;
+}


More information about the Dev mailing list