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

Нет описания правки
Нет описания правки
Строка 695: Строка 695:
applyParsedHTML(parsedHTML, job.placeholder);
applyParsedHTML(parsedHTML, job.placeholder);
} else {
} else {
if (job.placeholder) job.placeholder.textContent = "API не вернул ожидаемых данных.";
if (job.placeholder) job.placeholder.textContent = job.fallbackText || "API не вернул ожидаемых данных.";
}
}
})
})
.fail(function () {
.fail(function () {
if (job.placeholder) job.placeholder.textContent = "Ошибка при выполнении запроса к API.";
if (job.placeholder) job.placeholder.textContent = job.fallbackText || "Ошибка при выполнении запроса к API.";
})
})
.always(function () {
.always(function () {
Строка 715: Строка 715:
var loadingEl = container.querySelector('.ajax-load-loading');
var loadingEl = container.querySelector('.ajax-load-loading');


if (!contentEl) return;
var contentWikiText = contentEl ? (contentEl.textContent || contentEl.innerText || "").trim() : "";
var loadingWikiText = loadingEl ? (loadingEl.textContent || loadingEl.innerText || "").trim() : "";


var wikiText = (contentEl.textContent || contentEl.innerText || "").trim();
var loadingText = (loadingEl && (loadingEl.getAttribute('data-loading-text') || (loadingEl.textContent || loadingEl.innerText || "").trim())) || "Загрузка...";
if (!wikiText) return;
 
var loadingText = (loadingEl && (loadingEl.textContent || loadingEl.innerText || "").trim()) || "Загрузка...";


if (loadingEl && loadingEl.parentNode) {
if (loadingEl && loadingEl.parentNode) {
Строка 727: Строка 725:
}
}


if (container.classList.contains('ajax-load-link')) {
if (!contentWikiText && !loadingWikiText) return;
container.addEventListener('click', function (ev) {
ev.preventDefault && ev.preventDefault();


if (container.dataset.ajaxLoaded === "1") return;
function createPlaceholderAndEnqueue(isLinkClick) {
container.dataset.ajaxLoaded = "1";
if (container.classList.contains('ajax-load-link') && !isLinkClick) return;


var placeholder = document.createElement("span");
var placeholder = document.createElement("span");
placeholder.className = "ajax-load-placeholder";
placeholder.className = "ajax-load-placeholder";
placeholder.textContent = loadingText;
placeholder.textContent = loadingText;


if (isLinkClick) {
if (container && container.parentNode) {
if (container && container.parentNode) {
container.parentNode.replaceChild(placeholder, container);
container.parentNode.replaceChild(placeholder, container);
Строка 745: Строка 742:
}
}
}
}
} else {
if (contentEl && contentEl.parentNode) {
contentEl.parentNode.replaceChild(placeholder, contentEl);
} else if (container && container.parentNode) {
container.parentNode.replaceChild(placeholder, container);
}
}
if (loadingWikiText) {
queue.push({
wikiText: loadingWikiText,
placeholder: placeholder,
fallbackText: loadingText
});
}
if (contentWikiText) {
queue.push({
wikiText: contentWikiText,
placeholder: placeholder,
fallbackText: "Контент не доступен."
});
}
}
if (container.classList.contains('ajax-load-link')) {
container.addEventListener('click', function (ev) {
ev.preventDefault && ev.preventDefault();


queue.push({ wikiText: wikiText, placeholder: placeholder });
if (container.dataset.ajaxLoaded === "1") return;
container.dataset.ajaxLoaded = "1";
 
createPlaceholderAndEnqueue(true);
processQueue();
processQueue();
}, { once: true });
}, { once: true });
} else {
} else {
var placeholder = document.createElement("span");
createPlaceholderAndEnqueue(false);
placeholder.className = "ajax-load-placeholder";
placeholder.textContent = loadingText;
 
if (contentEl && contentEl.parentNode) {
contentEl.parentNode.replaceChild(placeholder, contentEl);
}
 
queue.push({ wikiText: wikiText, placeholder: placeholder });
}
}
});
});