Difference between revisions of "MediaWiki:Common.js"

From Taskman Wiki
Jump to navigation Jump to search
m (i think this code should be classified as a war crime)
Line 3: Line 3:
 
   $("span.mw-linkline").each(function(index) {
 
   $("span.mw-linkline").each(function(index) {
 
     $(this).html($(this).html().replace(/(.+?)(<br>|$)/g, '<a class="external text" href="' + $(this).data("format") + '">$1</a>$2'));
 
     $(this).html($(this).html().replace(/(.+?)(<br>|$)/g, '<a class="external text" href="' + $(this).data("format") + '">$1</a>$2'));
 +
  });
 +
 +
  //Things like IDs in infoboxes should be linklined but also put in an (invisible) table for compression
 +
  $("span.mw-multicol-linkline").each(function(index) {
 +
    var format = $(this).data("format");
 +
    var cols = $(this).data("columns");
 +
    var rows = Math.ceil(($(this).html().match(/(.+?)<br>/g).length + 1) / cols);
 +
    var table = "<table>";
 +
    for (var i = 0; i < rows; i++) {
 +
      table += "<tr>";
 +
      for (var j = 0; j < cols; j++) {
 +
        table += "<td>";
 +
        if (i == rows - 1 && j == cols - 1) {
 +
          table += format ? '<a class="external text" href="' + format.replace("$1", $(this).html().match(/<br>(.+?)$/g)[0])+ '">TEST</a>' : $(this).html().match(/<br>(.+?)$/g)[0];
 +
        } else {
 +
          table += format ? '<a class="external text" href="' + format.replace("$1", $(this).html().match(/(.+?)<br>/g)[cols*i+j])+ '">TEST</a>' : $(this).html().match(/(.+?)<br>/g)[cols*i+j];
 +
        }
 +
        table += "</td>";
 +
      }
 +
      table += "</tr>";
 +
    }
 +
    $(this).html(table + "</table>");
 
   });
 
   });
 
});
 
});

Revision as of 11:56, 16 May 2020

$().ready(function() {
  // Replace linkline spans with individual links
  $("span.mw-linkline").each(function(index) {
    $(this).html($(this).html().replace(/(.+?)(<br>|$)/g, '<a class="external text" href="' + $(this).data("format") + '">$1</a>$2'));
  });

  //Things like IDs in infoboxes should be linklined but also put in an (invisible) table for compression
  $("span.mw-multicol-linkline").each(function(index) {
    var format = $(this).data("format");
    var cols = $(this).data("columns");
    var rows = Math.ceil(($(this).html().match(/(.+?)<br>/g).length + 1) / cols);
    var table = "<table>";
    for (var i = 0; i < rows; i++) {
      table += "<tr>";
      for (var j = 0; j < cols; j++) {
        table += "<td>";
        if (i == rows - 1 && j == cols - 1) {
          table += format ? '<a class="external text" href="' + format.replace("$1", $(this).html().match(/<br>(.+?)$/g)[0])+ '">TEST</a>' : $(this).html().match(/<br>(.+?)$/g)[0];
        } else {
          table += format ? '<a class="external text" href="' + format.replace("$1", $(this).html().match(/(.+?)<br>/g)[cols*i+j])+ '">TEST</a>' : $(this).html().match(/(.+?)<br>/g)[cols*i+j];
        }
        table += "</td>";
      }
      table += "</tr>";
    }
    $(this).html(table + "</table>");
  });
});