Скрипт для всплывающего окна (popup) средствами smf2.1

Автор iaroslav, 18 июля 2021, 11:11:02

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

iaroslav

Понадобилось сделать себе всплывающее окошко. Решил было сделать его по-старинке, добавив пару <div> для окна и подложки. Но потом заметил, что у smf2.1 уже есть на борту всплывающие окна и вполне можно использовать их... Увы, здесь на форуме никаких решений как это сделать не нашёл, так что пришлось изобретать скриптик самому. Вернее делать свой аналог функции reqOverlayDiv из файлика script.js дефолтной темы. Сам reqOverlayDiv для использования не годится из-за специфичной реализации.
Ниже привожу рабочий пример (с ajax... без ajax он ещё проще будет).
function MyPopup(desktopURL, sHeader)
{
var sAjax_indicator = '<div class="centertext"><img src="' + smf_images_url + '/loading_sm.gif"></div>';
var sIcon = smf_images_url + '/helptopics.png';
var sHeader = typeof(sHeader) == 'string' ? sHeader : help_popup_heading_text;

var oContainer = new smc_Popup({heading: sHeader, content: sAjax_indicator, icon: sIcon});
var oPopup_body = $('#' + oContainer.popup_id).find('.popup_content');

$.ajax({
url: desktopURL,
headers: {
'X-SMF-AJAX': 1
},
xhrFields: {
withCredentials: allow_xhjr_credentials
},
type: "GET",
dataType: "html",
beforeSend: function () {
},
success: function (data, textStatus, xhr) {
var help_content = $('<div id="temp_help">').html(data);
oPopup_body.html(help_content);
},
error: function (xhr, textStatus, errorThrown) {
oPopup_body.html(textStatus);
},
statusCode: {
403: function() {
oPopup_body.html(banned_text);
},
500: function() {
oPopup_body.html('500 Internal Server Error');
}
}
});
return false;
}