کاربر:YRhyre/ArticleInfo.js: تفاوت میان نسخهها
ظاهر
محتوای حذفشده محتوای افزودهشده
ویرگول جای کاما |
تست |
||
خط ۴۵: | خط ۴۵: | ||
}).done(function (data) { |
}).done(function (data) { |
||
let rightsAbbreviation = { |
let rightsAbbreviation = { |
||
"*": "کاربر", |
|||
"abusefilter": "ویرایشگر پالایه ویرایش", |
"abusefilter": "ویرایشگر پالایه ویرایش", |
||
"accountcreator": "سازنده حساب", |
"accountcreator": "سازنده حساب", |
نسخهٔ ۱۸ ژوئیهٔ ۲۰۲۳، ساعت ۱۵:۰۸
/*<nowiki>
Article Info
Created by: Terasail
Localized by: YRhyre
*/
// jshint esnext: false, esversion: 8
var aiSkin = mw.config.get("skin");
var infoArticleID = mw.config.get("wgArticleId");
var infoAction = mw.config.get("wgAction");
var api = new mw.Api();
var relevantUserName = mw.config.get("wgRelevantUserName");
if (aiSkin === "vector" || aiSkin === "vector-2022") {
if (relevantUserName != null) {
let userInfoHtml = '<div id="p-userinfo" class="vector-menu mw-portlet"><div class="vector-menu-heading">اطلاعات کاربر</div><div class="vector-menu-content"><ul id="usrinfo-ul" class="vector-menu-content-list"></ul></div>';
$(userInfoHtml).insertBefore($("#p-tb"));
if ($("#vector-page-tools").length === 0) {
$("#p-userinfo").addClass("vector-main-menu-group vector-menu-portal");
}
$("#usrinfo-ul").append($("#t-contributions"), [$("#t-log")]);
if (document.getElementById("t-userrights") != null) {
$("#usrinfo-ul").append($("#t-userrights"));
$.when( mw.loader.using( 'mediawiki.util' ), $.ready ).then( function () {
let globalAccount = mw.util.addPortletLink(
'p-userinfo',
"/wiki/Special:CentralAuth/" + relevantUserName,
'حساب سراسری',
't-global-account',
'View global account information', '', ''
);
let xToolsAccount = mw.util.addPortletLink(
'p-userinfo',
"https://xtools.wmflabs.org/ec/" + mw.config.get("wgServerName") + "/" + relevantUserName,
'بازکردن xTools',
't-xtools-account',
'بازکردن اطلاعات کاربر در xTools', '', ''
);
if (infoAction === "view" || infoAction === "edit") {
api.get({
action: "query",
list: "users",
ususers: relevantUserName,
usprop: "editcount|groups|implicitgroups",
format: "json"
}).done(function (data) {
let rightsAbbreviation = {
"*": "کاربر",
"abusefilter": "ویرایشگر پالایه ویرایش",
"accountcreator": "سازنده حساب",
"autoconfirmed": "تاییدشده خودکار",
"autopatrolled": "گشت خودکار",
"bot": "ربات",
"botadmin": "مدیر رباتیک",
"bureaucrat": "دیوانسالار",
"checkuser": "بازرس کاربر",
"confirmed": "تاییدشده",
"eliminator": "ویکیبان",
"extendedconfirmed": "تاییدشده پایدار",
"extendedmover": "انتقالدهننده پیشرفته",
"flow-bot": "ربات بحث ساختارمند",
"image-reviewer": "بازبین تصویر",
"import": "درونریز",
"interface-admin": "مدیر رابط کاربری",
"ipblock-exempt": "معاف",
"patroller": "گشتزن",
"push-subscription-manager": "ماف",
"reviewer": "بازبین",
"rollbacker": "واگردان",
"steward": "ویکیبد",
"suppress": "پنهانگر",
"sysop": "مدیر",
"templateeditor": "ویرایشگر الگو",
"transwiki": "واردکننده تراویکی",
"user": "کاربر",
};
let userData = data.query.users[0];
let groups = userData.groups;
groups = groups.slice(0, 0 - userData.implicitgroups.length);
for (let i = 0; i < groups.length; i++) {
groups[i] = rightsAbbreviation[groups[i]];
}
let styledSpan = '<span> </span><span style="white-space: nowrap;border-left:1px solid #a2a9b1;color:#54595d;padding-left:5px;font-size:0.875rem;font-family:sans-serif;">';
$("#firstHeading").append($(styledSpan + "ویرایشها: " + localize(userData.editcount) + '</span>'));
if (groups.length != 0) {
$("#firstHeading").append($(styledSpan + "گروهها: " + groups.toString().replaceAll(",", "، ") + '</span>'));
}
});
}
});
}
}
if (infoArticleID !== 0 && (infoAction === "view" || infoAction === "edit")) {
api.get({
action: "query",
prop: "pageviews|info|revisions|pageassessments",
pageids: infoArticleID,
pvipdays: "30",
inprop: "protection|watchers",
rvprop: "timestamp|user",
rvlimit: "1",
rvdir: "newer",
palimit: "1",
format: "json"
}).done(function (data) {
data = data.query.pages[infoArticleID];
let serverName = mw.config.get("wgServerName");
let pageName = mw.config.get("wgPageName");
//IDs: infoBar - infoImgs, infoRevs, infoEditors, infoViews, infoWatch, infoCreated, infoXTools.
let spanBorder = 'border-right:1px solid #a2a9b1;';
let spanStyle = 'white-space:nowrap;margin-right:5px;padding-right:5px;margin-top:10px;margin-bottom:5px;';
let infoBarHtml = '<div id="infoBar" class="vector-page-toolbar-container" style="flex-wrap:wrap;"><span id="infoImgs"></span><span id="infoRevs"></span><span id="infoEditors"></span><span id="infoViews"></span><span id="infoWatch"></span><span id="infoCreated"></span><span id="infoXTools"></span></div>';
if (aiSkin === "vector") {
$("#bodyContent").prepend($(infoBarHtml));
$('#infoBar')[0].style = 'border-bottom:1px solid #a2a9b1;padding-bottom:0.25em;';
} else {
$(".vector-page-toolbar").prepend($(infoBarHtml));
}
let barSpans = $("#infoBar").children();
//Assessment & Protection icons
let assessments = {
NA: ["6/6a/Symbol_na_class"],
Draft: ["0/09/Symbol_draft_class"],
Template: ["5/5c/Symbol_template_class"],
Redirect: ["a/a2/Symbol_redirect_class", "c"],
Project: ["7/72/Symbol_project_class"],
Portal: ["e/e2/Symbol_portal_class"],
File: ["9/9c/Symbol_file_class"],
Disambig: ["2/2a/Symbol_dab_class", "c"],
Category: ["9/96/Symbol_category_class"],
List: ["d/db/Symbol_list_class"],
Stub: ["f/f5/Symbol_stub_class"],
Start: ["a/a4/Symbol_start_class"],
C: ["e/e6/Symbol_c_class"],
B: ["5/5f/Symbol_b_class"],
A: ["2/25/Symbol_a_class", "c"],
GA: ["9/94/Symbol_support_vote"],
FM: ["b/bc/Featured_article_star", "c"],
FL: ["b/bc/Featured_article_star", "c"],
FA: ["b/bc/Featured_article_star", "c"],
"": ["e/e0/Symbol_question"]
};
let editLocks = {
move: ["4/44/Move-protection-shackle"],
upload: ["d/d7/Upload-protection-shackle"],
cascade: ["0/0f/Cascade-protection-shackle"],
sysop: ["1/12/Full-protection-shackle-block", "c"],
templateeditor: ["5/53/Template-protection-shackle"],
extendedconfirmed: ["8/8c/Extended-protection-shackle"],
autoconfirmed: ["1/1b/Semi-protection-shackle"]
};
let assessment = data.pageassessments;
let protection = data.protection;
let icons = "";
if (assessment != null) {
icons += createImg(assessments[Object.entries(assessment)[0][1].class], false);
}
for (let i = 0; i < protection.length; i++) {
let protType = protection[i].type;
let protLevel = protection[i].level;
if (icons.includes("Cascade") == false) {
if (protType == "move" || protType == "upload") {
icons += createImg(editLocks[protType], true);
} else if (protType == "edit") {
if (icons.includes("protection") == false) {
icons += createImg(editLocks[protLevel], true);
} else {
icons += createImg(editLocks.cascade, true);
}
}
}
}
if (icons != "") {
$("#infoImgs").append(icons);
$("#infoImgs")[0].style = spanStyle + spanBorder;
}
//Async revision and editor count requests
getEdits(spanStyle + spanBorder);
getEditors(spanStyle + spanBorder);
//Pageviews
let rawViews = Object.entries(data.pageviews);
let totalViews = 0;
for (let i = 0; i < rawViews.length; i++) {
if (typeof rawViews[i][1] == "number") {
totalViews += rawViews[i][1];
}
}
$("#infoViews").append(localize(totalViews) + ' <abbr title="بازدیدها از این صفحه در ۳۰ روز گذشته">بازدید</abbr>');
$("#infoViews")[0].style = spanStyle + spanBorder;
//Page watchers
let watchers = data.watchers;
if (watchers != null) {
$("#infoWatch").append(localize(watchers) + ' <abbr title="کاربرانی که این صفحه را در فهرست پیگیری خود دارند">پیگیر</abbr>');
$("#infoWatch")[0].style = spanStyle + spanBorder;
}
//Page creation
let firstRev = data.revisions[0];
let date = new Date(firstRev.timestamp);
let day = localize(date.getUTCDate());
let month = localizeMonth(date.getUTCMonth());
let year = localize(date.getUTCFullYear()).replace('٬', '');
let dateStr = day + ' ' + month + ' ' + year;
let created = 'ساختهشده در ' + dateStr + '، توسط ';
let firstUser = firstRev.user;
api.get({
action: "query",
list: "users",
ususers: firstUser,
usprop: "editcount|groups|implicitgroups",
format: "json"
}).done(function(data) {
let userQuery = data.query.users[0];
created += '<a href="/wiki/کاربر:' + firstUser + '">' + firstUser + '</a>';
if (typeof (userQuery.editcount) !== "undefined" && typeof (userQuery.groups) !== "undefined") {
created += ' (' + localize(userQuery.editcount) + " ویرایش";
let numRights = userQuery.groups.length - userQuery.implicitgroups.length;
if (numRights > 0) {
created += " | " + localize(numRights) + " گروه";
}
created += ")";
}
$("#infoCreated").append(created);
$("#infoCreated")[0].style = spanStyle + spanBorder;
});
//Page information link
let xToolsLink = '<a target="_blank" href="https://xtools.wmflabs.org/articleinfo/' + serverName + '/' + pageName + '"> بازکردن xTools</a>';
$("#infoXTools").append(xToolsLink);
$("#infoXTools")[0].style = spanStyle + spanBorder;
});
}
}
async function getEdits(style) {
try {
let numEdits = await fetch("https://" + mw.config.get("wgServerName") + "/w/rest.php/v1/page/" + mw.config.get("wgPageName").replaceAll("/", "%2F") + "/history/counts/edits?");
numEdits = await numEdits.json();
numEdits = localize(numEdits.count).replace("30,000", "30k+") + " نسخه";
$("#infoRevs").append(numEdits);
$("#infoRevs")[0].style = style;
} catch( err ) {
console.error(err.message);
}
}
async function getEditors(style) {
try {
let numUsrs = await fetch("https://" + mw.config.get("wgServerName") + "/w/rest.php/v1/page/" + mw.config.get("wgPageName").replaceAll("/", "%2F") + "/history/counts/editors?");
numUsrs = await numUsrs.json();
numUsrs = localize(numUsrs.count).replace("30,000", "30k+") + " ویرایشگر";
$("#infoEditors").append(numUsrs);
$("#infoEditors")[0].style = style;
} catch( err ) {
console.error(err.message);
}
}
function createImg(data, protection) {
if (data != null) {
if (data.length === 1) {
data[1] = "en";
} else if (data[1] === "c") {
data[1] = "commons";
}
let imageStr = '<a href="/wiki/File:' + data[0].slice(5) + '.svg">';
if (protection) {
imageStr = '<a target="_blank" href="/w/index.php?title=Special:Log&type=protect&page=' + mw.config.get("wgPageName") + '">';
}
imageStr += '<img src="//upload.wikimedia.org/wikipedia/' + data[1] + '/thumb/';
imageStr += data[0] + ".svg/25px-" + data[0].slice(5);
imageStr += '.svg.png" decoding="async" width="18" height="18"></a>';
return imageStr;
}
}
function localize(number) {
if (typeof(number) == "number") {
return number.toLocaleString('fa-IR');
}
return number;
}
function localizeMonth(month) {
var months = [
"ژانویه",
"فوریه",
"مارس",
"آوریل",
"مه",
"ژوئن",
"ژوئیه",
"آگوست",
"سپتامبر",
"اکتبر",
"نوامبر",
"دسامبر"
];
return months[month];
}
//</nowiki>[[رده:اسکریپتهای ویکیپدیا]]