Difference between revisions of "MediaWiki:Common.js"
From Discovery Wiki
Jump to navigationJump to searchm (I suspect it doesn't wait for the content to actually be added to the DOM so the sort function has nothing to sort.) |
|||
(48 intermediate revisions by 2 users not shown) | |||
Line 40: | Line 40: | ||
} | } | ||
} | } | ||
− | + | $(DW_createSpoilerLink); | |
function DW_toggleVisibility (obj) { | function DW_toggleVisibility (obj) { | ||
Line 95: | Line 95: | ||
for ( var i = 0; i < Tables.length; i++ ) { | for ( var i = 0; i < Tables.length; i++ ) { | ||
− | if | + | if ( Tables[i].classList.contains( "collapsible" ) ) { |
/* only add button and increment count if there is a header row to work with */ | /* only add button and increment count if there is a header row to work with */ | ||
Line 127: | Line 127: | ||
for ( var i = 0; i < tableIndex; i++ ) { | for ( var i = 0; i < tableIndex; i++ ) { | ||
− | if | + | if ( NavigationBoxes[i].classList.contains( "collapsed" ) || ( tableIndex >= autoCollapse && NavigationBoxes[i].classList.contains( "autocollapse" ) ) ) { |
collapseTable( i ); | collapseTable( i ); | ||
} | } | ||
Line 133: | Line 133: | ||
} | } | ||
− | + | $( createCollapseButtons ); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
/* Overwrite mediawiki's default sort function for tables, fixing how numbers are sorted in table cells if they have a unit attached at the end */ | /* Overwrite mediawiki's default sort function for tables, fixing how numbers are sorted in table cells if they have a unit attached at the end */ | ||
Line 312: | Line 299: | ||
a = a.innerHTML; | a = a.innerHTML; | ||
b = b.innerHTML; | b = b.innerHTML; | ||
− | |||
editCount = /(\d+)(?= edits in the last 30 days| edit in the last 30 days)/g; | editCount = /(\d+)(?= edits in the last 30 days| edit in the last 30 days)/g; | ||
var compA = parseInt(String(a).match(editCount)); | var compA = parseInt(String(a).match(editCount)); | ||
var compB = parseInt(String(b).match(editCount)); | var compB = parseInt(String(b).match(editCount)); | ||
− | |||
return (compA < compB) ? -1 : (compA > compB) ? 1 : 0; | return (compA < compB) ? -1 : (compA > compB) ? 1 : 0; | ||
}); | }); | ||
+ | |||
+ | var userCount = parseInt(document.getElementById("activeUsersEmbed").getAttribute("data-usercount")); | ||
+ | if (userCount>0) { | ||
+ | lis = lis.slice(0,userCount); | ||
+ | } | ||
// Add li objects to ul in order | // Add li objects to ul in order | ||
Line 327: | Line 317: | ||
function getActiveUsers() { | function getActiveUsers() { | ||
− | if(!!document.getElementById( | + | if(!!document.getElementById("activeUsersEmbed")) { |
// Alright, some container somewhere wants to contain a list of active users. Cool. | // Alright, some container somewhere wants to contain a list of active users. Cool. | ||
− | jQuery( | + | jQuery("#activeUsersEmbed").load("https://discoverygc.com/wiki/index.php?title=Special:ActiveUsers .mw-activeusers-intro~ul", function() { |
− | + | var ele = document.querySelector('#activeUsersEmbed ul'); | |
− | + | if (ele) { | |
− | + | sortList(ele); | |
+ | } | ||
}); | }); | ||
} | } | ||
Line 341: | Line 332: | ||
}); | }); | ||
/* ActiveUsers embed plugin end */ | /* ActiveUsers embed plugin end */ | ||
+ | |||
+ | /* disableEditing plugin start */ | ||
+ | /* Call the disableEditing function with an appropriate reason at page load to remove the editing form. */ | ||
+ | /* Will allow users in editPermitted to edit as usual, and will obviously do nothing if JavaScript is */ | ||
+ | /* disabled, but that's not really an issue. */ | ||
+ | |||
+ | var editPermitted = [ "sysop", "bureaucrat" ]; | ||
+ | |||
+ | function disableEditing(reason) { | ||
+ | if ( mw.config.get( "wgUserGroups" ).intersects( editPermitted ) ) return; | ||
+ | jQuery("#editform").html(reason); | ||
+ | } | ||
+ | |||
+ | // jQuery( document ).ready(function() { | ||
+ | // disableEditing("Editing has been temporarily disabled."); | ||
+ | // }); | ||
+ | /* disableEditing plugin end */ | ||
+ | |||
+ | /* code generator plugin start */ | ||
+ | jQuery.expr[':'].textEquals = function(el, i, m) { | ||
+ | var searchText = m[3]; | ||
+ | var match = jQuery(el).text().trim().match("^" + searchText + "$") | ||
+ | return match && match.length > 0; | ||
+ | } | ||
+ | |||
+ | function showBaseDiff(internalNickname) { | ||
+ | jQuery.ajax({ | ||
+ | data: { basenick: internalNickname, disptype: "wiki", submit: "Get+Base+Info"}, | ||
+ | type: "POST", | ||
+ | url: "http://discoverygc.com/wikigen/basegen.php?itemtype=bases", | ||
+ | success: function(response) { | ||
+ | var wCode = jQuery(response).filter("#content").text().trim(); | ||
+ | var imageStr = jQuery("textarea#wpTextbox1").text().match(/(\| *(image|Image|IMAGE) *=.*\.\w*)/g); | ||
+ | if (imageStr !== null) { | ||
+ | wCode = wCode.replace(/(\| *(image|Image|IMAGE) *= *.*)/g, imageStr); | ||
+ | } | ||
+ | jQuery("input#wpSummary").val("Default message: Importing autogenerated base page from code generator."); | ||
+ | jQuery("textarea#wpTextbox1").val(wCode); | ||
+ | jQuery("input#wpDiff").click(); | ||
+ | } | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | function showPlanetDiff(internalNickname) { | ||
+ | jQuery.ajax({ | ||
+ | data: { planetnick: internalNickname, disptype: "wiki", submit: "Get+Base+Info"}, | ||
+ | type: "POST", | ||
+ | url: "http://discoverygc.com/wikigen/basegen.php?itemtype=planets", | ||
+ | success: function(response) { | ||
+ | var wCode = jQuery(response).filter("#content").text().trim(); | ||
+ | var imageStr = jQuery("textarea#wpTextbox1").text().match(/(\| *(image|Image|IMAGE) *=.*\.\w*)/g); | ||
+ | if (imageStr !== null) { | ||
+ | wCode = wCode.replace(/(\| *(image|Image|IMAGE) *= *.*)/g, imageStr); | ||
+ | } | ||
+ | jQuery("input#wpSummary").val("Default message: Importing autogenerated planet page from code generator."); | ||
+ | jQuery("textarea#wpTextbox1").val(wCode); | ||
+ | jQuery("input#wpDiff").click(); | ||
+ | } | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | function showShieldDiff(internalNickname) { | ||
+ | jQuery.ajax({ | ||
+ | data: { shieldselect: internalNickname, disptype: "wiki", submit: "Shield+Info"}, | ||
+ | type: "POST", | ||
+ | url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=shield", | ||
+ | success: function(response) { | ||
+ | var wCode = jQuery(response).filter("#content").text().trim(); | ||
+ | var imageStr = jQuery("textarea#wpTextbox1").text().match(/(\| *(image|Image|IMAGE) *=.*\.\w*)/g); | ||
+ | if (imageStr !== null) { | ||
+ | wCode = wCode.replace(/(\| *(image|Image|IMAGE) *= *.*)/g, imageStr); | ||
+ | } | ||
+ | jQuery("input#wpSummary").val("Default message: Importing autogenerated shield page from code generator."); | ||
+ | jQuery("textarea#wpTextbox1").val(wCode); | ||
+ | jQuery("input#wpDiff").click(); | ||
+ | } | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | function showShipDiff(internalNickname) { | ||
+ | jQuery.ajax({ | ||
+ | data: { shipselect: internalNickname, disptype: "wiki", submit: "Get+Ship+Info"}, | ||
+ | type: "POST", | ||
+ | url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=ship", | ||
+ | success: function(response) { | ||
+ | var wCode = jQuery(response).filter("#content").text().trim(); | ||
+ | var imageStr = jQuery("textarea#wpTextbox1").text().match(/(\| *(image|Image|IMAGE) *=.*\.\w*)/g); | ||
+ | if (imageStr !== null) { | ||
+ | wCode = wCode.replace(/(\| *(image|Image|IMAGE) *= *.*)/g, imageStr); | ||
+ | } | ||
+ | var reviewStr = jQuery("textarea#wpTextbox1").text().match(/({{[R|r](eview|EVIEW)([\s\S]*?)}})/gm); | ||
+ | if (reviewStr !== null) { | ||
+ | reviewStr = reviewStr.join("\n") + "\n==Hardpoints==" | ||
+ | wCode = wCode.replace(/==Hardpoints==/g, reviewStr); | ||
+ | } | ||
+ | jQuery("input#wpSummary").val("Default message: Importing autogenerated ship page from code generator."); | ||
+ | jQuery("textarea#wpTextbox1").val(wCode); | ||
+ | jQuery("input#wpDiff").click(); | ||
+ | } | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | function showWeapDiff(internalNickname) { | ||
+ | jQuery.ajax({ | ||
+ | data: { weapselect: internalNickname, disptype: "wiki", submit: "Weapon+Detail+Info"}, | ||
+ | type: "POST", | ||
+ | url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=weapon", | ||
+ | success: function(response) { | ||
+ | var wCode = jQuery(response).filter("#content").text().trim(); | ||
+ | jQuery("input#wpSummary").val("Default message: Importing autogenerated weapon page from code generator."); | ||
+ | jQuery("textarea#wpTextbox1").val(wCode); | ||
+ | jQuery("input#wpDiff").click(); | ||
+ | } | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | function showIDDiff(internalNickname) { | ||
+ | jQuery.ajax({ | ||
+ | data: { idselect: internalNickname, disptype: "wiki", submit: "ID+Sell+Locations"}, | ||
+ | type: "POST", | ||
+ | url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=ID", | ||
+ | success: function(response) { | ||
+ | var wCode = jQuery(response).filter("#content").text().trim(); | ||
+ | wCode = wCode.replace(/(\*\ \-\ )/g, "*"); // Remove double "bullet points" | ||
+ | wCode = wCode.replace(/(\*\s*\n)/g, ""); // Remove blank list items | ||
+ | jQuery("input#wpSummary").val("Default message: Importing autogenerated ID page from code generator."); | ||
+ | jQuery("textarea#wpTextbox1").val(wCode); | ||
+ | jQuery("input#wpDiff").click(); | ||
+ | } | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | |||
+ | function generateGeneratorQuery(pageName) { | ||
+ | // is the page a ship? if so, generate a button | ||
+ | jQuery.ajax({ | ||
+ | data: { shipselect: "", disptype: "wiki", submit: "Get+Ship+Info"}, | ||
+ | type: "POST", | ||
+ | url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=ship", | ||
+ | success: function(response) { | ||
+ | var internalNickname = jQuery(response).find("option:contains('"+pageName+"')").attr("value"); | ||
+ | if (!internalNickname == 0 && jQuery("textarea#wpTextbox1").text().match(/({{[S|s]hip|HIP)/g) !== null) { | ||
+ | jQuery("<form style=\"display: inline;\"><input onclick=\"showShipDiff('"+internalNickname+"')\" type=\"button\" value=\"Generate code (ship)\"></form><span> Remember to add reviews, links and images when using the <a href=\"http://discoverygc.com/wiki/Code_generator_guide\">code generator</a>. |</span>").insertAfter("#wpDiff"); | ||
+ | return; | ||
+ | } | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | // is the page a base? if so, generate a button | ||
+ | jQuery.ajax({ | ||
+ | data: { basenick: "", disptype: "wiki", submit: "Get+Base+Info"}, | ||
+ | type: "POST", | ||
+ | url: "http://discoverygc.com/wikigen/basegen.php?itemtype=bases", | ||
+ | success: function(response) { | ||
+ | var internalNickname = jQuery(response).find("option:textEquals('"+pageName+"')").attr("value"); | ||
+ | if (!internalNickname == 0) { | ||
+ | jQuery("<form style=\"display: inline;\"><input onclick=\"showBaseDiff('"+internalNickname+"')\" type=\"button\" value=\"Generate code (base)\"></form><span> Remember to add links and images when using the <a href=\"http://discoverygc.com/wiki/Code_generator_guide\">code generator</a>. |</span>").insertAfter("#wpDiff"); | ||
+ | return; | ||
+ | } | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | // is the page a planet? if so, generate a button | ||
+ | jQuery.ajax({ | ||
+ | data: { planetnick: "", disptype: "wiki", submit: "Get+Base+Info"}, | ||
+ | type: "POST", | ||
+ | url: "http://discoverygc.com/wikigen/basegen.php?itemtype=planets", | ||
+ | success: function(response) { | ||
+ | var internalNickname = jQuery(response).find("option:textEquals('"+pageName+"')").attr("value"); | ||
+ | if (!internalNickname == 0) { | ||
+ | jQuery("<form style=\"display: inline;\"><input onclick=\"showPlanetDiff('"+internalNickname+"')\" type=\"button\" value=\"Generate code (planet)\"></form><span> Remember to add links and images when using the <a href=\"http://discoverygc.com/wiki/Code_generator_guide\">code generator</a>. |</span>").insertAfter("#wpDiff"); | ||
+ | return; | ||
+ | } | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | // is the page a gun? if so, generate a button | ||
+ | jQuery.ajax({ | ||
+ | data: { weapselect: "", disptype: "wiki", submit: "Weapon+Detail+Info"}, | ||
+ | type: "POST", | ||
+ | url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=weapon", | ||
+ | success: function(response) { | ||
+ | var internalNickname = jQuery(response).find("option:textEquals('"+pageName+"')").attr("value"); | ||
+ | if (!internalNickname == 0) { | ||
+ | jQuery("<form style=\"display: inline;\"><input onclick=\"showWeapDiff('"+internalNickname+"')\" type=\"button\" value=\"Generate code (gun)\"></form><span> Remember to add links and images when using the <a href=\"http://discoverygc.com/wiki/Code_generator_guide\">code generator</a>. |</span>").insertAfter("#wpDiff"); | ||
+ | return; | ||
+ | } | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | // is the page a shield? if so, generate a button | ||
+ | jQuery.ajax({ | ||
+ | data: { shieldselect: "", disptype: "wiki", submit: "Shield+Info"}, | ||
+ | type: "POST", | ||
+ | url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=shield", | ||
+ | success: function(response) { | ||
+ | var internalNickname = jQuery(response).find("option:textEquals('"+pageName+"')").attr("value"); | ||
+ | if (!internalNickname == 0) { | ||
+ | jQuery("<form style=\"display: inline;\"><input onclick=\"showShieldDiff('"+internalNickname+"')\" type=\"button\" value=\"Generate code (gun)\"></form><span> Remember to add links and images when using the <a href=\"http://discoverygc.com/wiki/Code_generator_guide\">code generator</a>. |</span>").insertAfter("#wpDiff"); | ||
+ | return; | ||
+ | } | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | // is the page an ID? if so, generate a button | ||
+ | if (wgTitle.indexOf("ID") != -1) { | ||
+ | jQuery.ajax({ | ||
+ | data: { idselect: "", disptype: "wiki", submit: "ID+Sell+Locations"}, | ||
+ | type: "POST", | ||
+ | url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=ID", | ||
+ | success: function(response) { | ||
+ | var internalNickname = jQuery(response).find("option:textEquals('"+pageName+"')").attr("value"); | ||
+ | if (!internalNickname == 0) { | ||
+ | jQuery("<form style=\"display: inline;\"><input onclick=\"showIDDiff('"+internalNickname+"')\" type=\"button\" value=\"Generate code (ID)\"></form><span> Remember to add links when using the <a href=\"http://discoverygc.com/wiki/Code_generator_guide\">code generator</a>. |</span>").insertAfter("#wpDiff"); | ||
+ | return; | ||
+ | } | ||
+ | } | ||
+ | }); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | jQuery( document ).ready(function() { | ||
+ | if(!!document.getElementById("editform") && !!!wgCanonicalNamespace) { | ||
+ | generateGeneratorQuery(wgTitle); | ||
+ | } | ||
+ | }); | ||
+ | /* code generator plugin end */ |
Latest revision as of 02:27, 8 July 2018
/* Any JavaScript here will be loaded for all users on every page load. */ /* Event attach functions. */ function DW_eventAttach (obj, event, handler) { if (obj.addEventListener) { obj.addEventListener(event, handler, false); } else if (obj.attachEvent) { var r = obj.attachEvent('on' + event, handler); } else { obj['on' + event] = handler; } } /* Functions for Template:SpoilerWindow */ function DW_createSpoilerLink () { var el_list = document.getElementsByTagName('div'); var el_cur; for (var i = 0, l = el_list.length; i < l; i++){ el_cur = el_list[i]; if ((el_cur.className && el_cur.className == 'dwspoiler')) { var container = el_cur.getElementsByTagName('div'); if (!container.item(1).style.display || container.item(1).style.display == 'block') { var text = document.createTextNode('Hide'); } else { var text = document.createTextNode('Show'); } var link = document.createElement('a'); link.appendChild(text); link.setAttribute('href', 'javascript:void(0);'); DW_eventAttach(link, 'click', function () { DW_toggleVisibility(this); }); var toggle_element = el_cur.getElementsByTagName('span'); toggle_element.item(0).appendChild(document.createTextNode('[')); toggle_element.item(0).appendChild(link); toggle_element.item(0).appendChild(document.createTextNode(']')); } } } $(DW_createSpoilerLink); function DW_toggleVisibility (obj) { var container = obj.parentNode.parentNode.parentNode.getElementsByTagName('div').item(1); if (!container.style.display || container.style.display == 'block') { container.style.display = 'none'; obj.innerHTML = 'Show'; } else { container.style.display = 'block'; obj.innerHTML = 'Hide'; } } /** Collapsible tables ********************************************************* * * Description: Allows tables to be collapsed, showing only the header. See * [[**DOCUMENTATION LINK**]]. * Maintainers: [[**MAINTAINERS**]] */ var autoCollapse = 2; var collapseCaption = "hide"; var expandCaption = "show"; function collapseTable( tableIndex ) { var Button = document.getElementById( "collapseButton" + tableIndex ); var Table = document.getElementById( "collapsibleTable" + tableIndex ); if ( !Table || !Button ) { return false; } var Rows = Table.rows; if ( Button.firstChild.data == collapseCaption ) { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = "none"; } Button.firstChild.data = expandCaption; } else { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = Rows[0].style.display; } Button.firstChild.data = collapseCaption; } } function createCollapseButtons() { var tableIndex = 0; var NavigationBoxes = new Object(); var Tables = document.getElementsByTagName( "table" ); for ( var i = 0; i < Tables.length; i++ ) { if ( Tables[i].classList.contains( "collapsible" ) ) { /* only add button and increment count if there is a header row to work with */ var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0]; if (!HeaderRow) continue; var Header = HeaderRow.getElementsByTagName( "th" )[0]; if (!Header) continue; NavigationBoxes[ tableIndex ] = Tables[i]; Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex ); var Button = document.createElement( "span" ); var ButtonLink = document.createElement( "a" ); var ButtonText = document.createTextNode( collapseCaption ); Button.className = "collapseButton"; //Styles are declared in Common.css ButtonLink.style.color = Header.style.color; ButtonLink.setAttribute( "id", "collapseButton" + tableIndex ); ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" ); ButtonLink.appendChild( ButtonText ); Button.appendChild( document.createTextNode( "[" ) ); Button.appendChild( ButtonLink ); Button.appendChild( document.createTextNode( "]" ) ); Header.insertBefore( Button, Header.childNodes[0] ); tableIndex++; } } for ( var i = 0; i < tableIndex; i++ ) { if ( NavigationBoxes[i].classList.contains( "collapsed" ) || ( tableIndex >= autoCollapse && NavigationBoxes[i].classList.contains( "autocollapse" ) ) ) { collapseTable( i ); } } } $( createCollapseButtons ); /* Overwrite mediawiki's default sort function for tables, fixing how numbers are sorted in table cells if they have a unit attached at the end */ function padnum(str, len) { if (len + 1 >= str.length && str.match(/^\d/)) { str = Array(len + 1 - str.length).join('0') + str; } return str; } function ts_sort_numeric(a,b) { var aa = padnum(ts_parseFloat(a[1]),50); var bb = padnum(ts_parseFloat(b[1]),50); return (aa != bb ? aa - bb : a[2] - b[2]); } // ------------------------------------------------------------------------------- // Force Preview JavaScript code - Start // // To allow any group to bypass being forced to preview, // enter the group name in the permittedGroups array. // E.g. // var permittedGroups = []; // force everyone // var permittedGroups = [ "user"]; // permit logged-in users // var permittedGroups = [ "sysop", "bureaucrat"]; // permit sysop, bureaucrat // ------------------------------------------------------------------------------- var permittedGroups = [ "trusted", "sysop", "bureaucrat" ]; Array.prototype.intersects = function() { // -------------------------------------------------------- // Returns true if any element in the argument array // is the same as an element in this array // -------------------------------------------------------- if ( !arguments.length ) return false; var array2 = arguments[0]; var len1 = this.length; var len2 = array2.length; if ( len2 == 0 ) return false; for ( var i = 0; i < len1; i++ ) { for ( var j = 0; j < len2; j++ ) { if ( this[i] === array2[j] ) return true; } } return false; }; function forcePreview() { if ( mw.config.get( 'wgNamespaceNumber' ) == 10 || mw.config.get( 'wgNamespaceNumber' ) == 8 ) return; // No point forcing preview in the Template or MediaWiki namespaces if ( mw.config.get( "wgAction" ) != "edit" ) return; if ( mw.config.get( "wgUserGroups" ).intersects( permittedGroups ) ) return; var saveButton = document.getElementById( "wpSave" ); if ( !saveButton ) return; saveButton.disabled = true; saveButton.value = "Save page (use preview first)"; saveButton.style.fontWeight = "normal"; document.getElementById("wpPreview").style.fontWeight = "bold"; } jQuery(document).ready( forcePreview ); // ----------------------------------------------------- // Force Preview JavaScript code - End // ----------------------------------------------------- /* Scroll Gallery JS start */ jQuery( document ).ready(function() { if (document.URL.match(/printable/g)) return; function toggleImageFunction(group, remindex, shwindex) { return function() { document.getElementById("ImageGroupsGr" + group + "Im" + remindex).style["display"] = "none"; document.getElementById("ImageGroupsGr" + group + "Im" + shwindex).style["display"] = "block"; return false; }; } var divs = document.getElementsByTagName("div"); var i = 0, j = 0; var units, search; var currentimage; var UnitNode; for (i = 0; i < divs.length; i++) { if (divs[i].className !== "ImageGroup") { continue; } UnitNode = undefined; search = divs[i].getElementsByTagName("div"); for (j = 0; j < search.length; j++) { if (search[j].className !== "ImageGroupUnits") { continue; } UnitNode=search[j]; break; } if (UnitNode === undefined) { continue; } units = []; for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) { var temp = UnitNode.childNodes[j]; if (temp.className === "center") { units.push(temp); } } var rightlink = undefined; var commentText = undefined; for (j = 0; j < units.length; j++) { currentimage = units[j]; currentimage.id = "ImageGroupsGr" + i + "Im" + j; var leftlink = document.createElement("a"); if (commentText !== undefined) { leftlink.setAttribute("title", commentText); } var comment; if (typeof(currentimage.getAttribute("title")) !== "string") { commentText = (j+1) + "/" + units.length; comment = document.createElement("tt").appendChild(document.createTextNode("("+ commentText + ")")); } else { commentText = currentimage.getAttribute("title"); comment = document.createElement("span").appendChild(document.createTextNode(commentText)); currentimage.removeAttribute("title"); } if(rightlink !== undefined) { rightlink.setAttribute("title", commentText); } var imghead = document.createElement("div"); rightlink = document.createElement("a"); if (j !== 0) { leftlink.href = "#"; leftlink.onclick = toggleImageFunction(i, j, j-1); leftlink.appendChild(document.createTextNode("◀")); } if (j !== units.length - 1) { rightlink.href = "#"; rightlink.onclick = toggleImageFunction(i, j, j+1); rightlink.appendChild(document.createTextNode("▶")); } imghead.style["fontSize"] = "110%"; imghead.style["fontweight"] = "bold"; imghead.appendChild(leftlink); imghead.appendChild(document.createTextNode("\xA0")); imghead.appendChild(comment); imghead.appendChild(document.createTextNode("\xA0")); imghead.appendChild(rightlink); if (units.length > 1) { currentimage.insertBefore(imghead,currentimage.childNodes[0]); } if (j !== 0) { currentimage.style["display"] = "none"; } } } }); /* Scroll Gallery JS end */ /* ActiveUsers embed plugin start */ function sortList(ul){ var new_ul = ul.cloneNode(false); // Add all li objects to an array var lis = []; for(var i = ul.childNodes.length; i--;){ if(ul.childNodes[i].nodeName === 'LI') lis.push(ul.childNodes[i]); } // Sort li objects by user edit count lis.sort(function(b, a) { a = a.innerHTML; b = b.innerHTML; editCount = /(\d+)(?= edits in the last 30 days| edit in the last 30 days)/g; var compA = parseInt(String(a).match(editCount)); var compB = parseInt(String(b).match(editCount)); return (compA < compB) ? -1 : (compA > compB) ? 1 : 0; }); var userCount = parseInt(document.getElementById("activeUsersEmbed").getAttribute("data-usercount")); if (userCount>0) { lis = lis.slice(0,userCount); } // Add li objects to ul in order for(var i = 0; i < lis.length; i++) new_ul.appendChild(lis[i]); ul.parentNode.replaceChild(new_ul, ul); } function getActiveUsers() { if(!!document.getElementById("activeUsersEmbed")) { // Alright, some container somewhere wants to contain a list of active users. Cool. jQuery("#activeUsersEmbed").load("https://discoverygc.com/wiki/index.php?title=Special:ActiveUsers .mw-activeusers-intro~ul", function() { var ele = document.querySelector('#activeUsersEmbed ul'); if (ele) { sortList(ele); } }); } } jQuery( document ).ready(function() { getActiveUsers(); }); /* ActiveUsers embed plugin end */ /* disableEditing plugin start */ /* Call the disableEditing function with an appropriate reason at page load to remove the editing form. */ /* Will allow users in editPermitted to edit as usual, and will obviously do nothing if JavaScript is */ /* disabled, but that's not really an issue. */ var editPermitted = [ "sysop", "bureaucrat" ]; function disableEditing(reason) { if ( mw.config.get( "wgUserGroups" ).intersects( editPermitted ) ) return; jQuery("#editform").html(reason); } // jQuery( document ).ready(function() { // disableEditing("Editing has been temporarily disabled."); // }); /* disableEditing plugin end */ /* code generator plugin start */ jQuery.expr[':'].textEquals = function(el, i, m) { var searchText = m[3]; var match = jQuery(el).text().trim().match("^" + searchText + "$") return match && match.length > 0; } function showBaseDiff(internalNickname) { jQuery.ajax({ data: { basenick: internalNickname, disptype: "wiki", submit: "Get+Base+Info"}, type: "POST", url: "http://discoverygc.com/wikigen/basegen.php?itemtype=bases", success: function(response) { var wCode = jQuery(response).filter("#content").text().trim(); var imageStr = jQuery("textarea#wpTextbox1").text().match(/(\| *(image|Image|IMAGE) *=.*\.\w*)/g); if (imageStr !== null) { wCode = wCode.replace(/(\| *(image|Image|IMAGE) *= *.*)/g, imageStr); } jQuery("input#wpSummary").val("Default message: Importing autogenerated base page from code generator."); jQuery("textarea#wpTextbox1").val(wCode); jQuery("input#wpDiff").click(); } }); } function showPlanetDiff(internalNickname) { jQuery.ajax({ data: { planetnick: internalNickname, disptype: "wiki", submit: "Get+Base+Info"}, type: "POST", url: "http://discoverygc.com/wikigen/basegen.php?itemtype=planets", success: function(response) { var wCode = jQuery(response).filter("#content").text().trim(); var imageStr = jQuery("textarea#wpTextbox1").text().match(/(\| *(image|Image|IMAGE) *=.*\.\w*)/g); if (imageStr !== null) { wCode = wCode.replace(/(\| *(image|Image|IMAGE) *= *.*)/g, imageStr); } jQuery("input#wpSummary").val("Default message: Importing autogenerated planet page from code generator."); jQuery("textarea#wpTextbox1").val(wCode); jQuery("input#wpDiff").click(); } }); } function showShieldDiff(internalNickname) { jQuery.ajax({ data: { shieldselect: internalNickname, disptype: "wiki", submit: "Shield+Info"}, type: "POST", url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=shield", success: function(response) { var wCode = jQuery(response).filter("#content").text().trim(); var imageStr = jQuery("textarea#wpTextbox1").text().match(/(\| *(image|Image|IMAGE) *=.*\.\w*)/g); if (imageStr !== null) { wCode = wCode.replace(/(\| *(image|Image|IMAGE) *= *.*)/g, imageStr); } jQuery("input#wpSummary").val("Default message: Importing autogenerated shield page from code generator."); jQuery("textarea#wpTextbox1").val(wCode); jQuery("input#wpDiff").click(); } }); } function showShipDiff(internalNickname) { jQuery.ajax({ data: { shipselect: internalNickname, disptype: "wiki", submit: "Get+Ship+Info"}, type: "POST", url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=ship", success: function(response) { var wCode = jQuery(response).filter("#content").text().trim(); var imageStr = jQuery("textarea#wpTextbox1").text().match(/(\| *(image|Image|IMAGE) *=.*\.\w*)/g); if (imageStr !== null) { wCode = wCode.replace(/(\| *(image|Image|IMAGE) *= *.*)/g, imageStr); } var reviewStr = jQuery("textarea#wpTextbox1").text().match(/({{[R|r](eview|EVIEW)([\s\S]*?)}})/gm); if (reviewStr !== null) { reviewStr = reviewStr.join("\n") + "\n==Hardpoints==" wCode = wCode.replace(/==Hardpoints==/g, reviewStr); } jQuery("input#wpSummary").val("Default message: Importing autogenerated ship page from code generator."); jQuery("textarea#wpTextbox1").val(wCode); jQuery("input#wpDiff").click(); } }); } function showWeapDiff(internalNickname) { jQuery.ajax({ data: { weapselect: internalNickname, disptype: "wiki", submit: "Weapon+Detail+Info"}, type: "POST", url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=weapon", success: function(response) { var wCode = jQuery(response).filter("#content").text().trim(); jQuery("input#wpSummary").val("Default message: Importing autogenerated weapon page from code generator."); jQuery("textarea#wpTextbox1").val(wCode); jQuery("input#wpDiff").click(); } }); } function showIDDiff(internalNickname) { jQuery.ajax({ data: { idselect: internalNickname, disptype: "wiki", submit: "ID+Sell+Locations"}, type: "POST", url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=ID", success: function(response) { var wCode = jQuery(response).filter("#content").text().trim(); wCode = wCode.replace(/(\*\ \-\ )/g, "*"); // Remove double "bullet points" wCode = wCode.replace(/(\*\s*\n)/g, ""); // Remove blank list items jQuery("input#wpSummary").val("Default message: Importing autogenerated ID page from code generator."); jQuery("textarea#wpTextbox1").val(wCode); jQuery("input#wpDiff").click(); } }); } function generateGeneratorQuery(pageName) { // is the page a ship? if so, generate a button jQuery.ajax({ data: { shipselect: "", disptype: "wiki", submit: "Get+Ship+Info"}, type: "POST", url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=ship", success: function(response) { var internalNickname = jQuery(response).find("option:contains('"+pageName+"')").attr("value"); if (!internalNickname == 0 && jQuery("textarea#wpTextbox1").text().match(/({{[S|s]hip|HIP)/g) !== null) { jQuery("<form style=\"display: inline;\"><input onclick=\"showShipDiff('"+internalNickname+"')\" type=\"button\" value=\"Generate code (ship)\"></form><span> Remember to add reviews, links and images when using the <a href=\"http://discoverygc.com/wiki/Code_generator_guide\">code generator</a>. |</span>").insertAfter("#wpDiff"); return; } } }); // is the page a base? if so, generate a button jQuery.ajax({ data: { basenick: "", disptype: "wiki", submit: "Get+Base+Info"}, type: "POST", url: "http://discoverygc.com/wikigen/basegen.php?itemtype=bases", success: function(response) { var internalNickname = jQuery(response).find("option:textEquals('"+pageName+"')").attr("value"); if (!internalNickname == 0) { jQuery("<form style=\"display: inline;\"><input onclick=\"showBaseDiff('"+internalNickname+"')\" type=\"button\" value=\"Generate code (base)\"></form><span> Remember to add links and images when using the <a href=\"http://discoverygc.com/wiki/Code_generator_guide\">code generator</a>. |</span>").insertAfter("#wpDiff"); return; } } }); // is the page a planet? if so, generate a button jQuery.ajax({ data: { planetnick: "", disptype: "wiki", submit: "Get+Base+Info"}, type: "POST", url: "http://discoverygc.com/wikigen/basegen.php?itemtype=planets", success: function(response) { var internalNickname = jQuery(response).find("option:textEquals('"+pageName+"')").attr("value"); if (!internalNickname == 0) { jQuery("<form style=\"display: inline;\"><input onclick=\"showPlanetDiff('"+internalNickname+"')\" type=\"button\" value=\"Generate code (planet)\"></form><span> Remember to add links and images when using the <a href=\"http://discoverygc.com/wiki/Code_generator_guide\">code generator</a>. |</span>").insertAfter("#wpDiff"); return; } } }); // is the page a gun? if so, generate a button jQuery.ajax({ data: { weapselect: "", disptype: "wiki", submit: "Weapon+Detail+Info"}, type: "POST", url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=weapon", success: function(response) { var internalNickname = jQuery(response).find("option:textEquals('"+pageName+"')").attr("value"); if (!internalNickname == 0) { jQuery("<form style=\"display: inline;\"><input onclick=\"showWeapDiff('"+internalNickname+"')\" type=\"button\" value=\"Generate code (gun)\"></form><span> Remember to add links and images when using the <a href=\"http://discoverygc.com/wiki/Code_generator_guide\">code generator</a>. |</span>").insertAfter("#wpDiff"); return; } } }); // is the page a shield? if so, generate a button jQuery.ajax({ data: { shieldselect: "", disptype: "wiki", submit: "Shield+Info"}, type: "POST", url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=shield", success: function(response) { var internalNickname = jQuery(response).find("option:textEquals('"+pageName+"')").attr("value"); if (!internalNickname == 0) { jQuery("<form style=\"display: inline;\"><input onclick=\"showShieldDiff('"+internalNickname+"')\" type=\"button\" value=\"Generate code (gun)\"></form><span> Remember to add links and images when using the <a href=\"http://discoverygc.com/wiki/Code_generator_guide\">code generator</a>. |</span>").insertAfter("#wpDiff"); return; } } }); // is the page an ID? if so, generate a button if (wgTitle.indexOf("ID") != -1) { jQuery.ajax({ data: { idselect: "", disptype: "wiki", submit: "ID+Sell+Locations"}, type: "POST", url: "http://discoverygc.com/wikigen/sell_loc.php?itemtype=ID", success: function(response) { var internalNickname = jQuery(response).find("option:textEquals('"+pageName+"')").attr("value"); if (!internalNickname == 0) { jQuery("<form style=\"display: inline;\"><input onclick=\"showIDDiff('"+internalNickname+"')\" type=\"button\" value=\"Generate code (ID)\"></form><span> Remember to add links when using the <a href=\"http://discoverygc.com/wiki/Code_generator_guide\">code generator</a>. |</span>").insertAfter("#wpDiff"); return; } } }); } } jQuery( document ).ready(function() { if(!!document.getElementById("editform") && !!!wgCanonicalNamespace) { generateGeneratorQuery(wgTitle); } }); /* code generator plugin end */