Календарь событий
Добавляет на форум календарь с праздниками и событиями на форуме.

Автор: Romych
Платформа: MyBB
Я сделал всего 2 опции:
1. список праздников
2. метод по которому выдаётся максимальное количество ваших пользователей, подбирается индивидуально под каждый форум. Если на форуме много активных пользователей, которые часто пользуются системой оценки поста (+ и -), то оптимальным будет метод - respect. Если просто активные пользователи, которые часто пишут, но не пользуются всякими там плюсиками, то оптимален метод - num_posts
Сразу предупреждаю, абсолютно все пользователи указавшие дату своего дня рождения в Календарь не попадут (ограниченность API)! Кстати, как и не попадут, те кто указал не полную дату. Отсутствие года гарантирует вам непопадание в Календарь.

Внешний вид календаря можете оформить на свой вкус, все правила подписаны. Внешний вид ячеек с праздничными днями тоже можно оформить индивидуально поскольку у них есть уникальный селектор, например селектор ячейки первого января:
td[data-iso="01-01"]
где сначала идёт месяц, потом день
По такому же принципу составляется список праздничных дней, сначала месяц, потом день:
var prazdnik = [{dn: '01-01', celebrate: 'Новый год'},
{dn: '01-07', celebrate: 'Рождество Христово'},
{dn: '01-14', celebrate: 'Старый Новый год'},
{dn: '02-23', celebrate: 'День защитника Отечества'},
{dn: '03-08', celebrate: 'Международный женский день'},
{dn: '04-01', celebrate: 'День смеха (День дурака)'},
{dn: '05-01', celebrate: 'День трудящихся'},
{dn: '05-09', celebrate: 'День Победы'},
{dn: '06-12', celebrate: 'День России'},
{dn: '11-04', celebrate: 'День народного единства'},
{dn: '11-07', celebrate: 'День Октябрьской революции 1917 года'}]Кстати, во всплывающей подсказке праздничного дня можно сделать изображение стикер. У кого возникнет такое желание, сначала закачайте эти стикеры куда-нибудь, потом пишите мне, сделаем правки в скрипте для вас.
Куда ставить код?
Оптимально в описание любого форума: Администрирование -> Форумы -> Редактировать (описание любого форума)
<style type="text/css">
/* Таблица календаря */
.calendar {
border: 0px;
border-collapse: collapse;
font-family: Arial;
width: auto !important;
}
/* Заголовок */
.calendar th {
text-align: center;
height: 25px;
background: #ebf0f5 !important;
color: #8996a3 !important;
border-bottom: 1px solid #ebf0f5 !important;
}
/* Заголовок праздника */
.calendar th.holiday {
color: #FF0000 !important;
}
/* Ячейка дня */
.calendar td {
border-left: 1px solid #ebf0f5 !important;
border-right: 1px solid #ebf0f5 !important;
border-bottom: 1px solid #ebf0f5 !important;
color: rgb(44, 86, 122);
position: relative;
white-space: nowrap;
width: 95px;
height: 40px;
}
@media screen and (max-width: 640px) {
.calendar td {width: 65px;height:25px;}
#imn {width: 20px;height: 20px;}
.holiday .day_num {width: 12px !important; height: 11px !important;}
.day_num {font-size: 9.5px !important;}
#clndr {width: 16px;height: 16px;}
}
/* Блок с отображающейся датой (день) */
.day_num {
position: absolute;
top: 2px;
left: 6px;
text-align: center;
color: #99acbf;
font-size: 12.5px;
}
/* Пустой день */
.calendar td.pust {
background: transparent !important;
border: none !important;
}
/* Выбранный день */
.calendar td.selected {
outline: 2px solid #98b0cd;
}
/* Праздничный день */
.calendar td.holiday {
background: #fafbfc !important;
}
/* Блок с отображающейся датой (праздничный день) */
.calendar .holiday .day_num {
cursor: pointer;
color: #555;
background: #FFE082;
border-radius: 50%;
border-color: #FF9800 !important;
border: 1px solid;
width: 18px;
height: 17px;
}
/* Кнопки навигации */
.calendar td.navigation {
text-align: center;
border: 0px none !important;
font-size: 15px;
cursor: pointer;
white-space: nowrap;
}
.calendar td a {bottom: -7px;}
/* Наложение аватаров друг на друга (необходимо при большом количестве именинников в один день) */
.calendar td a:nth-child(2) {left: -10px;}
.calendar td a:nth-child(3) {left: -20px;}
.calendar td a:nth-child(4) {left: -30px;}
.calendar td a:nth-child(5) {left: -40px;}
.calendar td a:nth-child(6) {left: -50px;}
.calendar td a:nth-child(7) {left: -60px;}
/* Всплывающий блок Календаря */
#calendar_table {
display:none;
position: fixed;
top: 10%;
background: #fff;
padding: 15px;
z-index: 9;
margin: 0 auto !important;
border-radius: 9px;
-moz-box-shadow: 0px 0px 40px #444;
-webkit-box-shadow: 0px 0px 40px #444;
box-shadow: 0px 0px 40px #444;
}
/* Кнопка иконка календаря */
#clndr {position:relative;float:right;top: -15px;cursor: pointer;}
</style>
<div id="calendar_table"></div>
<!-- Календарь событий-->
<script type="text/javascript">
var prazdnik = [{dn: '01-01', celebrate: 'Новый год'},
{dn: '01-07', celebrate: 'Рождество Христово'},
{dn: '01-14', celebrate: 'Старый Новый год'},
{dn: '02-23', celebrate: 'День защитника Отечества'},
{dn: '03-08', celebrate: 'Международный женский день'},
{dn: '04-01', celebrate: 'День смеха (День дурака)'},
{dn: '05-01', celebrate: 'День трудящихся'},
{dn: '05-09', celebrate: 'День Победы'},
{dn: '06-12', celebrate: 'День России'},
{dn: '11-04', celebrate: 'День народного единства'},
{dn: '11-07', celebrate: 'День Октябрьской революции 1917 года'}],
metod = 'num_posts'; //num_posts или respect
</script>
<script type="text/javascript" src="https://forumstatic.ru/files/0017/d8/50/11373.js"></script>Можно сделать отображение Календаря не на главной, а на отдельной странице.
Скрипт рекомендуется ставить на активные форумы, где количество зарегистрированных пользователей не меньше 100 ( а лучше от 1000). На малых форумах он мало информативен и будет выдавать ошибку в консоли, хотя она ни на что не влияет.
- Подпись автора
Герду как-то спросили:
— Вот вы писали, что "Среди разработчиков - я разработчица, среди дизайнеров - я веб-дизайнер." А кто вы среди ролевиков?
Герда не растерялась и ответила:
— Иди на**й.









