MediaWiki:Common.js: различия между версиями
Luciana (обсуждение | вклад) Нет описания правки |
Luciana (обсуждение | вклад) Нет описания правки |
||
Строка 2: | Строка 2: | ||
$(document).ready(function() { | $(document).ready(function() { | ||
function fetchReverinYear(callback) { | function fetchReverinYear(callback) { | ||
$. | $.ajax({ | ||
url: "/api.php", | |||
data: { | |||
action: "parse", | |||
page: "Шаблон:Текущий_год_Альдморры", | |||
prop: "wikitext", | |||
format: "json" | |||
callback( | }, | ||
dataType: "json", | |||
success: function(data) { | |||
if (data.parse && data.parse.wikitext) { | |||
let rawText = data.parse.wikitext["*"].trim(); | |||
let reverinYear = parseInt(rawText, 10); | |||
if (!isNaN(reverinYear)) { | |||
console.log("Год Альдморры успешно загружен:", reverinYear); | |||
callback(reverinYear); | |||
} else { | |||
console.error("Ошибка: невозможно прочитать год из шаблона. Получено:", rawText); | |||
callback(null); | |||
} | |||
} else { | } else { | ||
console.error("Ошибка: | console.error("Ошибка: некорректный ответ от API MediaWiki."); | ||
callback(null); | callback(null); | ||
} | } | ||
}, | |||
error: function() { | |||
console.error("Ошибка: не удалось выполнить запрос к API MediaWiki."); | |||
callback(null); | |||
} | } | ||
}); | }); | ||
} | } | ||
Строка 59: | Строка 73: | ||
fetchReverinYear(function(reverinYear) { | fetchReverinYear(function(reverinYear) { | ||
dateDiv.innerText = | if (reverinYear) { | ||
dateDiv.innerText = getReverinDate(reverinYear); | |||
} else { | |||
dateDiv.innerText = "Ошибка загрузки даты"; | |||
} | |||
}); | }); | ||
} | } |
Версия от 17:34, 25 февраля 2025
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */ $(document).ready(function() { function fetchReverinYear(callback) { $.ajax({ url: "/api.php", data: { action: "parse", page: "Шаблон:Текущий_год_Альдморры", prop: "wikitext", format: "json" }, dataType: "json", success: function(data) { if (data.parse && data.parse.wikitext) { let rawText = data.parse.wikitext["*"].trim(); let reverinYear = parseInt(rawText, 10); if (!isNaN(reverinYear)) { console.log("Год Альдморры успешно загружен:", reverinYear); callback(reverinYear); } else { console.error("Ошибка: невозможно прочитать год из шаблона. Получено:", rawText); callback(null); } } else { console.error("Ошибка: некорректный ответ от API MediaWiki."); callback(null); } }, error: function() { console.error("Ошибка: не удалось выполнить запрос к API MediaWiki."); callback(null); } }); } function getReverinDate(reverinYear) { const now = new Date(); const startOfYear = new Date(now.getFullYear(), 0, 1); const dayOfYear = Math.floor((now - startOfYear) / (1000 * 60 * 60 * 24)) + 1; const D_offset = 49; // 18 февраля - 49-й день const D_r = ((dayOfYear - D_offset + 365) % 365) + 1; // Лунный календарь const monthLengths = [30, 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 29]; const monthNames = ["Любимец", "Жрец", "Хранитель", "Правитель", "Воитель", "Хозяин", "Купец", "Творец", "Плут", "Колдун", "Отшельник", "Наставник"]; const weekDays = ["Вивидис", "Аспирис", "Альтис", "Эквилис", "Либерис", "Реновис", "Мистерис"]; let dayCount = D_r, monthIndex = 0; while (dayCount > monthLengths[monthIndex]) { dayCount -= monthLengths[monthIndex]; monthIndex++; } const reverinWeekDay = weekDays[(D_r - 1) % 7]; return `${reverinWeekDay},\n${dayCount} ${monthNames[monthIndex]}, ${reverinYear}`; } function insertReverinDate() { let sidebar = document.getElementById("p-navigation") || document.getElementById("p-tb"); if (sidebar) { let dateDiv = document.createElement("div"); dateDiv.id = "reverinDateWidget"; dateDiv.style.padding = "10px"; dateDiv.style.borderTop = "1px solid #ccc"; dateDiv.style.marginTop = "10px"; dateDiv.style.fontWeight = "bold"; dateDiv.style.whiteSpace = "pre-line"; dateDiv.innerText = "Загрузка..."; sidebar.appendChild(dateDiv); fetchReverinYear(function(reverinYear) { if (reverinYear) { dateDiv.innerText = getReverinDate(reverinYear); } else { dateDiv.innerText = "Ошибка загрузки даты"; } }); } } insertReverinDate(); });