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

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

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


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


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

Сообщений 461 страница 480 из 565

1

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

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

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

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

+8

461

Давно спрашивали подобное, - сваял полноценный вариант с возможностью настройки:

Подсчет символов в постах пользователя

http://s1.uploads.ru/jHr0b.png

I. Подготовительные работы:
1. Создаем доп.поле профиля (Администрирование - Поля профиля), с точным названием Символов и такими настройками:

Скриншот:

http://s4.uploads.ru/WIXU1.png

2. Перемещаем его в нужное место в минипрофиле(где хотим его видеть)


II. Ставим скрипт в HTML верх

<!-- Подсчет символов в постах пользователя -->
<script type="text/javascript">var PostSymbols = {};
PostSymbols.forums  = [
1,5];  // Форумы, в постах которых учитываем символы
PostSymbols.BBtags  =
1;      // Учитывать символы, входящие в состав BB-Тегов?, 0 - да, 1 - нет
</script>
<script type="text/javascript" src="http://forumstatic.ru/files/0015/c4/3f/79967.js"></script>


Настройки:
PostSymbols.forums  -  Список форумов, в которых будет работать подсчет символов в постах (Если нужно во всех - оставляем пустой массив, ничего не прописываем)
PostSymbols.BBtags  -  Исключать BB-коды ([b], [i], [quote] и т.д.) из подсчета символов? - Если да, - прописываем 1, если же нун считать все символы полностью - ставим 0


Скрипт считает символы в нужных форумах только после установки!


Тестируем, отписываемся в Запросы по скриптам[8]

+4

462

Запрет изменения профиля некоторым пользователям
(к примеру, рекламному Пиар-Нику или читательскому аккаунту)

В HTML верх

<!-- Запрет изменения профиля нек-рым никам--><script type="text/javascript">
var NoChangeProfile = '
Alex_63,PR'; //Ники юзеров с запретом изменения профиля, через запятую
</script><script type="text/javascript">
if($('#pun-profile').length&&GroupID!=3)$().pun_mainReady(function(){
  var arr = NoChangeProfile.split(/\s*,\s*/);if($.inArray(UserLogin,arr)==-1)return;
  $('#profilenav .item4,.inputfield+.datafield').remove();  $('#profile').find('input[type="text"],textarea').attr('readonly','readonly');
  $('#profile').find('select,input[type="radio"],input[type="checkbox"]').attr('disabled','disabled');
  $('#profile').find('.formsubmit,p[style^="padding-bottom"]').text('Вам запрещено редактировать профиль.');
  if(!$('#profile4').length && !$('#pun-upavatar').length)return;var message = 'Вы не имеете прав для доступа к этой странице.';
  var title = $('#pun-title h1 > span').text();document.title = title; $('.punbb').attr('id','#pun-message');
  var crumbs = '<strong>Вы здесь</strong> »&nbsp;<a href="/">'+title+'</a> »&nbsp;Информация';
  $('#pun-crumbs1 .crumbs').html(crumbs); $().pun_aboutReady(function(){$('#pun-crumbs2 .crumbs').html(crumbs);});
  $('#pun-main').html('<h1><span>Информация</span></h1><div class=info><div class=container>'+message+'</div></div>');
});
</script>

Поправлено 06.03.2016
Вместо красного - вписываем ники юзеров, которым запрещаем редактировать профиль(через запятую)


Для надежности, чтобы юзеры не могли обойти скрипт, - ставим Защиту от отключения JavaScript

+2

463

Кликабельность ника в постах Гостя

http://s8.uploads.ru/dpDoJ.png

В HTML низ

<!-- Кликабельность ника в постах Гостя --><script>$(".post[data-group-id=3]").find(".pa-author").html(function(){return this.innerHTML.replace(/(<.+>)(.+)$/,'$1<a href="javascript:to(\'$2\')">$2</a>')});</script>

+6

464

Скрипт смены Имиджа в текущем посте (Deff)

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

В html-верх:

Код:
<link id="iNFpanel" rel="stylesheet" href="http://forumstatic.ru/files/0010/8b/e4/40931.css" type="text/css"/>
<script src="http://forumstatic.ru/files/0010/8b/e4/91405.js"></script>
Что изменилось

Добавилось в css:

Код:
#pun-post #profile-uploads td, #pun-edit #profile-uploads td, #pun-viewtopic #profile-uploads td {
    line-height: 0;
    width: 100px;
    height: 100px;
    border: none;
    padding: 0;
    background-position: top left !important;
    background-repeat: no-repeat !important;
    background-size: cover !important;
    display: inline-block;
    margin: 5px;
}

#pun-post table#profile-uploads, #pun-edit table#profile-uploads, #pun-viewtopic table#profile-uploads {
    border-spacing: 0px !important;
}

#pun-post #profile-uploads input[type=checkbox], #pun-edit #profile-uploads input[type=checkbox], #pun-viewtopic #profile-uploads input[type=checkbox] {
    display: none;
}

#avtrChang-area {
    position: absolute;
    top: 43px;
    max-height: 230px;
    overflow: overlay;
    right: 16% !important;
    width: 550px!important;
    padding: 10px !important;
}

#profile-uploads a {
    display: none;
    cursor: pointer;
    opacity: 0.7;
}

#profile-uploads a:hover {
    display: none;
    opacity: 1;
}

#profile-uploads a#uploads-a {
    display: block;
    cursor: pointer;
    opacity: 0.7;
}

#profile-uploads a#uploads-a:hover {
    display: block;
    opacity: 1;
}

#pun-profile #profile-uploads a, #pun-profile #profile-uploads a:hover {
    display: block;
}

Добавилось в JS (с коррективами Alex_63):

Код:
function changea() {
   if($('#pun-post,#pun-edit,#pun-viewtopic').length && !$("#avtrChang-area #profile-uploads").length)$.get("../profile.php?section=uploads&id=" + UserID,function(a){
     var s=$(a).find("#profile-uploads").clone();   $("#avtrChang-area").append(s);
     $("#profile-uploads td").each(function(){  var namein = $(this).attr("style").substring(21,$(this).attr("style").length - 2);
        $(this).find('input').replaceWith("<a id=\"uploads-a\" onclick=\"insert('[AVA]" + namein + "[/AVA]');\"><img src=\"http://forumstatic.ru/files/0010/8b/e4/75767.png\"></a>");
     });
   });
};

и вызов функции changea() по клику на кнопку "галерея".

Deff, если влезать в ваш код преступно - я страшно извиняюсь.
Если пользовать такие функции как load неэтично, не работает или требует каких-то дополнительных настроек - я тоже страшно извиняюсь, я не слишком мастер.
Если всплывут какие-то ошибки или вы, мастера, знаете, как сделать это красивее, правильнее и прочая-прочая - тоже буду рада внести коррективы, разобраться, почитать.

Отредактировано Uso (Ср, 15 Мар 2017 15:08:47)

+2

465

Обновление для скрипта "маски" профиля.

С момента последней публикации здесь за три патча поправлены баги:
• Диалог маски не отображался на страницах редактирования сообщений / создания новой темы. Теперь отображается и корректно работает.
• Объёмные маски в какой-то момент переставали сохраняться. Теперь сохраняются все.
• Спецсимволы в статусах / никах отображались как код. Теперь отображаются как положено.

Что добавилось:
• Появился особый css-класс для профилей под маской. Теперь можно выделить их через стили.
• Диалог маски скрывается по нажатию esc.
• Есть возможность удалить из хранилища сразу все маски.
• Кроме текстовых и html кастомных полей появился тип bbcode. Теперь можно ограничить возможность пользователей в редактировании ЛЗ одними bb-кодами. В предпросмотре маски основные bb-теги отображаются корректно.
• По отдельной просьбе выложен исходный неминифицированный и неоптимизированный под ES5 код.

+5

466

Идея выделять посты с обращением предложена Shark с форума tobath.ru,
Поскольку мысль интересная, решил сделать для всего сервиса                     

Выделение постов с обращением к текущему нику
http://sa.uploads.ru/B4UcQ.png

В HTML низ

<!-- Выделение постов с обращением к текущему нику-->
<style type="text/css">
.post.replied_me {
  box-shadow: 0 0 10px rgba(255,0,0,.5);
}
</style>

