Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Новые возможности форумов » Скрипты от пользователей 3


Скрипты от пользователей 3

Сообщений 541 страница 560 из 565

1

Администрация MyBB не гарантирует работоспособность данных скриптов, вы ставите их на свой страх и риск.

Для тех кто выкладывает скрипты:
1) Дайте краткое описание скрипта.
2) Обязательно укажите куда его вставлять.
3) Сам скрипт вставьте в bb-коды [сode] [/сode] или в [quotе] [/quotе]

В данной теме запрещено задавать вопросы и просить скрипты. Для этого есть раздел  Запросы по скриптам[10], при нарушение данного правила будет выдаваться предупреждение в профиль.

Отредактировано Alex_63 (Ср, 12 Фев 2020 20:35:57)

+8

541

Тоже самое, что и постом выше, только в другом оформлении. Под другой плагин всплывающей подсказки поэтому код немного короче. Цветовыделение групп присутствует, так что можно раскрашивать через css

.tipsy .usTitle-1 {color: #ed7e1c;}
.tipsy .usTitle-2 {color: #88ffff;}
и так далее

ДЕМО

в html-низ:

Код:
<!--  Привеью темы, рейтинг и подписчики -->
<style>
.tipsy .userInfo img, .tipsy .avatarTop img {border-radius: 50%;width: 52px;height: 52px;float: left;margin: 0 5px 0 0;}
.tipsy .userTitle h3,.tipsy .userTitle h4 {margin: 0;}
.tipsy .userTitle h4 {font-weight: normal;font-style: italic;}
.tipsy .userBlurb p,.tipsy .lastActivity p {margin: 0; word-spacing : 8px;}
.tipsy .topPreview, .tipsy .topicStart {max-width: 400px;overflow: hidden;position: relative;}
.tipsy .topPreview h2 {margin: 0 !important;font-size: 14px;font-weight: normal;}
.tipsy .topPreview h2 span {font-weight: bold;} 
.tipsy .topPreview .reit {color: #10c610;}
.tipsy .topPreview .subs {color: #c66510;}
.tipsy hr {margin: 8px 5px;border: none;height: 1px;background-color: #788593;}
.tipsy .avatarTop {height: 52px;}
.tipsy .topicStart p {margin: 5px 0;}
</style>
<script type="text/javascript" src="https://forumstatic.ru/files/0017/d8/50/86896.js"></script>

На мобильных с разрешением экрана ниже 768 срабатывание подсказки отключено, как и на упомянутых выше платных форумных движках

+7

542

Блок с программируемым лимитом времени отображения

Скриншот:
https://forumupload.ru/uploads/0000/14/1c/22787/160428.gif

Код вставки в HTML верх:

<!-- Блок с программируемым лимитом времени отображения; -->
<link rel="stylesheet" type="text/css" href="https://forumstatic.ru/files/0014/cc/0a/24229.css" />
<script type="text/javascript" src="https://forumstatic.ru/files/0014/cc/0a/51971.js"></script>

Описание:
   Выделяем контент вставки в блок с ограничением по времени, жмем кнопку в дополнительных тегах в форме ответа: https://forumupload.ru/uploads/0000/14/ … /77758.jpg
Во всплывающем окне вводим либо дату - время окончания отображения, либо длительность показа часы:минуты ...
Минимально выставляемое  время  - 1-а минута ( вводим:  0:01 ),
Таймер обратного отсчета считает в виде: часы:минуты:секунды

... Тестируйте  :flag:

Отредактировано Deff (Вс, 6 Сен 2020 13:08:58)

+14

543

Пагинатор MyBB


Добавлено функционирование на страницах результатов поиска

Скриншот

https://i.imgur.com/VdA8cb7l.png

В HTML низ:

Код:
<!--- Пагинатор MyBB --->
<style type="text/css">
#paginator{
  opacity:.98;padding:.2em;
  position:absolute;
  left:6em;border:1px solid;
  table-layout:auto!important;
  width:auto!important;
  border-radius:4px;
  border-spacing: 0;
  box-shadow:0 1px 2px rgba(0,0,0,.4),0 1px 0 rgba(255,255,255,.5)inset;
  text-shadow:0 1px 0 rgba(255,255,255,.4);
  z-index:1000;margin-top:1px;
  border-top:solid 1px #eee !important;
}
#paginator:before{
  content:"";display:block;position:relative;
  height:6px;top:-5px;margin-bottom:-6px;
}
#paginator td{
  background:transparent!important;
  padding:0.1em;
  border-style:none!important;
}
#paginator a{
  border:solid 1px transparent;
  display:inline-table;
  width:2em;height:2em;
  line-height:2em;
  text-align:center;
  margin:-.2em;
}
#paginator a:hover{
  opacity:.8;
  background-color: rgba(240, 249, 255, 0.77);
  border:solid 1px;
  border-radius:50%;
}
.second {
  display: none;
  font-size: 0.8em;
}
 
@media screen and (max-width: 540px) {
  #paginator{left: -1em; border-collapse:collapse;}
  .first {font-size: 0.7em;}
  .second{font-size: 0.5em;}
}
 
