Вверх ↑
Ответов: 1731
Рейтинг: 68
#1: 2016-08-24 19:46:22 ЛС | профиль | цитата
Почему?
Не устраивает вид/положение некоторых элементов форума.

Как установить?
Установить расширение Custom JavaScript for websites для Chrome / Greasemonkey для Firefox / Scripter для Opera.
Настройка Custom JavaScript for websites

    1. Вызвать popup для расширения.
    2. Активировать галочку enable cjs for this host
    3. Вставить необходимые скрипты и нажать кнопку save

Настройка Greasemonkey

    1. Перейти на страницу дополнений.
    2. Нажать Создать скрипт.
    3. В появившемся окне вписываете любое название и любое пространство имен, во Включения вписываете http://forum.hiasm.com/*
    4. Вставить необходимые скрипты после // ==/UserScript== и сохранить.

Настройка Scripter

    1. В адресной строке справа нажать на иконку Scripter.
    2. Выбрать порядок выполнения скрипта onload и активируете галку Включить jQuery и Глобальный скрипт.
    3. Вставить нужные скрипты и нажать сохранить.


Скрипты
Кнопка предпросмотра


var btn_replace_urls = ["privatetopic", "topic", "forum"]; // pathname страницы
if(btn_replace_urls.includes(window.location.pathname.split('/')[1])) $('form .tools').append('‹input type="button" class="submit" value="Предпросмотр" onclick="showPreview(this);" style="margin-right: 5px;"›');
Другой формат времени


function formatDate(date, del) {
var dd = date.split(' ')[0].split('-')[2];
var mm = date.split(' ')[0].split('-')[1];
var yy = date.split(' ')[0].split('-')[0];
return dd + del + mm + del + yy;
}

function formatTime(date, del) {
var dd = date.split(' ')[1].split(':')[0];
var mm = date.split(' ')[1].split(':')[1];
var yy = date.split(' ')[1].split(':')[2];
return dd + del + mm + del + yy;
}

$('span.date').each(function(key, value){
var unfdate = $(value).html();
$(value).html(formatTime(unfdate,':') + " " + formatDate(unfdate,'/'));
});
Статус пользователя на форуме


$('.posts .login img').each(function(key, item){
if($(item).attr('src') == '/img/offline.png') $(item).parent().append('<br><span style="font-size: xx-small; color: lightgrey; cursor: default;">Offline</span>');
else $(item).parent().append('<br><span style="font-size: xx-small; color: green; cursor: default;" title="' + $(item).attr('title') + '">Online</span>');
});
Кнопка копирования кода в буфер обмена (только Chrome)


function copytoclipboard(id){
$('#clipboard').val($(id).text());
$('#clipboard').select();
document.execCommand("Copy");
}
$('body').append('<textarea id="clipboard" style="position:absolute;left:-400px;width:1px;"></textarea>');
$('.prettyprint').each(function(key, item){
$(item).children('code').attr('id','code_' + key);
$(item).prepend('<a href="javascript: copytoclipboard(\'#code_' + key + '\')" style="float: right;">Копировать</a><br>');
});
Google Поиск



Код

if(window.location.pathname == '/search/'){
document.querySelector('form').outerHTML = '<gcse:search></gcse:search>';
var cx = '007977425653318554071:wank2vr9uck';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
}

Альтернатива
Вариант #2

Автор: Assasin.

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

(далее немного копипасты из топика по ссылке выше)

Плагин создается на базе индикатора произвольной ссылкиЭто находится в профиле, на вкладке "настройки" и подвкладке "индикаторы":
, выглядит как самый обычный индикатор (на скриншоте их на самом деле два).
Однако в поле ссылки при создании индикатора вписывается не совсем обычная ссылка, а код следующего вида:
plugin: inviter.js auto remove
plugin: - идентификация нестандартного расширения
inviter.js - имя плагина с .js, подставляется к базовому url, заданному в юзерскрипте.
auto - автоматически подгружать скрипт при каждой загрузке страницы (если настроить кэширование на http-сервере, а у меня оно настроено, то скрипт не будет каждый раз тянуться с сервера).
remove - после активации (или клика по нему) плагин нельзя повторно активировать, защищает от избыточного включения.

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

Сам юзерскрипт: посмотреть.

Внешние скрипты нужно где-то хранить, для этого я использую свой сайт, однако, если вы хотите, можете скачать скрипт и залить куда-нибудь в другое место, главное условие - чтобы ссылка на него была прямая. Ну и в юзерскрипте поменяйте базовый адрес (http://sinair.ru/plug/ на что-то свое).

Итак, скрипты:
Вставка своих документов при редактировании поста

plugin: userdoc.js auto
Иконка: ( http://sinair.ru/plug/userdoc.png )

Как работает:
1. Начинаем редактировать/создавать пост
2. Активируем индикатор-плагин (щелк по иконке).
3. В панель форматирования добавляется новый значок (в конце)
4. Кликаем по добавившейся иконке.
5. Выбираем документ из списка и кликаем по нему.
6. Готово, содержимое документа вставлено в поле редактора поста.

При перезагрузке страницы или редактировании другого поста на странице требуется повторная активация плагина.
Увеличиватель очень мелкого текста

plugin: smallbig.js
Иконка: ( http://icons.hiasm.com/img/8/4568_icon144.ico )

Как работает: когда по ходу чтения встречается мелкий текст, просто активируем индикатор и текст становится читабельным.
Удобный приглашатель в сообщество в два клика

plugin: inviter.js auto remove
Иконка: ( http://icons.mcgl.ru/img/8/4505_icon81.ico )

Как работает: Активируем индикатор кликом по нему и к каждому посту на странице добавляется кнопка, которая и производит необходимое действие.
Внимание! Работает только на странице сообщества! (т.е. в теме в разделе заявок, например).



Чтобы долго не искать, дублирую ссылку в конец.
Сам юзерскрипт: посмотреть.
карма: 1

3
Голосовали:Administrator, Dseren, ser_davkin
Редактировалось 8 раз(а), последний 2016-10-20 00:45:32