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

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

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


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


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

Сообщений 401 страница 420 из 565

1

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

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

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

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

+8

401

Выделение непрочитанных постов в топике  V.3

http://sa.uploads.ru/xOspI.png    http://s6.uploads.ru/c8xWZ.png


В этой версии:
  - устранена ошибка с пропадающими картинками на странице
  - исправлена ошибка с постоянные выделением последнего поста темы как непрочитанного
  - ускорено выделение постов


В самый верх HTML верх: (но ниже первой части Подфорумов с автоматической установкой или Дайсов)

<!-- Выделение непрочитанных постов в топике v.3 --><style type="text/css">
.post h3>span:before{float:left;margin-right:5px;vertical-align:middle;}
.post.isNew h3>span:before{content:url(http://sav
epic.ru/8271783.png) " ";}
.post:not(.isNew) h3>span:before{content:url(http:/
/savepic.ru/8275879.png) " ";}
</style>

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


Рекомендуется использовать совместно со скриптом "Автоматическое снятие выделения с форумов на Главной"

Выделенный пост имеет селектор .post.isNew


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

+3

402

Генератор паролей в профиле

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

Скрипт добавляет ссылку "Сгенерировать пароль", по клику на которую открывается окошко, в котором можно задать длину пароля и вставить полученный пароль в поля ввода (см. скриншоты)
http://s4.uploads.ru/abGlr.png


В HTML низ:

<!-- Генератор паролей в профиле --><script>
if(document.URL.match(/\?action=change_pass/))$.getScript('https://forumstatic.ru/files/0015/c4/3f/66548.js')</script>

+7

403

Сохранение контента формы ответа в Local Storage

Fover

Старый скрипт, написанный еще Fover'ом мне на форум года 2-3 назад. Cохраняет контент в форме ответа в Local Storage, тем самым позволяет избежать ситуаций, когда написанное до отправки терялось после случайного закрытия вкладки, браузера и тп.
В HTML-низ

<script>
var get = (function(a) {
    if (a == "") return {};
    var b = {};
    for (var i = 0; i < a.length; ++i)
    {
        var p=a[i].split('=');
        if (p.length != 2) continue;
        b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "));
    }
    return b;
})(window.location.search.substr(1).split('&'));
var text = localStorage.getItem('topic'+get['id']);
if(text) {
  $('#post textarea#main-reply').val(text);
}
$('#post textarea#main-reply').bind('keydown keypress keyup', function(e){
  var text = $(this).val();
  localStorage.setItem('topic'+get['id'], text);
});
$('#post').submit(function() {
  localStorage.removeItem('topic'+get['id']);
});

</script>

+12

404

Запрет регистрации с некоторых e-mail и доменов

В HTML низ:

<!--Запрет регистрации с e-mail из списка-->
<script type="text/javascript">
var BannedEmailForReg = new Array(
  //Массив e-mail и доменов, запрещенных к регистрации
  '
@lol.ru',
  '
tstban@mail.ru',
  '
test@testmail.ru'  //!Последний элемент без запятой
)
if($('#register').length)$('.button[name="register"]').on('click',function(){var L=$('input[name="req_email"]').val();
function tst(){alert('Введенный Вами email или домен внесен в черный список.');}
for(var i=0;i<BannedEmailForReg.length;i++){var s=BannedEmailForReg[i];
if(s.search(/^\@/g)!=-1&&L.indexOf(s)!=-1){tst();return false}if(L==s){tst();return false}}});
</script>

+5

405

Скрипт hvScriptSet
version 1.0.20

Скрипт для изменения профиля юзера в рамках одного сообщения.

Скрипт для изменения профиля юзера в рамках одного сообщения.

Что может:
► Заменить ник юзера, статус, аватар, подпись в рамках одного сообщения (маска профиля). Всё вместе или по отдельности – выбирает сам юзер в рамках заданных администратором форума настроек.
► Администратор может позволить юзерам изменять дополнительные поля профиля (личное звание) и настроить способ вставки: html, bb-коды или простой текст.
► Администратор может создать один или несколько шаблонов для предзаполнения поля.
► Хранить до двадцати последних использованных масок профиля для каждого профиля. Маски хранятся в хранилище форума и доступны из любого браузера. При желании админа лимит на маски проставляется произвольно.
► Имеет удобное диалоговое окно для редактирования и предпросмотра маски профиля.
► Администратор сам выбирает, в каких разделах его форума и каким группам юзеров можно использовать скрипт.
► Кроме "полной" маски (разрешено менять все поля) существует "частичная", в которой можно изменять только аватар. Рамки её использования определяются администратором.
► Использует свой собственный набор bb-тегов (а также поддерживает создание собственных для дополнительных полей), но кроме того работает и с общеупотребительными [AVA], [STA] и [SGN].

Как поставить?
1. Настроить скрипт для своего форума. Выбирайте, в каких разделах, кому и что можно. Группы Администраторов и Модераторов можно не указывать: им по умолчанию доступна полная маска везде.
2. Здесь же можно добавить возможность менять дополнительные поля профиля.
3. В нижней части страницы настроек сгенерируйте код скрипта.
4. Вставьте полученный код в поле html-низ в разделе форума "Администрирование » Настройки".
5. Проверьте работу скрипта с аккаунта пользователя. Это важно: администраторам и модераторам по умолчанию доступна полная маска везде, без ограничений в настройках.