@media screen and (max-width: 846px) and (orientation: portrait) {
  .first {font-size: 0.95em;}
  .second{font-size: 0.75em;}
  tr.poll div.icon {border-left: solid 3px #7F6A00 !important;}
}
</style>
<script type="text/javascript">
if($('#pun-viewtopic, #pun-viewforum, #pun-searchposts, #pun-searchtopics, #messages, #pun-respect, #pun-positive, #userlist').length&&$('.pagelink a').length)(function(){var tx,tS,Max,bgclr,paginator,Lnk;tx=$('.pagelink a:not(.next):last').html();tS=$('.pagelink strong').html();if(parseInt(tS)>parseInt(tx)){tx=tS;}Max=tx;Lnk=$('.pagelink a:first')[0].href.replace(/&p=.+$/gim,'');bgclr=$('.crumbs:first').css('background-color');brclr=$('.crumbs:first').css('border-bottom-color');function strok(n){if(p%n==0)paginator+='</tr><tr>'};paginator='<div id="pagenav" style="display:none;position:relative"><table id="paginator"><tr>';for(var p=1;p<=Max;p++){var L=p.toString().length,Cs=' class="'+(L>=3?'second"':'first"');paginator+='<td '+Cs+'><a id="pnav" style="text-decoration:none;" href="'+Lnk+'&p='+p+'">&nbsp;'+p+'&nbsp;</a></td>';Max>50?strok(15):strok(10);}paginator+='</tr></table></div>';if(p<=6){return!1}$('.pagelink').append(paginator);$('div[id="pagenav"] table').css({'border-color':brclr,'background-color':bgclr});})();$('.pagelink').hover(function(){$(this).find('#pagenav').toggle();});$('#pagenav').on('mousemove touchmove',function(e){var offset=$(this).offset();var currentY=e.originalEvent.touches?e.originalEvent.touches[0].pageY:e.pageY;var y=parseInt((currentY-offset.top));y>90?$('.second').toggle(true):$('.second').toggle(false);});
</script>

+2

544

Сделал слайдер новостей из определённой темы в Объявлении
у всех ли корректно отображается? ДЕМО на главной странице этого форума в Обявлении

Слайдер новостей из темы в Объявлении

в Объявление

Код:
<style>
.slider_wrap {margin:100px auto 0;width:580px;height:350px;position:relative;overflow:hidden;-webkit-box-shadow: 0px 7px 10px 0px rgba(50, 50, 50, 0.75);-moz-box-shadow: 0px 7px 10px 0px rgba(50, 50, 50, 0.75);box-shadow: 0px 7px 10px 0px rgba(50, 50, 50, 0.75);}
.slider_wrap figure {width:540px;height:auto;display:none;position:absolute;top:0;left:20px;	}
.slider_wrap figure:first-child {display:block;}
.slider_wrap figcaption {background: rgba(250,250,250, .8);bottom: 0;box-sizing: border-box;font-size: 14px;position: absolute;width: 100%;padding: 1rem;-webkit-transition: max-height 0.3s ease-out;overflow: hidden;}
.slider_wrap img {width: 100%;height: 350px;object-fit: contain;}
.datep {filter: contrast(10);}
.slider_wrap span {margin-top:-13px;width:15px;height:26px;display:block;position:absolute;top:50%;cursor:pointer;background:url(https://forumstatic.ru/files/0017/d8/50/94649.png) no-repeat;}
.slider_wrap span.next {right:0;background-position:-15px 0;}
.slider_wrap span.next:hover {background-position:-15px -26px;}
.slider_wrap span.prev {left:0;background-position: 0 0;}
.slider_wrap span.prev:hover {background-position: 0 -26px;}
.publication{width: 100%;text-align: center;position: absolute;font-size: 20px;margin: 0;color: #4682b4;text-shadow: 4px  4px 6px rgba(256, 256, 256, 1), -4px -4px 6px rgba(256, 256, 256, 1), -4px  4px 6px rgba(256, 256, 256, 1), 4px -4px 6px rgba(256, 256, 256, 1);}
@keyframes anim {0%   { opacity: 0; filter: blur(4px)}
  10%  { opacity: 0; }
  90%  { opacity: 1; }
  100% { opacity: 1; filter: blur(0.5px)}}
.publication{animation: anim 4s infinite alternate;}
</style>

<!-- Вывод новостей из темы Обновления -->
<script language="javascript">
var lm = 7,//количество отображаемых сообщений из темы
sort = 'desc',//поубыванию 
si = 37409,//id темы из которой выводим новости
npk ='https://forumstatic.ru/files/0017/d8/50/39531.jpg'; //новостная картинка по-умолчанию
$(function(){var nf='<div id="slider" class="slider_wrap">',text=[],EndSlider=()=>{nf+='<span class="next"></span><span class="prev"></span></div>';$('#news').append(nf);}
$.getJSON('/api.php?method=post.get&topic_id='+si+'&sort_dir='+sort+'&limit='+lm+'&fields=id,message,posted',function(d){var x=d.response;for(var i in x){var mg=x[i].message.match(/(?:src=\")(https?:\/\/.*?\.(png|jpg|gif|jpeg|webp))(?:\")/gi);mg=(!mg)?npk:mg;var sod=x[i].message.replace(/\<img class\=\"postimg\" loading\=\"lazy\" src\=\"https?\:\/\/(.*?)\.(png|jpg|gif|jpeg|webp)\" alt\=\"https?\:\/\/(.*?)\.(png|jpg|gif|jpeg|webp)\" \/\>/g,''),pd=x[i].id,t=x[i].posted,z=(2<=mg.length<47)?mg.toString().replace(/(src\=|\")/g,'').split(/,/)[0]:mg.toString().replace(/(src\=|\")/g,''),v=sod.slice(0,300);if(v.length<sod.length){v+='<a rel="nofollow" href="/viewtopic.php?pid='+pd+'#p'+pd+'"><strong> ... читать подробнее</strong></a>'};t=new Date(t*1e3).toLocaleString('ru');([i]==0)?nf+='<figure class="active"><a rel="nofollow" href="/viewtopic.php?pid='+pd+'#p'+pd+'"><p><p class="datep"><strong class="publication"></p>'+t+'</strong><img src="'+z+'" alt="" /></p></a><figcaption>'+v+'</figcaption></figure>':nf+='<figure><a rel="nofollow" href="/viewtopic.php?pid='+pd+'#p'+pd+'"><p><p class="datep"><strong class="publication"></p>'+t+'</strong><img src="'+z+'" alt="" /></p></a><figcaption>'+v+'</figcaption></figure>';}EndSlider();});$(window).load(function(){var elWrap=$('#slider'),el=elWrap.find('figure'),indexImg=1,indexMax=el.length,changeF=()=>{el.fadeOut(500).filter(':nth-child('+indexImg+')').fadeIn(500);},autoCange=()=>{indexImg++;if(indexImg>indexMax){indexImg=1;};changeF();},interF=setInterval(autoCange,5000);elWrap.on('mouseenter',function(){clearInterval(interF);}).on('mouseleave',function(){interF=setInterval(autoCange,5000);});$('span.next').click(function(){indexImg++;if(indexImg>indexMax){indexImg=1;};changeF();});$('span.prev').click(function(){indexImg--;if(indexImg<1){indexImg=indexMax;};changeF();});});});
</script>
<article id="news"></article>

+6

545

Переписал свой старый скрипт форумного Календаря, спасибо @kernel  за изменения в api, благодаря которым календарь удалось усовершенствовать!!!  :cool:
Отличия от предыдущей версии:

  • 1. Для получения родившихся в определённом месяце больше не требуется делать множество запросов, достаточно одного

  • 2. Список дней рождения теперь полный, ибо в него попадают и те, кто не указал в профиле полную дату своего рождения (без указания года)

  • 3. Помимо возраста теперь отображается и знак зодиака (для любителей гороскопов)

https://forumupload.ru/uploads/0000/14/1c/15964/889248.jpg

Календарь событий v.2

Версия для установки на отдельной странице /pages/
Создаёте через Админ-меню новую страницу, обзываете как душе угодно и помещаете в ней вот такой код:

Код:
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<style>
#calendar2 {
  width: 100%;
  font: monospace;
  line-height: 1.2em;
  font-size: 15px;
  text-align: center;
}
#calendar2 thead tr:last-child {
  font-size: small;
  color: rgb(85, 85, 85);
}
#calendar2 thead tr:nth-child(1) td:nth-child(2) {
  color: rgb(50, 50, 50);
}
#calendar2 thead tr:nth-child(1) td:nth-child(1):hover, #calendar2 thead tr:nth-child(1) td:nth-child(3):hover {
  cursor: pointer;
}
#calendar2 tbody 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;
  width: 95px;
  height: 65px;
}
#calendar2 tbody td:nth-child(n+6), #calendar2 .holiday {
  color: rgb(231, 140, 92);
}
/* Пустой день */
#calendar2 td.pust {
  background: transparent;
  border: none !important;
}
/* Праздничный день */
#calendar2 td.holiday, #calendar2 td:nth-child(6):not(.pust),#calendar2 td:nth-child(7):not(.pust) {
  background: #fafbfc;
}
#calendar2 tbody td.today {
outline: 2px solid #98b0cd;
}
.day_num {
    position: absolute;
    top: 2px;
    left: 6px;
    text-align: center;
    color: #99acbf;
    font-size: 12.5px;
}
#calendar2 td.holiday .day_num, #calendar2 td:nth-child(6) .day_num, #calendar2 td:nth-child(7) .day_num {
    cursor: pointer;
    color: #555;
    background: #FFE082;
    border-radius: 50%;
    border-color: #FF9800 !important;
    border: 1px solid;
    width: 18px;
    height: 17px;
}
#imn {
width: 28px;
height: 28px;
}
</style>

<table id="calendar2">
  <thead>
    <tr><td><i class="material-icons" title="Предыдущий месяц">arrow_back_ios</i><td class="navigation" colspan="5"><td> <i class="material-icons" title="Следующий месяц">arrow_forward_ios</i>
    <tr><td>Пн<td>Вт<td>Ср<td>Чт<td>Пт<td class="holiday">Сб<td class="holiday">Вс
  <tbody>
</table>

<script>
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: '04-12', celebrate: 'День космонавтики'},
	{dn: '05-01', celebrate: 'День трудящихся'},
	{dn: '05-09', celebrate: 'День Победы'},
	{dn: '06-12', celebrate: 'День России'},
	{dn: '11-07', celebrate: 'День Великой Октябрьской Социалистической революции'}],