<script type="text/javascript">
if(GroupID!=3&&$("#pun-viewtopic").length)(function(){
var reg1 = new RegExp("^"+UserLogin+"\\s*","gim");
var reg2 = new RegExp("^"+UserLogin+"\\s*\\n+","gim");
var reg3 = new RegExp("^"+UserLogin+"\\s*,\\s*","gim");
$(".post-content").map(function(){ var cnt = $(this).html().replace(/\n/g,"")
  .replace(/<\/(p|cite)><(p|blockquote|div).*?>/gim,"\n\n");
  cnt = cnt.replace(/<br>/gim,"\n").replace(/&nbsp;/gim," ");
  cnt = $.trim(cnt.replace(/<.+?>/gim,""));// console.log(cnt);
  if(cnt.match(reg1)||cnt.match(reg2)||cnt.match(reg3)){
    $(this).parents(".post").addClass("replied_me");
};});}());
</script>

Поправлено 20.03.2017


Выделенный пост имеет класс .replied_me, можно задать ему свое оформление,
К примеру: Перекрашиваем фон поста с обращением(ставим в первый код из данного поста перед </style>)

.replied_me .post-body,
.replied_me >.container,
.replied_me >h3,.replied_me >h3> span,
.replied_me .post-links {
  background:rgb(238,247,243)!important;
}

Цвет ставим свой вместо красного.

+5

467

В связи с последним обновлением браузеров Chromium и Firefox,     
перестал функционировать старый скрипт выделения кода             
от mkusher, - сваял вариант-поправку, дополнительно сократив:

Новое выделение кода в блоке "Код"
(версия 2017)
http://sa.uploads.ru/vN9eW.png

В HTML верх:

<!-- Выделение кода в блоке "Код" // © Alex_63, версия 2017г. -->
<script type="text/javascript" src="http://forumstatic.ru/files/0015/c4/3f/26102.js"></script>
<script type="text/javascript">select_text.linkText = '
Выделить код' //текст ссылки</script>

Красным - Ваша надпись на ссылке, по умолчанию - "Выделить код".


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


Внимание:

Старый код из HTML низ

Код
Код:
<script type="text/javascript">
function select_text(elem) {
	if(window.getSelection) {   
var s=window.getSelection();   
if(s.setBaseAndExtent){   
	s.setBaseAndExtent(elem,0,elem,elem.innerText.length-1);   
}
else {   
	var r=document.createRange();   
	r.selectNodeContents(elem);   
	s.removeAllRanges();   
	s.addRange(r);
}   
	}
	else if(document.getSelection){   
var s=document.getSelection();   
var r=document.createRange();   
r.selectNodeContents(elem);   
s.removeAllRanges();   
s.addRange(r);   
	}
	else if(document.selection){   
var r=document.body.createTextRange();   
r.moveToElementText(elem);   
r.select();
	}   
}
</script>
<script type="text/javascript">
var div = document.getElementById('pun-main').getElementsByTagName('div');
for(x in div){
	if(div[x].className=='code-box'){
div[x].getElementsByTagName('strong')[0].innerHTML = '<a href="#" onclick="select_text(this.parentNode.parentNode.childNodes[1].getElementsByTagName(\'pre\')[0]); return false;">Выделить код</a>';
	}
}
</script>

- Убираем!

+19

468

Shagrath написал(а):

Доброго дня уважаемые. Возник такой вопрос, можно ли сделать так, чтобы модератор  на форуме - который он Не модерирует  не мог видеть скрытый текст ?
То есть в своём форуме - видит. На другом форуме, где не его модерация - не видит .

Запрет просмотра Скрытого текста модераторам
в немодерируемых форумах

(т.е. в тех, где данный модератор не имеет модер-прав)

© Deff

В HTML верх

<script> $().pun_mainReady(function(){ // В HTML верх, Скрытие(от модера) скрытого текста в немодерируемых форумах;
if(GroupID==2 && !$('#topic-modmenu').length)$('.quote-box>cite:contains("Скрытый текст:")')
.next().html('<p> Скрытый текст доступен лишь АМС данного форума</p>');});
</script>

+3

469

Обновлен скрипт HTML в постах с допуском по группам

- Добавлена совместимость со старой версией скрипта, где использовался тег [code]<!--HTML-->[/code]
- Исправлена ошибка с допуском всех групп к использованию HTML в постах
- Исправлен вид сообщения в случае, если HTML в постах пытается использовать юзер без допуска к скрипту

Напоминаем, что при использовании скрипта HTML в постах допускается теоретическая возможность, что пользователи из групп с разрешением использования(по умолчанию это модераторы) могут использовать возможность вставки HTML для различных целей, в том числе возможной кражи пароля главного администратора и т.п.

