Content deleted Content added
Opencooper (talk | contribs) add check |
Opencooper (talk | contribs) m remove space from click target |
||
(44 intermediate revisions by the same user not shown) | |||
Line 1:
/
// License: CC0
// FIXME: isn't case insensitive; see [[The Psycho Ex-Wife]]
// FIXME: Doesn't work with TLDs like .co.uk
function setup() {
Line 5 ⟶ 10:
if (!(mw.config.get("wgAction") === "view"
&& mw.config.get("wgIsArticle")
&& !___location.search.split('oldid=')[1]
&& !mw.config.get("
return;
}
// Make sure we have somewhere to put result
if (!$("#contentSub").length) {
return;
}
Line 15 ⟶ 25:
// First try to get the official site off Wikidata
function getWikidata() {
getInfobox();
return;
}
Line 34 ⟶ 45:
success: function(response) {
if (typeof response.claims.P856 != "undefined") {
} else {
}
}
Line 47 ⟶ 58:
// Then try getting a website in the infobox
function getInfobox() {
// Get {{Url|}}
infoboxUrl = $(".infobox .url a").last().attr("href");
if (infoboxUrl) {
retrievalMethod = "{{Url}}";
checkRedirect(infoboxUrl);
return;
} else {
// console.log("domainRedirect.js: Infobox {{Url}} failed");
}
// Get |website=
$(".infobox tr").each(function() {
if ($(this).children("th").text() == "Website") {
infoboxUrl = $(this).children("td").children("a").attr("href");
Line 56 ⟶ 79:
if (infoboxUrl) {
retrievalMethod = "website=";
} else {
// console.log("domainRedirect.js: Infobox website= failed");
getExternals();
}
}
// Finally, try to get it from the external links
function getExternals() {
if (officialUrl) {
return;
} else {
// console.log("domainRedirect.js: No official site");
}
// Then try the external links section and
var externalUrl = $("h2").has("#External_links").nextUntil("h2")
.find("li a.external").first( if (externalUrl && /Official/i.test(externalUrl.text())) {
var externalHref = externalUrl.attr("href");
retrievalMethod = "§External_links";
checkRedirect(externalHref);
} else {
// console.log("domainRedirect.js: No external links list found");
console.
}
}
function
var parser = new URL(candidateUrl);
var candidateDomain = parser.hostname;
candidateDomain = candidateDomain.replace(/^w+\d*\./, ""); // get rid of www
// API docs: https://www.mediawiki.org/wiki/API:Query
var apiUrl = ___location.origin + "/w/api.php";
$.ajax({
url:
data: {
action: "query",
format: "json",
titles:
},
success: function(response) {
displayCandidate(candidateUrl);
} else {
console.info("domainRedirect.js: Domain redirect already present: "
+ candidateDomain);
return;
}
}
});
}
function
var pageTitle = mw.config.get("wgTitle");
pageTitle = encodeURIComponent(pageTitle).replace(/'/g, "%27");
var parser = new URL(candidateUrl);
var candidateDomain = parser.hostname;
candidateDomain = candidateDomain.replace(/^w+\d*\./, ""); // get rid of www
$("#contentSub").append("<span class='mw-redirectedfrom' id='domainRedirect'></span>");
var domainType = "___domain";
if (candidateDomain.split(".").length-1 >= 2) {
domainType = "subdomain";
} else if (parser.pathname != "/") {
domainType = "subpage";
}
if (domainType != "___domain") {
console.info("domainRedirect.js: Ignoring " + domainType + " redirect: "
+ candidateDomain);
$("#domainRedirect").hide();
}
var createUrl = "https://en.wikipedia.org/w/index.php?title="
+ candidateDomain + "&action=edit";
var editSummary = "Create redirect (using "
+ "[[User:Opencooper/domainRedirect|domainRedirect.js]])";
var editSummaryEncoded = encodeURIComponent(editSummary);
createUrl += "&preload=User:Opencooper/domainRedirectPreloads.js&preloadparams[]="
+ pageTitle + "&summary=" + editSummaryEncoded;
var domainMarkup = "<a title='via " + retrievalMethod + "' href='"
+ parser.origin + "'>" + candidateDomain + "</a>";
var candidateText = "Possible " + domainType + " redirect: " + domainMarkup;
var createLink = " <a href='" + createUrl + "' title='Create Redirect'>"
+ "+</a>";
var visitLink = "";
if (candidateUrl.replace(/\/$/, "") != parser.origin) {
visitLink = " <a href='" + candidateUrl + "' title='Visit Original Link'>"
+ "→</a>";
}
$("#domainRedirect").append(" (" + candidateText + createLink
+ visitLink + ")");
}
var retrievalMethod;
$(setup);
|