MediaWiki:Common.js: различия между версиями

Нет описания правки
Метка: отменено
Нет описания правки
Метки: с мобильного устройства из мобильной версии через расширенный мобильный режим
 
(не показано 14 промежуточных версий этого же участника)
Строка 63: Строка 63:
name: "server-marines",
name: "server-marines",
connect: "https://game1.station14.ru/marines-main/server/status",
connect: "https://game1.station14.ru/marines-main/server/status",
serverconnect: "ss14s://corvaxcm.space/marines"
serverconnect: "ss14s://corvaxforge.ru/server/cm"
}, {
}, {
name: "server-wega",
name: "server-wega",
Строка 676: Строка 676:
if (!jsonPath) return String(wikiText || '');
if (!jsonPath) return String(wikiText || '');


return '{{#vardefine:JsonPath|' + jsonPath + '}}\n' + String(wikiText || '');
return '{{#vardefine:JsonPath|' + jsonPath + '}}' + String(wikiText || '');
}
}


Строка 788: Строка 788:


var ajaxContainers = root.querySelectorAll('.ajax-load, .ajax-load-link');
var ajaxContainers = root.querySelectorAll('.ajax-load, .ajax-load-link');
var BATCH_SIZE = 1000;
var BATCH_SIZE = 3;
var queue = [];
var queue = [];
var processing = false;
var processing = false;
Строка 1092: Строка 1092:
.replace(/\s+/g, '-')
.replace(/\s+/g, '-')
.replace(/[^A-Za-z0-9_\-\u0400-\u04FF]/g, '');
.replace(/[^A-Za-z0-9_\-\u0400-\u04FF]/g, '');
}
function normalizeProjectName(s) {
return String(s === undefined || s === null ? '' : s)
.trim()
.toLowerCase();
}
}


Строка 1158: Строка 1164:
}
}


for (var ci = 0; ci < containers.length; ci++) {
function createProjectMenu(projects, activeProject) {
var container = containers[ci];
 
var rawText = container.textContent || '';
var items = rawText.split(',');
 
var projects = [];
for (var i = 0; i < items.length; i++) {
var item = items[i].trim();
if (item) {
projects.push(item);
}
}
 
if (projects.length <= 1) {
continue;
}
 
var preferredProject = $.cookie(COOKIE_PROJECT) || '';
var activeProject = projects[0];
 
if (preferredProject && preferredProject !== 'Corvax') {
for (var p = 0; p < projects.length; p++) {
if (projects[p] === preferredProject) {
activeProject = preferredProject;
break;
}
}
}
 
if (!getCurrentJsonPath()) {
setCurrentJsonPath(activeProject);
}
 
var form = document.createElement('form');
var form = document.createElement('form');
form.className = 'js-project-menu';
form.className = 'js-project-menu';
Строка 1219: Строка 1192:
form.appendChild(div);
form.appendChild(div);
}
}
form.addEventListener('change', function (event) {
var target = event.target;
if (!target || target.tagName !== 'INPUT') return;
if (target.type !== 'radio') return;
if (target.name !== 'js-project-selection') return;
if (!target.checked) return;
refreshForProject(target.value);
});
return form;
}
function ensureAssociatedPagesContainer() {
var associatedPages = document.getElementById('p-associated-pages');
if (associatedPages) {
return associatedPages;
}
var headingHolder = document.querySelector('.heading-holder');
var pageHeading = document.querySelector('.heading-holder .page-heading');
if (!headingHolder) {
return null;
}
associatedPages = document.createElement('ul');
associatedPages.id = 'p-associated-pages';
associatedPages.className = 'minerva__tab-container';
if (pageHeading && pageHeading.parentNode === headingHolder) {
if (pageHeading.nextSibling) {
headingHolder.insertBefore(associatedPages, pageHeading.nextSibling);
} else {
headingHolder.appendChild(associatedPages);
}
} else {
headingHolder.appendChild(associatedPages);
}
return associatedPages;
}
function getTargetContainers() {
var targets = [];


var portletList = document.querySelector('#mw-content .mw-portlet-body ul');
var portletList = document.querySelector('#mw-content .mw-portlet-body ul');
if (portletList) {
if (portletList) {
portletList.appendChild(form);
targets.push(portletList);
}
 
var associatedPages = ensureAssociatedPagesContainer();
if (associatedPages) {
targets.push(associatedPages);
}
}


(function (menuNode) {
return targets;
menuNode.addEventListener('change', function (event) {
}
var target = event.target;
if (!target || target.tagName !== 'INPUT') return;
if (target.type !== 'radio') return;
if (target.name !== 'js-project-selection') return;
if (!target.checked) return;


refreshForProject(target.value);
for (var ci = 0; ci < containers.length; ci++) {
});
var container = containers[ci];
})(form);
 
var rawText = container.textContent || '';
var items = rawText.split(',');
 
var projects = [];
for (var i = 0; i < items.length; i++) {
var item = items[i].trim();
if (item) {
projects.push(item);
}
}
 
if (projects.length <= 1) {
continue;
}
 
var preferredProject = $.cookie(COOKIE_PROJECT) || '';
var preferredNorm = normalizeProjectName(preferredProject);
 
var activeProject = projects[0];
 
if (preferredProject && preferredNorm !== 'corvax') {
for (var p = 0; p < projects.length; p++) {
if (normalizeProjectName(projects[p]) === preferredNorm) {
activeProject = projects[p];
break;
}
}
}
 
if (!getCurrentJsonPath()) {
setCurrentJsonPath(activeProject);
}
 
var targets = getTargetContainers();
for (var t = 0; t < targets.length; t++) {
targets[t].appendChild(createProjectMenu(projects, activeProject));
}


if (preferredProject && preferredProject !== 'Corvax') {
if (preferredProject && preferredNorm !== 'corvax') {
for (var k = 0; k < projects.length; k++) {
for (var k = 0; k < projects.length; k++) {
if (projects[k] === preferredProject) {
if (normalizeProjectName(projects[k]) === preferredNorm) {
refreshForProject(preferredProject);
refreshForProject(projects[k]);
break;
break;
}
}