Скрипты, блоки кода и плагины
- Как отключить работу скриптов в GC
- Рекламная плашка
- IMC калькулятор
- GetFusion
- Body Fat Calculator
- Служебные скрипты FM
- Бот в WhatsApp
- Оформеление GC (до Remake)
- Оформление бокового меню ГК
- Карточка тренинга в GC
- Стилизация страниц со списком уроков FM
- Изображения из кода оформления
- Гибкие права доступа
- Боковая панель FM
- Оформление Remake
- Прямой переход ученика к открытому потоку (подтренингу)
Как отключить работу скриптов в GC
Временное отключение на определенной странице: Добавьте в адресную строку страницы параметр `?offscript=1`. Например, для страницы со списком тренингов ссылка будет выглядеть так: `https://ваш_домен.getcourse.ru/teach/control/stream?offscript=1`. Это отключение действует только для пользователя, который просматривает страницу по этой ссылке.
Рекламная плашка
Настройка рекламной плашки
Добавление ссылок через редирект
Просто создал две страницы редиректа и добавил их в скрипт.

Обновление рекламной плашки
Чтобы заменить плашку, необходимо:
- Обновить ссылку на файл с изображением.
- Заменить ссылку на страницу, куда будет вести плашка при нажатии.
Эти изменения нужно внести на следующих страницах редиректа:
Страница перехода при нажатии на плашку - https://fitnessmama.school/pl/cms/page/editor?id=3811815
Картинка рекламной плашки - https://fitnessmama.school/pl/cms/page/editor?id=3811801
При загрузке картинки в хранилище, доступ должен быть настроен для всех, что бы у неавторизованных пользователей, также отображалась плашка:
Проверка отображения плашки
Что бы проверить как отображается плашка, можно открыть публично доступную страницу ГК в инкогнито.
Например: https://fitnessmama.school/trainings2
Видео про тех. настройку плашки:
Скрыть плашку на определенных страницах
https://fitnessmama.school/pl/cms/layout/update?id=29679#js
Обновление скрипта может занять около 15 мин.
Отображение плашки в аккаунте
Скрипт для плашки
JS
//РЕКЛАМНАЯ ПЛАШКА
// Чтобы исключить отображение для определенной страницы, добавьте путь в массив excludedPages через запятую.
// Например: ["/cms/system/login", "/another/page", "/some/other/page"];
const excludedPages = ["/cms/system/login", "/pl/webinar/show", "/postura_login"];
if (!excludedPages.includes(window.location.pathname)) {
//var chek позволяет исключить отображение в определенных блоках
var chek = $('#ltBlock2132901984, #ltBlock2140587928,); // ID формы виджета
var cookie_max_age = 24 * 60 * 60; //Время жизни cookie в секундах.
var delay = 1; //Задержка показа в миллисекундах, 1000 = 1 секунде.
if (getCookie('popup_per_day') !== 'true') {
setTimeout(function() {
//!window.location.href.includes('/widget/') исключает отображаение плашки во всех виджетах
if (chek.length == 0 && !window.location.href.includes('/widget/')) {
if ($('.gc-main-content').hasClass('with-left-menu')) {
$('.gc-main-content').append('<div class="info-banner menu"><a href="https://fitnessmama.school/plaska_link" target="_blank"><img class="img-responsive banner" src="https://fitnessmama.school/plaska"></a></div>');
} else {
$('.gc-main-content').append('<div class="info-banner"><a href="https://fitnessmama.school/plaska_link" target="_blank"><img class="img-responsive banner" src="https://fitnessmama.school/plaska"></a></div>');
}
} else {
console.log('на странице форма с ГК');
}
$('.info-banner').append('<div class="close-mybtn"></div>');
$('.close-mybtn').click(function() {
$('.info-banner').hide();
setCookie('popup_per_day', 'true', { 'max-age': cookie_max_age });
});
}, delay);
};
};
//FUNCTIONS
function getCookie(name) {
var matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : undefined;
}
function setCookie(name, value, options = {}) {
options = {
path: '/',
secure: true,
// при необходимости добавьте другие значения по умолчанию
...options
};
if (options.expires instanceof Date) {
options.expires = options.expires.toUTCString();
}
var updatedCookie = encodeURIComponent(name) + "=" + encodeURIComponent(value);
for (var optionKey in options) {
updatedCookie += "; " + optionKey;
var optionValue = options[optionKey];
if (optionValue !== true) {
updatedCookie += "=" + optionValue;
}
}
document.cookie = updatedCookie;
}
CSS
/* убрать баннер */
.common-banner-wrapper {
display:none!important;
}
/* Стили для Баннер как у Геткурс */
.info-banner {
width: 400px; /*ширина изображения */
height:120px; /*высота изображения */
display: block;
position: fixed;
bottom: 10px;
left: 10px;
Z-index: 9;
overflow: hidden;
padding: 20px;
}
.info-banner.menu {
width: 400px; /*ширина изображения */
height:120px; /*высота изображения */
display: block;
position: fixed;
bottom: 20px;
left: 90px;
Z-index: 999;
overflow: hidden;
padding: 20px;
}
.info-banner img.banner {
border-radius: 16px; /*радиус скругления изображения*/
box-shadow: 0 0 6px 2px #00000069; /*настройки тени*/
}
.close-mybtn {
cursor: pointer;
position: absolute;
width: 25px;
height: 25px;
top: 10px;
right: 10px;
border-radius: 50%;
background: #fff;
box-shadow: 0 0 10px 1px #00000038;
}
.close-mybtn:before {
content: '✕';
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
color: #000;
font-weight: bold;
line-height: 1;
font-size: 14px;
padding: 6px 6.5px;
}
@media (max-width: 920px) {
.info-banner {
width: 100%; /*ширина изображения */
height:auto; /*высота изображения */
bottom: 10px;
left: 0px;
}
.info-banner.menu {
width: 100%; /*ширина изображения */
height:auto; /*высота изображения */
bottom: 50px;
left: 0px;
}
}
/* Стили для Баннер как у Геткурс */
IMC калькулятор
Экспорт блока
eyJ0eXBlIjoiZm9ybS1ub3JtYWwiLCJwcmVzZXQiOiJmb3JtMDIiLCJwYXJhbXMiOiJ7XCJmb3JtXCI6e1wiaXRlbXNcIjp7XCJwYXJ0c1wiOntcImZpZWxkNDkzNzZcIjp7XCJpbm5lclwiOntcInZhbHVlXCI6XCIgICAgPHN0eWxlPlxcclxcbiAgICAgICAgLmNvbmZpcm0tcnVsZXMtY2hlY2tib3gge1xcclxcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAuYm1pLWNvbnRhaW5lciB7XFxyXFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXHJcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xcclxcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxyXFxuICAgICAgICAgICAgcGFkZGluZzogMjBweDtcXHJcXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xcclxcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxyXFxuICAgICAgICAgICAgbWF4LXdpZHRoOiA4MDBweDtcXHJcXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIC5pbnB1dC1zZWN0aW9uLFxcclxcbiAgICAgICAgLnJlc3VsdC1zZWN0aW9uIHtcXHJcXG4gICAgICAgICAgICBmbGV4OiAxO1xcclxcbiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAuaW5wdXQtc2VjdGlvbiB7XFxyXFxuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2RkZDtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIGxhYmVsIHtcXHJcXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xcclxcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgaW5wdXQsXFxyXFxuICAgICAgICBzZWxlY3Qge1xcclxcbiAgICAgICAgICAgIHdpZHRoOiA5MCU7XFxyXFxuICAgICAgICAgICAgcGFkZGluZzogMTBweDtcXHJcXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xcclxcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XFxyXFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xcclxcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIC5ibWktY29udGFpbmVyIGgyIHtcXHJcXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xcclxcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMzBweDtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIC5yZXN1bHQtc2VjdGlvbiBwIHtcXHJcXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmNhbGN1bGF0ZS1idG4ge1xcclxcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxyXFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXHJcXG4gICAgICAgICAgICB3aWR0aDogOTAlO1xcclxcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7XFxyXFxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN0JGRjtcXHJcXG4gICAgICAgICAgICBjb2xvcjogI2ZmZjtcXHJcXG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XFxyXFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xcclxcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcXHJcXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAuY2FsY3VsYXRlLWJ0bjpob3ZlciB7XFxyXFxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNTZiMztcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIC5yZXN1bHQtc2VjdGlvbiBzcGFuIHtcXHJcXG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgPFxcL3N0eWxlPlxcclxcblxcclxcbiAgICA8ZGl2IGNsYXNzPVxcXCJibWktY29udGFpbmVyXFxcIj5cXHJcXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImlucHV0LXNlY3Rpb25cXFwiPlxcclxcbiAgICAgICAgICAgIDxoMj5JbnRyb2R1IGRhdGVsZTxcXC9oMj5cXHJcXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVxcXCJhZ2VcXFwiPlZcXHUwMGUycnN0YSAoYW5pKTo8XFwvbGFiZWw+XFxyXFxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XFxcIm51bWJlclxcXCIgaWQ9XFxcImFnZVxcXCIgbWluPVxcXCIxXFxcIiBtYXg9XFxcIjEyMFxcXCIgcGxhY2Vob2xkZXI9XFxcIlxcXCI+XFxyXFxuXFxyXFxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cXFwiZ2VuZGVyXFxcIj5TZXg6PFxcL2xhYmVsPlxcclxcbiAgICAgICAgICAgIDxzZWxlY3QgaWQ9XFxcImdlbmRlclxcXCI+XFxyXFxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XFxcIm1hbGVcXFwiPkJcXHUwMTAzcmJhdDxcXC9vcHRpb24+XFxyXFxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XFxcImZlbWFsZVxcXCI+RmVtZWllPFxcL29wdGlvbj5cXHJcXG4gICAgICAgICAgICA8XFwvc2VsZWN0PlxcclxcblxcclxcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XFxcImhlaWdodFxcXCI+XFx1MDBjZW5cXHUwMTAzbFxcdTAyMWJpbWUgKGNtKTo8XFwvbGFiZWw+XFxyXFxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XFxcIm51bWJlclxcXCIgaWQ9XFxcImhlaWdodFxcXCIgbWluPVxcXCI1MFxcXCIgbWF4PVxcXCIyNTBcXFwiIHBsYWNlaG9sZGVyPVxcXCJcXFwiPlxcclxcblxcclxcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XFxcIndlaWdodFxcXCI+R3JldXRhdGUgKGtnKTo8XFwvbGFiZWw+XFxyXFxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XFxcIm51bWJlclxcXCIgaWQ9XFxcIndlaWdodFxcXCIgbWluPVxcXCIyMFxcXCIgbWF4PVxcXCIzMDBcXFwiIHBsYWNlaG9sZGVyPVxcXCJcXFwiPlxcclxcblxcclxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNhbGN1bGF0ZS1idG5cXFwiIG9uY2xpY2s9XFxcImNhbGN1bGF0ZUJNSSgpXFxcIj5DYWxjdWxlYXpcXHUwMTAzIElNQzxcXC9kaXY+XFxyXFxuICAgICAgICA8XFwvZGl2PlxcclxcblxcclxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwicmVzdWx0LXNlY3Rpb25cXFwiPlxcclxcbiAgICAgICAgICAgIDxoMj5SZXp1bHRhdDxcXC9oMj5cXHJcXG4gICAgICAgICAgICA8cD5JTUMtdWwgdFxcdTAxMDN1OjxzcGFuIGlkPVxcXCJibWktcmVzdWx0XFxcIj4tLTxcXC9zcGFuPjxcXC9wPlxcclxcbiAgICAgICAgICAgIDxwPk5pdmVsOiA8c3BhbiBpZD1cXFwiYm1pLWxldmVsXFxcIj4tLTxcXC9zcGFuPjxcXC9wPlxcclxcbiAgICAgICAgICAgIDxwPkRpYXBhem9udWwgc1xcdTAxMDNuXFx1MDEwM3RvczogPHNwYW4gaWQ9XFxcImhlYWx0aHktYm1pXFxcIj4tLTxcXC9zcGFuPjxcXC9wPlxcclxcbiAgICAgICAgICAgIDxwPkdyZXV0YXRlIG9wdGltXFx1MDEwMzo8c3BhbiBpZD1cXFwiaGVhbHRoeS13ZWlnaHRcXFwiPi0tPFxcL3NwYW4+PFxcL3A+XFxyXFxuICAgICAgICAgICAgPHA+UmVjb21hbmRcXHUwMTAzcmk6PHNwYW4gaWQ9XFxcInJlY29tbWVuZGF0aW9uXFxcIj4tLTxcXC9zcGFuPjxcXC9wPlxcclxcbiAgICAgICAgPFxcL2Rpdj5cXHJcXG4gICAgPFxcL2Rpdj5cXHJcXG5cXHJcXG4gICAgPHNjcmlwdD5cXHJcXG4gICAgICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZUJNSSgpIHtcXHJcXG4gICAgICAgICAgICBjb25zdCBhZ2UgPSBwYXJzZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWdlJykudmFsdWUsIDEwKTtcXHJcXG4gICAgICAgICAgICBjb25zdCBnZW5kZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2VuZGVyJykudmFsdWU7XFxyXFxuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVpZ2h0JykudmFsdWUpO1xcclxcbiAgICAgICAgICAgIGNvbnN0IHdlaWdodCA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dlaWdodCcpLnZhbHVlKTtcXHJcXG5cXHJcXG4gICAgICAgICAgICBpZiAoaXNOYU4oYWdlKSB8fCBpc05hTihoZWlnaHQpIHx8IGlzTmFOKHdlaWdodCkpIHtcXHJcXG4gICAgICAgICAgICAgICAgYWxlcnQoXFxcIlZcXHUwMTAzIHJ1Z1xcdTAxMDNtIHNcXHUwMTAzIGNvbXBsZXRhXFx1MDIxYmkgdG9hdGUgY1xcdTAwZTJtcHVyaWxlLlxcXCIpO1xcclxcbiAgICAgICAgICAgICAgICByZXR1cm47XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodE1ldGVycyA9IGhlaWdodCBcXC8gMTAwO1xcclxcbiAgICAgICAgICAgIGNvbnN0IGJtaSA9ICh3ZWlnaHQgXFwvIChoZWlnaHRNZXRlcnMgKiBoZWlnaHRNZXRlcnMpKS50b0ZpeGVkKDIpO1xcclxcblxcclxcbiAgICAgICAgICAgIGxldCBsZXZlbDtcXHJcXG4gICAgICAgICAgICBpZiAoYm1pIDwgMTguNSkge1xcclxcbiAgICAgICAgICAgICAgICBsZXZlbCA9ICdTdWJwb25kZXJhbGknO1xcclxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYm1pID49IDE4LjUgJiYgYm1pIDwgMjUpIHtcXHJcXG4gICAgICAgICAgICAgICAgbGV2ZWwgPSAnU3RhbmRhcmQnO1xcclxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYm1pID49IDI1ICYmIGJtaSA8IDMwKSB7XFxyXFxuICAgICAgICAgICAgICAgIGxldmVsID0gJ0V4Y2VzdWwgZGUgZ3JldXRhdGUnO1xcclxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICAgICAgICAgIGxldmVsID0gJ0dyXFx1MDEwM3NpbWUnO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICBjb25zdCBoZWFsdGh5Qm1pTWluID0gMTguNTtcXHJcXG4gICAgICAgICAgICBjb25zdCBoZWFsdGh5Qm1pTWF4ID0gMjQuOTtcXHJcXG4gICAgICAgICAgICBjb25zdCBoZWFsdGh5V2VpZ2h0TWluID0gKGhlYWx0aHlCbWlNaW4gKiBoZWlnaHRNZXRlcnMgKiBoZWlnaHRNZXRlcnMpLnRvRml4ZWQoMSk7XFxyXFxuICAgICAgICAgICAgY29uc3QgaGVhbHRoeVdlaWdodE1heCA9IChoZWFsdGh5Qm1pTWF4ICogaGVpZ2h0TWV0ZXJzICogaGVpZ2h0TWV0ZXJzKS50b0ZpeGVkKDEpO1xcclxcblxcclxcbiAgICAgICAgICAgIGxldCByZWNvbW1lbmRhdGlvbiA9ICcnO1xcclxcbiAgICAgICAgICAgIGlmICh3ZWlnaHQgPCBoZWFsdGh5V2VpZ2h0TWluKSB7XFxyXFxuICAgICAgICAgICAgICAgIHJlY29tbWVuZGF0aW9uID0gYFRyZWJ1aWUgc1xcdTAxMDMgY1xcdTAwZTJcXHUwMjE5dGlnaSAkeyhoZWFsdGh5V2VpZ2h0TWluIC0gd2VpZ2h0KS50b0ZpeGVkKDEpfSBrZyBwZW50cnUgYSBhdGluZ2Ugbm9ybWEuYDtcXHJcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHdlaWdodCA+IGhlYWx0aHlXZWlnaHRNYXgpIHtcXHJcXG4gICAgICAgICAgICAgICAgcmVjb21tZW5kYXRpb24gPVxcclxcbiAgICAgICAgICAgICAgICAgICAgYFRyZWJ1aWUgc1xcdTAxMDMgc2xcXHUwMTAzYmVcXHUwMjE5dGkgJHsod2VpZ2h0IC0gaGVhbHRoeVdlaWdodE1heCkudG9GaXhlZCgxKX0ga2cgcGVudHJ1IGEgYXRpbmdlIG5vcm1hLmA7XFxyXFxuICAgICAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICAgICAgcmVjb21tZW5kYXRpb24gPSAnR3JldXRhdGVhIGR2cy4gZXN0ZSBcXHUwMGVlbiBsaW1pdGVsZSBub3JtYWxlLic7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdibWktcmVzdWx0JykudGV4dENvbnRlbnQgPSBibWk7XFxyXFxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JtaS1sZXZlbCcpLnRleHRDb250ZW50ID0gbGV2ZWw7XFxyXFxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlYWx0aHktYm1pJykudGV4dENvbnRlbnQgPSBgJHtoZWFsdGh5Qm1pTWlufSAtICR7aGVhbHRoeUJtaU1heH1gO1xcclxcbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWFsdGh5LXdlaWdodCcpLnRleHRDb250ZW50ID0gYCR7aGVhbHRoeVdlaWdodE1pbn0ga2cgLSAke2hlYWx0aHlXZWlnaHRNYXh9IGtnYDtcXHJcXG4gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjb21tZW5kYXRpb24nKS50ZXh0Q29udGVudCA9IHJlY29tbWVuZGF0aW9uO1xcclxcbiAgICAgICAgfVxcclxcbiAgICA8XFwvc2NyaXB0PlwifSxcIm5hbWVcIjpcImZpZWxkNDkzNzZcIixcInBhcnRUeXBlXCI6XCJodG1sXCIsXCJoQWxpZ25cIjpcIlwiLFwibWFyZ2luVG9wXCI6XCJcIixcIm1hcmdpbkJvdHRvbVwiOlwiXCIsXCJ0ZXh0Q29sb3JcIjpcIlwiLFwibGluZUhlaWdodFwiOlwiXCIsXCJlbGVtZW50Q3NzQ2xhc3NcIjpcIlwifX19LFwiaGFuZGxlclwiOlwiXCIsXCJmb3JtQm94XCI6e1wiYmdjb2xvclwiOlwiI0YwRjBGMFwiLFwiY29sb3JcIjpcIlwiLFwiYmdpbWFnZVwiOntcImhhc2hcIjpcIlwifSxcImJvcmRlclwiOntcIndpZHRoXCI6XCIwcHhcIixcInR5cGVcIjpcInNvbGlkXCIsXCJjb2xvclwiOlwiIzk5OTk5OVwiLFwicmFkaXVzXCI6XCJcIn0sXCJwYWRkaW5nc1wiOntcImhvcml6b250YWxcIjpcIjQwcHhcIixcInZlcnRpY2FsXCI6XCIzMHB4XCJ9LFwiZmxleERpcmVjdGlvblwiOlwiY29sdW1uXCIsXCJ0ZXh0QWxpZ25cIjpcIlwifX0sXCJibG9ja0NvZGVcIjpcIjczOWVlXCIsXCJ2aWV3QmxvY2tMZWZ0T2Zmc2V0XCI6XCIyXCIsXCJ2aWV3QmxvY2tXaWR0aFwiOlwiOFwiLFwiYmxvY2tQYWRkaW5nVG9wXCI6XCIyLjVcIixcImJsb2NrUGFkZGluZ0JvdHRvbVwiOlwiMi41XCIsXCJibG9ja0JhY2tncm91bmRDb2xvclwiOlwiXCIsXCJibG9ja0ZvcmVncm91bmRDb2xvclwiOlwiXCIsXCJibG9ja0xpbmtDb2xvclwiOlwiXCIsXCJibG9ja0ZvbnRcIjpcIlwiLFwiYmxvY2tGb250SGVhZGVyXCI6XCJcIixcImJsb2NrQ3NzQ2xhc3NcIjpcIlwiLFwiYmxvY2tDb3ZlclwiOntcImltYWdlXCI6e1wiaGFzaFwiOlwiXCJ9LFwiYmFja2dyb3VuZFR5cGVcIjpcInNjcm9sbFwiLFwiaGVpZ2h0XCI6XCIxMDB2aFwiLFwidmlkZW9cIjp7XCJzcmNfdmlkZW9fbGlua1wiOlwiXCIsXCJhdXRvcGxheVwiOlwiMFwiLFwidmltZW9faGFzaFwiOlwiXCJ9LFwiYmFja2dyb3VuZE9wYWNpdHlTdGFydFwiOlwiMC4zXCIsXCJiYWNrZ3JvdW5kT3BhY2l0eUZpbmlzaFwiOlwiMC42XCJ9LFwiYm94XCI6e1wiYmdjb2xvclwiOlwiI0YwRjBGMFwiLFwiY29sb3JcIjpcIlwiLFwiYmdpbWFnZVwiOntcImhhc2hcIjpcIlwifSxcImJvcmRlclwiOntcIndpZHRoXCI6XCIwcHhcIixcInR5cGVcIjpcInNvbGlkXCIsXCJjb2xvclwiOlwiIzk5OTk5OVwiLFwicmFkaXVzXCI6XCJcIn0sXCJwYWRkaW5nc1wiOntcImhvcml6b250YWxcIjpcIjQwcHhcIixcInZlcnRpY2FsXCI6XCIzMHB4XCJ9fSxcImlzTW9kYWxcIjp7XCJwb3B1cFR5cGVcIjpcInBvcHVwXCIsXCJtb2RhbFdpZHRoXCI6XCJcIixcIm1vZGFsQ2xhc3NcIjpcIlwifSxcImJsb2NrQ2xpY2tBY3Rpb25cIjp7XCJ0eXBlXCI6XCJcIixcImxpbmtcIjpcIlwiLFwiamF2YXNjcmlwdFwiOlwiXCIsXCJmb3JtVHlwZVwiOlwic3Vic2NyaWJlXCIsXCJwb3NpdGlvblwiOntcIm9mZmVyX2lkXCI6XCJcIn0sXCJmb3JtVGl0bGVcIjpcIlwiLFwiZm9ybUJ1dHRvblRpdGxlXCI6XCJcIixcImZvcm1CbG9ja0NvZGVcIjpcIlwiLFwibW9kYWxCbG9ja0NvZGVcIjpcIlwifSxcImJsb2NrRmxleFwiOntcImJhc2lzXCI6XCJcIixcInNocmlua1wiOlwiXCIsXCJncm93XCI6XCJcIn19IiwiY3NzIjpudWxsfQ==
HTML
<style>
.confirm-rules-checkbox {
display: none;
}
.bmi-container {
display: flex;
flex-direction: row;
background-color: #fff;
padding: 20px;
border-radius: 10px;
box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1);
max-width: 800px;
width: 100%;
}
.input-section,
.result-section {
flex: 1;
padding: 20px;
}
.input-section {
border-right: 1px solid #ddd;
}
label {
display: block;
margin-bottom: 10px;
font-weight: bold;
}
input,
select {
width: 90%;
padding: 10px;
margin-bottom: 15px;
border: 1px solid #ddd;
border-radius: 5px;
font-size: 16px;
}
.bmi-container h2 {
margin-bottom: 20px;
font-size: 30px;
}
.result-section p {
margin-bottom: 10px;
}
.calculate-btn {
display: flex;
justify-content: center;
align-items: center;
width: 90%;
padding: 10px;
background-color: #007BFF;
color: #fff;
border: none;
border-radius: 5px;
font-size: 16px;
cursor: pointer;
}
.calculate-btn:hover {
background-color: #0056b3;
}
.result-section span {
font-weight: bold;
}
</style>
<div class="bmi-container">
<div class="input-section">
<h2>Introdu datele</h2>
<label for="age">Vârsta (ani):</label>
<input type="number" id="age" min="1" max="120" placeholder="">
<label for="gender">Sex:</label>
<select id="gender">
<option value="male">Bărbat</option>
<option value="female">Femeie</option>
</select>
<label for="height">Înălțime (cm):</label>
<input type="number" id="height" min="50" max="250" placeholder="">
<label for="weight">Greutate (kg):</label>
<input type="number" id="weight" min="20" max="300" placeholder="">
<div class="calculate-btn" onclick="calculateBMI()">Calculează IMC</div>
</div>
<div class="result-section">
<h2>Rezultat</h2>
<p>IMC-ul tău:<span id="bmi-result">--</span></p>
<p>Nivel: <span id="bmi-level">--</span></p>
<p>Diapazonul sănătos: <span id="healthy-bmi">--</span></p>
<p>Greutate optimă:<span id="healthy-weight">--</span></p>
<p>Recomandări:<span id="recommendation">--</span></p>
</div>
</div>
<script>
function calculateBMI() {
const age = parseInt(document.getElementById('age').value, 10);
const gender = document.getElementById('gender').value;
const height = parseFloat(document.getElementById('height').value);
const weight = parseFloat(document.getElementById('weight').value);
if (isNaN(age) || isNaN(height) || isNaN(weight)) {
alert("Vă rugăm să completați toate câmpurile.");
return;
}
const heightMeters = height / 100;
const bmi = (weight / (heightMeters * heightMeters)).toFixed(2);
let level;
if (bmi < 18.5) {
level = 'Subponderali';
} else if (bmi >= 18.5 && bmi < 25) {
level = 'Standard';
} else if (bmi >= 25 && bmi < 30) {
level = 'Excesul de greutate';
} else {
level = 'Grăsime';
}
const healthyBmiMin = 18.5;
const healthyBmiMax = 24.9;
const healthyWeightMin = (healthyBmiMin * heightMeters * heightMeters).toFixed(1);
const healthyWeightMax = (healthyBmiMax * heightMeters * heightMeters).toFixed(1);
let recommendation = '';
if (weight < healthyWeightMin) {
recommendation = `Trebuie să câștigi ${(healthyWeightMin - weight).toFixed(1)} kg pentru a atinge norma.`;
} else if (weight > healthyWeightMax) {
recommendation =
`Trebuie să slăbești ${(weight - healthyWeightMax).toFixed(1)} kg pentru a atinge norma.`;
} else {
recommendation = 'Greutatea dvs. este în limitele normale.';
}
document.getElementById('bmi-result').textContent = bmi;
document.getElementById('bmi-level').textContent = level;
document.getElementById('healthy-bmi').textContent = `${healthyBmiMin} - ${healthyBmiMax}`;
document.getElementById('healthy-weight').textContent = `${healthyWeightMin} kg - ${healthyWeightMax} kg`;
document.getElementById('recommendation').textContent = recommendation;
}
</script>
GetFusion
Body Fat Calculator
Экспорт блока
eyJ0eXBlIjoicmF3LWh0bWwiLCJwcmVzZXQiOiJyYXctaHRtbCIsInBhcmFtcyI6IntcImJsb2NrQ29kZVwiOlwiYzRhNjRcIixcIm5hbWVcIjpcIlwiLFwicmF3VmFsdWVcIjpcIjxzdHlsZT5cXG4gICAgXFwvKiBib2R5IHtcXG4gICAgICAgICAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7XFxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmNTtcXG4gICAgICAgICAgICBtYXJnaW46IDA7XFxuICAgICAgICAgICAgcGFkZGluZzogMDtcXG4gICAgICAgIH0gKlxcL1xcblxcbiAgICAubW5mc3QtYmZjIHtcXG4gICAgICAgIG1heC13aWR0aDogNTAwcHg7XFxuICAgICAgICBtYXJnaW46IDUwcHggYXV0bztcXG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgICB9XFxuXFxuICAgIC5tbmZzdC1iZmMgaDEge1xcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgY29sb3I6ICMzMzM7XFxuICAgIH1cXG5cXG4gICAgLm1uZnN0LWJmYyBsYWJlbCB7XFxuICAgICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcXG4gICAgICAgIGNvbG9yOiAjNTU1O1xcbiAgICB9XFxuXFxuICAgIC5tbmZzdC1iZmMgaW5wdXQsXFxuICAgIC5tbmZzdC1iZmMgc2VsZWN0IHtcXG4gICAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgICAgcGFkZGluZzogMTBweDtcXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XFxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgICB9XFxuXFxuICAgIC5tbmZzdC1iZmMgYnV0dG9uIHtcXG4gICAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgICAgcGFkZGluZzogMTJweDtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7XFxuICAgICAgICBjb2xvcjogd2hpdGU7XFxuICAgICAgICBib3JkZXI6IG5vbmU7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XFxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgIH1cXG5cXG4gICAgLm1uZnN0LWJmYyBidXR0b246aG92ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzIxODgzODtcXG4gICAgfVxcblxcbiAgICAubW5mc3QtYmZjIC5yZXN1bHRzIHtcXG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XFxuICAgIH1cXG5cXG4gICAgLm1uZnN0LWJmYyAucmVzdWx0LWl0ZW0ge1xcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcXG4gICAgfVxcblxcbiAgICAubW5mc3QtYmZjIC5yZXN1bHQtbGFiZWwge1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgICAgICBjb2xvcjogIzMzMztcXG4gICAgfVxcbjxcXC9zdHlsZT5cXG5cXG48ZGl2IGNsYXNzPVxcXCJtbmZzdC1iZmNcXFwiPlxcbiAgICA8aDE+Qm9keSBGYXQgQ2FsY3VsYXRvcjxcXC9oMT5cXG5cXG4gICAgPGxhYmVsIGZvcj1cXFwiZ2VuZGVyXFxcIj5TZXg6PFxcL2xhYmVsPlxcbiAgICA8c2VsZWN0IGlkPVxcXCJnZW5kZXJcXFwiIG9uY2hhbmdlPVxcXCJ0b2dnbGVIaXBGaWVsZCgpXFxcIj5cXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XFxcIm1hbGVcXFwiPmJcXHUwMTAzcmJhdDxcXC9vcHRpb24+XFxuICAgICAgICA8b3B0aW9uIHZhbHVlPVxcXCJmZW1hbGVcXFwiPmZlbWVpZTxcXC9vcHRpb24+XFxuICAgIDxcXC9zZWxlY3Q+XFxuXFxuICAgIDxsYWJlbCBmb3I9XFxcImFnZVxcXCI+VlxcdTAwZTJyc3RhOjxcXC9sYWJlbD5cXG4gICAgPGlucHV0IHR5cGU9XFxcIm51bWJlclxcXCIgaWQ9XFxcImFnZVxcXCIgcGxhY2Vob2xkZXI9XFxcImludHJvZHUgdlxcdTAwZTJyc3RhXFxcIiByZXF1aXJlZD5cXG5cXG4gICAgPGxhYmVsIGZvcj1cXFwid2VpZ2h0XFxcIj5HcmV1dGF0ZSAoa2cpOjxcXC9sYWJlbD5cXG4gICAgPGlucHV0IHR5cGU9XFxcIm51bWJlclxcXCIgaWQ9XFxcIndlaWdodFxcXCIgcGxhY2Vob2xkZXI9XFxcImludHJvZHUgZ3JldXRhdGVhXFxcIiByZXF1aXJlZD5cXG5cXG4gICAgPGxhYmVsIGZvcj1cXFwiaGVpZ2h0XFxcIj5cXHUwMGNlblxcdTAxMDNsXFx1MDIxYmltZWEgKGNtKTo8XFwvbGFiZWw+XFxuICAgIDxpbnB1dCB0eXBlPVxcXCJudW1iZXJcXFwiIGlkPVxcXCJoZWlnaHRcXFwiIHBsYWNlaG9sZGVyPVxcXCJpbnRyb2R1IFxcdTAwZWVuXFx1MDEwM2xcXHUwMjFiaW1lYVxcXCIgcmVxdWlyZWQ+XFxuXFxuICAgIDxsYWJlbCBmb3I9XFxcIm5lY2tcXFwiPkdcXHUwMGUydCAoY20pOjxcXC9sYWJlbD5cXG4gICAgPGlucHV0IHR5cGU9XFxcIm51bWJlclxcXCIgaWQ9XFxcIm5lY2tcXFwiIHBsYWNlaG9sZGVyPVxcXCJpbnRyb2R1IGNpcmN1bWZlcmluXFx1MDIxYmEgZ1xcdTAwZTJ0dWx1aVxcXCIgcmVxdWlyZWQ+XFxuXFxuICAgIDxsYWJlbCBmb3I9XFxcIndhaXN0XFxcIj5UYWxpZSAoY20pOjxcXC9sYWJlbD5cXG4gICAgPGlucHV0IHR5cGU9XFxcIm51bWJlclxcXCIgaWQ9XFxcIndhaXN0XFxcIiBwbGFjZWhvbGRlcj1cXFwiaW50cm9kdSBjaXJjdW1mZXJpblxcdTAyMWJhIHRhbGllaVxcXCIgcmVxdWlyZWQ+XFxuXFxuICAgIDxkaXYgaWQ9XFxcImhpcEZpZWxkXFxcIiBzdHlsZT1cXFwiZGlzcGxheTpub25lO1xcXCI+XFxuICAgICAgICA8bGFiZWwgZm9yPVxcXCJoaXBcXFwiPlxcdTAyMThvbGR1cmkgKGNtKTo8XFwvbGFiZWw+XFxuICAgICAgICA8aW5wdXQgdHlwZT1cXFwibnVtYmVyXFxcIiBpZD1cXFwiaGlwXFxcIiBwbGFjZWhvbGRlcj1cXFwiaW50cm9kdSBjaXJjdW1mZXJpblxcdTAyMWJhIFxcdTAyMTlvbGR1cmlsb3JcXFwiPlxcbiAgICA8XFwvZGl2PlxcblxcbiAgICA8YnV0dG9uIG9uY2xpY2s9XFxcImNhbGN1bGF0ZUJvZHlGYXQoKVxcXCI+Q2FsY3VsZWF6XFx1MDEwMzxcXC9idXR0b24+XFxuXFxuICAgIDxkaXYgY2xhc3M9XFxcInJlc3VsdHNcXFwiIGlkPVxcXCJyZXN1bHRzXFxcIj48XFwvZGl2PlxcbjxcXC9kaXY+XFxuXFxuPHNjcmlwdD5cXG4gICAgZnVuY3Rpb24gdG9nZ2xlSGlwRmllbGQoKSB7XFxuICAgICAgICBjb25zdCBnZW5kZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2VuZGVyJykudmFsdWU7XFxuICAgICAgICBjb25zdCBoaXBGaWVsZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaXBGaWVsZCcpO1xcbiAgICAgICAgaWYgKGdlbmRlciA9PT0gJ2ZlbWFsZScpIHtcXG4gICAgICAgICAgICBoaXBGaWVsZC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaGlwRmllbGQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVCb2R5RmF0KCkge1xcbiAgICAgICAgY29uc3QgZ2VuZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dlbmRlcicpLnZhbHVlO1xcbiAgICAgICAgY29uc3QgYWdlID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWdlJykudmFsdWUpO1xcbiAgICAgICAgY29uc3Qgd2VpZ2h0ID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2VpZ2h0JykudmFsdWUpO1xcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVpZ2h0JykudmFsdWUpO1xcbiAgICAgICAgY29uc3QgbmVjayA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25lY2snKS52YWx1ZSk7XFxuICAgICAgICBjb25zdCB3YWlzdCA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dhaXN0JykudmFsdWUpO1xcbiAgICAgICAgbGV0IGhpcCA9IG51bGw7XFxuXFxuICAgICAgICBpZiAoZ2VuZGVyID09PSAnZmVtYWxlJykge1xcbiAgICAgICAgICAgIGhpcCA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpcCcpLnZhbHVlKTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIFxcL1xcLyBVLlMuIE5hdnkgTWV0aG9kIENhbGN1bGF0aW9uXFxuICAgICAgICBsZXQgYm9keUZhdFBlcmNlbnRhZ2U7XFxuICAgICAgICBpZiAoZ2VuZGVyID09PSAnbWFsZScpIHtcXG4gICAgICAgICAgICBib2R5RmF0UGVyY2VudGFnZSA9IDQ5NSBcXC8gKDEuMDMyNCAtIDAuMTkwNzcgKiBNYXRoLmxvZzEwKHdhaXN0IC0gbmVjaykgKyAwLjE1NDU2ICogTWF0aC5sb2cxMChoZWlnaHQpKSAtXFxuICAgICAgICAgICAgICAgIDQ1MDtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgYm9keUZhdFBlcmNlbnRhZ2UgPSA0OTUgXFwvICgxLjI5NTc5IC0gMC4zNTAwNCAqIE1hdGgubG9nMTAod2Fpc3QgKyBoaXAgLSBuZWNrKSArIDAuMjIxMDAgKiBNYXRoLmxvZzEwKFxcbiAgICAgICAgICAgICAgICBoZWlnaHQpKSAtIDQ1MDtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIGNvbnN0IGJvZHlGYXRNYXNzID0gKGJvZHlGYXRQZXJjZW50YWdlIFxcLyAxMDApICogd2VpZ2h0O1xcbiAgICAgICAgY29uc3QgbGVhbkJvZHlNYXNzID0gd2VpZ2h0IC0gYm9keUZhdE1hc3M7XFxuXFxuICAgICAgICBcXC9cXC8gSmFja3NvbiAmIFBvbGxvY2sgSWRlYWwgQm9keSBGYXQgQ2FsY3VsYXRpb25cXG4gICAgICAgIGxldCBpZGVhbEJvZHlGYXQgPSBpZGVhbEJvZHlGYXRDYWxjKGFnZSwgZ2VuZGVyKTtcXG5cXG4gICAgICAgIGNvbnN0IGJvZHlGYXRUb0xvc2UgPSBNYXRoLm1heCgwLCBib2R5RmF0TWFzcyAtIChpZGVhbEJvZHlGYXQgXFwvIDEwMCkgKiB3ZWlnaHQpO1xcblxcbiAgICAgICAgXFwvXFwvIEJNSSBNZXRob2QgZm9yIEJvZHkgRmF0IChhcHByb3hpbWF0aW9uKVxcbiAgICAgICAgY29uc3QgYm1pID0gd2VpZ2h0IFxcLyBNYXRoLnBvdyhoZWlnaHQgXFwvIDEwMCwgMik7XFxuICAgICAgICBjb25zdCBib2R5RmF0Qm1pTWV0aG9kID0gKDEuMiAqIGJtaSkgKyAoMC4yMyAqIGFnZSkgLSAoMTAuOCAqIChnZW5kZXIgPT09ICdtYWxlJyA/IDEgOiAwKSkgLSA1LjQ7XFxuXFxuICAgICAgICBcXC9cXC8gQm9keSBGYXQgQ2F0ZWdvcnlcXG4gICAgICAgIGxldCBib2R5RmF0Q2F0ZWdvcnk7XFxuICAgICAgICBpZiAoZ2VuZGVyID09PSAnbWFsZScpIHtcXG4gICAgICAgICAgICBpZiAoYm9keUZhdFBlcmNlbnRhZ2UgPCA2KSB7XFxuICAgICAgICAgICAgICAgIGJvZHlGYXRDYXRlZ29yeSA9ICdFc3NlbnRpYWwgZmF0JztcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJvZHlGYXRQZXJjZW50YWdlIDwgMTQpIHtcXG4gICAgICAgICAgICAgICAgYm9keUZhdENhdGVnb3J5ID0gJ0F0aGxldGVzJztcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJvZHlGYXRQZXJjZW50YWdlIDwgMTgpIHtcXG4gICAgICAgICAgICAgICAgYm9keUZhdENhdGVnb3J5ID0gJ0ZpdG5lc3MnO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYm9keUZhdFBlcmNlbnRhZ2UgPCAyNSkge1xcbiAgICAgICAgICAgICAgICBib2R5RmF0Q2F0ZWdvcnkgPSAnQXZlcmFnZSc7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgYm9keUZhdENhdGVnb3J5ID0gJ09iZXNlJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGlmIChib2R5RmF0UGVyY2VudGFnZSA8IDE0KSB7XFxuICAgICAgICAgICAgICAgIGJvZHlGYXRDYXRlZ29yeSA9ICdFc3NlbnRpYWwgZmF0JztcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJvZHlGYXRQZXJjZW50YWdlIDwgMjEpIHtcXG4gICAgICAgICAgICAgICAgYm9keUZhdENhdGVnb3J5ID0gJ0F0aGxldGVzJztcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJvZHlGYXRQZXJjZW50YWdlIDwgMjUpIHtcXG4gICAgICAgICAgICAgICAgYm9keUZhdENhdGVnb3J5ID0gJ0ZpdG5lc3MnO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYm9keUZhdFBlcmNlbnRhZ2UgPCAzMikge1xcbiAgICAgICAgICAgICAgICBib2R5RmF0Q2F0ZWdvcnkgPSAnQXZlcmFnZSc7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgYm9keUZhdENhdGVnb3J5ID0gJ09iZXNlJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuXFxuICAgICAgICBcXC9cXC8gRGlzcGxheSByZXN1bHRzXFxuICAgICAgICBjb25zdCByZXN1bHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHMnKTtcXG4gICAgICAgIHJlc3VsdHMuaW5uZXJIVE1MID0gYFxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInJlc3VsdC1pdGVtXFxcIj48c3BhbiBjbGFzcz1cXFwicmVzdWx0LWxhYmVsXFxcIj5Cb2R5IEZhdCAoJSk6PFxcL3NwYW4+ICR7Ym9keUZhdFBlcmNlbnRhZ2UudG9GaXhlZCgyKX0lPFxcL2Rpdj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJyZXN1bHQtaXRlbVxcXCI+PHNwYW4gY2xhc3M9XFxcInJlc3VsdC1sYWJlbFxcXCI+Qm9keSBGYXQgQ2F0ZWdvcnk6PFxcL3NwYW4+ICR7Ym9keUZhdENhdGVnb3J5fTxcXC9kaXY+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicmVzdWx0LWl0ZW1cXFwiPjxzcGFuIGNsYXNzPVxcXCJyZXN1bHQtbGFiZWxcXFwiPkJvZHkgRmF0IE1hc3MgKGtnKTo8XFwvc3Bhbj4gJHtib2R5RmF0TWFzcy50b0ZpeGVkKDIpfSBrZzxcXC9kaXY+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicmVzdWx0LWl0ZW1cXFwiPjxzcGFuIGNsYXNzPVxcXCJyZXN1bHQtbGFiZWxcXFwiPkxlYW4gQm9keSBNYXNzIChrZyk6PFxcL3NwYW4+ICR7bGVhbkJvZHlNYXNzLnRvRml4ZWQoMil9IGtnPFxcL2Rpdj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJyZXN1bHQtaXRlbVxcXCI+PHNwYW4gY2xhc3M9XFxcInJlc3VsdC1sYWJlbFxcXCI+SWRlYWwgQm9keSBGYXQgZm9yIEdpdmVuIEFnZSAoJSk6PFxcL3NwYW4+ICR7aWRlYWxCb2R5RmF0LnRvRml4ZWQoMil9JTxcXC9kaXY+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicmVzdWx0LWl0ZW1cXFwiPjxzcGFuIGNsYXNzPVxcXCJyZXN1bHQtbGFiZWxcXFwiPkJvZHkgRmF0IHRvIExvc2UgdG8gUmVhY2ggSWRlYWwgKGtnKTo8XFwvc3Bhbj4gJHtib2R5RmF0VG9Mb3NlLnRvRml4ZWQoMil9IGtnPFxcL2Rpdj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJyZXN1bHQtaXRlbVxcXCI+PHNwYW4gY2xhc3M9XFxcInJlc3VsdC1sYWJlbFxcXCI+Qm9keSBGYXQgKCUpOjxcXC9zcGFuPiAoQk1JIG1ldGhvZCk6ICR7Ym9keUZhdEJtaU1ldGhvZC50b0ZpeGVkKDIpfSU8XFwvZGl2PlxcbiAgICAgICAgYDtcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBpZGVhbEJvZHlGYXRDYWxjKGFnZSwgZ2VuZGVyKSB7XFxuICAgICAgICBpZiAoZ2VuZGVyID09PSBcXFwibWFsZVxcXCIpIHtcXG4gICAgICAgICAgICBpZiAoYWdlIDw9IDIwKSByZXR1cm4gOC41O1xcbiAgICAgICAgICAgIGVsc2UgaWYgKGFnZSA8PSAyNSkgcmV0dXJuIDEwLjU7XFxuICAgICAgICAgICAgZWxzZSBpZiAoYWdlIDw9IDMwKSByZXR1cm4gMTIuNztcXG4gICAgICAgICAgICBlbHNlIGlmIChhZ2UgPD0gMzUpIHJldHVybiAxMy43O1xcbiAgICAgICAgICAgIGVsc2UgaWYgKGFnZSA8PSA0MCkgcmV0dXJuIDE1LjM7XFxuICAgICAgICAgICAgZWxzZSBpZiAoYWdlIDw9IDQ1KSByZXR1cm4gMTYuNDtcXG4gICAgICAgICAgICBlbHNlIGlmIChhZ2UgPD0gNTApIHJldHVybiAxOC45O1xcbiAgICAgICAgICAgIGVsc2UgaWYgKGFnZSA8PSA1NSkgcmV0dXJuIDIwLjk7XFxuICAgICAgICAgICAgZWxzZSByZXR1cm4gMjI7IFxcL1xcLyBcXHUwNDFjXFx1MDQzZVxcdTA0MzZcXHUwNDNkXFx1MDQzZSBcXHUwNDQzXFx1MDQzYVxcdTA0MzBcXHUwNDM3XFx1MDQzMFxcdTA0NDJcXHUwNDRjIFxcdTA0MzdcXHUwNDNkXFx1MDQzMFxcdTA0NDdcXHUwNDM1XFx1MDQzZFxcdTA0MzhcXHUwNDM1IFxcdTA0MzRcXHUwNDNiXFx1MDQ0ZiBcXHUwNDMyXFx1MDQzZVxcdTA0MzdcXHUwNDQwXFx1MDQzMFxcdTA0NDFcXHUwNDQyXFx1MDQzMCBcXHUwNDMyXFx1MDQ0YlxcdTA0NDhcXHUwNDM1IDU1XFxuICAgICAgICB9IGVsc2UgaWYgKGdlbmRlciA9PT0gXFxcImZlbWFsZVxcXCIpIHtcXG4gICAgICAgICAgICBpZiAoYWdlIDw9IDIwKSByZXR1cm4gMTcuNztcXG4gICAgICAgICAgICBlbHNlIGlmIChhZ2UgPD0gMjUpIHJldHVybiAxOC40O1xcbiAgICAgICAgICAgIGVsc2UgaWYgKGFnZSA8PSAzMCkgcmV0dXJuIDE5LjM7XFxuICAgICAgICAgICAgZWxzZSBpZiAoYWdlIDw9IDM1KSByZXR1cm4gMjEuNTtcXG4gICAgICAgICAgICBlbHNlIGlmIChhZ2UgPD0gNDApIHJldHVybiAyMi4yO1xcbiAgICAgICAgICAgIGVsc2UgaWYgKGFnZSA8PSA0NSkgcmV0dXJuIDIyLjk7XFxuICAgICAgICAgICAgZWxzZSBpZiAoYWdlIDw9IDUwKSByZXR1cm4gMjUuMjtcXG4gICAgICAgICAgICBlbHNlIGlmIChhZ2UgPD0gNTUpIHJldHVybiAyNi4zO1xcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIDI4OyBcXC9cXC8gXFx1MDQxY1xcdTA0M2VcXHUwNDM2XFx1MDQzZFxcdTA0M2UgXFx1MDQ0M1xcdTA0M2FcXHUwNDMwXFx1MDQzN1xcdTA0MzBcXHUwNDQyXFx1MDQ0YyBcXHUwNDM3XFx1MDQzZFxcdTA0MzBcXHUwNDQ3XFx1MDQzNVxcdTA0M2RcXHUwNDM4XFx1MDQzNSBcXHUwNDM0XFx1MDQzYlxcdTA0NGYgXFx1MDQzMlxcdTA0M2VcXHUwNDM3XFx1MDQ0MFxcdTA0MzBcXHUwNDQxXFx1MDQ0MlxcdTA0MzAgXFx1MDQzMlxcdTA0NGJcXHUwNDQ4XFx1MDQzNSA1NVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIG51bGw7IFxcL1xcLyBcXHUwNDE1XFx1MDQ0MVxcdTA0M2JcXHUwNDM4IFxcdTA0M2ZcXHUwNDNlXFx1MDQzYiBcXHUwNDNkXFx1MDQzNSBcXHUwNDQzXFx1MDQzYVxcdTA0MzBcXHUwNDM3XFx1MDQzMFxcdTA0M2QsIFxcdTA0MzJcXHUwNDNlXFx1MDQzN1xcdTA0MzJcXHUwNDQwXFx1MDQzMFxcdTA0NDlcXHUwNDMwXFx1MDQzNVxcdTA0M2MgbnVsbFxcbiAgICB9XFxuPFxcL3NjcmlwdD5cIixcInJlcGxhY2VWYXJpYWJsZXNcIjpcIlwiLFwiYmxvY2tQYWRkaW5nVG9wXCI6MCxcImJsb2NrUGFkZGluZ0JvdHRvbVwiOjAsXCJibG9ja0JhY2tncm91bmRDb2xvclwiOlwiXCIsXCJibG9ja0ZvcmVncm91bmRDb2xvclwiOlwiXCIsXCJibG9ja0xpbmtDb2xvclwiOlwiXCIsXCJibG9ja0ZvbnRcIjpudWxsLFwiYmxvY2tGb250SGVhZGVyXCI6bnVsbCxcImJsb2NrQ3NzQ2xhc3NcIjpcIlwiLFwiYmxvY2tDb3ZlclwiOm51bGwsXCJpc01vZGFsXCI6bnVsbCxcImJsb2NrQ2xpY2tBY3Rpb25cIjpcIlwiLFwiYmxvY2tGbGV4XCI6MH0iLCJjc3MiOm51bGwsImlzUmVkZXNpZ24iOmZhbHNlfQ==
<style>
/* body {
font-family: Arial, sans-serif;
background-color: #f0f0f5;
margin: 0;
padding: 0;
} */
.mnfst-bfc {
max-width: 500px;
margin: 50px auto;
padding: 20px;
background-color: white;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
border-radius: 10px;
}
.mnfst-bfc h1 {
text-align: center;
color: #333;
}
.mnfst-bfc label {
display: block;
margin-bottom: 8px;
color: #555;
}
.mnfst-bfc input,
.mnfst-bfc select {
width: 100%;
padding: 10px;
margin-bottom: 15px;
border: 1px solid #ccc;
border-radius: 5px;
}
.mnfst-bfc button {
width: 100%;
padding: 12px;
background-color: #28a745;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
}
.mnfst-bfc button:hover {
background-color: #218838;
}
.mnfst-bfc .results {
margin-top: 20px;
}
.mnfst-bfc .result-item {
margin-bottom: 10px;
}
.mnfst-bfc .result-label {
font-weight: bold;
color: #333;
}
</style>
<div class="mnfst-bfc">
<h1>Body Fat Calculator</h1>
<label for="gender">Sex:</label>
<select id="gender" onchange="toggleHipField()">
<option value="male">bărbat</option>
<option value="female">femeie</option>
</select>
<label for="age">Vârsta:</label>
<input type="number" id="age" placeholder="introdu vârsta" required>
<label for="weight">Greutate (kg):</label>
<input type="number" id="weight" placeholder="introdu greutatea" required>
<label for="height">Înălțimea (cm):</label>
<input type="number" id="height" placeholder="introdu înălțimea" required>
<label for="neck">Gât (cm):</label>
<input type="number" id="neck" placeholder="introdu circumferința gâtului" required>
<label for="waist">Talie (cm):</label>
<input type="number" id="waist" placeholder="introdu circumferința taliei" required>
<div id="hipField" style="display:none;">
<label for="hip">Șolduri (cm):</label>
<input type="number" id="hip" placeholder="introdu circumferința șoldurilor">
</div>
<button onclick="calculateBodyFat()">Calculează</button>
<div class="results" id="results"></div>
</div>
<script>
function toggleHipField() {
const gender = document.getElementById('gender').value;
const hipField = document.getElementById('hipField');
if (gender === 'female') {
hipField.style.display = 'block';
} else {
hipField.style.display = 'none';
}
}
function calculateBodyFat() {
const gender = document.getElementById('gender').value;
const age = parseFloat(document.getElementById('age').value);
const weight = parseFloat(document.getElementById('weight').value);
const height = parseFloat(document.getElementById('height').value);
const neck = parseFloat(document.getElementById('neck').value);
const waist = parseFloat(document.getElementById('waist').value);
let hip = null;
if (gender === 'female') {
hip = parseFloat(document.getElementById('hip').value);
}
// U.S. Navy Method Calculation
let bodyFatPercentage;
if (gender === 'male') {
bodyFatPercentage = 495 / (1.0324 - 0.19077 * Math.log10(waist - neck) + 0.15456 * Math.log10(height)) -
450;
} else {
bodyFatPercentage = 495 / (1.29579 - 0.35004 * Math.log10(waist + hip - neck) + 0.22100 * Math.log10(
height)) - 450;
}
const bodyFatMass = (bodyFatPercentage / 100) * weight;
const leanBodyMass = weight - bodyFatMass;
// Jackson & Pollock Ideal Body Fat Calculation
let idealBodyFat = idealBodyFatCalc(age, gender);
const bodyFatToLose = Math.max(0, bodyFatMass - (idealBodyFat / 100) * weight);
// BMI Method for Body Fat (approximation)
const bmi = weight / Math.pow(height / 100, 2);
const bodyFatBmiMethod = (1.2 * bmi) + (0.23 * age) - (10.8 * (gender === 'male' ? 1 : 0)) - 5.4;
// Body Fat Category
let bodyFatCategory;
if (gender === 'male') {
if (bodyFatPercentage < 6) {
bodyFatCategory = 'Essential fat';
} else if (bodyFatPercentage < 14) {
bodyFatCategory = 'Athletes';
} else if (bodyFatPercentage < 18) {
bodyFatCategory = 'Fitness';
} else if (bodyFatPercentage < 25) {
bodyFatCategory = 'Average';
} else {
bodyFatCategory = 'Obese';
}
} else {
if (bodyFatPercentage < 14) {
bodyFatCategory = 'Essential fat';
} else if (bodyFatPercentage < 21) {
bodyFatCategory = 'Athletes';
} else if (bodyFatPercentage < 25) {
bodyFatCategory = 'Fitness';
} else if (bodyFatPercentage < 32) {
bodyFatCategory = 'Average';
} else {
bodyFatCategory = 'Obese';
}
}
// Display results
const results = document.getElementById('results');
results.innerHTML = `
<div class="result-item"><span class="result-label">Body Fat (%):</span> ${bodyFatPercentage.toFixed(2)}%</div>
<div class="result-item"><span class="result-label">Body Fat Category:</span> ${bodyFatCategory}</div>
<div class="result-item"><span class="result-label">Body Fat Mass (kg):</span> ${bodyFatMass.toFixed(2)} kg</div>
<div class="result-item"><span class="result-label">Lean Body Mass (kg):</span> ${leanBodyMass.toFixed(2)} kg</div>
<div class="result-item"><span class="result-label">Ideal Body Fat for Given Age (%):</span> ${idealBodyFat.toFixed(2)}%</div>
<div class="result-item"><span class="result-label">Body Fat to Lose to Reach Ideal (kg):</span> ${bodyFatToLose.toFixed(2)} kg</div>
<div class="result-item"><span class="result-label">Body Fat (%):</span> (BMI method): ${bodyFatBmiMethod.toFixed(2)}%</div>
`;
}
function idealBodyFatCalc(age, gender) {
if (gender === "male") {
if (age <= 20) return 8.5;
else if (age <= 25) return 10.5;
else if (age <= 30) return 12.7;
else if (age <= 35) return 13.7;
else if (age <= 40) return 15.3;
else if (age <= 45) return 16.4;
else if (age <= 50) return 18.9;
else if (age <= 55) return 20.9;
else return 22; // Можно указать значение для возраста выше 55
} else if (gender === "female") {
if (age <= 20) return 17.7;
else if (age <= 25) return 18.4;
else if (age <= 30) return 19.3;
else if (age <= 35) return 21.5;
else if (age <= 40) return 22.2;
else if (age <= 45) return 22.9;
else if (age <= 50) return 25.2;
else if (age <= 55) return 26.3;
else return 28; // Можно указать значение для возраста выше 55
}
return null; // Если пол не указан, возвращаем null
}
</script>
Служебные скрипты FM
https://fitnessmama.school/pl/cms/layout/update?id=29679#js
HTML
<!-- WhatsApp-Tlgt Web -->
$(function(){
window.isMobile = /Mobile|webOS|BlackBerry|IEMobile|MeeGo|mini|Fennec|Windows Phone|Android|iP(ad|od|hone)/i.test(navigator.userAgent);
var nint = setInterval(function() {
if($('#whatsapp_button').length == 0) {
if($(".user-phone-widget").length) {
var phone = $('.user-phone span[data-reactid=".0.1.1.0.0.2.5.2"]').text().replace(/\D+/g,'');
if(phone[0] == 3 && phone.length == 10) phone = "39"+phone;
if(phone[0] == 9 && phone.length == 10) phone = "7"+phone;
if(phone[0] == 8 && phone.length == 11) phone = "7"+phone.slice(1);
phone = "+"+phone;
$(".user-phone-widget").after(`
<span>
<button id="whatsapp_button" class="btn btn-sm btn-default" onclick="window.open((window.isMobile ? 'https://wa.me/' : 'https://web.whatsapp.com/send?phone=') + '${phone}')" style="
margin: 3px 0;
background-color: #25D366;
color: white;
padding: 4px 5px;
border: none;
border-radius: 30px;
height: 22px;
"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="whatsapp" class="svg-inline--fa fa-whatsapp fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" style="width: 12px;"><path fill="currentColor" d="M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"></path></svg>
</button>
<button id="whatsapp_button" class="btn btn-sm btn-default" onclick="window.open(('https://t.me/') + '${phone}')" style="
padding: 4px 5px;
border: none;
height: 22px;
width: 22px;
background: url(https://upload.wikimedia.org/wikipedia/commons/8/82/Telegram_logo.svg);
background-size: cover;
background-repeat: no-repeat;
">
</span>`);
}
}
},50);
});
<!-- WhatsApp-Tlgt Web -->
<!-- Превью в хранилище -->
<!-- Превью в хранилище -->
if(window.location.href.indexOf('/fileservice/control/account/') > -1) {
$(function(){
$('#w5-container table tr').each(function(i, row){
let filetype = $(row).find("td:nth-child(4)").text().trim();
let filelink = $(row).find("td:nth-child(3) a").attr("href");
if(["изображение", "image"].indexOf(filetype) > -1) {
let thumb_img = "";
if([".gif", ".svg"].indexOf(filelink.substring(filelink.length - 4)) == -1) {
let regex = /(.*)\/fileservice\/file\/download(?:\/.*\/)(\d*)\/.*\/(\d*)\/.*\/((?:.*)\w{32}[^\/]*)/gm;
let thumb_subst = `$1/fileservice/file/thumbnail/h/$4/s/200x/a/$2/sc/$3`;
thumb_img = filelink.replace(regex, thumb_subst);
} else {
thumb_img = filelink;
}
$(row).find("td:nth-child(3)").append('<img src="'+thumb_img+'" style="display:block;max-width:200px;" />');
} else if(["видео", "video"].indexOf(filetype) > -1 || !isNaN(parseInt(filetype))) {
$(row).find("td:nth-child(3)").append('<video controls src="'+filelink+'" style="display:block;width:200px;height:112px;" />');
}
});
});
}
<!-- Превью в хранилище -->
<!-- Показ ссылки для скачивания, при загрузке файла в ФХ -->
$(()=>{ if(window.location.href.indexOf('/fileservice/control/account/storage') > -1) {
$('.uploadify-container').data('uploadifive').settings.onUploadComplete = function (e, res) {
let $item = e.queueItem;
let link = '/fileservice/control/account/file-by-hash?hash='+res+'&from=storage'
$item.find('.fileinfo').html(` <a target="_blank" href="${link}">${res}</a> `,);
$.get(link,(data)=>{
var pageDom = $('<x/>').append($.parseHTML(data));
newlink = pageDom.find('input.form-control[type="text"]').val();
let linke = document.createElement('div');
let linkc = document.createElement('a');
$item.find('.filename').before(linke, linkc);
$(linke).html(newlink)
.css({"position":"absolute","left":"-99999px"});
$(linkc).html('<i class="fa fa-clipboard" aria-hidden="true"></i> ')
.css({"cursor":"pointer"})
.on('click', function(){
selectElement(linke);
$(linke).select();
document.execCommand('copy');
let that = this;
$(that).css('color','#ff00db');
setTimeout(()=>{
$(that).css('color','');
},1000);
});
});
function selectElement(element) {
if (window.getSelection) {
var sel = window.getSelection();
sel.removeAllRanges();
var range = document.createRange();
range.selectNodeContents(element);
sel.addRange(range);
} else if (document.selection) {
var textRange = document.body.createTextRange();
textRange.moveToElementText(element);
textRange.select();
}
}
}
}});
<!-- Показ ссылки для скачивания, при загрузке файла в ФХ -->
<!-- Добавляет возможность перетаскивать блоки настроек в редакторе страниц и уроков -->
if(
window.location.pathname.indexOf("/pl/cms/page/editor") > -1 ||
(
window.location.pathname == "/pl/teach/control/lesson/view" &&
window.location.search.indexOf("editMode=1") > -1
)
) {
$( document ).ajaxSuccess(function( event, xhr, settings ) {
if ( settings.url.indexOf("/pl/lite/block/get-setting") > -1 || settings.url.indexOf("/pl/lite/block/settings") > -1) {
setTimeout(()=>{
$('.setting-editor-popover, .block-style-popover')
.draggable({ handle: '.popover-title', cancel: '.btn, input' })
.find('.popover-title').css({'cursor':'move'});
});
}
});
}
//РЕКЛАМНАЯ ПЛАШКА
// Чтобы исключить отображение для определенной страницы, добавьте путь в массив excludedPages через запятую.
// Например: ["/cms/system/login", "/another/page", "/some/other/page"];
const excludedPages = ["/voting_concurs_baza", "/waitlist_campaign_ticket", "/cms/system/login", "/pl/webinar/show", "/postura_login", "/giftshop", "/live12", "/cadou_personalizat"];
if (!excludedPages.includes(window.location.pathname)) {
var chek = $('#ltBlock2055000206, #ltBlock2055000208, #ltBlock2055000229, #ltBlock2055000232'); // ID формы виджета
var cookie_max_age = 24 * 60 * 60; //Время жизни cookie в секундах.
var delay = 1; //Задержка показа в миллисекундах, 1000 = 1 секунде.
if (getCookie('popup_per_day') !== 'true') {
setTimeout(function() {
if (chek.length == 0 && !window.location.href.includes('/widget/')) {
if ($('.gc-main-content').hasClass('with-left-menu')) {
$('.gc-main-content').append('<div class="info-banner menu"><a href="https://fitnessmama.school/plaska_link" target="_blank"><img class="img-responsive banner" src="https://fitnessmama.school/plaska"></a></div>');
} else {
$('.gc-main-content').append('<div class="info-banner"><a href="https://fitnessmama.school/plaska_link" target="_blank"><img class="img-responsive banner" src="https://fitnessmama.school/plaska"></a></div>');
}
} else {
console.log('на странице форма с ГК');
}
$('.info-banner').append('<div class="close-mybtn"></div>');
$('.close-mybtn').click(function() {
$('.info-banner').hide();
setCookie('popup_per_day', 'true', { 'max-age': cookie_max_age });
});
}, delay);
};
};
//FUNCTIONS
function getCookie(name) {
var matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : undefined;
}
function setCookie(name, value, options = {}) {
options = {
path: '/',
secure: true,
// при необходимости добавьте другие значения по умолчанию
...options
};
if (options.expires instanceof Date) {
options.expires = options.expires.toUTCString();
}
var updatedCookie = encodeURIComponent(name) + "=" + encodeURIComponent(value);
for (var optionKey in options) {
updatedCookie += "; " + optionKey;
var optionValue = options[optionKey];
if (optionValue !== true) {
updatedCookie += "=" + optionValue;
}
}
document.cookie = updatedCookie;
}
CSS
/* убрать баннер */
.common-banner-wrapper {
display:none!important;
}
/* Стили для Баннер как у Геткурс */
.info-banner {
width: 400px; /*ширина изображения */
height:120px; /*высота изображения */
display: block;
position: fixed;
bottom: 10px;
left: 10px;
Z-index: 9;
overflow: hidden;
padding: 20px;
}
.info-banner.menu {
width: 400px; /*ширина изображения */
height:120px; /*высота изображения */
display: block;
position: fixed;
bottom: 20px;
left: 90px;
Z-index: 999;
overflow: hidden;
padding: 20px;
}
.info-banner img.banner {
border-radius: 16px; /*радиус скругления изображения*/
box-shadow: 0 0 6px 2px #00000069; /*настройки тени*/
}
.close-mybtn {
cursor: pointer;
position: absolute;
width: 25px;
height: 25px;
top: 10px;
right: 10px;
border-radius: 50%;
background: #fff;
box-shadow: 0 0 10px 1px #00000038;
}
.close-mybtn:before {
content: '✕';
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
color: #000;
font-weight: bold;
line-height: 1;
font-size: 14px;
padding: 6px 6.5px;
}
@media (max-width: 920px) {
.info-banner {
width: 100%; /*ширина изображения */
height:auto; /*высота изображения */
bottom: 10px;
left: 0px;
}
.info-banner.menu {
width: 100%; /*ширина изображения */
height:auto; /*высота изображения */
bottom: 50px;
left: 0px;
}
}
/* Стили для Баннер как у Геткурс */
Бот в WhatsApp
Как сделать автоматические сообщения WhatsApp через Геткурс
На странице, где расположена кнопка WhatsApp вставить ссылку :
где phone - это номер WhatsApp, привязанный к Геткурсу; text- любой желаемый текст (призыв к действию)
У пользователя отображается уже готовое сообщение с текстом, которое он может отправить в один клик.
Далее создаем процесс ( или ветку в действующем процессе) по инструкции: https://textback.ru/knowledgebase/getcourse/
Важно! протестировать можно только через номер УЧЕНИКА. Сообщения в WhatsApp после входящего не придут, если номер в базе Геткурс значиться как СОТРУДНИКА.
Оформеление GC (до Remake)
Оформление бокового меню ГК
https://drive.google.com/file/d/103-7ZhGmtWc30PV3GXmUa9VeskELc1At/view?usp=sharing
Скрипт в настройках аккаунта