Старый вариант HTML в постах в скором времени будет отключен на форумах, рекомендуется его заменить на новый
Код:
<script type="text/javascript">
function Transform_Code_Box_in_HTML(aX){
var TemLnk=aX.replace(/^(.*viewtopic\.php\?id=\d*).*$/ig,"$1");
var PstId=aX.replace(/^.*viewtopic\.php\?id=.*(#p\d+)$/ig,"$1");
var L=document.URL.replace(TemLnk,'');
if(L!=document.URL&&(L.slice(0,1)).search(/\d/ig)==-1 ){ 
L=$("div.topic "+PstId);
if(L.length==1){
var Lhtm=L.find(".post-content .code-box:first .scrollbox pre").text();
L.find(".post-content .code-box:first").replaceWith(Lhtm)
}}}
function Demo_HTML(Ts){var Ll=Ts.parents(".htmldemo").find(".code-box .scrollbox pre").text();
Ts.parents(".htmldemo").after('<div class="demHtml">'+Ll+'</div>');Ts.replaceWith(DemoButt0);
}
$(document).ready(function() {
$("#pun-viewtopic .post .code-box").each(function(){
if($(this).text().indexOf('<!--HTML-->')!=-1){
$(this).wrap('<div class="htmldemo"></div>')
$(this).replaceWith($('.htmldemo').text().split('<!--HTML-->')[1]);
}
});
});
</script>

+1

470

Fumuse написал(а):

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

Количество непрочитанных тем в каждом форуме (на Главной)
http://sg.uploads.ru/Fhr3y.png

В HTML низ:

<!-- Кол-во новых тем в форумах © Alex_63 -->
<style>
.icon[data-new-topics]:before,
.subforums span[data-new-topics]:before {
  content:attr(data-new-topics);
  display:inline-block;position:absolute;
  height:12px;line-height:12px;
  padding:2px;text-align:center;
  font-weight:700;font-size:.8em;
  background:#ff0000;
  color:#fff;border-radius:8px;
  margin:-6px;min-width:12px;
}
.subforums span[data-new-topics]:before {
  margin-left:-16px;margin-top:0;
  font-size:.7em;padding:1px;
}
</style>

<script type="text/javascript" src="http://forumstatic.ru/files/0015/c4/3f/69941.js"></script>


Особенности
- Отображает количество непрочитанных тем на иконке форума на Главной, а также у подфорумов;
- При отсутствии непрочитанных(все темы просмотрели) - выделение с форумов на Главной снимается(т.е. дублируется действие скрипта Автоматическое снятие выделения с форумов на Главной при отсутствии выделенных тем в Активных темах, - при установке нового скрипта - старый скрипт(см ссылку) удаляем


Скрипт добавлен в раздел Администрирование - Скрипты от сервиса => 20 июня 2017: Новые скрипты от сервиса (Администрирование - Скрипты)

+13

471

дублирую здесь на всякий случай

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

http://sg.uploads.ru/tFc1X.gif

Подробнее - Музыка в постах

+7

472

Обновлен скрипт Цитирование с BB-кодами

Добавлена проверка на соответствие выделенного фрагмента цитируемому сообщению (в котором нажата кнопка цитаты). Теперь в случае, если выделен текст в одном сообщении, а цитирование нажато в другом, цитироваться будет то сообщение, в котором нажата кнопка. (Репорт от dana123)

+4

473

По просьбе Lusiya

Запрет перехода по ссылкам из сообщений для Гостей (с уведомлением)

http://s9.uploads.ru/jxirg.png

Скрипт (при входе под Гостем) заменяет названия ссылок в постах на стандартное "Перейти по ссылке"(см.скриншот) и при клике на такую ссылку выдает уведомление с просьбой авторизоваться, блокируя переход по ссылке.

Ставим В HTML низ:

<!-- Запрет перехода по ссылкам Гостю(с уведомлением) © Alex_63 -->
<style>.gid3 .post-content a{display:none}.gid3 .post-content a.Guest{display:inline-block}</style>
<script type="text/javascript" src="http://forumstatic.ru/files/0015/c4/3f/96302.js"></script>

+7

474

Поскольку скрипт безопасного HTML в постах от Deff устарел,
а ныне используемые скрипты имеют проблемы с безопасностью,
Предлагаю новый вариант безопасного HTML в постах, с полной
защитой от вмешательства на страницу и корректно работающей
простановкой высоты(появление прокрутки полностью исключено):

Безопасный HTML в постах
Новая версия

http://s5.uploads.ru/wWQXY.png

Поскольку скрипт полностью безопасен в использовании, использование функции разрешено всем группам, без ограничений.
- Запрещен доступ(и любое изменение) родительской страницы(страницы форума) скриптом из HTML-вставки, в целях безопасности;
- Запрещены модальные(всплывающие) окна, вызываемые скриптом из пользовательской HTML-вставки;
- Более быстрая подгрузка HTML по сравнению со скриптом безопасного HTML в постах от Deff (ссылка) и автозапуск;
- Высота HTML-вставки динамически подстраивается под содержимое(в отличие от предыдущего варианта безопасного HTML, см.ссылку выше);
- В HTML-вставке работают все стандартные BB-коды(включая цитаты, спойлеры и т.п.)


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

<!-- Безопасный HTML в постах / © Alex_63 2017г. -->
<script type="text/javascript" src="http://forumstatic.ru/files/0015/c4/3f/67901.js"></script>


Скрипт добавлен в раздел Администрирование - Скрипты от сервиса => 20 июня 2017: Новые скрипты от сервиса (Администрирование - Скрипты)

+9

475

Mota_Wolfen написал(а):

Искал скрипт, позволяющий оставлять на форуме #хэштеги, которые можно оставлять в тексте и при нажатии на него чтобы как-либо показывались все сообщения, где люди оставляли такой же. Нашел только скрипт от Fover Запросы по скриптам[3] (пост 852) от 2015 года, но он нерабочий, работает через поиск непосредственно и постоянно поиск выдает "По вашему запросу ничего не найдено".

Хэштеги
http://s7.uploads.ru/P1d04.png

Поправленный вариант, работает корректно и ищет любые(практически) совпадения, не ломает структуру поста при наличии в нем спецсимволов и т.п., исключает срабатывания в блоке Код

В HTML верх

<!-- Хэштеги --><script type="text/javascript">
$().pun_mainReady(function(){$('.post-content:contains("#")').map(function(){
    var a = '#',b = '_&HASH&_',c = '.code-box',cl = [];$(this).find(c).map(function(i){cl[i] = $(this).clone(true,true)});
    $(this).find('a').attr('href',function(){return this.href.replace(a,b)});
    var lnkTAG = '<a href="/search.php?action=search&keywords=%23$1&sort_dir=DESC" title="$1">#$1</a>';
    var cnt = $(this).html().replace(/#([^\s"'<>\(\);]+)/ig,lnkTAG); $(this).html(cnt);
    $(this).find(c).map(function(i){$(this).replaceWith(cl[i])}); $(this).find('a').attr('href',function(){return this.href.replace(b,a)});
  });});
</script>

Поправлено 14.06.2017 - теперь код не ломает ссылки в посте
Поправлено 25.06.2017 для случаев с несколькими блоками "Код" в посте


В поиске по хэштегу сообщения появляются не сразу, т.к. индексация работает не мгновенно, а каждые 15-20 минут(соответственно и посты появляются в поиске спустя это время)

+10

476

По многочисленным просьбам пользователей реализована новая версия
Расширенного Переноса, - с добавкой поисковой строки и др. правками

Расширенная функция переноса сообщений  V.3
http://s7.uploads.ru/RWnGo.png


Alex_63 в описании к предыдущей версии скрипта написал(а):

Описание работы скрипта:
Скрипт упрощает процесс переноса сообщений для модератора.
При клике на кнопку "Переместить" на странице выбора сообщений появляется окно, в котором можно выбрать форум и тему для переноса.
После того, как сообщения будут перемещены, появится сообщение об удачном переносе с предложением перейти в тему с перенесенными сообщениями или выбрать еще сообщения для переноса в текущей теме: http://s7.uploads.ru/wFTCe.png Т.е. после переноса можно еще перенести сообщения с текущей страницы, либо перейти на другую страницу данной темы.


Изменения в версии v.3:
  - ! Добавлена возможность поиска нужных тем по ключевым словам;
  - Ускорено срабатывание функции переноса(при отправке формы) за счет ajax-запроса вместо отправки во фрейм;
  - Поправлено оформление окошка переноса, реализовано адаптивное оформление;
  - Поправлена подгрузка постов с предыдущей/следующей страницы после переноса;
  - Универсализировано всплывающее окошко - теперь скрипт работает через сервисный плагин jQuery.mybbModal, добавлено закрытие окошка по нажатию ESC.


В HTML верх:

<!-- Расширенная функция переноса сообщений / v.3 © Alex_63 -->
<script type="text/javascript" src="http://forumstatic.ru/files/0015/c4/3f/61584.js"></script>


Тестируем!


P.S. - Если у Вас вычищены фоны и контейнер отображается прозрачным - ставим фон таким кодом:

.move_posts_form .container {
  background:#CCC0B1;
}

Вместо красного - Ваш нужный цвет для фона,
Код ставим в конец Второго Окна стилей, или(если отключен Свой стиль) в HTML верх в тегах <style></style>)

Дополнение:(скопировано из поста с версией v.2 скрипта) выделяем четные строки таблицы переноса (для лучшей визуализации)
В HTML верх

<style type="text/css">
.Select_Topics tbody tr:nth-child(2n) td{
  background:
rgba(255, 200, 0, 0.08);
}
</style>


Скрипт добавлен в раздел Администрирование - Скрипты от сервиса => 20 июня 2017: Новые скрипты от сервиса (Администрирование - Скрипты)

+10

477

Cpacoin написал(а):

Хочу сделать ленту сообщений из скрипта последние сообщения.
Мне нужно чтобы последние темы форума были в 4-6 столбика.

Статистика последних сообщений в несколько столбцов
http://sg.uploads.ru/TA91b.png

В HTML низ, (если стоят скрипты Описаний к теме или Иконок для тем - Данный скрипт ставим выше второй части указанных скриптов!)

<!-- Последние N сообщений форума(в несколько столбцов) -->
<style>
.stats {padding:0!important;width:100%;border-top:none!important}
.stats th {text-align:left;}
.stats td {padding:.5em;border-top-style:solid;border-top-width:1px}
</style>

<script>var NumPosts = 18; //Количество выводимых сообщений (не более 20)
        var N_OnLine =
6;  //Кол-во Тем на одной строке
//=============================================================//
if($('#pun-index').length)document.write('<script src="/export.php?type=js&max='+NumPosts+6+'" \
type="text/javascript"><\/script>')</script><script type="text/javascript">
(function() {  var j = 0,html = '',html0 = '<div id=pun-debug class=section><h2><span>\
Последние сообщения форума</span></h2><table cellspacing="0" class="container stats">\
<tbody class="hasicon"><tr>';for(var i=0;i<content.length;i++){
  var s0=content[i][0],s1=content[i][1],s2=content[i][2],s3=content[i][3];
  var a = '<td>'+s1+'</td><td class="tcr"><a href="'+s2+'" target="_blank">'+s3+'</a><br/></td>';
  if(j%N_OnLine==N_OnLine-1)a+='</tr><tr>';
  if(s3.indexOf('·')!=-1||s3.indexOf('¬')!=-1){a=''}else{j++};if(j<=NumPosts)html+=a;
}   var b = html0+html+'</tr></tbody></table></div></div>'; $('#pun-ulinks').after(b);
var prc = (100/N_OnLine)/3,w1 = 'width:'+ prc +'%',w2 = 'width:'+ prc*2 +'%';
$('head').append('<style>#pun-debug .stats .tcl{'+w1+'}#pun-debug .stats .tcr{'+w2+'}</style>')}());
</script>

+5

478

Автоматическая разбивка текста на абзацы

Скрипт писался для ролевого форума. Автоматически разбивает пост на абзацы. В стиле предусмотрен отступ "красной строки", интервал между абзацами и выравнивание текста по ширине.
Скрипт игнорирует участки текста, оформленные вручную с помощью тегов (выравнивание, шрифты, а также [indent]).
Результат работы выглядит примерно так:

https://i.gyazo.com/af3d18f4b81cd04fed59250cdb795914.png

Ставить лучше в html-низ:

Код:
<style>
.post-content {text-align: justify;}
td p {text-indent: 0 !important;}
.post-content p {
  text-indent: 1.5em;
  padding: 0 0 0.5em 0 !important;
}
</style>
<!-- Разбивка текста на абзацы, для  ролевых форумов (c)satsana, 2017г. -->
<script type="text/javascript">
 $(".post-content").html(function() {
  var pos = 0, spanpos = 0, brpos = 0; var str = this.innerHTML;
  while (true) {
    spanpos = str.indexOf("<span", pos);
    brpos = str.substring(pos).search(/(\<br\s?\/?\>)+(?!<span style="display:inline-block)/);
    if (brpos == -1) {return str;} else {brpos += pos;}
    if (spanpos < brpos && spanpos != -1) {
      var span1 = 1, span2 = 0; pos = spanpos + 2;
      while (span1 != span2) {
        pos = str.indexOf("span", pos);
        if (str.substring(pos-1, pos) == "/") {span2++;} else {span1++;}
        pos++;
        if (str.indexOf("<span", pos) == str.indexOf("<br>", pos)) {break;}
      }
    } else if (spanpos > brpos || spanpos == -1) {
      str = str.substring(0, brpos) + str.substring(brpos).replace(/(\<br\s?\/?\>)+/, '</p><p>'); pos = brpos++;
    } else {return str;}
  }
 })
</script> <!-- Разбивка на абзацы (end) -->

В стиле text-indent: 1.5em - величина отступа красной строки, padding: 0 0 0.5em 0 - отступ после абзаца. И то, и другое можно изменить на свой вкус (дробные величины пишутся через точку).

Скрипт отлично сочетается с авто-подстановкой длинных тире, делается она вот так:

Код:
<script>$('.post-content p').html(function(){return this.innerHTML.replace(/(\s|&nbsp;)?-(\s|&nbsp;)/g,'$1&mdash;$2')})</script>

Если на форуме установлен скрипт для ручного отступа с помощью тега [indent], то для избежания появления двойного отступа в начале абзаца можно использовать вот такой код:

Код:
<script>$('.post-content').html(function(){return this.innerHTML.replace(/<p><span style="display:inline-block/g,'<p style="text-indent: 0;"><span style="display:inline-block')})</script>

Отредактировано satsana (Пн, 12 Фев 2018 23:37:06)

+14

479

Разворачивание картинок в постах до полного размера

Искала способ просмотра ужатых форумом картинок в полном размере без открывания их в новой вкладке. Не нашла ничего подходящего (что нашла - то не работает или работает не так, как мне хотелось бы), поэтому написала вот такой скрипт, которым с удовольствием делюсь с вами.

В html-верх или html-низ:

Код:
<!-- Развертывание картинок (с)satsana, 2017г.-->
<script type="text/javascript">
 function postimgOnhover (img) {if (img.offsetWidth != 0  && img.naturalWidth > img.offsetWidth) {
  img.style.cursor = 'zoom-in'; img.onclick = function () {
   var imgHeight = img.naturalHeight, winHeight = window.innerHeight; var topShift = (winHeight>imgHeight ? (winHeight-imgHeight)/2 : 0);
   $('body').append('<div class="lightbox" style="position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.9); overflow: auto; text-align: center; z-index: 1000;">' + '<img class="lightimg" src="' + img.src + '" onclick="this.parentNode.remove()" style="position: relative; top: ' + topShift + 'px; cursor: zoom-out;">' + '</div>');}}}
window.addEventListener("load", function () {
  var postimges = document.getElementsByClassName('postimg');
  for (var i=0; i<postimges.length; i++) {postimges[i].onmouseover = function () {postimgOnhover (this)};}
});
</script><!-- Развертывание картинок (END) -->

Добавлено спустя 2 дня 14 часов 9 минут 33 секунды: Добавлен z-index во избежание появления элементов оформления форума поверх окна просмотра изображений.
Добавлено спустя 5 дней 16 часов 42 минуты: Устранён баг с чтением размеров картинок до их полной загрузки, из-за которого в некоторых браузерах разворачивались все картинки, а не только сжатые.
Добавлено 16.02.2018: Обновила код, теперь можно устанавливать в любое место html-низ или html-верх.

Отредактировано satsana (Пт, 16 Фев 2018 18:11:36)

+9

480

Обновлен скрипт Хэштегов (внесены правки для случаев с несколькими блоками "Код"(идущими не подряд) в посте с хэштегами, Переставляем код на исправленный)

+4


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