MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
| Строка 1137: | Строка 1137: | ||
function buildWikitext(text, projectName) { | function buildWikitext(text, projectName) { | ||
return '{{#vardefine:JsonPath|' + projectName + '}}' + text; | return '{{#vardefine:JsonPath|' + projectName + '}}' + text; | ||
} | |||
function createProjectMenu(projects, activeProject) { | |||
var form = document.createElement('form'); | |||
form.className = 'js-project-menu'; | |||
for (var j = 0; j < projects.length; j++) { | |||
var projectName = projects[j]; | |||
var projectId = 'project-' + normalizeIdPart(projectName); | |||
var div = document.createElement('div'); | |||
var input = document.createElement('input'); | |||
input.type = 'radio'; | |||
input.name = 'js-project-selection'; | |||
input.value = projectName; | |||
input.id = projectId; | |||
if (projectName === activeProject) { | |||
input.checked = true; | |||
} | |||
var label = document.createElement('label'); | |||
label.htmlFor = projectId; | |||
label.textContent = projectName; | |||
div.appendChild(input); | |||
div.appendChild(label); | |||
form.appendChild(div); | |||
} | |||
(function (menuNode) { | |||
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); | |||
}); | |||
})(form); | |||
return form; | |||
} | |||
function appendToPortletBody(projectMenu) { | |||
var portletList = document.querySelector('#mw-content .mw-portlet-body ul'); | |||
if (portletList) { | |||
portletList.appendChild(projectMenu); | |||
} | |||
} | |||
function appendToAssociatedPages(projectMenu) { | |||
var associatedBody = document.querySelector('#p-associated-pages .mw-portlet-body'); | |||
if (!associatedBody) return; | |||
var li = document.createElement('li'); | |||
li.className = 'js-project-selection-item'; | |||
li.appendChild(projectMenu); | |||
associatedBody.appendChild(li); | |||
} | } | ||
| Строка 1200: | Строка 1262: | ||
} | } | ||
var | var menu1 = createProjectMenu(projects, activeProject); | ||
appendToPortletBody(menu1); | |||
var menu2 = createProjectMenu(projects, activeProject); | |||
appendToAssociatedPages(menu2); | |||
if (preferredProject && preferredNorm !== 'corvax') { | if (preferredProject && preferredNorm !== 'corvax') { | ||