MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) Нет описания правки Метка: отменено |
Pok (обсуждение | вклад) Нет описания правки Метки: с мобильного устройства из мобильной версии через расширенный мобильный режим |
||
| (не показано 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:// | 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 + '}} | 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 = | 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: | ||
} | } | ||
function createProjectMenu(projects, 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. | targets.push(portletList); | ||
} | |||
var associatedPages = ensureAssociatedPagesContainer(); | |||
if (associatedPages) { | |||
targets.push(associatedPages); | |||
} | } | ||
return targets; | |||
} | |||
for (var ci = 0; ci < containers.length; ci++) { | |||
}); | 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 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 && | if (preferredProject && preferredNorm !== 'corvax') { | ||
for (var k = 0; k < projects.length; k++) { | for (var k = 0; k < projects.length; k++) { | ||
if (projects[k] === | if (normalizeProjectName(projects[k]) === preferredNorm) { | ||
refreshForProject( | refreshForProject(projects[k]); | ||
break; | break; | ||
} | } | ||