Скрипт hvScriptSet
version 1.0.9

Скрипт для изменения профиля юзера в рамках одного сообщения.
http://i.imgur.com/f9S7SHD.png

Автор: Человек-Шаман
Платформа: MyBB
Аналоги: Смена имиджа в текущем посте (MyBB) [Deff]

Подробное описание возможностей

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

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

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

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

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

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

• А если у меня уже установлен другой скрипт смены профиля?
Пока не было обращений, что скрипты друг с другом как-то конфликтуют, но я бы всё равно не советовал ставить их вместе. Теги [AVA], [SGN], [STA] и [NIC] также понимаются этим скриптом, маски со старых постов не слетят.
• В скрипте всё страшно и непонятно, всё сплошным текстом, а вдруг там что плохое?
Читаемый код скрипта для разбора доступен по ссылке: http://f.etrin.ru/hvss/hvss-latest.js
Минимизированная версия всего лишь подверглась обработке javascript-minifier для более быстрой загрузки. Можно подключить на форум несжатую версию, ничего особенно не изменится.

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

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

Код:
    <script src="http://f.etrin.ru/hvss/hvss.min.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: '<b>Имя Фамилия, возраст<sup>y.o.</sup></a></b><br><i>сфера деятельности</i>,' — факультативный пункт, необязательный для заполнения: шаблон личного звания, чтобы облегчить игрокам работу с масками. Вставляется по нажатию на кнопку.
            type: 'html' — параметр, который позволяет использовать html- и bb-теги. Можно вместо 'html' использовать 'text' – тогда скрипт не будет воспринимать теги и вставит их как текст.
        }
ВАЖНО! Если в если в любом из полей встречается апостроф, поставьте перед ним обратный слэш: '
Это важно для работы скрипта.

userFields

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

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

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