Как использовать?
1. Над формой ответа найти кнопку вызова диалога маски.
https://i.gyazo.com/054aa9601bb7157bfc563ea65847a729.png
2. В открывшемся диалоговом окне следуйте подсказкам. Предпросмотр маски обновляется автоматически при потере фокуса на полях профиля.
http://i.imgur.com/f9S7SHD.png
3. В правой части диалога отображаются использованные ранее маски. Их можно использовать ещё раз, нажав на миниатюру аватарки,  или удалить из этого списка. Удаление необратимо.

Если что-то не получается?
Скрипт поддерживается пользователем Человек-Шаман на Едином форуме техподдержки mybb (https://forum.mybb.ru/) или через почту homoveneficus@gmail.com

FAQ по использованию

А если у меня уже установлен другой скрипт смены профиля?
Пока не было обращений, что скрипты друг с другом как-то конфликтуют, но я бы всё равно не советовал ставить их вместе. Теги [AVA], [SGN], [STA] и [NIC] также понимаются этим скриптом, маски со старых постов не слетят.

В скрипте всё страшно и непонятно, всё сплошным текстом, а вдруг там что плохое?
Читаемый код скрипта для разбора доступен по ссылке: http://f.etrin.ru/hvss/hvss-latest.js
Минимизированная версия всего лишь подверглась обработке javascript-minifier для более быстрой загрузки и Babel для совместимости. Можно подключить на форум несжатую версию, ничего особенно не изменится, кроме поддержки скрипта устаревшими браузерами.

FAQ по настройке

Куда вставлять скрипты? Как вставлять скрипты? В каком порядке?
Скрипт и его настройки вставляются в поля html-верх или html-низ в разделе «Администрирование > Настройки» вашего форума: сначала скрипт, потом его настройки. Должно получиться как-то так так:

<script src="https://forumstatic.ru/files/0017/95/29/89289.js"></script>
<script>
hvScriptSet.addMask(...);
</script>

У меня маска вставляет ЛЗ/аватар куда попало в профиле.
Обратите внимание на настройку userFields, она должна в обязательном порядке содержать классы всех видимых полей профиля (а не только тех, которые меняются) в том порядке, в каком они есть. Для удобства пользуйтесь генератором, он не позволит вам ошибиться.

После изменения прав доступа к форумам всё перестало работать.
Внимательно проверьте, чтобы в названиях форумов и групп были правильно расставлены запятые, а одинарные кавычки в названиях были заменены на \' — это важно для работы скрипта.
Воспользуйтесь генератором, он аккуратно расставит всё за вас.

Я заметил ошибку!
Автор скрипта доступен для фидбека по электронному адресу homoveneficus@gmail.com.

FAQ по стилизации CSS

Хочу поставить другой фон для диалога маски.
Стили диалога маски можно прописывать в настройках стиля форума: «Администрирование > Свой стиль».

Например, для задания заднего фона окошку нужно прописать в "своём стиле" в любом из полей:

Код:
#mask_dialog .inner {
    background: url('ваша картинка фона');
}

