Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/* from https://nkch.fandom.com/wiki/MediaWiki:DiscussionsRailModule.js */
(function () {
if (!$(".fandom-community-header .explore-menu a[data-tracking='explore-discuss']").length) {
return;
}
var nkch = "undefined" !== typeof window.nkch ? window.nkch : {};
window.nkch = nkch;
nkch.drm = "undefined" !== typeof nkch.drm ? nkch.drm : {};
if (nkch.drm.isActive) {
return;
}
nkch.drm.isActive = true;
function insertToSiderail() {
if (!mw.user.isAnon())
document.querySelector(".sticky-modules-wrapper .recent-wiki-activity").after(nkch.drm.el.section.$e);
else
document.querySelector(".sticky-modules-wrapper").append(nkch.drm.el.section.$e);
}
function init(i18n) {
var now = Math.floor(Date.now() / 1000.0);
/* - elements - */
nkch.drm.el = {
section: {
$e: document.createElement("section"),
header: {
$e: document.createElement("h2"),
icon: {
$e: document.createElementNS("http://www.w3.org/2000/svg", "svg"),
src: {
$e: document.createElementNS("http://www.w3.org/2000/svg", "use")
}
},
text: {
$e: document.createElement("span")
},
},
list: {
$e: document.createElement("ul"),
items: []
},
error: {
$e: document.createElement("div")
}
}
};
/* - section - */
nkch.drm.el.section.$e.classList.add("rail-module", "activity-module", "discussions-activity");
nkch.drm.el.section.$e.id = "discussions-activity-module";
if (document.getElementById("WikiaRail").classList.contains("is-ready")) {
insertToSiderail();
} else {
$("#WikiaRail").on("afterLoad.rail", insertToSiderail);
}
/* - section : header - */
nkch.drm.el.section.header.$e.classList.add("rail-module__header", "has-icon");
nkch.drm.el.section.header.$e.innerHTML = i18n.msg("title").escape();
nkch.drm.el.section.$e.appendChild(nkch.drm.el.section.header.$e);
/* - section : header : icon - */
nkch.drm.el.section.header.icon.$e.classList.add("wds-icon", "wds-icon-small");
nkch.drm.el.section.header.icon.$e.setAttributeNS(null, "viewBox", "0 0 18 18");
nkch.drm.el.section.header.$e.prepend(nkch.drm.el.section.header.icon.$e);
/* - section : header : icon : src - */
nkch.drm.el.section.header.icon.src.$e.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", "#wds-icons-discussions-small");
nkch.drm.el.section.header.icon.$e.appendChild(nkch.drm.el.section.header.icon.src.$e);
/* - section : list - */
nkch.drm.el.section.list.$e.classList.add("activity-items");
nkch.drm.el.section.list.$e.classList.add("rail-module__list");
$.ajax({
url: encodeURI(mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/wikia.php"),
type: "GET",
data: {
controller: "DiscussionThread",
method: "getThreads",
limit: 50
}
}).done(
function (data) {
var discussionsThreadsAll = data._embedded.threads;
var discussionsThreads = discussionsThreadsAll.sort(
function (a, b) {
if (a.modificationDate.epochSecond > b.modificationDate.epochSecond) return -1;
if (a.modificationDate.epochSecond < b.modificationDate.epochSecond) return 1;
return 0;
}
);
if (discussionsThreads.length > 5) discussionsThreads.length = 5;
var i = 0;
function threadsLoop() {
if (i === discussionsThreads.length) {
nkch.drm.el.section.$e.appendChild(nkch.drm.el.section.list.$e);
return;
}
$.ajax({
url: encodeURI(mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/wikia.php"),
type: "GET",
data: {
controller: "DiscussionPost",
method: "getPost",
postId: discussionsThreads[i].lastPostId
}
}).done(
function (post) {
/* - elements - */
var item = {
$e: document.createElement("li"),
content: {
$e: document.createElement("div"),
title: {
$e: document.createElement("div"),
link: {
$e: document.createElement("a"),
}
},
text: {
$e: document.createElement("div"),
lastReply: {
$e: document.createElement("a"),
},
timeago: {
$e: document.createElement("time"),
}
}
}
};
/* - item - */
item.$e.classList.add("activity-item");
nkch.drm.el.section.list.$e.appendChild(item.$e);
/* - item : content - */
item.$e.appendChild(item.content.$e);
/* - item : content : title - */
item.content.title.$e.classList.add("page-title");
item.content.$e.appendChild(item.content.title.$e);
/* - item : content : title : link - */
item.content.title.link.$e.classList.add("discussions-activity__page-title", "page-title-link");
Object.assign(item.content.title.link.$e.style, {
display: "block",
overflow: "hidden",
textOverflow: "ellipsis",
whiteSpace: "nowrap"
});
item.content.title.link.$e.href = encodeURI(mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/f/p/" + post.threadId);
if (discussionsThreads[i].title.length === 0) {
item.content.title.link.$e.innerHTML = i18n.msg("post-by", discussionsThreads[i].createdBy.name).escape();
} else {
item.content.title.link.$e.innerText = discussionsThreads[i].title;
}
item.content.title.$e.appendChild(item.content.title.link.$e);
/* - item : content : text - */
item.content.text.$e.classList.add("edit-info");
Object.assign(item.content.text.$e.style, {
display: "flex"
});
item.content.$e.appendChild(item.content.text.$e);
/* - item : content : text : lastReply - */
item.content.text.lastReply.$e.classList.add("discussions-activity__username", "edit-info-user");
Object.assign(item.content.text.lastReply.$e.style, {
display: "block",
overflow: "hidden",
textOverflow: "ellipsis",
whiteSpace: "nowrap",
color: "rgba(var(--right-rail-text-color--rgb),.75)",
fontSize: "12px",
fontWeight: "400",
maxWidth: "150px"
});
item.content.text.lastReply.$e.href = encodeURI(mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/wiki/" + mw.Title.makeTitle(2, post.createdBy.name).getPrefixedText());
item.content.text.lastReply.$e.innerText = post.createdBy.name;
item.content.text.$e.appendChild(item.content.text.lastReply.$e);
/* - item : content : text : timeago - */
item.content.text.timeago.$e.classList.add("timeago", "discussions-activity__timeago", "edit-info-time");
Object.assign(item.content.text.timeago.$e.style, {
color: "rgba(var(--right-rail-text-color--rgb),.75)",
fontSize: "12px",
fontWeight: "400"
});
var diff = now * 1000 - discussionsThreads[i].modificationDate.epochSecond * 1000,
createdAgo;
var msPerMinute = 60 * 1000,
msPerHour = msPerMinute * 60,
msPerDay = msPerHour * 24,
msPerMonth = msPerDay * 30,
msPerYear = msPerDay * 365;
if (diff < msPerMinute) {
time = Math.round(diff / 1000);
createdAgo = mw.message("timeago-second", time).escaped();
} else if (diff < msPerHour) {
time = Math.round(diff / msPerMinute);
createdAgo = mw.message("timeago-minute", time).escaped();
} else if (diff < msPerDay) {
time = Math.round(diff / msPerHour);
createdAgo = mw.message("timeago-hour", time).escaped();
} else {
time = Math.round(diff / msPerDay);
createdAgo = mw.message("timeago-day", time).escaped();
}
if (diff >= msPerMonth) {
if (diff < msPerYear) {
addtime = Math.round(diff / msPerMonth);
createdAgo = mw.message("timeago-month", addtime).escaped();
} else {
addtime = Math.round(diff / msPerYear);
createdAgo = mw.message("timeago-year", addtime).escaped();
}
}
item.content.text.timeago.$e.innerHTML = createdAgo;
item.content.text.timeago.$e.title = new Date(
discussionsThreads[i].modificationDate.epochSecond * 1000)
.toLocaleString(mw.config.get("wgContentLanguage"),
{
year: "numeric",
month: "long",
day: "numeric",
hour: "numeric",
minute: "numeric"
}
);
item.content.text.$e.appendChild(item.content.text.timeago.$e);
i++;
threadsLoop();
}
);
}
threadsLoop();
}
).fail(
function () {
/* - section : error - */
Object.assign(nkch.drm.el.section.error.$e.style, {
color: "var(--theme-alert-color)"
});
nkch.drm.el.section.error.$e.innerHTML = i18n.msg("error").escape();
nkch.drm.el.section.$e.appendChild(nkch.drm.el.section.error.$e);
return;
}
);
mw.util.addCSS(".discussions-activity__timeago:before { content: '•'; margin: 0 3px; }");
}
mw.hook("dev.i18n").add(
function (i18n) {
i18n.loadMessages("DiscussionsRailModule").done(init);
}
);
importArticle({
type: "script",
article: "u:dev:MediaWiki:I18n-js/code.js"
});
})();