timon,znak,twoDigits=(t)=>{return 9>=t?"0"+t:t};function Calendar2(id,year,month){var Dlast=new Date(year,month+1,0).getDate(),D=new Date(year,month,Dlast),DNlast=new Date(D.getFullYear(),D.getMonth(),Dlast).getDay(),DNfirst=new Date(D.getFullYear(),D.getMonth(),1).getDay(),calendar='<tr>',month=['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'];timon=parseInt(D.getMonth()+1);if(DNfirst!=0){for(var i=1;i<DNfirst;i++)calendar+='<td class="pust">';}else{for(var i=0;i<6;i++)calendar+='<td class="pust">';}
for(var i=1;i<=Dlast;i++){(i==new Date().getDate()&&D.getFullYear()==new Date().getFullYear()&&D.getMonth()==new Date().getMonth())?calendar+='<td class="today"':calendar+='<td';calendar+=' data-iso="'+twoDigits(timon)+'-'+twoDigits(i)+'"><div class="day_num">'+i+'</div>';if(new Date(D.getFullYear(),D.getMonth(),i).getDay()==0){calendar+='<tr>';}}
for(var i=DNlast;i<7;i++)calendar+='<td class="pust">&nbsp;';$('#calendar2 tbody').html(calendar);$('#calendar2 .navigation').html('<strong>'+month[D.getMonth()]+' '+D.getFullYear()+'</strong>').attr('data-month',parseInt(D.getMonth()+1)).attr('data-year',D.getFullYear());}
Calendar2("calendar2",new Date().getFullYear(),new Date().getMonth());function vizov(){$('#imn,.day_num').tipsy({live:!0,gravity:'s',fade:!0,html:!0,opacity:1});$.getJSON('/api.php?method=users.orderedList&sort_by=birthdate&limit=500&sort_dir=desc&fields=user_id,username,avatar,age,birth_date&birth_month='+timon,function(data){var x=data.error?'':data.response.users;for(var i in x){var a=x[i].avatar;if(!a){a='/i/default_avatar.jpg'};var uname=x[i].username;if(uname.match(/"/)){uname=uname.replace(/\"/g,'')};var bdt=x[i].birth_date,mz=bdt.slice(-5,-3),den=(bdt.length==10)?bdt.split(/-/)[2]:bdt.split(/-/)[1];switch(mz){case'01':den<=19?znak='Козерог':znak='Водолей';break;case'02':den<=18?znak='Водолей':znak='Рыбы';break;case'03':den<=20?znak='Рыбы':znak='Овен';break;case'04':den<=19?znak='Овен':znak='Телец';break;case'05':den<=20?znak='Телец':znak='Близнецы';break;case'06':den<=21?znak='Близнецы':znak='Рак';break;case'07':den<=22?znak='Рак':znak='Лев';break;case'08':den<=22?znak='Лев':znak='Дева';break;case'09':den<=22?znak='Дева':znak='Весы';break;case'10':den<=22?znak='Весы':znak='Скорпион';break;case'11':den<=22?znak='Скорпион':znak='Стрелец';break;case'12':den<=21?znak='Стрелец':znak='Козерог'};person='<a href="/profile.php?id='+x[i].user_id+'" style="display:inline;position:relative;text-decoration:none;"><img id="imn" src="'+a+'" original-title="<figure><img src='+a+'><figcaption><strong>'+uname+'</strong> <br> Возраст: '+x[i].age+' <br> Знак: '+znak+'</figcaption></figure>" style="border-radius:50%; border:2px solid currentColor !important;"></a>';$('#calendar2 td[data-iso="'+mz+'-'+den+'"]').append(person);}
for(var j=0;j<prazdnik.length;j++){$('#calendar2 td[data-iso="'+prazdnik[j].dn+'"]').addClass('holiday').children('.day_num').attr('original-title',prazdnik[j].celebrate);}});};vizov();document.querySelector('#calendar2 thead tr:nth-child(1) td:nth-child(1)').onclick=function(){Calendar2("calendar2",document.querySelector('#calendar2 thead td:nth-child(2)').dataset.year,parseFloat(document.querySelector('#calendar2 thead td:nth-child(2)').dataset.month)-2);vizov();}
document.querySelector('#calendar2 thead tr:nth-child(1) td:nth-child(3)').onclick=function(){Calendar2("calendar2",document.querySelector('#calendar2 thead td:nth-child(2)').dataset.year,parseFloat(document.querySelector('#calendar2 thead td:nth-child(2)').dataset.month));vizov();}
</script>

ДЕМО

Вариант для размещения на главной странице виджет
заходите в Администрирование - Форумы, нажимаете Редактировать абсолютно любой форум, допустим самый первый сверху вниз, и в самый низ Описание (HTML) этого форума помещаете код:

Код:
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<style>
#calendar2 {
  width: 100%;
  font: monospace;
  line-height: 1.2em;
  font-size: 15px;
  text-align: center;
}
#calendar2 thead tr:last-child {
  font-size: small;
  color: rgb(85, 85, 85);
}
#calendar2 thead tr:nth-child(1) td:nth-child(2) {
  color: rgb(50, 50, 50);
}
#calendar2 thead tr:nth-child(1) td:nth-child(1):hover, #calendar2 thead tr:nth-child(1) td:nth-child(3):hover {
  cursor: pointer;
}
#calendar2 tbody 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;
  width: 95px;
  height: 65px;
}
#calendar2 tbody td:nth-child(n+6), #calendar2 .holiday {
  color: rgb(231, 140, 92);
}
/* Пустой день */
#calendar2 td.pust {
  background: transparent;
  border: none !important;
}
/* Праздничный день */
#calendar2 td.holiday, #calendar2 td:nth-child(6):not(.pust),#calendar2 td:nth-child(7):not(.pust) {
  background: #fafbfc;
}
#calendar2 tbody td.today {
outline: 2px solid #98b0cd;
}
.day_num {
    position: absolute;
    top: 2px;
    left: 6px;
    text-align: center;
    color: #99acbf;
    font-size: 12.5px;
}
#calendar2 td.holiday .day_num, #calendar2 td:nth-child(6) .day_num, #calendar2 td:nth-child(7) .day_num {
    cursor: pointer;
    color: #555;
    background: #FFE082;
    border-radius: 50%;
    border-color: #FF9800 !important;
    border: 1px solid;
    width: 18px;
    height: 17px;
}
#imn {
width: 28px;
height: 28px;
}
#toleft, #toright {cursor: pointer;}
#calendar2 {display:none;
position: absolute;
    top: 10%;
    background: #fff;
    padding: 15px;
    z-index: 9;
    left: 0;
    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: -10px;
    margin-left: 5px;
    cursor: pointer;
}
</style>

<table id="calendar2">
  <thead>
    <tr><td id="ext"><i class="material-icons" title="Закрыть">close</i></td><td id="toleft"><i class="material-icons" title="Предыдущий месяц">arrow_back_ios</i><td class="navigation" colspan="4"><td id="toright"><i class="material-icons" title="Следующий месяц">arrow_forward_ios</i>
    <tr><td>Пн<td>Вт<td>Ср<td>Чт<td>Пт<td class="holiday">Сб<td class="holiday">Вс
  <tbody>