<!-- Боковое меню -->
<link rel="stylesheet" href="https://fitnessmama.school/pl/cms/layout/css?id=29680&hash=9cc3105d9df0b69b9fa7b4db22f48c30&bundle=1" />
<script src="https://fitnessmama.school/pl/cms/layout/js?id=29680&hash=9cc3105d9df0b69b9fa7b4db22f48c30&bundle=1"></script>
CSS
/*Убираем бэкграунд иконки-пропадает ховер выделение */
.gc-account-leftbar .gc-account-user-menu li a {
background-color: transparent!important;
}
/* Убираем разрыв */
.gc-account-leftbar .gc-account-user-menu li {
border-bottom: none;
}
/* Прячем старую иконку чатиума полностью*/
li.menu-item-chatium {
display:none;
}
/* Отступы между иконкой и выделением*/
.gc-account-leftbar .gc-account-user-menu li a.with-label {
padding: 3px 0px 0px 0px!important;
margin-top:10px;
}
/* Делает прозрачными места иконок + шрифт */
.gc-account-leftbar .gc-account-user-menu li a {
background:none!important;
font-family: 'Urbanist', sans-serif;
font-style: normal;
font-weight: 700;
font-size: 11px;
}
/* Подпись для новой*/
.gc-account-user-menu li.menu-item.new-chatium-icon a:after{
content: "Chatium";
color: #000;
bottom: 2px!important;
font-weight: 600;
}
/*Задаем выделение ярлыка*/
.custom-menu .gc-account-leftbar .gc-account-user-menu li.active a, .custom-menu .gc-account-leftbar .gc-account-user-menu li.selected a {
background-color: #FFF!important;
}
li.menu-item.menu-item-profile a, li.menu-item.menu-item-notifications_button_small a, li.menu-item.menu-item-cms a, li.menu-item.menu-item-teach a, li.menu-item.menu-item-user a, li.menu-item.menu-item-tasks a, li.menu-item.menu-item-notifications a, li.menu-item.menu-item-sales a, li.menu-item.menu-item-chatium a {
display: block;
background: transparent;
margin: 3px auto 0px;
width: 62px !important;
height: 62px !important;
border-radius: 8px;
transition: all 1.0s;
}
/* пододвигаем колокольчик */
li.menu-item.menu-item-notifications_button_small a {
height: 35px !important;
border-radius: 5px;
}
/*Скругление профиля*/
.menu-item-profile .menu-item-icon {
border-radius: 26px;
width: 52px;
border: 2px solid #EB1a41;
margin-top:5px;
}
/*Позицианируем номерки*/
.gc-account-leftbar li:not(.menu-item-profile):not(.menu-item-notifications_button_small) .notify-count {
bottom: unset;
top: 0%;
}
/* Шайк меню */
.gc-account-user-menu .menu-item a:hover img
{
-webkit-animation: shake-top 0.8s cubic-bezier(0.455, 0.030, 0.515, 0.955) both;
animation: shake-top 0.8s cubic-bezier(0.455, 0.030, 0.515, 0.955) both;
}
.gc-account-user-menu .menu-item a:hover:after,
.menu-item-prolongation a:hover img,
.menu-item.new-chatium-icon a:hover img
{
-webkit-animation: shake-top 0.8s cubic-bezier(0.455, 0.030, 0.515, 0.955) both;
animation: shake-top 0.8s cubic-bezier(0.455, 0.030, 0.515, 0.955) both;
}
.notify-count {
z-index:1;
}
@-webkit-keyframes shake-top {
0%,
100% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transform-origin: 50% 0;
transform-origin: 50% 0;
}
10% {
-webkit-transform: rotate(2deg);
transform: rotate(2deg);
}
20%,
40%,
60% {
-webkit-transform: rotate(-4deg);
transform: rotate(-4deg);
}
30%,
50%,
70% {
-webkit-transform: rotate(4deg);
transform: rotate(4deg);
}
80% {
-webkit-transform: rotate(-2deg);
transform: rotate(-2deg);
}
90% {
-webkit-transform: rotate(2deg);
transform: rotate(2deg);
}
}
@keyframes shake-top {
0%,
100% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transform-origin: 50% 0;
transform-origin: 50% 0;
}
10% {
-webkit-transform: rotate(2deg);
transform: rotate(2deg);
}
20%,
40%,
60% {
-webkit-transform: rotate(-4deg);
transform: rotate(-4deg);
}
30%,
50%,
70% {
-webkit-transform: rotate(4deg);
transform: rotate(4deg);
}
80% {
-webkit-transform: rotate(-2deg);
transform: rotate(-2deg);
}
90% {
-webkit-transform: rotate(2deg);
transform: rotate(2deg);
}
}
/*_____________Настройка суб меню___________________*/
/*Настройка суб меню______________*/
<!-- Настройка суб меню -->
.gc-account-leftbar .gc-account-user-submenu-bar {
width: 320px;
}
.gc-account-user-submenu-bar .gc-account-user-submenu li a {
padding-top: 9px;
padding-bottom: 9px;
text-transform: lowercase;
font-family: 'Urbanist', sans-serif;
font-weight: 500!important;
font-style: normal;
font-size: 22px;
line-height: 108.5%;
padding-left: 20px;
}
/*Суб меню с заглавной*/
.gc-account-user-submenu-bar .gc-account-user-submenu li a::first-letter {
text-transform: uppercase;
}
.custom-menu .gc-account-user-submenu-bar .gc-account-user-submenu a:first-letter {
text-transform: uppercase;
}
.custom-menu .gc-account-user-submenu-bar .gc-account-user-submenu a:hover {
color: #555555;
}
/*Заголовок субменю_*/
.gc-account-user-submenu-bar h3 {
font-family: 'Urbanist', sans-serif;
font-weight: 700!important;
color: #004456;
font-size: 30px;
line-height: 40px;
}
.gc-account-leftbar .gc-account-user-submenu-bar {
display: flex;
flex-direction: column;
background: #FFF;
}
.gc-account-leftbar .gc-account-user-submenu-bar:after {
content: "";
display: block;
height: 60px;
background: url("https://fs.gcfiles.net/fileservice/file/download/a/87136/sc/323/h/2a01bc7dda6cdfa74cb5e627822c51f2.png") center / contain no-repeat;
margin-top: auto;
margin-bottom: 20px;
}
/* Анимация выбора меню */
.gc-account-user-submenu-bar .gc-account-user-submenu li {
position: realtive;
}
.gc-account-user-submenu-bar .gc-account-user-submenu li a {
position: relative !important;
z-index: 9999;
transition: all 1.3s;
}
.gc-account-user-submenu-bar .gc-account-user-submenu li::after {
content: "";
width: 0%;
height: 100%;
position: absolute;
background: silver;
top:0;
left:0;
transition: all .5s;
z-index: 0;
}
.gc-account-user-submenu-bar .gc-account-user-submenu li a:hover {
background: transparent;
color:#005B63;
z-index: 1;
text-decoration: none;
}
.gc-account-user-submenu-bar .gc-account-user-submenu li:hover::after {
width: 100%;
}
@media (max-width: 768px) {
.gc-account-leftbar .gc-account-user-menu {
margin-bottom: 45px;
background: #5E2E92;
width: 70px;
height: 100%;
}
.gc-main-content.with-left-menu {
margin-left: 0;
}
}
@media (max-width: 576px) {
.gc-account-leftbar
.gc-account-user-submenu-bar-notifications_button_small {
width: calc(100vw - 70px);
overflow: auto;
}
}
@media (max-width: 768px) {
.gc-account-leftbar .gc-account-user-menu li {
border-bottom: none;
}
}
.gc-account-user-menu {
font-family: 'Urbanist', sans-serif!important;
}
.popover {
z-index: 8888;
}
JS
<!-- Подмена пункта меню Chatium -->
$(function() {
setTimeout(function(){
$(".menu-item-sales").after(
'<li class="menu-item new-chatium-icon">'+
'<a href="/chatium" title="Chatium">'+
'<img class="menu-item-icon" src="https://fs.gcfiles.net/fileservice/file/download/a/87136/sc/31/h/80723613363bcb010a2e0e6a98a90c65.png">'+
'</a>'+
'</li>'
);
},0);
});
<!-- END Подмена ссылки на chatium -->
<!-- Установка активности пунктов на подмененных ссылках-->
$(document).ready(function(){
setTimeout(function(){
if (window.location.pathname.startsWith("/chatium")) {
$('.gc-account-user-menu li').removeClass('active');
$('.gc-account-user-menu li.new-chatium-icon').addClass('active');
}
if (window.location.pathname.startsWith("/profile")) {
$('.gc-account-user-menu li').removeClass('active');
}
}, 10);
});
<!-- Подмена ссылок на профиль и смену пароля -->
$(document).ajaxSuccess(function(event, xhr, settings) {
if ( settings.url == "/cms/counters/menu" ) {
var target = $('.gc-account-user-submenu-bar')[0];
var observer = new MutationObserver(function(mutations) {
$(".gc-account-user-submenu-bar li.menu-item-profile a").attr("href", "/profile");
$(".gc-account-user-submenu-bar li.menu-item-change_password a").attr("href", "/changePassword");
}).observe(target, { attributes: false, childList: true, characterData: false, subtree: true });
}
});
<!-- End Подмена ссылок на профиль и смену пароля -->
<!-- Подмена страницы личного кабинета -->
$(document).ajaxSuccess(function(event, xhr, settings) {
if ( settings.url == "/teach/control/stream" ) {
var target = $('.gc-account-user-submenu-bar')[0];
var observer = new MutationObserver(function(mutations) {
$(".gc-account-user-submenu-bar li.menu-item-teach a").attr("href", "/l_kabinet");
}).observe(target, { attributes: false, childList: true, characterData: false, subtree: true });
}
});
<!-- End Подмена страницы личного кабинета -->
<!-- Боковое меню фикс сохранение подменный профиль-->
$(()=>{setTimeout(()=>{
$(".edit-profile-popup-btn").off().click((e)=>{
e.stopPropagation();
window.open('/profile', '_parent');
});
})});
<!-- Боковое меню фикс сохранение подменный профиль-->
Карточка тренинга в GC
.stream-table {
margin-left:0!important;
}
.stream-table tbody {
display:flex;
flex-wrap: wrap;
}
.stream-table tbody tr {
position:relative;
flex:0 0 calc(33.3333% - 20px);
height:350px;
border-radius:9px;
box-shadow:0 0 3px 1px rgba(0,0,0,0.1);
overflow:hidden;
margin:10px;
transition:all 0.5s;
}
@media (max-width:850px) {
.stream-table tbody tr {
flex:0 0 calc(50% - 20px);
}
.stream-table tbody tr {
height:310px;
}
}
@media (max-width:510px) {
.stream-table tbody tr {
flex:0 0 100%;
}
}
.stream-table tr a {
height: 100%;
width:100%;
z-index: 2;
position: relative;
}
.stream-table tbody tr:hover {
transform:scale(1.05);
}
.stream-table tbody tr td {
position:relative;
display:flex;
height:100%;
width:100%;
padding:0!important;
}
/* Настраиваем заголовок */
.stream-table tbody tr td .stream-title {
position:absolute;
top:185px;
color:black!important;
z-index:1;
margin:auto 20px;
}
/* Настраиваем описание */
.stream-table tbody tr td div {
display: none;
position:absolute;
top:285px;
margin:auto 20px;
line-height:1.4em;
}
.stream-table tbody tr td:before {
content:"Deschide ";
position:absolute;
top:310px;
left:20px;
padding:5px 7px;
border:1px solid black;
border-radius:5px;
transition:all 0.3s;
}
.stream-table tbody tr td:hover:before {
background:rgb(228, 22, 122);
color:white;
}
.stream-table tbody tr.no-public td:before {
display:none;
}
.stream-table tbody tr td:after {
content:"";
position:absolute;
top:0;
left:0;
width:100%;
height:180px;
background: #8E2DE2;
background: -webkit-linear-gradient(to right, #4A00E0, #8E2DE2);
background: linear-gradient(to right, #4A00E0, #8E2DE2);
}
.stream-table tbody tr[data-training-id="934063181"] td:after {
background:url(https://fs.getcourse.ru/fileservice/file/download/a/87136/sc/239/h/71f4ed3e615b77040c1fd4aaf9648be0.jpg) no-repeat;
background-size:cover;
background-position: 0 40%;
}
Стилизация страниц со списком уроков FM
.lesson-list li.user-state-not_reached .info {
border-left: 1px solid #ecf0f1;
background: #d3d3d3;
}
.lesson-list-01 .state-icon-block {
Color: white;
}
.lesson-list-01 .lesson-list li {
margin:20px!important;
box-shadow:0 0 10px rgba(0,0,0,.5);
}
.lesson-list {
margin: 0px;
padding: 0px;
list-style: none;
background: white;
padding: 10px 0px;
margin-bottom: 20px;
border-radius:0px;
}
.lesson-list li .item-a {
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
background: #f7f7f7;
}
.user-state-bg {
background: #f7f7f7;
}
.lesson-list li .state-icon-block {
background: #f80070;
}
.lesson-list li .info {
border-radius:15!important;
margin-left: 60px;
padding-top: 0px;
height: 100%;
background: #f7f7f7;
}
.lesson-list li .title {
font-size: 25px;
font-weight: normal;
line-height: 24px;
margin-right: 20px;
display: block;
max-width: 500px;
}
.lesson-list li .info {
margin-left: 0;
width: auto;
}
.lesson-list li table td {
vertical-align: middle;
min-height: 180px;
}
.lesson-list li .item-image {
display: flex;
}
Изображения из кода оформления
Убрали во всех тренингах и подтренингах код оформления.
Код оформления сохранили в вики.
Собрали из кода все ссылки на тренинги и соответствующие изображения в отдельной таблице.
Старался не пропускать какие-то дочерние подтренинги, но думаю есть не большой шанс что то упустить.
https://docs.google.com/spreadsheets/d/1nTtFkirQSJiWBujLhNuHQ8_kPhBZe-EQWCoOxhCXEFw/edit?gid=0#gid=0
Гибкие права доступа
Таблица с правами
https://docs.google.com/spreadsheets/d/1Cp0ymngh0kfGEgZ9UMkN5gxa4bSTxdw2I3bvBtJbZ3w/edit?gid=0#gid=0
Видео поясненение
https://www.loom.com/share/08e0df245660404b8a3f3f596fb5cafa
Скрипт
<script>
const sheetBaseUrl = 'https://docs.google.com/spreadsheets/d/1Cp0ymngh0kfGEgZ9UMkN5gxa4bSTxdw2I3bvBtJbZ3w/gviz/tq?tqx=out:csv';
const accessSheetUrl = sheetBaseUrl + '&sheet=Доступ';
const superUserSheetUrl = sheetBaseUrl + '&sheet=SUPERUSERS';
const currentPath = window.location.pathname.toLowerCase();
const userId = String(window.accountUserId).trim();
const waitForUserInfo = setInterval(() => {
const user = window.userInfo;
if (!user) return;
clearInterval(waitForUserInfo);
const hasAccessRole = user.isAdmin || user.isManager || user.isTeacher;
if (!hasAccessRole) return;
Promise.all([
fetch(accessSheetUrl).then(r => r.text()),
fetch(superUserSheetUrl).then(r => r.text())
])
.then(([accessCsv, superCsv]) => {
const superUsers = superCsv
.trim()
.split('\n')
.flatMap(row => row.split(','))
.map(id => id.replace(/["\r\n]/g, '').trim())
.filter(Boolean);
if (superUsers.includes(userId)) return;
const rows = accessCsv.trim().split('\n'); // 👈 теперь БЕЗ slice(1)
const cleanRows = [];
for (const row of rows) {
const parts = row.split(',').map(p => p.replace(/["\r\n]/g, '').trim());
const basePath = parts[1]?.toLowerCase() || "";
const ids = parts.slice(2).filter(Boolean);
if (basePath.length >= 3) {
cleanRows.push({ basePath, ids });
}
}
const matchedRow = cleanRows.find(r => currentPath.includes(r.basePath));
if (matchedRow) {
if (matchedRow.ids.includes(userId)) {
console.log(`✅ Доступ разрешён к "${matchedRow.basePath}"`);
} else {
console.warn(`❌ Доступ запрещён — ID не найден в строке "${matchedRow.basePath}"`);
window.location.replace('/redirect-acces');
}
} else {
console.log("🟢 Путь не ограничен — доступ открыт");
}
})
.catch(err => console.error('❌ Ошибка загрузки:', err));
}, 100);
</script>
Боковая панель FM
JS
<!-- Подмена пункта меню Chatium -->
$(function() {
setTimeout(function(){
$(".menu-item-sales").after(
'<li class="menu-item new-chatium-icon">'+
'<a href="/chatium" title="Chatium">'+
'<img class="menu-item-icon" src="https://fs.gcfiles.net/fileservice/file/download/a/87136/sc/31/h/80723613363bcb010a2e0e6a98a90c65.png">'+
'</a>'+
'</li>'
);
},0);
});
<!-- END Подмена ссылки на chatium -->
<!-- Установка активности пунктов на подмененных ссылках-->
$(document).ready(function(){
setTimeout(function(){
if (window.location.pathname.startsWith("/chatium")) {
$('.gc-account-user-menu li').removeClass('active');
$('.gc-account-user-menu li.new-chatium-icon').addClass('active');
}
if (window.location.pathname.startsWith("/profile")) {
$('.gc-account-user-menu li').removeClass('active');
}
}, 10);
});
<!-- Подмена ссылок на профиль и смену пароля -->
$(document).ajaxSuccess(function(event, xhr, settings) {
if ( settings.url == "/cms/counters/menu" ) {
var target = $('.gc-account-user-submenu-bar')[0];
var observer = new MutationObserver(function(mutations) {
$(".gc-account-user-submenu-bar li.menu-item-profile a").attr("href", "/profile");
$(".gc-account-user-submenu-bar li.menu-item-change_password a").attr("href", "/changePassword");
}).observe(target, { attributes: false, childList: true, characterData: false, subtree: true });
}
});
<!-- End Подмена ссылок на профиль и смену пароля -->
<!-- Подмена страницы личного кабинета -->
$(document).ajaxSuccess(function(event, xhr, settings) {
if ( settings.url == "/teach/control/stream" ) {
var target = $('.gc-account-user-submenu-bar')[0];
var observer = new MutationObserver(function(mutations) {
$(".gc-account-user-submenu-bar li.menu-item-teach a").attr("href", "/l_kabinet");
}).observe(target, { attributes: false, childList: true, characterData: false, subtree: true });
}
});
<!-- End Подмена страницы личного кабинета -->
<!-- Боковое меню фикс сохранение подменный профиль-->
$(()=>{setTimeout(()=>{
$(".edit-profile-popup-btn").off().click((e)=>{
e.stopPropagation();
window.open('/profile', '_parent');
});
})});
<!-- Боковое меню фикс сохранение подменный профиль-->
CSS
/*Убираем бэкграунд иконки-пропадает ховер выделение */
.gc-account-leftbar .gc-account-user-menu li a {
background-color: transparent!important;
}
/* Убираем разрыв */
.gc-account-leftbar .gc-account-user-menu li {
border-bottom: none;
}
/* Прячем старую иконку чатиума полностью*/
li.menu-item-chatium {
display:none;
}
/* Отступы между иконкой и выделением*/
.gc-account-leftbar .gc-account-user-menu li a.with-label {
padding: 3px 0px 0px 0px!important;
margin-top:10px;
}
/* Делает прозрачными места иконок + шрифт */
.gc-account-leftbar .gc-account-user-menu li a {
background:none!important;
font-family: 'Urbanist', sans-serif;
font-style: normal;
font-weight: 700;
font-size: 11px;
}
/* Подпись для новой*/
.gc-account-user-menu li.menu-item.new-chatium-icon a:after{
content: "Chatium";
color: #000;
bottom: 2px!important;
font-weight: 600;
}
/*Задаем выделение ярлыка*/
.custom-menu .gc-account-leftbar .gc-account-user-menu li.active a, .custom-menu .gc-account-leftbar .gc-account-user-menu li.selected a {
background-color: #FFF!important;
}
li.menu-item.menu-item-profile a, li.menu-item.menu-item-notifications_button_small a, li.menu-item.menu-item-cms a, li.menu-item.menu-item-teach a, li.menu-item.menu-item-user a, li.menu-item.menu-item-tasks a, li.menu-item.menu-item-notifications a, li.menu-item.menu-item-sales a, li.menu-item.menu-item-chatium a {
display: block;
background: transparent;
margin: 3px auto 0px;
width: 62px !important;
height: 62px !important;
border-radius: 8px;
transition: all 1.0s;
}
/* пододвигаем колокольчик */
li.menu-item.menu-item-notifications_button_small a {
height: 35px !important;
border-radius: 5px;
}
/*Скругление профиля*/
.menu-item-profile .menu-item-icon {
border-radius: 26px;
width: 52px;
border: 2px solid #EB1a41;
margin-top:5px;
}
/*Позицианируем номерки*/
.gc-account-leftbar li:not(.menu-item-profile):not(.menu-item-notifications_button_small) .notify-count {
bottom: unset;
top: 0%;
}
/* Шайк меню */
.gc-account-user-menu .menu-item a:hover img
{
-webkit-animation: shake-top 0.8s cubic-bezier(0.455, 0.030, 0.515, 0.955) both;
animation: shake-top 0.8s cubic-bezier(0.455, 0.030, 0.515, 0.955) both;
}
.gc-account-user-menu .menu-item a:hover:after,
.menu-item-prolongation a:hover img,
.menu-item.new-chatium-icon a:hover img
{
-webkit-animation: shake-top 0.8s cubic-bezier(0.455, 0.030, 0.515, 0.955) both;
animation: shake-top 0.8s cubic-bezier(0.455, 0.030, 0.515, 0.955) both;
}
.notify-count {
z-index:1;
}
@-webkit-keyframes shake-top {
0%,
100% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transform-origin: 50% 0;
transform-origin: 50% 0;
}
10% {
-webkit-transform: rotate(2deg);
transform: rotate(2deg);
}
20%,
40%,
60% {
-webkit-transform: rotate(-4deg);
transform: rotate(-4deg);
}
30%,
50%,
70% {
-webkit-transform: rotate(4deg);
transform: rotate(4deg);
}
80% {
-webkit-transform: rotate(-2deg);
transform: rotate(-2deg);
}
90% {
-webkit-transform: rotate(2deg);
transform: rotate(2deg);
}
}
@keyframes shake-top {
0%,
100% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transform-origin: 50% 0;
transform-origin: 50% 0;
}
10% {
-webkit-transform: rotate(2deg);
transform: rotate(2deg);
}
20%,
40%,
60% {
-webkit-transform: rotate(-4deg);
transform: rotate(-4deg);
}
30%,
50%,
70% {
-webkit-transform: rotate(4deg);
transform: rotate(4deg);
}
80% {
-webkit-transform: rotate(-2deg);
transform: rotate(-2deg);
}
90% {
-webkit-transform: rotate(2deg);
transform: rotate(2deg);
}
}
/*_____________Настройка суб меню___________________*/
/*Настройка суб меню______________*/
<!-- Настройка суб меню -->
.gc-account-leftbar .gc-account-user-submenu-bar {
width: 320px;
}
.gc-account-user-submenu-bar .gc-account-user-submenu li a {
padding-top: 9px;
padding-bottom: 9px;
text-transform: lowercase;
font-family: 'Urbanist', sans-serif;
font-weight: 500!important;
font-style: normal;
font-size: 22px;
line-height: 108.5%;
padding-left: 20px;
}
/*Суб меню с заглавной*/
.gc-account-user-submenu-bar .gc-account-user-submenu li a::first-letter {
text-transform: uppercase;
}
.custom-menu .gc-account-user-submenu-bar .gc-account-user-submenu a:first-letter {
text-transform: uppercase;
}
.custom-menu .gc-account-user-submenu-bar .gc-account-user-submenu a:hover {
color: #555555;
}
/*Заголовок субменю_*/
.gc-account-user-submenu-bar h3 {
font-family: 'Urbanist', sans-serif;
font-weight: 700!important;
color: #004456;
font-size: 30px;
line-height: 40px;
}
.gc-account-leftbar .gc-account-user-submenu-bar {
display: flex;
flex-direction: column;
background: #FFF;
}
.gc-account-leftbar .gc-account-user-submenu-bar:after {
content: "";
display: block;
height: 60px;
background: url("https://fs.gcfiles.net/fileservice/file/download/a/87136/sc/323/h/2a01bc7dda6cdfa74cb5e627822c51f2.png") center / contain no-repeat;
margin-top: auto;
margin-bottom: 20px;
}
/* Анимация выбора меню */
.gc-account-user-submenu-bar .gc-account-user-submenu li {
position: realtive;
}
.gc-account-user-submenu-bar .gc-account-user-submenu li a {
position: relative !important;
z-index: 9999;
transition: all 1.3s;
}
.gc-account-user-submenu-bar .gc-account-user-submenu li::after {
content: "";
width: 0%;
height: 100%;
position: absolute;
background: silver;
top:0;
left:0;
transition: all .5s;
z-index: 0;
}
.gc-account-user-submenu-bar .gc-account-user-submenu li a:hover {
background: transparent;
color:#005B63;
z-index: 1;
text-decoration: none;
}
.gc-account-user-submenu-bar .gc-account-user-submenu li:hover::after {
width: 100%;
}
@media (max-width: 768px) {
.gc-account-leftbar .gc-account-user-menu {
margin-bottom: 45px;
background: #5E2E92;
width: 70px;
height: 100%;
}
.gc-main-content.with-left-menu {
margin-left: 0;
}
}
@media (max-width: 576px) {
.gc-account-leftbar
.gc-account-user-submenu-bar-notifications_button_small {
width: calc(100vw - 70px);
overflow: auto;
}
}
@media (max-width: 768px) {
.gc-account-leftbar .gc-account-user-menu li {
border-bottom: none;
}
}
.gc-account-user-menu {
font-family: 'Urbanist', sans-serif!important;
}
.popover {
z-index: 8888;
}
Оформление Remake
Тема Remake
//Версия от 09.02.25 17:00
var layoutID = '00054';
//// Настройка видимости оформления Remake (customStyleVisibilityRule):
//// true - все
//// false - никто
//// window.userInfo.isAdmin - админы (не работает в чатиуме)
//// window.accountUserId == 216415659 - только пользователь с таким ID
//// window.userInfo.isAdmin && window.accountUserId != 348017492; — админы за исключением конкретного пользователя
//// window.userInfo.isAdmin || [216415659, 123456789, 987654321].indexOf(window.accountUserId) > -1; — админы и конкретные пользователи
/*
var customStyleVisibilityRule =
window.userInfo.isAdmin
|| [216415659, 123456789, 987654321].indexOf(window.accountUserId) > -1;
// админы и конкретные пользователи */
var customStyleVisibilityRule = true;
let remakeTopMenu = {
init: true,
links: [
{
name: "Scrieți suportului tehnic",
link: "javascript: m_custom_btn_click()",
icon: "https://remake-proxy.ru/themes/images/icons/chat-icon.svg",
},
]
}
// Компактное меню на всех страницах (раскомментируйте код ниже, чтобы включить)
// $(()=>{$('body').addClass('compact-menu compact-menu-by-default')});
function extraScriptsX() {
/****************************/
/* Extra Scripts */
/****************************/
/* ВСТАВЛЯЙТЕ ДОПОЛНИТЕЛЬНЫЙ КОД ЗДЕСЬ */
if(window.PageChecker.isPaymentsPage) {
$('.xdget-partialpay span[style="color: #186905"]').text('Disponibilă achitarea parțială a comenzii')
}
if(window.PageChecker.isWebinarPage) {
let webinalInter = setInterval(function(){
if ($('.broadcast-started').length) {
clearInterval(webinalInter)
$('.broadcast-started').text('Webinarul a început, fă click pe ecran')
}
},100)
}
/****************************/
/* END Extra Scripts */
/****************************/
////////////////////////////////////////////
// Дальше ничего трогать не нужно! //
////////////////////////////////////////////
// START Remake Support Block
if(window.userInfo.isAdmin && !$('meta[property="og:title"]').length) {
$(document).on('remake-left-menu-ready',function(){
let $styles = $(`
<style>
body #gcAccountUserMenu .custom-btns-wrapper {
margin-top: 0;
}
body #gcAccountUserMenu .remake-support-wrapper {
margin-top: 0;
}
body #gcAccountUserMenu .custom-btns-wrapper .menutoggle-btn {
margin-bottom: 0;
}
body #gcAccountUserMenu .custom-btns-wrapper .custom-btn.remake-support {
color: var(--color-3);
background: none!important;
padding-top: 5px;
padding-bottom: 5px;
}
body #gcAccountUserMenu .custom-btns-wrapper .custom-btn.remake-support:before {
transition: background 0.2s;
background: var(--color-3);
mask-image: url(https://remake-proxy.ru/themes/images/icons/headphones-support.svg);
-webkit-mask-image: url(https://remake-proxy.ru/themes/images/icons/headphones-support.svg);
}
body #gcAccountUserMenu .custom-btns-wrapper .custom-btn.remake-support:hover:before {
background: var(--color-3-1);
}
#gcAccountUserMenu .custom-btns-wrapper .custom-btn.remake-support span:before {
content:"Тех.поддержка Remake";
}
#chatra:not(.chatra--expanded) { visibility: hidden !important; opacity: 0 !important; pointer-events: none; transition: none; }
</style>
`);
let $remake_support_wrapper = $(`
<div class="custom-btns-wrapper remake-support-wrapper">
<a class="custom-btn remake-support" href="https://t.me/RemakeGetCourse_bot" target="_blank"><span></span></a>
</div>
`);
$('.custom-btns-wrapper').after($styles, $remake_support_wrapper);
$remake_support_wrapper.prepend($('#gcAccountUserMenu .custom-btns-wrapper .menutoggle-btn'));
});
}
// END Remake Support Block
}; // END extraScriptsX, эти скобки не трогать
$(()=>{
if(window.userInfo.isAdmin) {
$('body').css('opacity','1'); $('html').addClass('loaded');
}
});
$(document).on('remake-ready',()=>{
extraScriptsX();
})
let customStyleSheetLayoutID;
if ((customStyleSheetLayoutID = /\/layout\/js\?id=(\d+)/.exec(document.currentScript.src)) !== null ||
(customStyleSheetLayoutID = /\/layout\/js?.*&id=(\d+)/.exec(document.currentScript.src)) !== null ||
(customStyleSheetLayoutID = /\/pl\/layout\/(\d+)/.exec(document.currentScript.src)) !== null) customStyleSheetLayoutID = customStyleSheetLayoutID[1];
var customStyleSheetX = "/pl/cms/layout/css?hash&bundle=1&id="+customStyleSheetLayoutID;
var remakeProxyX = "https://remake-proxy.ru";
(function(){
let remakeToggler = (() => {
let matches = document.cookie.match(
new RegExp(
"(?:^|; )" +
"remake-toggler".replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') +
"=([^;]*)"
)
);
return matches ? parseInt(decodeURIComponent(matches[1])) : 1;
})();
if (window.userInfo.isAdmin && !$('#remake-toggler').length) {
if ($('#gcAccountUserMenu').length) remakeTogglerInit();
else
$(document).ajaxSend(function (event, xhr, settings) {
if (settings.url == "/cms/counters/menu") remakeTogglerInit();
});
function remakeTogglerInit() {
setTimeout(() => {
let $remakeToggler = $(`
<label for="remake-toggler">
<span>Switch Remake</span>
<style>
#gcAccountUserMenu .custom-btns-wrapper label[for="remake-toggler"] {
display: flex;
justify-content: center;
align-items: center;
background: var(--m-custom-btn-color);
padding: 14px;
text-align: center;
border-radius: 6px;
font-family: var(--font-family-2a);
font-style: normal;
font-weight: normal;
font-size: 16px;
line-height: 120%;
color: var(--m-item-active);
margin-bottom: 10px;
text-decoration: none;
outline: none;
transition: background-color .2s, border-radius .3s;
color: var(--color-3,#222);
background: none !important;
padding-top: 5px;
padding-bottom: 5px;
cursor:pointer;
}
#gcAccountUserMenu label[for="remake-toggler"]:before {
content: "";
display: inline-block;
width: 24px;
height: 24px;
margin-right: 5px;
background: var(--m-item-active);
mask-image: var(--paperplane-icon);
-webkit-mask-image: var(--paperplane-icon);
mask-size: contain;
-webkit-mask-size: contain;
mask-repeat: no-repeat;
-webkit-mask-repeat: no-repeat;
mask-position: center;
-webkit-mask-position: center;
mask-origin: content-box;
-webkit-mask-origin: content-box;
transition: background 0.2s;
background: var(--color-3);
mask-image: url(https://remake-proxy.ru/themes/images/icons/switch-remake-icon.svg);
-webkit-mask-image: url(https://remake-proxy.ru/themes/images/icons/switch-remake-icon.svg);
}
label[for="remake-toggler"] input {
display: none;
}
#gcAccountUserMenu label[for="remake-toggler"] span {
display: inline-block;
overflow: hidden;
max-width: 300px;
white-space: nowrap;
transition: max-width 0.3s;
}
@media(min-width:769px) {
body.compact-menu #gcAccountUserMenu label[for="remake-toggler"] span {
max-width:0
}
}
#gcAccountUserMenu:not(.menu-ready) label[for="remake-toggler"] {
height: fit-content;
margin-top: auto;
border-radius: 6px;
background: #3d556d;
padding: 10px 7px;
margin-left: auto;
margin-right: auto;
display: flex;
justify-content: center;
text-align: center;
align-items: center;
cursor:pointer;
}
#gcAccountUserMenu:not(.menu-ready) label[for="remake-toggler"]:before {
display:none
}
#gcAccountUserMenu:not(.menu-ready) .gc-account-leftbar {
display: flex;
flex-direction: column;
}
#gcAccountUserMenu:not(.menu-ready) label[for="remake-toggler"] span {
color:#fff;
white-space: pre-wrap;
}
</style>
</label>
`);
let $remakeTogglerRadio = $('<input id="remake-toggler" type="radio">');
$remakeTogglerRadio
.attr('checked', !!remakeToggler)
.on('change', (e) => {
e.preventDefault();
});
$remakeToggler
.prepend($remakeTogglerRadio)
.on('click', function (e) {
if (
window.confirm(
"Для переключения оформления Remake страница будет перезагружена. Продолжить?"
)
) {
let $r = $(this).find('input');
$r.prop('checked', !$r.is(':checked'));
window.gcSetCookie("remake-toggler", $r.is(':checked') ? 1 : 0, {
path: '/'
});
window.location.reload();
}
return false;
});
if (remakeToggler) {
$('#gcAccountUserMenu').on('menu-ready', () => {
$('#gcAccountUserMenu .custom-btns-wrapper').last().append($remakeToggler);
});
} else {
$('#gcAccountUserMenu .gc-account-leftbar').append($remakeToggler);
}
});
}
}
if (
!customStyleVisibilityRule ||
window.location.search.indexOf("originalview") > -1 ||
!remakeToggler
) {
$('#preloader-styles').remove();
return false;
}
if(typeof styleX_init != "undefined") return false;
var styleX_init = 1;
CSSinjection(customStyleSheetX);
setTimeout(()=>{
if($('#gcAccountUserMenu').length) launchLeftMenuScripts();
else $(document).ajaxSend(function(event, xhr, settings) {
if ( settings.url == "/cms/counters/menu" ) launchLeftMenuScripts();
});
function launchLeftMenuScripts() {
//js-cookie
!function(e){var n;if("function"==typeof define&&define.amd&&(define(e),n=!0),"object"==typeof exports&&(module.exports=e(),n=!0),!n){var t=window.Cookies,o=window.Cookies=e();o.noConflict=function(){return window.Cookies=t,o}}}(function(){function f(){for(var e=0,n={};e<arguments.length;e++){var t=arguments[e];for(var o in t)n[o]=t[o]}return n}function a(e){return e.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent)}return function e(u){function c(){}function t(e,n,t){if("undefined"!=typeof document){"number"==typeof(t=f({path:"/"},c.defaults,t)).expires&&(t.expires=new Date(1*new Date+864e5*t.expires)),t.expires=t.expires?t.expires.toUTCString():"";try{var o=JSON.stringify(n);/^[\{\[]/.test(o)&&(n=o)}catch(e){}n=u.write?u.write(n,e):encodeURIComponent(String(n)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),e=encodeURIComponent(String(e)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var r="";for(var i in t)t[i]&&(r+="; "+i,!0!==t[i]&&(r+="="+t[i].split(";")[0]));return document.cookie=e+"="+n+r}}function n(e,n){if("undefined"!=typeof document){for(var t={},o=document.cookie?document.cookie.split("; "):[],r=0;r<o.length;r++){var i=o[r].split("="),c=i.slice(1).join("=");n||'"'!==c.charAt(0)||(c=c.slice(1,-1));try{var f=a(i[0]);if(c=(u.read||u)(c,f)||a(c),n)try{c=JSON.parse(c)}catch(e){}if(t[f]=c,e===f)break}catch(e){}}return e?t[e]:t}}return c.set=t,c.get=function(e){return n(e,!1)},c.getJSON=function(e){return n(e,!0)},c.remove=function(e,n){t(e,"",f(n,{expires:-1}))},c.defaults={},c.withConverter=e,c}(function(){})});
if (Cookies.get('compact-menu') === "true") $('body').addClass('compact-menu');
let $menuStyleLink = $("<link>", {rel: "stylesheet", type: "text/css", href: remakeProxyX+"/pl/layout/"+layoutID+"/15/left-menu-styles.css", crossOrigin: "anonymous"});
$menuStyleLink.on('load', ()=>{
let wait_styles = setInterval(()=>{
if($('html').css('order') == 1) {
clearInterval(wait_styles);
JSinjection(remakeProxyX+"/pl/layout/"+layoutID+"/14/left-menu-scripts.js", ()=>{
$(()=>{setTimeout(()=>{
$('html').addClass('page-ready');
$('#gcAccountUserMenu .gc-account-leftbar').stickySidebar({minWidth: 768});
$('#gcAccountUserMenu').trigger('menu-ready');
})});
});
}
});
});
$('link[href*="/nassets/"]:last').after($menuStyleLink);
}
$(()=>{
if(
!$('.gc-account-leftbar .m-account-logo').length &&
(
$('body.chatium_body').length ||
window.navigator.userAgent.includes('ChatiumWebView') ||
$('script[src*="getcourse_webview"]').length ||
(window.location.pathname.indexOf('/pl/teach/control/lesson/webview') > -1)
)
) {
CSSinjection(remakeProxyX+"/pl/layout/"+layoutID+"/14/left-menu-styles.css", ()=>{
JSinjection(remakeProxyX+"/pl/layout/"+layoutID+"/14/left-menu-scripts.js", ()=>{
$(()=>{setTimeout(()=>{
$('html').addClass('page-ready');
})});
});
});
$('body').prepend(`
<div id="gcAccountUserMenu" class="menu-ready">
<div class="gc-account-leftbar">
<a href="javascript:void(0)" class="toggle-link without-icon"></a>
</div>
</div>
`);
$(window).on('load', makeRemakeMenu);
}
});
$(document).ajaxSuccess(function(event, xhr, settings) {
if (settings.url == "/cms/counters/menu") {
makeRemakeMenu(xhr.responseJSON || (typeof xhr.responseText === 'string' ? xhr.responseText : null))
}
});
});
function makeRemakeMenu(data = false) {
let checkMenuReady = setInterval(()=>{
if($('#gcAccountUserMenu').hasClass('menu-ready')) {
clearInterval(checkMenuReady);
let accountLogo = getComputedStyle($('html body').get(0)).getPropertyValue('--m-account-logo-mob')
|| getComputedStyle($('html').get(0)).getPropertyValue('--m-account-logo-mob');
accountLogo = accountLogo.replace(/\s*url\(([^)]*)\)/, "$1").replace(/["']/g, '');
$('#gcAccountUserMenu .gc-account-leftbar .toggle-link').off().html(`
<a class="m-account-logo" href="javascript:void(0)" onclick="location.href=getComputedStyle($('#gcAccountUserMenu')[0]).getPropertyValue('--m-account-logo-url').replace(/['"]/g,'')">
<img height="100%" src="${accountLogo}" alt="">
</a>
<a class="m-search" href="javascript:void(0)" onclick="showMobSearch(event)"></a>
<a class="m-notify" href="javascript:void(0)" onclick="showNotifications(event)">
<span class="m-notify-icon"></span>
<span class="notify-count"></span>
</a>
${!(
$('body.chatium_body').length ||
window.navigator.userAgent.includes('ChatiumWebView') ||
$('script[src*="getcourse_webview"]').length ||
(window.location.pathname.indexOf('/pl/teach/control/lesson/webview') > -1)
) ? '<a class="m-burger-btn" href="javascript:void(0)" onclick="showMobMenu(event)"></a>':''}
`);
let counters = {
"chatium-chatium_app": ".submenu-item-chatium_app",
"chatium_updates": ".submenu-item-chatium_updates",
"sales-my_deals": ".submenu-item-my_deals",
"teach-answers": ".submenu-item-answers",
"notifications-inbox": ".submenu-item-inbox",
}
if(data){
let json_counters;
if (typeof data === 'string') {
json_counters = JSON.parse(data).counters || [];
} else if (typeof data === 'object') {
json_counters = data.counters || [];
}
$.each(json_counters, (name,val)=>{
if(typeof counters[name] !== "undefined" && val!=0) {
$(counters[name]).find('.submenu-notify-count').html(val);
}
});
if(typeof json_counters.notifications_button_small !== "undefined" && json_counters.notifications_button_small!=0) {
$('#gcAccountUserMenu .gc-account-leftbar .toggle-link > .m-notify > .notify-count').html(json_counters.notifications_button_small);
}
}
}
},10);
}
JSinjection(remakeProxyX+"/pl/layout/"+layoutID+"/0/distributor.js", function(){
setTimeout(()=>{
if($.active) {
let q = 0;
$(document).ajaxStop(function() {
if(!q++) {
setTimeout(()=>{
$(document).trigger('remake-ready');
});
}
});
} else {
setTimeout(()=>{
$(document).trigger('remake-ready');
});
}
});
});
})();
function JSinjection(fileName, callback) {
var script = document.createElement( "script" )
script.type = "text/javascript";
if(typeof callback != "undefined") {
if(script.readyState) { // only required for IE <9
script.onreadystatechange = function() {
if ( script.readyState === "loaded" || script.readyState === "complete" ) {
script.onreadystatechange = null;
callback();
}
};
} else { //Others
script.onload = function() {
callback();
};
}
}
script.src = fileName;
script.crossOrigin = "anonymous";
document.getElementsByTagName( "head" )[0].appendChild( script );
}
function CSSinjection(fileName, callback) {
var link = document.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.crossOrigin = "anonymous";
if(typeof callback != "undefined") {
link.onload = callback();
}
link.href = fileName;
document.head.appendChild(link);
}
Блок кода оформления Remake в Header
Шрифты и стили уведомления
<!-- Подключение шрифта и стилей для уведомления -->
<style>
@import url('https://fonts.googleapis.com/css2?family=Golos+Text:wght@400;500;600;700;800;900&display=swap');
.message-wrapper {
width: 100%;
position: fixed;
left: 50%;
bottom: 50px;
background: #333;
border-radius: 50px;
display: flex;
flex-direction: row;
align-items: center;
padding: 20px 40px;
z-index: 10000;
max-width: 1000px;
animation: fadeIn 0.3s linear 1 forwards 5s;
transform: translate(-50%, 10px);
opacity: 0;
}
.message-wrapper.fadeOut {
animation: fadeOut 0.3s linear 1 forwards;
}
.message-text,
.message-btn {
font-family: 'Golos', 'Manrope', Helvetica, Arial, sans-serif;
font-style: normal;
font-weight: 400;
font-size: 16px;
line-height: 140%;
color: #fff;
}
.message-text {
padding-right: 20px;
}
.message-btn {
border: none;
cursor: pointer;
background: #fff;
border-radius: 30px;
padding: 20px 89px;
transition: 0.3s all;
color: #333;
}
.message-btn:hover {
opacity: 0.8;
}
.message-text a {
border-bottom: 1px solid #fff;
text-decoration: none;
color: #fff !important;
}
@media (max-width: 991px) {
.message-wrapper {
flex-direction: column;
justify-content: center;
align-items: center;
padding: 20px;
border-radius: 20px;
}
.message-text {
margin-bottom: 30px;
margin-right: 0;
padding-right: 0;
}
}
@keyframes fadeIn {
from {
transform: translate(-50%, 10px);
opacity: 0;
}
to {
transform: translate(-50%, 0);
opacity: 1;
}
}
@keyframes fadeOut {
from {
transform: translate(-50%, 0);
opacity: 1;
}
to {
transform: translate(-50%, 10px);
opacity: 0;
}
}
</style>
Прелоадер для админа
<script>
if (window.userInfo.isAdmin) {
document.write(`
<style id="preloader-styles">
body { opacity: 0; transition: opacity 0.3s; }
html.loaded body { opacity: 1; }
#gcAccountUserMenu { opacity: 0; }
html.page-ready #gcAccountUserMenu { opacity: 1; }
html:before {
content: "";
position: fixed;
top: 50%;
left: 50%;
width: 40px;
height: 40px;
font-size: 10px;
text-indent: -9999em;
border: 5px solid transparent;
border-bottom: 5px solid #333;
border-left: 5px solid #333;
transform: translate(-50%, -50%);
border-radius: 100%;
z-index: 10000;
animation: remake-preloader 1s infinite linear;
}
html.loaded:before {
opacity: 0;
}
@keyframes remake-preloader {
0% { transform: translate(-50%, -50%) rotate(0deg); }
100% { transform: translate(-50%, -50%) rotate(360deg); }
}
</style>
`);
}
</script>
Уведомление о редизайне
<script>
(function() {
$(() => {
if ($('#gcAccountUserMenu').length && !localStorage.getItem("redesignPopupView")) {
const $message = $(`
<div class="message-wrapper">
<div class="message-text">
În curând, designul școlii va fi actualizat. Dacă ceva nu se afișează corect, reveniți peste 15 minute sau încercați să ștergeți memoria cache.
<a href="https://support.google.com/accounts/answer/32050?hl=ro&co=GENIE.Platform%3DDesktop">Instrucțiuni pentru ștergerea memoriei cache</a>
</div>
<button class="message-btn">Închide</button>
</div>
`);
$('body').append($message);
$message.find(".message-btn").on("click", function () {
localStorage.setItem("redesignPopupView", true);
$message.addClass("fadeOut");
setTimeout(() => $message.remove(), 1000);
});
}
});
})();
</script>
Настройки прелоадера
<script>
const PRELOADER_REMAKE_READY_TIMEOUT = 1500;
const PRELOADER_FALLBACK_TIMEOUT = 7000;
const removePreloader = () => {
$('body').css('opacity', '1');
$('html').addClass('loaded page-ready');
};
$(document).on('remake-ready', () => {
setTimeout(removePreloader, PRELOADER_REMAKE_READY_TIMEOUT);
});
setTimeout(removePreloader, PRELOADER_FALLBACK_TIMEOUT);
</script>
Подключение Remake и принудительная отрисовка
<!-- Подключение скрипта Remake -->
<script type="text/javascript" src="/pl/cms/layout/js?hash&bundle=0&id=52740"></script>
<!-- Резервное включение видимости после загрузки -->
<style>
body {
opacity: 0;
transition: opacity 1ms linear;
}
#gcAccountUserMenu {
opacity: 0;
}
</style>
<script>
$(() => {
setTimeout(() => {
console.log("body loaded");
$("body").css("opacity", "1");
$("#gcAccountUserMenu").css("opacity", "1");
}, 500);
});
</script>
Прямой переход ученика к открытому потоку (подтренингу)
Для прямого перехода в подтренинг ниже по иерархии наследования, если этот подтренинг единственный доступный пользователю. Позволяет ученику миновать ручной выбор среди недоступных ему подтренингов.
Настройка конкретного подтренинга
1. Перейдите в настройки вида подтренинга-марафона, в котором находятся подтренинги-потоки.
2. Добавьте блок “Javascript” и разместите его последним блоком на странице.
3. В блок вставьте код из документа ниже:
$(document).ready(function () {
if (!$('.gc-main-content').hasClass('gc-user-user')) return;
const $streamTable = $('.stream-table');
if (!$streamTable.length) return;
const $subTrainingRows = $streamTable.find('tbody tr');
if ($subTrainingRows.length === 1) {
const link = $subTrainingRows.find('a').attr('href');
if (link) window.location.href = link;
}
});
Пример действий:
В результате, если ученику в тренинге виден только один подтренинг, он будет автоматически переходить в него:
Если же более одного, то пользователь остается на странице тренинга:
Глобальная настрока
Вставьте представленный ниже код в «Настройки аккаунта» - «Счетчики и прочие скрипты для BODY»
$(document).ready(function () {
if (!$('.gc-main-content').hasClass('gc-user-user')) return;
const $streamTable = $('.stream-table');
if (!$streamTable.length) return;
const $subTrainingRows = $streamTable.find('tbody tr');
if ($subTrainingRows.length === 1) {
const link = $subTrainingRows.find('a').attr('href');
if (link) window.location.href = link;
}
});