MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) Нет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
| Строка 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'); | ||
var contentWikiText = contentEl ? (contentEl.textContent || contentEl.innerText || "").trim() : ""; | |||
var loadingWikiText = loadingEl ? (loadingEl.textContent || loadingEl.innerText || "").trim() : ""; | |||
var loadingText = (loadingEl && (loadingEl.getAttribute('data-loading-text') || (loadingEl.textContent || loadingEl.innerText || "").trim())) || "Загрузка..."; | |||
var loadingText = (loadingEl && (loadingEl.textContent || loadingEl.innerText || "").trim()) || "Загрузка..."; | |||
if (loadingEl && loadingEl.parentNode) { | if (loadingEl && loadingEl.parentNode) { | ||
| Строка 727: | Строка 725: | ||
} | } | ||
if ( | if (!contentWikiText && !loadingWikiText) return; | ||
function createPlaceholderAndEnqueue(isLinkClick) { | |||
if (container.classList.contains('ajax-load-link') && !isLinkClick) return; | |||
var placeholder = document.createElement("span"); | |||
placeholder.className = "ajax-load-placeholder"; | |||
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(); | |||
if (container.dataset.ajaxLoaded === "1") return; | |||
container.dataset.ajaxLoaded = "1"; | |||
createPlaceholderAndEnqueue(true); | |||
processQueue(); | processQueue(); | ||
}, { once: true }); | }, { once: true }); | ||
} else { | } else { | ||
createPlaceholderAndEnqueue(false); | |||
} | } | ||
}); | }); | ||