</table>
<script>
var prazdnik = [{dn: '01-01', celebrate: 'Новый год <br><img src="https://forumstatic.ru/files/0017/d8/50/25273.png">'},
{dn: '01-07', celebrate: 'Рождество Христово'},
{dn: '01-14', celebrate: 'Старый Новый год'},
{dn: '02-23', celebrate: 'День защитника Отечества <br><img src="https://forumstatic.ru/files/0017/d8/50/73171.png">'},
{dn: '03-08', celebrate: 'Международный женский день'},
{dn: '04-01', celebrate: 'День смеха (День дурака)'},
{dn: '04-12', celebrate: 'День космонавтики <br><img src="https://forumstatic.ru/files/0017/d8/50/22066.png">'},
{dn: '05-01', celebrate: 'День трудящихся <br><img src="https://forumstatic.ru/files/0017/d8/50/13433.png">'},
{dn: '05-09', celebrate: 'День Победы <br><img src="https://forumstatic.ru/files/0017/d8/50/77665.png">'},
{dn: '06-12', celebrate: 'День России'},
{dn: '11-07', celebrate: 'День Октябрьской Социалистической революции'}];
</script>
<script>
var timon,znak,twoDigits=(t)=>{return 9>=t?"0"+t:t};function Calendar2(id,year,month){var Dlast=new Date(year,month+1,0).getDate(),D=new Date(year,month,Dlast),DNlast=new Date(D.getFullYear(),D.getMonth(),Dlast).getDay(),DNfirst=new Date(D.getFullYear(),D.getMonth(),1).getDay(),calendar='<tr>',month=['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'];timon=parseInt(D.getMonth()+1);if(DNfirst!=0){for(var i=1;i<DNfirst;i++)calendar+='<td class="pust">';}else{for(var i=0;i<6;i++)calendar+='<td class="pust">';};for(var i=1;i<=Dlast;i++){(i==new Date().getDate()&&D.getFullYear()==new Date().getFullYear()&&D.getMonth()==new Date().getMonth())?calendar+='<td class="today"':calendar+='<td';calendar+=' data-iso="'+twoDigits(timon)+'-'+twoDigits(i)+'"><div class="day_num">'+i+'</div>';if(new Date(D.getFullYear(),D.getMonth(),i).getDay()==0){calendar+='<tr>';}};for(var i=DNlast;i<7;i++)calendar+='<td class="pust">&nbsp;';$('#calendar2 tbody').html(calendar);$('#calendar2 .navigation').html('<strong>'+month[D.getMonth()]+' '+D.getFullYear()+'</strong>').attr('data-month',parseInt(D.getMonth()+1)).attr('data-year',D.getFullYear());}function vizov(){$('#imn,.day_num').tipsy({live:!0,gravity:'s',fade:!0,html:!0,opacity:1});$.getJSON('/api.php?method=users.orderedList&sort_by=birthdate&limit=500&sort_dir=desc&fields=user_id,username,avatar,age,birth_date&birth_month='+timon,function(data){var x=data.error?'':data.response.users;for(var i in x){var a=x[i].avatar;if(!a){a='/i/default_avatar.jpg'};var uname=x[i].username;if(uname.match(/"/)){uname=uname.replace(/\"/g,'')};var bdt=x[i].birth_date,mz=bdt.slice(-5,-3),den=(bdt.length==10)?bdt.split(/-/)[2]:bdt.split(/-/)[1];switch(mz){case'01':den<=19?znak='Козерог':znak='Водолей';break;case'02':den<=18?znak='Водолей':znak='Рыбы';break;case'03':den<=20?znak='Рыбы':znak='Овен';break;case'04':den<=19?znak='Овен':znak='Телец';break;case'05':den<=20?znak='Телец':znak='Близнецы';break;case'06':den<=21?znak='Близнецы':znak='Рак';break;case'07':den<=22?znak='Рак':znak='Лев';break;case'08':den<=22?znak='Лев':znak='Дева';break;case'09':den<=22?znak='Дева':znak='Весы';break;case'10':den<=22?znak='Весы':znak='Скорпион';break;case'11':den<=22?znak='Скорпион':znak='Стрелец';break;case'12':den<=21?znak='Стрелец':znak='Козерог'};person='<a href="/profile.php?id='+x[i].user_id+'" style="display:inline;position:relative;text-decoration:none;"><img id="imn" src="'+a+'" original-title="<figure><img src='+a+'><figcaption><strong>'+uname+'</strong> <br> Возраст: '+x[i].age+' <br> Знак: '+znak+'</figcaption></figure>" style="border-radius:50%; border:2px solid currentColor !important;"></a>';$('#calendar2 td[data-iso="'+mz+'-'+den+'"]').append(person);}for(var j=0;j<prazdnik.length;j++){$('#calendar2 td[data-iso="'+prazdnik[j].dn+'"]').addClass('holiday').children('.day_num').attr('original-title',prazdnik[j].celebrate);}});};$('#calendar2 #toleft').live('click',function(){Calendar2("calendar2",document.querySelector('#calendar2 .navigation').dataset.year,parseFloat(document.querySelector('#calendar2 .navigation').dataset.month)-2);vizov();});$('#calendar2 #toright').live('click',function(){Calendar2("calendar2",document.querySelector('#calendar2 .navigation').dataset.year,parseFloat(document.querySelector('#calendar2 .navigation').dataset.month));vizov();});$('.status-right a[href="/foundation.php"]').after('<img id="clndr" src="https://forumstatic.ru/files/0017/d8/50/61334.png" title="Календарь">');$('#clndr').live('click',function(){Calendar2("calendar2",new Date().getFullYear(),new Date().getMonth());vizov();$('#calendar2').toggle();});$('#ext').live('click',function(){$('#calendar2').toggle()});
</script>

Иконка календаря появится на главной справа от фонда форума

https://forumupload.ru/uploads/0000/14/1c/15964/921275.jpg

Набор праздников, иконки к ним можно составить самостоятельно. Они (праздники) отображаются при наведении на жёлтый кружочек с датой праздничного дня. Стиль календаря тоже полностью настраивается. Принцип оформления от предыдущей версии сильно не отличается, так что инструкции можно почитать там


Аватары могут подгружаться с небольшой задержкой, это нормально для форумов с гигантским количеством зарегистрированных пользователей, как на этом

+12

546

Подкорректировал виджет календаря на главной странице.

  • Теперь он отображает кроме знаков зодиака и год по китайскому календарю у всех, кто указал год рождения и текущий в заголовке календаря.

  • Навигация по календарю так же изменилась, теперь можно  быстро выбрать конкретный год и месяц.

Устанавливать так же Администрирование - Форумы, нажимаете Редактировать описание любого форума. Иконка календаря появится на главной под ником последнего зарегистрировавшегося на вашем форуме

Календарь событий v.2.2

ДЕМО live

Картинка
Код:
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<style>
#calendar2 {display:none;
position: absolute;
    bottom: 10%;
    background: #fff;
    padding: 15px;
    z-index: 9999;
    left: 0;
    border-radius: 9px;
-moz-box-shadow: 0px 0px 40px #444;
  -webkit-box-shadow: 0px 0px 40px #444;
  box-shadow: 0px 0px 40px #444;
  width: 100%;
  line-height: 1.2em;
  font-size: 15px;
  text-align: center;
}
.birth{background: #fff !important;}
#calendar2 tbody td {
border-left: 1px solid #ebf0f5 !important;
  border-right: 1px solid #ebf0f5 !important;
  border-bottom: 1px solid #ebf0f5 !important;
  position: relative;
  width: 95px;
  height: 65px;
}
/* Пустой день */
#calendar2 td.pust {
  background: transparent;
  border: none !important;
}
/* Праздничный день */
#calendar2 td.holiday, #calendar2 tr:not(.dayname) td:nth-child(6):not(.pust),#calendar2 tr:not(.dayname) td:nth-child(7):not(.pust) {
  background: #fafbfc !important;
}
#calendar2 .today {
outline: 2px solid #98b0cd;
}
.day_num {
    position: absolute;
    top: 2px;
    left: 6px;
    text-align: center;
    color: #99acbf;
    font-size: 12.5px;
}
#calendar2 td.holiday .day_num, #calendar2 td:nth-child(6) .day_num, #calendar2 td:nth-child(7) .day_num {
    cursor: pointer;
    color: #555;
    background: #FFE082;
    border-radius: 50%;
    border-color: #FF9800 !important;
    border: 1px solid;
    width: 18px;
    height: 17px;
}
.birth #imn {
width: 46px;
height: 46px;
}
.dayname > td {
background: rgb(94, 135, 185) !important;
    color: #fff !important;
}
#ext, #toleft, #toright {cursor: pointer;}
/* Кнопки иконка календаря */
#clndr {
    position: relative;
    float: right;
    top: -10px;
    margin-left: 5px;
    cursor: pointer;
}
.navigation{font-size: 1.5em;}
.ChinaIcons {font-size: 2em;}
</style>
 
<table id="calendar2" cellspacing="0">
  <thead>
    <tr><td id="ext"><i class="material-icons" title="Закрыть">close</i></td><td id="toleft"><i class="material-icons" title="Предыдущий месяц">arrow_back_ios</i><td class="navigation" colspan="3"></td><td><input id="datetime" type="month" style="width:50px;" title="Выбрать год, месяц"></td><td id="toright"><i class="material-icons" title="Следующий месяц">arrow_forward_ios</i>
    <tr class="dayname"><td>Пн<td>Вт<td>Ср<td>Чт<td>Пт<td>Сб<td>Вс
  <tbody>
