(function (n, e) { var t = {}; var i = "zy-gc-banners"; var a = { init: function (e) { // Расширение настроек по умолчанию заданными параметрами t = n.extend( true, { uri: "teach/control", debug: !0, access: "admin", scale: 0.6, iframeWidth: "540px", }, e ); a.debug("options", e); a.debug("settings", t); // Добавление стилей в head n("head").append(a.getStyles()); // Проверка cookie, чтобы не показывать баннер, если он уже был закрыт let o = window.gcGetCookie(`${i}-not-show`); if (o && "1" === o) { return false; // Баннер показывать не нужно } a.setup(); // Инициализация баннера }, setup: function () { // Проверка, находится ли код внутри iframe и на нужной странице if ( window.frameElement !== null && window.location.pathname.indexOf("/banners") >= 0 ) { a.editFrame(); // Настройка для редактирования внутри iframe } // Проверка прав доступа if (!a.checkAccess()) { return false; // Нет доступа - баннер не инициализируется } // Добавление баннера в body n("body").append(a.template()); // Обработчик события message для получения размеров iframe window.addEventListener( "message", function (e) { if (e.data && e.data.action === "frame-size") { a.debug("event.data", e.data); // Установка размеров баннера и iframe n(`.${i}__banner-content`).css({ width: e.data.width, height: e.data.height, }); n(`#${i}__banner-iframe`).css({ height: e.data.height }); n(`#${i}__banner-wrap`).css({ visibility: "visible" }); // Показ баннера с анимацией } }, false ); // Обработчик события message для закрытия баннера window.addEventListener( "message", function (n) { if (n.data && n.data.action === "close-banner") { a.debug("event.data", n.data); a.close(n.data.id); // Закрытие баннера } }, false ); }, editFrame: function () { // Стили для редактирования баннера внутри iframe n("body").append(` `); n(document).ready(function () { // Скрытие родительских элементов баннера n(`.${i}__parent`).hide(); n(`.${i}__parent`).each(function () { let e = n(this).data("block-id"); let t = `${i}-${e}`; let a = window.gcGetCookie(t) || 1; if (a && "0" !== a) { n(this).show(); setTimeout(() => { window.parent.postMessage({ action: "frame-size", height: n("body").outerHeight(true) + "px", width: n("body").outerWidth(true) + "px", }); }, 1000); // Отправка размеров родительскому окну n(`.${i}__close-banner`).on("click", function () { let e = n(this).closest(`.${i}__parent`); window.parent.postMessage({ action: "close-banner", id: e.data("block-id"), }); }); return false; // Прерывание цикла each } }); }); }, template: function () { // Шаблон баннера (HTML) return `
`; }, checkAccess: function () { a.debug("checkAccess", window.userInfo); let n = false; if (window.userInfo) { if (t.access === "user" && window.userInfo.isInAccount) { n = true; } if (t.access === "manager" && window.userInfo.isManager) { n = true; } if (t.access === "admin" && window.userInfo.isAdmin) { n = true; } } return window.location.pathname.indexOf(t.uri) > 0 && n; }, close: function (e) { let t = `${i}-${e}`; let a = `${i}-not-show`; setTimeout(() => { n(`#${i}__banner-wrap`).remove(); // Удаление баннера // Установка cookie, чтобы больше не показывать баннер window.gcSetCookie(t, 0, { expires: 800, path: "/", priority: "High", }); // Установка cookie, чтобы не показывать баннер временно window.gcSetCookie(a, 1, { expires: 400, path: "/", priority: "High" }); }, 100); }, debug: function (n = "key", e = {}) { // Функция для отладки (вывод в консоль) t.debug; // Эта строка ничего не делает. Нужно добавить console.log }, getUrlParam: function (n) { a.debug("getUrlParam", n); let e = window.location.href; return new URL(e).searchParams.get(n); }, getStorage: function () { if (a.debug("getStorage"), localStorage.getItem(storage_name)) { return JSON.parse(localStorage.getItem(storage_name))[window.lessonId]; } return false; }, updateStorage: function (n) { a.debug("updateStorage", n); let e = JSON.parse(localStorage.getItem(storage_name)) || {}; e[window.lessonId] = { rating: n.rating, comment: n.comment }; localStorage.setItem(storage_name, JSON.stringify(e)); }, show: function (n) {}, hide: function (n) {}, getStyles: function () { // Стили CSS для баннера return ` `; }, }; // Регистрация плагина jQuery n.zygcbanners = function (e) { if (a[e]) { return a[e].apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof e === "object" || !e) { return a.init.apply(this, arguments); } else { n.error("Метод с именем " + e + " не существует для jQuery.zygcbanners"); } }; })(jQuery);