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

Нет описания правки
Метки: с мобильного устройства из мобильной версии через расширенный мобильный режим
Нет описания правки
Метки: с мобильного устройства из мобильной версии через расширенный мобильный режим
Строка 1137: Строка 1137:
function buildWikitext(text, projectName) {
function buildWikitext(text, projectName) {
return '{{#vardefine:JsonPath|' + projectName + '}}' + text;
return '{{#vardefine:JsonPath|' + projectName + '}}' + text;
}
function refreshForProject(projectName) {
setCurrentJsonPath(projectName);
var root = getContentRoot();
if (!root) return;
var placeholder = createPlaceholderWithSpinner();
root.innerHTML = '';
root.appendChild(placeholder);
getPageWikitext()
.then(function (sourceText) {
var wikitext = buildWikitext(sourceText, projectName);
return parseAndInjectWikiText(wikitext, {
placeholder: placeholder,
targetRoot: root
});
})
.fail(function () {
placeholder.textContent = 'Ошибка загрузки страницы.';
});
}
}


Строка 1168: Строка 1193:
}
}


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


refreshForProject(target.value);
refreshForProject(target.value);
});
});
})(form);


return form;
return form;
}
}


function appendToPortletBody(projectMenu) {
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(projectMenu);
targets.push(portletList);
}
}
}


function appendToAssociatedPages(projectMenu) {
var associatedPages = document.querySelector('#p-associated-pages');
var associatedBody = document.querySelector('#p-associated-pages');
if (associatedPages) {
if (!associatedBody) return;
targets.push(associatedPages);
 
} else {
var li = document.createElement('li');
var associatedPagesRoot = document.querySelector('#p-associated-pages');
li.className = 'minerva__tab';
if (associatedPagesRoot) {
li.appendChild(projectMenu);
targets.push(associatedPagesRoot);
}
}


associatedBody.appendChild(li);
return targets;
}
 
function refreshForProject(projectName) {
setCurrentJsonPath(projectName);
 
var root = getContentRoot();
if (!root) return;
 
var placeholder = createPlaceholderWithSpinner();
 
root.innerHTML = '';
root.appendChild(placeholder);
 
getPageWikitext()
.then(function (sourceText) {
var wikitext = buildWikitext(sourceText, projectName);
 
return parseAndInjectWikiText(wikitext, {
placeholder: placeholder,
targetRoot: root
});
})
.fail(function () {
placeholder.textContent = 'Ошибка загрузки страницы.';
});
}
}


Строка 1262: Строка 1263:
}
}


var menu1 = createProjectMenu(projects, activeProject);
var targets = getTargetContainers();
appendToPortletBody(menu1);
for (var t = 0; t < targets.length; t++) {
 
targets[t].appendChild(createProjectMenu(projects, activeProject));
var menu2 = createProjectMenu(projects, activeProject);
}
appendToAssociatedPages(menu2);


if (preferredProject && preferredNorm !== 'corvax') {
if (preferredProject && preferredNorm !== 'corvax') {