</table>
<script>
var prazdnik = [{dn: '01-01', celebrate: 'Новый год <br><img src="https://forumstatic.ru/files/0017/d8/50/25273.png">'},
{dn: '01-07', celebrate: 'Рождество Христово'},
{dn: '01-14', celebrate: 'Старый Новый год'},
{dn: '02-23', celebrate: 'День защитника Отечества <br><img src="https://forumstatic.ru/files/0017/d8/50/73171.png">'},
{dn: '03-08', celebrate: 'Международный женский день'},
{dn: '04-01', celebrate: 'День смеха (День дурака)'},
{dn: '04-12', celebrate: 'День космонавтики <br><img src="https://forumstatic.ru/files/0017/d8/50/22066.png">'},
{dn: '05-01', celebrate: 'День трудящихся <br><img src="https://forumstatic.ru/files/0017/d8/50/13433.png">'},
{dn: '05-09', celebrate: 'День Победы <br><img src="https://forumstatic.ru/files/0017/d8/50/77665.png">'},
{dn: '06-12', celebrate: 'День России'},
{dn: '11-07', celebrate: 'День Октябрьской Социалистической революции'}];
</script>
<script>
var timon,znak,clr=['Белого(ой)','Белого(ой)','Черного(ой)','Черного(ой)','Синего(ей)','Синего(ей)','Красного(ой)','Красного(ой)','Желтого(ой)','Желтого(ой)'],anm=[' Обезьяны',' Петуха',' Собаки',' Свиньи',' Крысы',' Быка',' Тигра',' Зайца',' Дракона',' Змеи',' Лошади',' Овцы'],ics=['🐵','🐓','🐶','🐷','🐭','🐮','🐯','🐰','🐲','🐍','🐴','🐑'],twoDigits=(t)=>{return 9>=t?"0"+t:t};function Calendar2(id,year,month){var Dlast=new Date(year,month+1,0).getDate(),D=new Date(year,month,Dlast),DNlast=new Date(D.getFullYear(),D.getMonth(),Dlast).getDay(),DNfirst=new Date(D.getFullYear(),D.getMonth(),1).getDay(),calendar='<tr>',month=['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'];timon=parseInt(D.getMonth()+1);if(DNfirst!=0){for(var i=1;i<DNfirst;i++)calendar+='<td class="pust">';}else{for(var i=0;i<6;i++)calendar+='<td class="pust">';};for(var i=1;i<=Dlast;i++){(i==new Date().getDate()&&D.getFullYear()==new Date().getFullYear()&&D.getMonth()==new Date().getMonth())?calendar+='<td class="today birth"':calendar+='<td class="birth"';calendar+=' data-iso="'+twoDigits(timon)+'-'+twoDigits(i)+'"><div class="day_num">'+i+'</div>';if(new Date(D.getFullYear(),D.getMonth(),i).getDay()==0){calendar+='<tr>';}};for(var i=DNlast;i<7;i++)calendar+='<td class="pust">&nbsp;';$('#calendar2 tbody').html(calendar);var res2=ics[D.getFullYear()%12],result=clr[D.getFullYear()%10]+anm[D.getFullYear()%12];$('#calendar2 .navigation').html('<strong>'+month[D.getMonth()]+' '+D.getFullYear()+' <span class="ChinaIcons" original-title="год  '+result+'">'+res2+' </span></strong>').attr('data-month',parseInt(D.getMonth()+1)).attr('data-year',D.getFullYear());}function vizov(){$('#imn,.day_num,.ChinaIcons').tipsy({live:!0,gravity:'s',fade:!0,html:!0,opacity:1});$.getJSON('/api.php?method=users.orderedList&sort_by=birthdate&limit=500&sort_dir=desc&fields=user_id,username,avatar,age,birth_date&birth_month='+timon,function(data){var x=data.error?'':data.response.users;for(var i in x){var a=x[i].avatar;if(!a){a='/i/default_avatar.jpg'};var uname=x[i].username;if(uname.match(/"/)){uname=uname.replace(/\"/g,'')};var bdt=x[i].birth_date,mz=bdt.slice(-5,-3),den=(bdt.length==10)?bdt.split(/-/)[2]:bdt.split(/-/)[1],gd=(bdt.length==10)?bdt.split(/-/)[0]:'?';switch(mz){case'01':den<=19?znak='Козерог &#x2651;':znak='Водолей &#x2652;';break;case'02':den<=18?znak='Водолей &#x2652;':znak='Рыбы &#x2653;';break;case'03':den<=20?znak='Рыбы &#x2653;':znak='Овен &#x2648;';break;case'04':den<=19?znak='Овен &#x2648;':znak='Телец &#x2649;';break;case'05':den<=20?znak='Телец &#x2649;':znak='Близнецы &#x264a;';break;case'06':den<=21?znak='Близнецы &#x264a;':znak='Рак &#x264b;';break;case'07':den<=22?znak='Рак &#x264b;':znak='Лев &#x264c;';break;case'08':den<=22?znak='Лев &#x264c;':znak='Дева &#x264d;';break;case'09':den<=22?znak='Дева &#x264d;':znak='Весы &#x264e;';break;case'10':den<=22?znak='Весы &#x264e;':znak='Скорпион &#x264f;';break;case'11':den<=22?znak='Скорпион &#x264f;':znak='Стрелец &#x2650;';break;case'12':den<=21?znak='Стрелец &#x2650;':znak='Козерог &#x2651;'};person='<a class="zodiac" href="/profile.php?id='+x[i].user_id+'" style="display:inline;position:relative;text-decoration:none;"><img id="imn" src="'+a+'" original-title="<figure><img src='+a+'><figcaption><strong>'+uname+'</strong> <br> Возраст: '+x[i].age+' <br> Знак: <font size=4>'+znak+'</font> <br> Год: <font size=4>'+anm[gd%12]+' <strong>'+ics[gd%12]+'</strong></font></figcaption></figure>" style="border-radius:50%; border:2px solid currentColor !important;"></a>';$('#calendar2 td[data-iso="'+mz+'-'+den+'"]').append(person);}for(var j=0;j<prazdnik.length;j++){$('#calendar2 td[data-iso="'+prazdnik[j].dn+'"]').addClass('holiday').children('.day_num').attr('original-title',prazdnik[j].celebrate);}});};$('#calendar2 #toleft').live('click',function(){Calendar2("calendar2",document.querySelector('#calendar2 .navigation').dataset.year,parseFloat(document.querySelector('#calendar2 .navigation').dataset.month)-2);vizov();});$('#calendar2 #toright').live('click',function(){Calendar2("calendar2",document.querySelector('#calendar2 .navigation').dataset.year,parseFloat(document.querySelector('#calendar2 .navigation').dataset.month));vizov();});$('#datetime').on('change',function(){var dat=$(this).val(),god=dat.split(/-/)[0],mes=dat.split(/-/)[1];Calendar2('calendar2',document.querySelector('#calendar2 thead td:nth-child(2)').dataset.year=god,parseFloat(document.querySelector('#calendar2 thead td:nth-child(2)').dataset.month=mes)-1);vizov();});$(function(){$('#onlinelist.item5:last').after('<img id="clndr" src="https://forumstatic.ru/files/0017/d8/50/61334.png" title="Календарь">');$('#clndr').live('click',function(){Calendar2("calendar2",new Date().getFullYear(),new Date().getMonth());vizov();$('#calendar2').toggle();});});$('#ext').live('click',function(){$('#calendar2').toggle()});
</script>

Если у вас форум с большим числом активных пользователей и в ячейке календаря более 4-5 именинников, то размеры аватаров можно уменьшить, чтоб таблица сильно не растягивалась

.birth #imn {
width: 46px;
height: 46px;
}

+3

547

Скрипт кастомных смайлов для форума
version: 1.0.2

Скрипт добавляет меню смайлов в панель ответа.

Польза:
1. Есть вкладка, где пользователь может сохранить собственные стикеры для личного пользования
2. Раскрывающийся список со стикерами не болтается под формой ответа
3. Ссылки на стикеры хранятся в отдельном файле и не засоряют поля html в настройках
4. Можно легко и просто разделить стикеры на группы
5. Картинки смайлов грузятся только при вызове меню, а не вместе со страницей

Как это выглядит

https://forumupload.ru/uploads/000b/09/4f/10681/794179.png

Код:
<script src="https://forumstatic.ru/files/0017/95/29/40399.js"></script>
<script>
$(document).ready(function() {
  hvStickerPack.init("ССЫЛКА_НА_ФАЙЛ_СО_СТИКЕРАМИ");
});
</script>

Вместо ССЫЛКА_НА_ФАЙЛ_СО_СТИКЕРАМИ должна стоять ссылка на файл формата txt в кодировке UTF8 with BOM (иначе название вкладок будет нечитаемо в кириллице). Пример файла.

Формат файла смайлов

Если название не указать, но оставить пустую строку, получится следующая группа с названием Pack 3 (или какая она там будет по счёту).

Код:
Название группы 1
http://урл1...
http://урл2...
http://урл3...

Название группы 2
http://урл4...
http://урл5...
http://урл6...
http://урл7...
http://урл8...

http://урл9...
http://урл10...
http://урл11...
http://урл12...
http://урл13...
Пособие по стилизации под свой форум

Я постарался сделать стили для скрипта на максимально низком уровне, чтобы администраторам было просто перебить предустановленные стили своими. Чтобы изменить стили окна стикеров используйте стиль:

Код:
.hvStickerPackModalContainer .hvStickerPackModal {
    background: ВАШ_ФОН;
    ...
}

Стили кнопок для стикерпаков:

Код:
.hvStickerPackModalContainer .hvStickerPackModalTab { ... }

Отредактировано Человек-Шаман (Вс, 10 Янв 2021 14:12:56)

+15

548

Для тех, кто возможно упустил Подробности

Мультитрековый плеер в постах (плеер с плейлистом) v2

https://forumupload.ru/uploads/0000/14/1c/15964/841081.gif

+3

549

Поиск по автору в теме (отображение всех сообщений одного автора в теме)

идея от Герда и tartar1

https://i.imgur.com/skyPF1o.jpg

Установка в html-низ или HTML в форме ответа

<!-- Отображение сообщений только определённого пользователя в теме -->
<style>.tuser {cursor: pointer;display:none;float: right;margin-right:17%;}.pa-author:hover .tuser{display:block;}</style>
<script type="text/javascript" >
$(function () {
$('.pa-author > a').after('<strong class="tuser" original-title="Показать все сообщения этого пользователя в данной теме">🔍</strong>');$('.tuser').tipsy({live:!0,fade:!0,gravity:'w'});
$('.pa-author').on('click', '.tuser', function (){let tm = FORUM.get('topic.subject').replace(/\s+/g,'+'), atr =$(this).prev('a').text();window.location.href = '/search.php?action=search&keywords='+tm+'&author='+atr+'&forum=&search_in=-1&sort_by=0&sort_dir=DESC&show_as=posts&search=%CE%F2%EF%F0%E0%E2%E8%F2%FC';
});});
</script>

Скрипт установлен на этом форуме. Значёк поиска появляется при наведении курсора на ник. Поскольку скрипт здесь установлен в HTML в форме ответа, то работает только для авторизированных пользователей (не для гостей)

+7

550

Видеоплеер MP4 в постах v.1
ДЕМО

https://i.imgur.com/x5G3wbu.gif

  • Плеер позволяет в одном посте размещать целый список (плейлист) из видеороликов, т.е. условно целый сезон какого-нибудь сериала.

  • Плеер работает с ссылками форматов: .mp4 .webm .ogv .mov и потоковое m3u, которое пока воспроизводится только на мобильных браузерах Android.

Установка в html-низ:

Код:
<!-- Видеоплеер в постах MP4 -->
<link rel="stylesheet" type="text/css" href="https://forumstatic.ru/files/0017/d8/50/33895.css?v=4" />
<script type="text/javascript" src="https://forumstatic.ru/files/0017/d8/50/43216.js?v=5"></script>

Для правильного отображения кнопок необходим иконочный шрифт от Гугл, у кого он отсутствует добавляем

Код:
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
Как добавлять/удалять ролики в плейлист?
Как рекомендуется составлять плейлист?
Для лучшей читабельности рекомендуется применять сокращатель ссылок
Как манипулировать плеером, возможности и настройки

+11

551

Автоматическая пагинация страниц, созданных в Администрировании - страницы

Для начала толкнул на разработку ткнул подшефный форум,   
В процессе которой столкнулся с парой долгорешаемых проблем,
Под конец попросил знакомый форум по Гарри Потеру создать   
пагинатор для "Еженедельного Пророка"...                               
   

Скриншот:
https://forumupload.ru/uploads/0014/cc/0a/2/928135.jpg

Чтобы пагинатор работал на Админ-Страницах, все ссылки одной серии страниц должны иметь такой вид:

abcdefghij_abcdefghij_1

Cобственно буквы могут быть любые, нижнее подчеркивание это типично пробелы в названии
(пробел автозаменяется в ссылке на нижнее подчеркивание)
Важная часть это то, что номер страницы вставляется в исходном названии через пробел(а в ссылке через нижнее подчеркивание)

Т.е если мы вставим такое название(при создании страницы) с номером страницы: Weekly Prophet 1
Оно автозаменится в ссылке на такой вид: weekly_prophet_1
У всех последующих страниц ссылка должны быть такого же вида)у них у всех должна быть общая часть синим!

weekly_prophet_1
weekly_prophet_2
weekly_prophet_3
... И т.д.

Вот при такой организации пакетов(серий) страниц успешно работает такой Пагинатор:

В HTML верх:

<!-- ПАГИНАТОР АДМИН_СТРАНИЦ -->
<script type="text/javascript">
//Число видимых ссылок на страницы слево/cправо от текущей;
          AddNumPageLinkVisible = +2;
</script>
<style>#pun-main.pages .pagelink .hid{display:none;}
#pun-main.pages .pagelink .hid.active{display:inline-block;}</style>
<script type="text/javascript" src="https://forumstatic.ru/files/0013/44/56/81312.js"></script>

<!--END// ПАГИНАТОР АДМИН_СТРАНИЦ-->

Пагинатор работает если у Вас в Админке создано менее 300 страниц(если более,- будет работать только для первых 300!)

Дополнение:

добавка ссылки на последнюю страницу серии страниц(*к примеру: свежий выпуск новостей)
из интересующей серии страниц куда-то на страницу форума

Отредактировано Deff (Сб, 6 Мар 2021 13:49:10)

+5

552

Переключение регистра выделенного текста

По запросу от rybka: Здравствуйте! А подскажите, пожалуйста,                 
такую штуку. Вот есть у меня на форуме отсюда же скрипт смены раскладки.   
Такая полезная штука, прямо спасал не раз. А есть чет подобное, но для смены
регистра? Как в ворде, чтобы можно было бистро с капса и лапс перевести       
и наоборот?                                                                                                                   

В HTML  низ или форму ответа:

<!--Переключение регистра выделенного текста -->
<style>#button-ChangeСase{background:url(//forumstatic.ru/files/0013/44/56/93417.png);background-size:16px auto;:}</style>
<script type="text/javascript">(function(){var S='<img src="https://forum.mybb.ru/i/blank.gif" title="Смена регистра" \
onclick="bbcode(\'[Upper-Lower]\',\'[/Upper-Lower]\');UpperLower();"/>';
$("#button-font").after('<td id=button-ChangeСase>'+S+'</td>');var ChangeСase='upper';
UpperLower=function (){if(ChangeСase=='upper'){ChangeСase='lower'}else{ChangeСase='upper'};
function transF(p){if(ChangeСase=='upper')return p.toLowerCase();else ;return p.toUpperCase();}
var L=$('#main-reply').val();L=L.replace(/\[Upper-Lower\]([\s\S]*)\[\/Upper-Lower\]/mg,
function(a,b,c){return transF(b);});$('#main-reply').val(L);}}());
</script>

+7

553

Уведомление о событии в указанную админом дату

По просьбе пользователя Brrr => Ссылка

https://forumupload.ru/uploads/0000/14/1c/22787/179963.jpg

В HTML верх или низ:

<!-- Уведомление о событии! -->
<style>#Дата-уведо{
  width:300px;
  color:red;  /*Цвет строки События*/
  background:rgba(255,255,255,.97);
  text-align: center;
  margin-top:180px;
  margin-left:-160px;
  padding:1em;
  border:2px solid red;
  border-radius:10px;
  box-shadow:2em 2em 2em rgba(0,0,0,.7);
  position:fixed;z-index:1000000;
  font: normal normal 700 14px/16.5px "Arial Black";
  left:50%;
}
#Дата-уведо a {
  display:block;
  margin-bottom:8px!important;
  font: normal normal 400 14px/16.5px "Impact";
  color: #558609; /*Цвет Первой строки*/
}
#Дата-уведо .close {
  position:absolute;
  top:0;right:8px;
  cursor:pointer;
  font: normal normal 700 11px/16.5px "Arial Black";
  color: #000;}
</style>

<script>
(function(){function cntDate() {/*==123==;


31.12 - Новый го-о-од настает...
14.02 - "Всеми" любимый праздник шизы.
29.02 - Пошли минусовые сутки.
08.03 - Международный женский день. Девушки мы рады вас поздравить.
20.03 - Очень душный день душни.
26.04 - День памяти погибших в радиационных авариях и катастрофах, не забывайте.
09.05 - День Победы. Этот праздник со слезами на глазах.
21.05 - Праздник ОРД на барабане.
29.05 - У нас день рождения!!!
04.06 - Напиши совместный пост в день совместных постов.
04.08 - Славный день, день возвращенца.
01.10 - Ждите мемы, они придут с первыми лучами солнца в третью "мемную" среду месяца.
03.11 - День Бер.. Бери.. Бри.. Бро.. Бра... в общем, великий день Б. настал.
19.11 - Международный мужской день. Мужики мы рады вас поздравить.
27.12 - День освободителя. Освободи себя от ненужного.


==123==;*/} cntDate = cntDate.toString().split('==123==;')[1].trim().split('\n');
function getDayAndMonth(){function c(d){return(d.getDate()/100).toFixed(2).substr(2)+"."+((1+d.getMonth())/100)
.toFixed(2).substr(2)}var b=new Date();return c(b)}var DATE=getDayAndMonth();var Compare;for(var i=0;i<cntDate
.length;i++){var a=cntDate[i].split(/\s+-\s+/);if(a.length!==2){continue}if(DATE==a[0].trim()){Compare=a[1].trim();break}}
if(Compare&&!$getCookie("dat"+DATE)){$("body").prepend('<div id="Дата-уведо"><a>Уведомление-Поздравление!</a>'
+Compare+'<b class="close">х</b></div>')}$("#Дата-уведо .close").click(function(){$(this).parent().hide();
$setCookie("dat"+DATE,1,24*60*60*1000)});}())
</script>

Даты Дня и месяца двумя цифрами каждое!
Потестировать можно заменив одну из дат на текущую...
Для повтора теста нужно очищать кеш страницы!

Стиль к скрипту можно перенести в конец первого Окна стиля, удалив теги <style></style>

Отредактировано Deff (Ср, 19 Май 2021 01:48:42)

+12

554

Скрипт меняет украинский флаг на российский у крымчан в профиле независимо от базы GeoIP

https://forumupload.ru/uploads/0000/14/1c/15964/415950.jpg

Код:
<!-- Убираем украинские флаги у крымчан -->
<script>
if($('#pun-viewtopic').length){var ua_id=[],tp=[];$('.post').has('li.pa-author img[src$="/ua.png"]').each(function(i){ua_id[i]=$(this).data('user-id');$.each(ua_id,function(i,el){if($.inArray(el,tp)===-1)tp.push(el);});});if(tp.length!=0){$.getJSON('/api.php?method=users.get&user_id='+tp+'&fields=user_id,timezone_offset',function(d){var x=d.response.users;for(var i in x){if(x[i].timezone_offset=='+03.00'){$('.post[data-user-id="'+x[i].user_id+'"] li.pa-author>img').attr({'src':'http://forumstatic.ru/i/flags/ru.png','original-title':'Russia'});}}});}}
</script>

вариант кода покороче при работе с svg

Код:
<!-- Убираем украинские флаги у крымчан-->
<script>
if($('#pun-viewtopic').length){var tp=new Set();$('.post').has('li.pa-author span[title="Ukraine"]').each(function(){tp.add($(this).data('user-id'));});if(tp.length!=0){$.getJSON('/api.php?method=users.get&user_id='+[...tp]+'&fields=user_id,timezone_offset',function(d){var x=d.response.users;for(var i in x){if(x[i].timezone_offset=='+03.00'){$('.post[data-user-id="'+x[i].user_id+'"] li.pa-author>span.flag-i').attr({'style':'background-image: url(/i/flags/ru.svg);','title':'Russia'});}}});}}
</script>

+11

555

Дополнение к скрипту <!--дополнительные медиахостинги v.2 © Romych-->
для работы в медиа-спойлере

Исходный скрипт Автора

Ниже оного ставим вот такое дополнение:

Код:
<!-- Дополнение к медиа хостингам  -->
<script>
$('.spoiler-box.media-box').live('spoiler.firstOpen',function() {
var zz = this;
setTimeout(function() {
 
var media2 = ['kiwi.kz',
'rutv.ru',
'soundcloud.com',
'purevolume.com',
'livestream.com',
'pleer.com',
'video.jampo.tv',
'yapfiles.ru',
'realmusic.ru',
'1plus1.ua',
'jamendo.com',
'mail.ru',
'music.yandex.ru',
'deezer.com'];
 
var ls = zz.querySelectorAll("p");
for (x in ls){
var pst = ls[x].innerHTML;
for (var i=0; i<media2.length; i++) {
  if(pst.indexOf(media2[i])!= -1)  {
    pst = pst.replace(/\[video2=(.*?)\|(.*?)\](.*?)\[\/video2\]/gi, '<br /><iframe width="$1" height="$2" src="$3" frameborder="0" allowfullscreen></iframe>');
  ls[x].innerHTML = pst;}
}}
},100);
});
</script>

+4

556

Случайный вывод текста после обновления страницы с анимацией

Код:
<!-- Случайный вывод текста после обновления страницы с анимацией -->
<style type="text/css">
#info-randomly {
  position: relative;
  overflow: hidden;
  height: auto;
  width: auto;
}
#info-randomly div {
  display: none;
  animation: 3s slidein;
}
@keyframes slidein {
  from {
    margin-left: 100%;
    width: 300%;
  }

  to {
    margin-left: 0%;
    width: 100%;
  }
}
</style>