Игрок поставил большую картинку как аватар, и профиль разнесло =(
Чтобы такого не случалось, пропишите в «Администрирование > Свой стиль» в конце любого из полей следующее:

Код:
.pa-avatar img {
    max-width: 180px;
    max-height: 180px;
}

180px можно заменить на свои значения, в пикселях, за границы которых не позволено выходить аватарам.

• Расширенное описание настроек по порядку:

Настройка

Значение по умолчанию

Описание

buttonImage

http://i.imgur.com/ONu0llO.png

Картинка bb-кнопки замены (вместо дефолтной можно ставить свою: просто замените ссылку на картинку)

showPreview

true

Подключает (оставьте true) и отключает (замените на false) превью при создании маски.

defaultAvatar

http://i.imgur.com/bQuC3S1.png

Добавляет картинку, которая будет видна при заполнении маски в превью, если у игрока нет своей аватарки, а временную он по какой-то причине не подгрузил.

guestAccess

Сюда нужно вводить в виде  ["Название форума 1", "Название форума 2"] названия форумов, в которых будут продолжать отображаться маски удаленных профилей.
Полезно для игровых архивов.
Гости пользоваться масками не могут.

forumAccess

Открывает группам пользователей частичный доступ к скрипту – дает менять только аватар. Если удалить это значение, то делать это смогут все игроки во всех форумах без ограничений.

Чтобы разрешить смену аватаров в отдельных форумах только некоторым группам, вводите их названия в виде ‘Название форума’: ['Название группы 1', 'Название группы 2'].
Чтобы запретить частичную маску везде, пропишите в названии форума несуществующее у вас название.
В полной маске аватару менять всё ещё будет можно.
ВАЖНО! Если в названиях групп или форума есть апостроф, поставьте перед ним обратный слэш:

Код:
\'

Это важно для работы скрипта.

forumAccessExtended

Открывает группам пользователей доступ к использованию полной маски. Если удалить это значение, то никто, кроме администратора и модераторов, не сможет использовать весь функционал маски.

Чтобы открыть полный доступ к маске, вводите названия групп в виде ‘Название форума’: ['Название группы 1', 'Название группы 2'].
ВАЖНО! Если в названиях групп или форума есть апостроф, поставьте перед ним обратный слэш:

Код:
\'

Это важно для работы скрипта.

changeList

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

Составляющие настройки с пояснением:

'info': { — название для работы скрипта: произвольное, пишется латиницей и слитно
            title: 'Личное звание', — или любое другое понятное игрокам название нового поля.
            description: 'Принимает HTML', — описание и пояснение к новому полю, которое даст понять при заполнении маски, что это за поле и как его заполнять.
            tag: 'info', — тег, который будет использоваться для вставки изменений, [info]изменение[/info], вместо 'info' можно использовать любое латинское слово или сочетание символов без пробелов, кроме уже существующих bb-тегов.
            class: 'pa-fld1', — класс поля в профиле, который вы планируете заменить.
            defaultCode: [ //факультативное поле сюда можно по аналогии вводить шаблоны ЛЗ. Они отобразятся выпадающим меню около поля и при выборе предзаполнят поле нужными тегами / bb-кодами
                {
                    name: 'Первый шаблон',
                    template: '<div>Код первого шаблона</div>'
                },
                {
                    name: 'Второй шаблон',
                    template: '<div>Код второго шаблона</div>'
                }
            ],
            type: 'bbcode' — параметр, который позволяет использовать html- и bb-теги. Можно вместо 'bbcode' использовать 'html' или 'text' – тогда скрипт будет вставлять вставлять значение поля как html или как простой текст.
        }
ВАЖНО! Если в если в любом из полей встречается апостроф, поставьте перед ним обратный слэш:

Код:
\'

Это важно для работы скрипта.

userFields

['pa-author', 'pa-title', 'pa-avatar', 'pa-fld1','pa-reg','pa-posts','pa-respect', 'pa-positive', 'pa-awards', 'pa-gifts']

Классы полей профиля – обязательно в том порядке, в котором они отображаются в профиле. Тогда скрипт будет работать, даже если требуемого поля в профиле нет (удален аватар, нет ЛЗ, а у вас нестандартный порядок полей профиля).

Указывать нужно обязательно все отображаемые (даже неизменяемые) поля, по порядку, в кавычках, через запятую.

Отредактировано Человек-Шаман (Вс, 20 Мар 2022 01:01:07)

+19

406

HTML в постах с допуском по группам

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

В HTML верх:

<!-- HTML в постах с допуском по группам © Alex_63 -->
<script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/52361.js"></script>
<script type="text/javascript">
HTMLinPost.groups = [
1,2]; // Группы, допущенные к вставке HTML в посты
HTMLinPost.noAccess = ['
user','newTst2']; // Пользователи с запретом вставки HTML в посты
HTMLinPost.parseHTMLinPosts()
</script>

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


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


01.04.2024: В связи с массовым злоупотреблением доступами для групп (в том числе гостей и только что зарегистрированных пользователей) в HTML-вставках скрипты теперь разрешено использовать только группам модераторов и администраторов. Остальные пользователи могут использовать HTML, но не могут использовать скрипты внутри него.

+9

407

Вариант запрета перехода по внешним ссылкам в постах

С ограничением на время после написания последнего поста и минимальное количество постов у юзера

В HTML верх:

<!-- Запрет перехода по внешним ссылкам  -->
<script type="text/javascript">
;!function () {
var groups_id = [
1,2,5]; //ID групп со снятием ограничения
var num_hours =
480; //Время с момента написания последнего поста(в часах), если больше - запрещаем;
var min_posts =
20; // минимальное количество постов для снятия запрета


FORUM.unPack=function(a){return decodeURIComponent(escape(atob(a.replace(/[^A-Za-z0-9\/\=\+]/g,''))));}
FORUM.Pack=function(a){return btoa(unescape(encodeURIComponent(a))).replace(/=+$/gim,'');}
function rem_pun (){$('#pun').remove()};var a='redirect.php?url=';if(!~document.URL.indexOf(a)){return false};
var url = document.URL.split(a)[1];url = FORUM.unPack(url);
var tim0=RequestTime;var tpst=UserLastPost;var tim1=tim0-tpst;tim1=(tim1/3600);
if($.inArray(GroupID,groups_id)!=-1){window.stop();location.href = url; rem_pun ();return}
if(GroupID!=3&&tim1<num_hours&&UserPosts&&UserPosts>=min_posts){window.stop();location.href=url;rem_pun();return}
$('<style id="HideMain122">.main {display:none}</style>').appendTo('head');
$(document).pun_mainReady(function(){
$('.post-content a[href*="click.php"]').map(function(){var href=$(this).attr('href').split('click.php?')[1];
if(href.search(new RegExp('^http\:\/\/'+location.hostname,'g'))!=-1){return;}
href = FORUM.Pack(href);$(this).attr('href','/'+a+href);});
if(!~document.URL.indexOf(a)){return};
var L1='Вам запрещено осуществлять переход по данной ссылке.';
$('#pun-main .info>.container').html(L1);$('style#HideMain122').remove();});}()
</script>

+5

408

Запрет отправки ЛС на форуме, кроме указанных групп

В HTML верх:

<!-- Запрет отправки ЛС, кроме указанных групп-->
<script type="text/javascript">
if($('#pun-messages').length)(function(){
var Groups_PMaccess = [
1,2]; //Группы с разрешением на отправку ЛС
if(Groups_PMaccess.indexOf(GroupID)!=-1)return;
$(document).pun_mainReady(function(){$('#profilenav').find('ul:first li.item2,ul:last li.item1,li.item2').remove();});
if(document.URL.match(/\?action=new/)){$('head').append('<style id="HideMainPm">#pun-main{display:none!important;}</style>');
$(function(){clearInterval(window.MYBB_bindVideoScriptITV);var c=$('.crumbs:first').html();c=c.replace('Cообщения: Новое сообщение','Информация');
$('.crumbs').html(c);var L='<div class=info><div class="container" style="padding:1em!important">'+
'Вы не имеете прав для отправки личных сообщений.</div></div>';$('#profile').replaceWith(L);$('style#HideMainPm').remove();
})}else{$(document).pun_mainReady(function(){$('.pl-quote,#post').remove();});}}())
</script>

+5

409

Запрет вставки ссылок на сторонние ресурсы в Личке

(Для модераторов и админов запрет снимается)

В HTML верх:

<!-- Запрет вставки ссылок в Личные сообщения --><script>
if($('#pun-messages').length&&[1,2].indexOf(GroupID)==-1)$().pun_mainReady(function(){$('#button-link').remove();
var reg = /(?:http)(?:s?)(?:\:\/\/)([а-яёA-Za-z0-9\-]*?)(\.[а-яёA-Za-z0-9\-]+?)(\.[а-яA-Za-z]+)(?:\/?)/gim,test = true,
btn = $('.button[name="submit"]'),tstAlert = 'В личных сообщениях запрещено использовать ссылки на сторонние ресурсы.';
function rpl(str,p1,p2,p3,offset,s){if((p1+p2+p3)!=location.hostname)test = false;return''};btn.on('click',function(){
test=!0;var c=$('#main-reply').val();c.replace(reg,rpl);if(c.match(reg)&&!test){$.jGrowl(tstAlert);return!1}});});
</script>

+5

410

По просьбе Mirra Bell

Вывод двух последних постов из указанной темы

С указанием автора выводимых сообщений и сохранением контента на текущую сессию вкладки

Код: (Ставим куда нужно, к примеру в Объявление)

<!--Вывод Двух последних Постов -->
<script type="text/javascript">
(function(){
  var topic = "
http://hostjs.mybb.ru/viewtopic.php?id=38"; //ссылка на тему;
  var spl="##|&|##";var rnd=(Math.random()+'').substr(5);
  var st1='<div class="viewpost" style="padding:5px"><div class="author" style="font-weight:700">От: ';
  var st2='</div><div class="post-cnt" style="margin-top:5px">';
  var st3='</div></div>';var saved=sessionStorage.getItem("NewPostsInT_"+topic.match(/id=(\d+)$/)[1]);
  function fnRepl(a){return a.replace(/(?:<dl class="post-sig"[\s\S]*?>[\s\S]*?<\/dl>?)/gim,"")}
  document.write('<a id="'+rnd+'" style="display:none">#1</a>');
  if(saved){var arr=saved.split(spl),u1=arr[0],c1=fnRepl(arr[1]),u2=arr[2],c2=fnRepl(arr[3]);
     $("a#"+rnd).after(st1+u1+st2+c1+st3+st1+u2+st2+c2+st3).replaceWith("");;return
  };
  $.get(topic+"&action=last",function(res){
    var a1=$(res).find(".endpost"),a2=a1.prev(".post");
    var c1=a1.find(".post-content").html(),c2=a2.find(".post-content").html();c1=fnRepl(c1);if(c2){c2=fnRepl(c2);}
    var u1=a1.find(".pa-author>a").text(),u2=a2.find(".pa-author>a").text();
    var CNt=u1+spl+c1+spl+u2+spl+c2;
    if(c2!=null){sessionStorage.setItem("NewPostsInT_"+topic.match(/id=(\d+)$/)[1],CNt);
    $("a#"+rnd).after(st1+u1+st2+c1+st3+st1+u2+st2+c2+st3).replaceWith("");return;}
    if(c2===null&&$(res).find(".pagelink a.prev").length)$.get($(res).find(".pagelink a.prev").attr("href"),function (data){
         c2=$(data).find(".endpost").find(".post-content").html(),u2=$(".endpost").find(".pa-author>a").text();
         c2=fnRepl(c2);CNt=u1+spl+c1+spl+u2+spl+c2;sessionStorage.setItem("NewPostsInT_"+topic.match(/id=(\d+)$/)[1],CNt);
         $("a#"+rnd).after(st1+u1+st2+c1+st3+st1+u2+st2+c2+st3).replaceWith("");
    });
  });
}())
</script>

+3

411

Отметка "Одобрено администрацией" в посте

http://sg.uploads.ru/xkh6E.png

В HTML низ:

<!-- Функция "Одобрено администрацией"-->
<style>
#button-good{background:url(http://co.forum4.ru/files/0015/92/70/64851.png);}
.post-content .good{font-size:13px;font-weight:700;color:green;}
</style>

<script type="text/javascript">
$('.post-content:contains("[good]")').map(function() {var c=$(this).html();
  c=c.replace(/\[good\]/mgi,'<span class="good"><img src="https://forumstatic.ru/files/0016/4f/7e/99762.png'+
  '" style="vertical-align:middle"/> Одобрено администрацией форума</span>');$(this).html(c);
});
if($('#pun-viewtopic,#pun-post,#pun-poll,#pun-edit').length)(function() {
  var tl1='Отметка "Одобрено"',imG='"><img src="i/blank.gif" title="';
  var t0 = '<td id="button-good'+imG+tl1+'" onclick="smile(\'[good]\');"></td>';
  if(GroupID<=2){$('#button-code').after(t0);} else $('.formsubmit .button').click(function() {var txt = $('#main-reply:first').val();
    if(txt.indexOf('[/good]')!=-1){alert('Вам запрещено использовать функцию [good].');$('.button[disabled]').removeAttr('disabled');return false;}
  });
}());
</script>

+4

412

Запрет доступа в определенные темы, кроме указанных пользователей

В HTML верх

<!--Запрет доступа в определенные темы-->
<style id="hide-01234">.main{display:none}</style>
<script type="text/javascript">
(function() {
    //         ID темы   //ID пользователей с допуском к теме
    hideTopic(
38,[3,4,15]);    //строку размножаем для нужных тем и юзеров

   function hideTopic(tid,UserLst){function s(){$('#hide-01234').replaceWith('');};
     var tst=false,reg=/id=(\d+)$/;if($('#pun-searchposts').length){tst=true;s();}
     if($('#pun-viewtopic').length&&+$('link[rel="alternate"]')[0].href.match(/id=(\d+)$/)[1]==tid&&UserLst.indexOf(UserID)==-1)tst=true;
     if($('#pun-post').length&&+$('link[rel="up"]')[0].href.match(reg)[1]==tid&&UserLst.indexOf(UserID)==-1)tst=true;
     if(tst)$(document).ready(function(){clearInterval(window.MYBB_bindVideoScriptITV);
       if($('#pun-searchposts').length){$('.post').has('h3 a[href$="topic.php?id='+tid+'"]').hide();return}
       var h2='<h2><span>Информация</span></h2>',cr=' »&nbsp;<a href="/">'+$('#pun-title h1').text()+'</a> »&nbsp;Информация';
       var text=h2+'<div class=info><div class=container>Вы не имеете прав для доступа к этой странице.</div></div>';
       document.title=$('#pun-title h1').text();$('#pun-main').html(text);s();$('.crumbs').html(cr);
     }); else s()
   };
}())
</script>

+3

413

Расширенная функция переноса сообщений V.2

Скрипт обновлен до версии V2.1.0
1. При переносе постов в другую тему, на текущей странице не только удаляются перенесенные посты, но и подгружаются новые со следующей;
2. При переносе обновляется контент в пагинации ( .pagelink )
3. Блокируется кнопка выбора рядом с текущей темой, чтобы случайно не перенести сообщения в ту же тему

+2

414

Поиск дубликатов при создании новой темы. Антибаян.

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

вариант помягче (soft)
срабатывает когда курсор покидает поле с названием темы

http://s5.uploads.ru/aB51c.gif

в html-низ

Код:
<!-- Поиск дубликатов при создании новой темы. Антибаян. (soft)  -->
<script type="text/javascript">
if(document.URL.indexOf("post.php?fid")!=-1){
$('#pun-post #fld3').on('mouseleave',function(){var self=$(this);var a,t,s,m=[];window.setTimeout(function(){s=$(self).val();if(s.length<3){return;}else{s=s.replace(/а/mg,"%E0");s=s.replace(/б/mg,"%E1");s=s.replace(/в/mg,"%E2");s=s.replace(/г/mg,"%E3");s=s.replace(/д/mg,"%E4");s=s.replace(/е/mg,"%E5");s=s.replace(/ж/mg,"%E6");s=s.replace(/з/mg,"%E7");s=s.replace(/и/mg,"%E8");s=s.replace(/й/mg,"%E9");s=s.replace(/к/mg,"%EA");s=s.replace(/л/mg,"%EB");s=s.replace(/м/mg,"%EC");s=s.replace(/н/mg,"%ED");s=s.replace(/о/mg,"%EE");s=s.replace(/п/mg,"%EF");s=s.replace(/р/mg,"%F0");s=s.replace(/с/mg,"%F1");s=s.replace(/т/mg,"%F2");s=s.replace(/у/mg,"%F3");s=s.replace(/ф/mg,"%F4");s=s.replace(/х/mg,"%F5");s=s.replace(/ц/mg,"%F6");s=s.replace(/ч/mg,"%F7");s=s.replace(/ш/mg,"%F8");s=s.replace(/щ/mg,"%F9");s=s.replace(/ъ/mg,"%FA");s=s.replace(/ы/mg,"%FB");s=s.replace(/ь/mg,"%FC");s=s.replace(/э/mg,"%FD");s=s.replace(/ю/mg,"%FE");s=s.replace(/я/mg,"%FF");s=s.replace(/А/mg,"%C0");s=s.replace(/Б/mg,"%C1");s=s.replace(/В/mg,"%C2");s=s.replace(/Г/mg,"%C3");s=s.replace(/Д/mg,"%C4");s=s.replace(/Е/mg,"%C5");s=s.replace(/Ж/mg,"%C6");s=s.replace(/З/mg,"%C7");s=s.replace(/И/mg,"%C8");s=s.replace(/Й/mg,"%C9");s=s.replace(/К/mg,"%CA");s=s.replace(/Л/mg,"%CB");s=s.replace(/М/mg,"%CC");s=s.replace(/Н/mg,"%CD");s=s.replace(/О/mg,"%CE");s=s.replace(/П/mg,"%CF");s=s.replace(/Р/mg,"%D0");s=s.replace(/С/mg,"%D1");s=s.replace(/Т/mg,"%D2");s=s.replace(/У/mg,"%D3");s=s.replace(/Ф/mg,"%D4");s=s.replace(/Х/mg,"%D5");s=s.replace(/Ц/mg,"%D6");s=s.replace(/Ч/mg,"%D7");s=s.replace(/Ш/mg,"%D8");s=s.replace(/Щ/mg,"%D9");s=s.replace(/Ъ/mg,"%DA");s=s.replace(/Ы/mg,"%DB");s=s.replace(/Ь/mg,"%DC");s=s.replace(/Э/mg,"%DD");s=s.replace(/Ю/mg,"%DE");s=s.replace(/Я/mg,"%DF");s=s.replace(/Ё/mg,"%A8");s=s.replace(/ё/mg,"%B8");$.ajax({url:'/search.php?action=search&keywords='+s+'&author=&forum=&search_in=-1&sort_by=0&sort_dir=DESC&show_as=topics&search=%CE%F2%EF%F0%E0%E2%E8%F2%FC',success:function(data){$(data).find('#pun-searchtopics td.tcl > a[href^="viewtopic.php?id="]:not([href*="&p="])').each(function(i){t=$(this).text();a=$(this).attr('href');m[i]='<li><strong style="color:red;"> Тема с похожим названием уже существует - <a href="'+a+'">'+t+'</a></strong></li>';});if(a==undefined){return;}else{$(self).after('<ul id="dublicat">'+m.join(' ')+'</ul>');}}});}},0);}).on('mouseenter',function(){$('.input > ul').remove();});
}
</script>

вариант пожёстче (hard)
срабатывает уже при наборе текста в поле для заголовка

http://se.uploads.ru/ZMBRJ.gif

Код:
<!-- Поиск дубликатов при создании новой темы. Антибаян. (hard)  -->
<script type="text/javascript">
if(document.URL.indexOf("post.php?fid")!=-1){
$('#pun-post #fld3').on('keypress',function(e){var self=$(this);var a,t,s,m=[];window.setTimeout(function(){s=$(self).val();if(s.length<4||e.which<65){return;}else{s=s.replace(/а/mg,"%E0");s=s.replace(/б/mg,"%E1");s=s.replace(/в/mg,"%E2");s=s.replace(/г/mg,"%E3");s=s.replace(/д/mg,"%E4");s=s.replace(/е/mg,"%E5");s=s.replace(/ж/mg,"%E6");s=s.replace(/з/mg,"%E7");s=s.replace(/и/mg,"%E8");s=s.replace(/й/mg,"%E9");s=s.replace(/к/mg,"%EA");s=s.replace(/л/mg,"%EB");s=s.replace(/м/mg,"%EC");s=s.replace(/н/mg,"%ED");s=s.replace(/о/mg,"%EE");s=s.replace(/п/mg,"%EF");s=s.replace(/р/mg,"%F0");s=s.replace(/с/mg,"%F1");s=s.replace(/т/mg,"%F2");s=s.replace(/у/mg,"%F3");s=s.replace(/ф/mg,"%F4");s=s.replace(/х/mg,"%F5");s=s.replace(/ц/mg,"%F6");s=s.replace(/ч/mg,"%F7");s=s.replace(/ш/mg,"%F8");s=s.replace(/щ/mg,"%F9");s=s.replace(/ъ/mg,"%FA");s=s.replace(/ы/mg,"%FB");s=s.replace(/ь/mg,"%FC");s=s.replace(/э/mg,"%FD");s=s.replace(/ю/mg,"%FE");s=s.replace(/я/mg,"%FF");s=s.replace(/А/mg,"%C0");s=s.replace(/Б/mg,"%C1");s=s.replace(/В/mg,"%C2");s=s.replace(/Г/mg,"%C3");s=s.replace(/Д/mg,"%C4");s=s.replace(/Е/mg,"%C5");s=s.replace(/Ж/mg,"%C6");s=s.replace(/З/mg,"%C7");s=s.replace(/И/mg,"%C8");s=s.replace(/Й/mg,"%C9");s=s.replace(/К/mg,"%CA");s=s.replace(/Л/mg,"%CB");s=s.replace(/М/mg,"%CC");s=s.replace(/Н/mg,"%CD");s=s.replace(/О/mg,"%CE");s=s.replace(/П/mg,"%CF");s=s.replace(/Р/mg,"%D0");s=s.replace(/С/mg,"%D1");s=s.replace(/Т/mg,"%D2");s=s.replace(/У/mg,"%D3");s=s.replace(/Ф/mg,"%D4");s=s.replace(/Х/mg,"%D5");s=s.replace(/Ц/mg,"%D6");s=s.replace(/Ч/mg,"%D7");s=s.replace(/Ш/mg,"%D8");s=s.replace(/Щ/mg,"%D9");s=s.replace(/Ъ/mg,"%DA");s=s.replace(/Ы/mg,"%DB");s=s.replace(/Ь/mg,"%DC");s=s.replace(/Э/mg,"%DD");s=s.replace(/Ю/mg,"%DE");s=s.replace(/Я/mg,"%DF");s=s.replace(/Ё/mg,"%A8");s=s.replace(/ё/mg,"%B8");$.ajax({url:'/search.php?action=search&keywords='+s+'&author=&forum=&search_in=-1&sort_by=0&sort_dir=DESC&show_as=topics&search=%CE%F2%EF%F0%E0%E2%E8%F2%FC',success:function(data){$(data).find('#pun-searchtopics td.tcl > a[href^="viewtopic.php?id="]:not([href*="&p="])').each(function(i){t=$(this).text();a=$(this).attr('href');m[i]='<li><strong style="color:red;"> Тема с похожим названием уже существует - <a href="'+a+'">'+t+'</a></strong></li>';});if(a==undefined){return;}else{$(self).after('<ul id="dublicat">'+m.join(' ')+'</ul>');}}});}},0);if(e.which==8){$('.input > ul').remove();}});
}
</script>

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

if(document.URL.indexOf("post.php?fid")!=-1){

на эту

if(document.URL.indexOf("post.php?fid")!=-1&&GroupID>2){

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

if(document.URL.indexOf("post.php?fid")!=-1&&GroupID==?){

вместо ? номер конкретной группы


если желаете, чтоб список был нумерованным, то в html-верх можно добавить код

Код:
<style>
#dublicat {counter-reset: section; } 
#dublicat li:before {
 counter-increment: section; 
 content: counter(section) ". "; 
 }
</style>

тогда список с похожими темами будет выглядеть так

http://sa.uploads.ru/Ndapn.jpg

+4

415

Запрет некоторых слов/сочетаний в нике при регистрации

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

<script><!--Запрет Некоторых сочетаний в Нике юзера-->
var BannedNikArray=new Array(
  //Запрещенные слова/сочетания
   "
тест-ник1",
   "
тест-ник2" //!!последний элемент без запятой
);
$(document).ready(function(){$('#register .button[name="register"]').click(function (){
var L=$("#username").val();for(var i=0;i<BannedNikArray.length;i++){if(L.indexOf(BannedNikArray[i])!=-1){
alert("Ник \""+L+"\" запрещен для регистрации!");return false};}})});
</script>

+5

416

+3

417

Реанимация скрипта от Deff CКРИПТ РЕПУТАЦИИ НА ФОРУМЫ MYBB

Комментарии к проставляемой оценке за пост

http://s6.uploads.ru/if4YQ.png

http://sg.uploads.ru/sYBUh.png

DEMO

Добавить комментарий можно здесь: » ссылка


Установка

1. Начальные настройки:

1.  В настройках выставляем Время переадресации - 1 (Администрирование - Настройки - Время и тайм-ауты) [ скриншот ]
2.  Создаем новый форум с названием <RESPECT> (с угловыми скобками) в Администрирование - Форумы
Форум лучше делать в самой нижней категории, где есть хотя бы один форум, видный всем группам.
3.  В созданном форуме <RESPECT> отключаем счетчик сообщений [ скриншот ]
и разрешаем возможность создавать темы и сообщения всем группам (кроме Гостя), Гостям разрешаем просмотр сообщений [ скриншот ]
4.  Проставляем всем группам настройку: Задержка при поиске - 1 (Администрирование - Группы - Редактировать) [ скриншот ]

2. Ставим в начало HTML верх код скрипта:

<!-- Комментарии к репутации --><script>
var mybbRespect ={};
mybbRespect.forum   =
5; //ID форума с репутацией <RESPECT>;
mybbRespect.reason  =
1; //Обязательность указания причин при минусах: 0 - не обязательно, 1 - обязательно!;
</script>
<script type="text/javascript" src="https://forumstatic.ru/files/0016/0b/c8/84477.js"></script>

Пояснения:
mybbRespect.forum   - ID созданного форума <RESPECT>
(чтобы его определить, зайдите в этот форум и считайте цифры в адресной строке после id=, например:
    https://forum.mybb.ru/viewforum.php?id=16    - эту цифру вписываем в скрипт.)
mybbRespect.reason   - обязательность указания причины при проставлении минуса (0 - не обязательно, 1 - обязательно)


После установки скрипта и указания в нем ID форума с репутацией, - форум <RESPECT> скроется автоматически.


Если установлен скрипт статистики "Последние сообщения форума", - ставим в самый низ HTML низ такой скрипт:

<script><!--Удаляем темы спец.форума из статистики-->
function removeTRstats(){$("#pun-stats tr,#pun-debug tr").filter(function(){
return $(this).find("td a").filter(function(){return $.trim(this.textContent)=="_user_respect"}).length!=0})
.replaceWith("");};$(document).ready(function(){removeTRstats();});$(window).load(function(){removeTRstats()});
</script>


P.S.: Ввиду особенностей поискового движка на mybb (а скрипт работает на основе поиска), комментарии на странице репутации появляются не сразу, а через 15-20 минут после добавления.


Тестируем, отписываемся о работе скрипта!

+8

418

ПИАР-ВХОД

Новая версия


Отличия от предыдущих версий:
1. Возможность подключения нескольких аккаунтов для быстрого входа
2. Возможность установки своей надписи или картинки для кнопки PR-входа
3. После входа происходит переадресация на ту же страницу, где пользователь был до входа


В HTML верх:

<!-- Пиар-вход v.2 -->
<script src="https://forumstatic.ru/files/0015/c4/3f/26781.js"></script>
<script type="text/javascript">
PR.nick = '
Реклама'; //Ник PR-аккаунта
PR.pass = '
1111'; //Пароль PR-аккаунта
PR.btn_text = '
PR-вход'; //Надпись на кнопке PR-входа(или ссылка на картинку);
PR.set();</script>


Пояснения:

1. PR.btn_text   - текст ссылки в меню навигации или ссылка на картинку (Тег картинки установится автоматом, если вставлена ссылка)
2. Для подключения нескольких аккаунтов с быстрым входом (например, один аккаунт для рекламы, другой для чтения постов форума) - размножаем(в дополнение к первому) эту часть скрипта (с нужными данными):

<script type="text/javascript">
PR.nick = '
Реклама'; //Ник PR-аккаунта
PR.pass = '
1111'; //Пароль PR-аккаунта
PR.btn_text = '
PR-вход'; //Надпись на кнопке PR-входа(или ссылка на картинку);
PR.set();</script>


Пример с двумя аккаунтами для быстрого входа:

<!-- Пиар-вход v.2 -->
<script src="https://forumstatic.ru/files/0015/c4/3f/26781.js"></script>
<script type="text/javascript">
PR.nick = '
Реклама'; //Ник PR-аккаунта
PR.pass = '
1111'; //Пароль PR-аккаунта
PR.btn_text = '
PR-вход'; //Надпись на кнопке PR-входа(или ссылка на картинку);
PR.set();</script>

<script type="text/javascript">
PR.nick = '
Читатель'; //Ник PR-аккаунта
PR.pass = '
2222'; //Пароль PR-аккаунта
PR.btn_text = '
Читать'; //Надпись на кнопке PR-входа(или ссылка на картинку);
PR.set();</script>


Если нужно установить переадресацию после залогинивания на определенный URL, -
ставим в HTML низ:

<script>
if(GroupID==3)$('#PRlogin').on('submit',function(){
  $(this).find('input[name="redirect_url"]').val('Ccылка');
});
</script>

Вместо красного вставляем нужную ссылку.


Для дизайнеров:

Пункты меню Пиар-входа имеют селектор  #navpr_N, где N - номер кнопки Пиар-входа по счету слева
(Для первой кнопки - #navpr_1, для второй - #navpr_2 и т.д)


Тестируем!

+11

419

Цитирование с BB-кодами

Новая версия

http://sg.uploads.ru/KM5tu.png


Особенности:
- Позволяет цитировать с BB-кодами не только сообщение целиком, но и выделенную часть;
- Работает со всеми форматами цитаты (обычная цитата, со ссылкой, с аватаром и т.п.);
- Выбор режима: BB-цитирование по стандартной кнопке или со вставкой спец. кнопки "BB-цитата";
- Возможность ввода своего названия кнопки для BB-цитирования


В HTML в форме ответа:

<!-- BB-цитатa (NEW) --><script>
var BBQuote = {};
BBQuote.mode   =
1; // BB-цитирование: 0 - по стандартной кнопке цитаты, 1 - со вставкой новой кнопки;
BBQuote.text   = '
BB-цитата'; // Надпись на кнопке BB-цитирования
</script>
<script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/62091.js"></script>


Если стоит скрипт переноса быстрого ответа под нужный пост, - ставим ниже BB-цитаты такую правку:

<script type="text/javascript">
$(document).ready(function(){$('li.pl-BBquote>a').map(function(){this.href='javascript:MReplyForm();'+this.href.split('javascript:')[1];});});
</script>


На форумах BestBB скрипт уже подключен

(BB-цитирование происходит по клику на стандартную кнопку цитаты)


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

+10

420

Быстрое редактирование постов V.3
Исправлен баг с некорректной работой (не загружалась форма редактирования) в первых постах на Rusff форумах

+5


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