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

Нет описания правки
Нет описания правки
Строка 1075: Строка 1075:
}
}


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


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);
portletList.appendChild(form);
Строка 1156: Строка 1150:


(function (menuNode) {
(function (menuNode) {
var radios = menuNode.querySelectorAll('input[type="radio"][name="js-project-selection"]');
menuNode.addEventListener('change', function (event) {
for (var r = 0; r < radios.length; r++) {
var target = event.target;
radios[r].addEventListener('change', function () {
if (!target || target.tagName !== 'INPUT') return;
if (!this.checked) return;
if (target.type !== 'radio') return;
refreshForProject(this.value, menuNode);
if (target.name !== 'js-project-selection') return;
});
if (!target.checked) return;
}
 
})(container);
refreshForProject(target.value);
});
})(form);
}
}
}
}