<div id="info-randomly">
<div>
Текст 1
</div>
<div>
Текст 2
</div>
<div>
Текст 3
</div>
<div>
Текст 4
</div>
<div>
Текст 5
</div>
<div>
Текст 6
</div>
</div>

<script>
$(function() {
  var n = 1, divs = $('#info-randomly div').get();
  for ( ; n--; )  {
  $(divs.splice(Math.random()*divs.length|0,1)).prependTo('#info-randomly').show();
  }
});
 </script>

Выглядит так:
[html]<!-- Случайный вывод текста после обновления страницы  -->
<style type="text/css">
#info-randomly {
  position: relative;
  overflow: hidden;
  height: auto;
  width: auto;
}
#info-randomly div {
  display: none;
  animation: 3s slidein;
}
@keyframes slidein {
  from {
    margin-left: 100%;
    width: 300%;
  }

  to {
    margin-left: 0%;
    width: 100%;
  }
}
</style>

<div id="info-randomly">
<div>
Текст 1
</div>
<div>
Текст 2
</div>
<div>
Текст 3
</div>
<div>
Текст 4
</div>
<div>
Текст 5
</div>
<div>
Текст 6
</div>
</div>

<script>
$(function() {
  var n = 1, divs = $('#info-randomly div').get();
  for ( ; n--; )  {
  $(divs.splice(Math.random()*divs.length|0,1)).prependTo('#info-randomly').show();
  }
});
</script>[/html]

