2206
редагувань
Admin (обговорення | внесок) (CreateAccount: inject Thanks + login hint into benefits panel) |
Admin (обговорення | внесок) (Userlogin: register-panel now shows community stats + CTA) |
||
| Рядок 162: | Рядок 162: | ||
/* ======================================== | /* ======================================== | ||
Userlogin: панель реєстрації зі статистикою спільноти | |||
======================================== */ | ======================================== */ | ||
mw.loader.using(["mediawiki.util"], function () { | mw.loader.using(["mediawiki.util", "mediawiki.api"], function () { | ||
$(function () { | $(function () { | ||
var specialName = mw.config.get("wgCanonicalSpecialPageName"); | var specialName = mw.config.get("wgCanonicalSpecialPageName"); | ||
if (specialName !== "Userlogin | if (specialName !== "Userlogin") return; | ||
var loginCard = document.querySelector(".mw-body"); | var loginCard = document.querySelector(".mw-body"); | ||
if (!loginCard) return; | if (!loginCard) return; | ||
if (document.querySelector(".mw-register-panel")) return; | if (document.querySelector(".mw-register-panel")) return; | ||
var panel = document.createElement("aside"); | var panel = document.createElement("aside"); | ||
panel.className = "mw-register-panel"; | panel.className = "mw-register-panel"; | ||
| Рядок 184: | Рядок 178: | ||
var title = document.createElement("div"); | var title = document.createElement("div"); | ||
title.className = "mw-register-panel__title"; | title.className = "mw-register-panel__title"; | ||
title.textContent = | title.textContent = "Долучайтесь до спільноти"; | ||
var sub = document.createElement("div"); | var sub = document.createElement("div"); | ||
sub.className = "mw-register-panel__sub"; | sub.className = "mw-register-panel__sub"; | ||
sub.textContent = | sub.textContent = "Українці допомагають українцям за кордоном"; | ||
: " | var statsList = document.createElement("div"); | ||
statsList.className = "mw-createacct-benefits-list"; | |||
var stats = [ | |||
{ label: "редагувань", cls: "icon-edits" }, | |||
{ label: "сторінки", cls: "icon-pages" }, | |||
{ label: "дописувачі цього місяця", cls: "icon-contributors" } | |||
]; | |||
var nodes = stats.map(function (s) { | |||
var item = document.createElement("div"); | |||
item.className = "mw-number-text " + s.cls; | |||
var h3 = document.createElement("h3"); | |||
h3.textContent = "—"; | |||
var p = document.createElement("p"); | |||
p.textContent = s.label; | |||
item.appendChild(h3); | |||
item.appendChild(p); | |||
return item; | |||
}); | |||
nodes.forEach(function (n) { statsList.appendChild(n); }); | |||
var btn = document.createElement("a"); | var btn = document.createElement("a"); | ||
btn.className = "mw-register-panel__cta"; | btn.className = "mw-register-panel__cta"; | ||
btn.href = mw.util.getUrl("Special:CreateAccount"); | |||
btn.textContent = "Зареєструватись"; | |||
panel.appendChild(title); | panel.appendChild(title); | ||
panel.appendChild(sub); | panel.appendChild(sub); | ||
panel.appendChild(statsList); | |||
panel.appendChild(btn); | panel.appendChild(btn); | ||
loginCard.parentNode.insertBefore(panel, loginCard.nextSibling); | loginCard.parentNode.insertBefore(panel, loginCard.nextSibling); | ||
// Підтягнути живу статистику | |||
new mw.Api().get({ | |||
action: "query", | |||
meta: "siteinfo", | |||
siprop: "statistics", | |||
format: "json" | |||
}).then(function (data) { | |||
var s = data && data.query && data.query.statistics; | |||
if (!s) return; | |||
nodes[0].querySelector("h3").textContent = String(s.edits); | |||
nodes[1].querySelector("h3").textContent = String(s.pages); | |||
nodes[2].querySelector("h3").textContent = String(s.activeusers); | |||
}); | |||
}); | }); | ||
}); | }); | ||
/* ======================================== | /* ======================================== | ||
CreateAccount: "Дякуємо за участь!" + посилання на вхід | CreateAccount: "Дякуємо за участь!" + посилання на вхід | ||
| Рядок 238: | Рядок 261: | ||
benefits.appendChild(hint); | benefits.appendChild(hint); | ||
}); | }); | ||