+8

557

Вот такой вариант последних 10 сообщений на форуме расположение сверху над категориями, с выводом поста последнего сообщения при наведении:

Код
Код:
<!-- Последние 10 сообщений форума с наведением -->
<style>
#pun-t10, .stats-t10 {
  display: grid;
}

#pun-t10 h3 {
  font-size: 16px;
  text-align: center;
  padding-bottom: 16px;
  color: #999;
  background: url(/img/Mybb_iPhone/sub.gif) repeat-x #343434;
}

.stats-t10 {
  grid-template-columns: 40% 10% auto;
  grid-template-rows: auto;
  justify-items: center;
  align-items: center;
  background: url(/img/Mybb_iPhone/alt0.gif) repeat-x #C7C7C7 bottom;
}

.author-t10, .last-post-t10 {
  justify-self: left;
  padding-left: calc(54px + 2em);
}

.body-t10 {padding: 1em 0;}

.body-t10 .author-t10 {color: #61492c;}
.last-post-t10 {position: relative;}
.tipsy-t10 {display: none;}

.last-post-t10:hover .tipsy-t10 {
  display: block;
  position: absolute;
  min-width: 100%;
  max-width: 400px;
  padding: 5px 8px 4px;
  background-color: white;
  color: inherit;
  font-size: 12px;
  bottom: 30px;
  border-radius: 5px;
  border-width: 1px 0px 1px 1px;
  box-sizing: content-box;
}

.tipsy-t10:after {
  content: '';
  border: 10px solid transparent;
  border-top-color: white;
  position: absolute;
  margin: 0 0 0 0px;
}
</style>
<script type="text/javascript">
$(function(){
$.get('export.php?type=rss','',processXML);
function processXML(data){
$(data).find('item:lt(10)').each(function(){  
var JAuthor=$(this).find('author').text().slice(14,-1);
var JTitle=$(this).find('title').text();
var JLink=$(this).find('link').text();
var JContent=$(this).find('description').text();
var JPosted=$(this).find('pubDate').text().slice(4,-5);

var vtopB = '<div class="stats-t10 body-t10">\
            <div class="author-t10">'+JAuthor+'</div>\
            <div class="time-t10">'+JPosted+'</div>\
            <div class="last-post-t10"><a href="'+JLink+'" target="_blank">'+JTitle+'</a><div class="tipsy-t10">'+JContent+'</div></div></div>';

$('#pun-t10').append(vtopB);
});
} 
var vtopA = '<div id="pun-t10"><h3>Последние 10 сообщений форума</h3>\
             <div class="stats-t10 inscription">\
             <div class="author-t10">Автор</div>\
             <div class="time-t10">Время</div>\
             <div class="last-post-t10">Последнее сообщение</div></div>';

$('#pun-index #pun-main').prepend(vtopA);
});
</script>

И еще вариант по разделам последних 10 сообщений, тоже с наведением:

Код
Код:
<!-- Последние 10 сообщений в разделах с наведением -->
<style>
#pun-t10, .stats-t10 {
  display: grid;
}

#pun-t10 h3 {
  font-size: 16px;
  text-align: center;
  padding-bottom: 16px;
  color: #999;
  background: url(/img/Mybb_iPhone/sub.gif) repeat-x #343434;
}

.stats-t10 {
  grid-template-columns: 40% 10% auto;
  grid-template-rows: auto;
  justify-items: center;
  align-items: center;
  background: url(/img/Mybb_iPhone/alt0.gif) repeat-x #C7C7C7 bottom;
}

.author-t10, .last-post-t10 {
  justify-self: left;
  padding-left: calc(54px + 2em);
}

.body-t10 {padding: 1em 0;}

.body-t10 .author-t10 {color: #61492c;}
.last-post-t10 {position: relative;}
.tipsy-t10 {display: none;}

.last-post-t10:hover .tipsy-t10 {
  display: block;
  position: absolute;
  min-width: 100%;
  max-width: 400px;
  padding: 5px 8px 4px;
  background-color: white;
  color: inherit;
  font-size: 12px;
  bottom: 30px;
  border-radius: 5px;
  border-width: 1px 0px 1px 1px;
  box-sizing: content-box;
}

.tipsy-t10:after {
  content: '';
  border: 10px solid transparent;
  border-top-color: white;
  position: absolute;
  margin: 0 0 0 0px;
}
</style>
<script type="text/javascript">
$(function(){
var arrays = $('#pun-viewforum').attr('data-forum-id');
$.get('export.php?type=rss&fid=' + arrays,'',processXML);
function processXML(data){
$(data).find('item:lt(10)').each(function(){  
var JAuthor=$(this).find('author').text().slice(14,-1);
var JTitle=$(this).find('title').text();
var JLink=$(this).find('link').text();
var JContent=$(this).find('description').text();
var JPosted=$(this).find('pubDate').text().slice(4,-5);

var vtopB = '<div class="stats-t10 body-t10">\
            <div class="author-t10">'+JAuthor+'</div>\
            <div class="time-t10">'+JPosted+'</div>\
            <div class="last-post-t10"><a href="'+JLink+'" target="_blank">'+JTitle+'</a><div class="tipsy-t10">'+JContent+'</div></div></div>';

$('#pun-t10').append(vtopB);
});
} 
var vtopA = '<div id="pun-t10"><h3>Последние 10 сообщений раздела</h3>\
             <div class="stats-t10 inscription">\
             <div class="author-t10">Автор</div>\
             <div class="time-t10">Время</div>\
             <div class="last-post-t10">Последнее сообщение</div></div>';

$('#pun-viewforum[data-forum-id=\"' + arrays + '\"] .forum').prepend(vtopA);
});
</script>

Ставить НТМЛ низ.

Настройка:

Цвета фона и текста названия:

#pun-t10 h3 {
  font-size: 16px;
  text-align: center;
  padding-bottom: 16px;
  color: #999;
  background: url(/img/Mybb_iPhone/sub.gif) repeat-x #343434;
}

Цвет фона строк:

.stats-t10 {
  grid-template-columns: 40% 10% auto;
  grid-template-rows: auto;
  justify-items: center;
  align-items: center;
  background: url(/img/Mybb_iPhone/alt0.gif) repeat-x #C7C7C7 bottom;
}

Цвет фона и текста при наведении:

.last-post-t10:hover .tipsy-t10 {
  display: block;
  position: absolute;
  min-width: 100%;
  max-width: 400px;
  padding: 5px 8px 4px;
  background-color: white;
  color: inherit;
  font-size: 12px;
  bottom: 30px;
  border-radius: 5px;
  border-width: 1px 0px 1px 1px;
  box-sizing: content-box;
}

.tipsy-t10:after {
  content: '';
  border: 10px solid transparent;
  border-top-color: white;
  position: absolute;
  margin: 0 0 0 0px;
}

Цвет текста автора:

.body-t10 .author-t10 {color: #61492c;}

Скриншоты

https://forumupload.ru/uploads/0000/14/1c/23723/569311.png
https://forumupload.ru/uploads/0000/14/1c/23723/762081.png

Отредактировано kolobdur74 (Вс, 1 Авг 2021 22:36:19)

+8

558

Тут кому то понадобился, решил выложить, может кого заинтересует...

Скрипт автопрокрутки картинок для HTML в сообщениях

DEMKA
[html]<!-- Прокрутка картинок для HTML в сообщениях-->
<div class="SL" style="width:300px;text-align:center"></div>
<script>
var arraySL = [ //Cписок ссылок на Изо:
'https://forumstatic.ru/files/0013/44/56/61036.png',
'https://forumstatic.ru/files/0013/44/56/73446.png',
'https://forumstatic.ru/files/0013/44/56/54143.png',
'https://forumstatic.ru/files/0013/44/56/21344.png',
'https://forumstatic.ru/files/0013/44/56/87837.png'
]
var heightSL = 'auto'; //'auto'//'386px'; //Высота в пикселах или 'auto';
var SLtime = 2; //Время в секундах;
</script>
<script  type="text/javascript" src="https://forumstatic.ru/files/0013/44/56/17756.js"></script>[/html]

Код:
<!-- Прокрутка картинок для HTML в сообщениях-->
<div class="SL" style="width:300px;text-align:center"></div>
<script>
var arraySL = [ //Cписок ссылок на Изо:
'https://forumstatic.ru/files/0013/44/56/61036.png',
'https://forumstatic.ru/files/0013/44/56/73446.png',
'https://forumstatic.ru/files/0013/44/56/54143.png',
'https://forumstatic.ru/files/0013/44/56/21344.png',
'https://forumstatic.ru/files/0013/44/56/87837.png'
]
var heightSL = 'auto'; //'auto'//'386px'; //Высота в пикселах или 'auto';
var SLtime = 5; //Время в секундах;
</script>
<script  type="text/javascript" src="https://forumstatic.ru/files/0013/44/56/17756.js"></script>

Пояснения к коду:
Если пропорции картинок идентичны — то лучше вставлять высоту — 'auto'; // что рекомендую,
При разномастных пропорциях картинок высоту нужно будет подбирать, на длинных картинках(по отношению к самой короткой по высоте) — картинка обрезается снизу!
var SLtime = 5; //Время прокрутки в секундах;

Отредактировано Deff (Ср, 29 Сен 2021 18:15:26)

+7

559

Слайдер картинок, частично на основе скрипта Ромыча + плагин слайдер:

Код:
<!--- Блок слайдера. Выводим куда надо. --->
<div class="sliders"></div>

<!--- Плагин слайдер --->
<link rel="stylesheet" type="text/css" href="https://forumstatic.ru/files/0013/49/9f/64330.css">
<link rel="stylesheet" type="text/css" href="https://forumstatic.ru/files/0013/49/9f/55003.css">
<script type="text/javascript" src="https://forumstatic.ru/files/0013/49/9f/55349.js"></script>
<script type="text/javascript" src="https://forumstatic.ru/files/0013/49/9f/18625.js"></script>

<style>.slick-slide img{width: 100%;height: 150px;object-fit: contain;}</style>
<!-- Вывод картинок из тем в слайдер -->
<script language="javascript">
var lm = 100,//количество отображаемых сообщений из темы
sort = 'desc',//поубыванию 
si = [1,2,3],//id темы из которой выводим новости
npk = //новостная картинка по-умолчанию
$(function(){var nf='<div class="autoplay">',text=[],EndSlider=()=>{nf+='</div>';$('.sliders').append(nf);}
$.getJSON('/api.php?method=post.get&topic_id='+si+'&sort_dir='+sort+'&limit='+lm+'&fields=id,message,posted',
function(d){var x=d.response;
for(var i in x){
var sod=x[i].message.match(/\<img class\=\"postimg\" loading\=\"lazy\" src\=\"https?\:\/\/(.*?)\.(png|jpg|gif|jpeg|webp)\" alt\=\"https?\:\/\/(.*?)\.(png|jpg|gif|jpeg|webp)\" \/\>/g),pd=x[i].id;
if(sod !== null){var far = '<div><a rel="nofollow" href="/viewtopic.php?pid='+pd+'#p'+pd+'">'+sod+'</a></div>';}
else {var far = '';}
nf+=far;}EndSlider();
$('.autoplay').slick({
  slidesToShow: 7,
  slidesToScroll: 1,
  autoplay: true,
  arrows: false,
  dots: true,
  autoplaySpeed: 2000,
});
});
});
</script>
<!--Окончание-->

Посмотреть в действии можно здесь: https://ushas1.mybb.ru/

+4

560

Форма входа на всех страницах, с кнопками социальных сетей, скрипт Деффа

https://i.imgur.com/HJDMcyf.png

<script type="text/javascript">
var a =document.getElementById('pun-status').innerHTML
if (a.indexOf("Гость")!=-1)
{document.getElementById('pun-status').innerHTML="<div class='formal'>"+"<form id='login'"+" class='container'"+" method='post'"+" action='http://podderjka.forumsclub.ru/login.php?action=in'"+" onsubmit='return my_form(this)'>"+"<fieldset><legend><span>Введите ваше имя и пароль ниже</span></legend><div class='fs-box inline'>"+"<input type='hidden'"+" name='form_sent'"+" value='1' />"+"<input type='hidden'"+" name='redirect_url'"+" value='index.php' />"+"<p class='inputfield required'>"+"<label for='fld1'>Имя <em>(Обязательно)</em></label><br />"+"<span class='input'>"+"<input type='text'"+" id='fld1'"+" name='req_username'"+" size='25'"+" maxlength='25' /></span></p>"+"<p class='inputfield required'>"+"<label for='fld2'>Пароль <em>(Обязательно)</em></label><br />"+"<span class='input'>"+"<input type='password'"+" id='fld2'"+" name='req_password'"+" size='16'"+" maxlength='16' /></span></p></div></fieldset><p class=\"inputfield\"><< войти с помощью соц.сетей<span class=\"input\"><a class=\"social social-facebook\"href=\"/connect.php?provider=facebook\"></a><a class=\"social social-vkontakte\"href=\"/connect.php?provider=vkontakte\"></a><a class=\"social social-odnoklassniki\"href=\"/connect.php?provider=odnoklassniki\"></a><a class=\"social social-mailru\"href=\"/connect.php?provider=mailru\"></a><a class=\"social social-google\"href=\"https://galleryforavatars.mybb.ru/connect.php?provider=google\"></a><a class=\"social social-yandex\"href=\"/connect.php?provider=yandex\"></a></span></p><br>"+"<p class='formsubmit'>"+"<input type='submit'"+" class='button'"+" name='login'"+" value='Войти' /></p></form></div>"}
function my_form(the_form)
{
var element_names = new Object()
    element_names["req_username"] = "Имя"
    element_names["req_password"] = "Пароль"

if (document.all || document.getElementById)
{
    for (i = 0; i < the_form.length; ++i)
    {
    var elem = the_form.elements[i]
    if (elem.name && elem.name.substring(0, 4) == "req_")
    {
        if (elem.type && (elem.type=="text" || elem.type=="textarea" || elem.type=="password" || elem.type=="file") && elem.value=='')
        {
        alert("\"" + element_names[elem.name] + "\" это поле обязательно для заполнения в этой форме.")
        elem.focus()
        return false
        }
    }
    }
}

return true
}
</script>

синим - URL вашего форума

Скрипт добавляет для гостя форму входа с помощью пароля или социальных сетей. На отдельных страницах показ формы можно отключить в стиле.

Показ в теме:

https://i.imgur.com/044vcXZ.png

Отредактировано tartar1 (Ср, 31 Авг 2022 08:36:23)

+1


Вы здесь » Единый форум поддержки » Новые возможности форумов » Скрипты от пользователей 3