Дорогой дневник...

Kindred Spirits |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » Kindred Spirits » Блоги » Дорогой дневник
Дорогой дневник...

Спустя полчаса генераций и подбора промтов:
Дорогой дневник, кажется, я обронил не только челюсть, но и сердце.
Дорогой дневник, я пытался быть продуктивным на работе, но интернет был убедительнее 
Дорогой дневник...
Когда-то я написал на твоих страницах фразу: "Созидание начинается там, где заканчиваются силы, но ещё не умерло желание мечтать".
Желание создавать что-то было со мной пожалуй столько, сколько я себя помню. Оно зарождалось из бесконечных мечтательных образов в голове, а затем начало плавно проливаться на бумагу в виде строчек букв и карандашных линий. Всегда разрозненные и никогда не цельные, они годами жили на страницах блокнотов, ежедневников и альбомов так и не встречаясь друг с другом.
Но они же в конечном итоге встретятся, правда? Как встречаются всякий раз одарённые, не смотря на то, что их разлучила сама смерть.
Интересно, что тогда выйдет в итоге?
Дорогой дневник, только что я убил кучу времени на поиск бага в скрипте, просто потому то не проверил настройки.
Время мне этого не простило и сократило мою жизнь на 40 минут.
Дорогой дневник, кто такой этот ваш Салем? Неужели я так похож на кота?
Дорогой дневник, в какой момент я стал тем самым героем фильма ужасов, который сидит и занимается своими делами, пока в соседней комнате призрак убивает его товарищей?
Кстати, призрак, приятного аппетита.
Дорогой дневник. Они хотят перо в печень.
Записали.
"И всё?" посмотрим как они скажут это когда перо окажется в печени
Дорогой дневник…
Остров Уинтер в Салеме, Массачусетс: происхождение названия и географический статус
Происхождение названия «Остров Уинтер»
Название Winter Island («Остров Уинтер») возникло в ранний колониальный период Новой Англии и связано с ролью этой земли в рыбной промышленности Салема. Ещё в XVII веке западная сторона острова служила местом зимней стоянки для салемского рыбацкого флота. В бухте, получившей неофициальное название «Winter Harbor» («Зимняя гавань»), колонисты укрывали свои рыболовные суда от зимних штормов и льдов, чтобы сохранить их невредимыми до весны. Благодаря этой защищённой гавани остров стал ключевым центром первой салемской рыбной общины – здесь сушили выловленную рыбу и строили лодки ещё с 1620-х годов, сразу после основания поселения. Неудивительно, что жизненно важная функция зимней стоянки отразилась в названии: «Winter Island» буквально означает «остров зимней (гавани/стоянки)», увековечивая эту историческую роль в топониме. Исторические записи подтверждают, что уже к 1630-м годам за территорией закрепилось имя Winter Island, связанное именно с её использованием в зимний период для рыболовства и стоянки судов. Таким образом, остров Уинтер получил своё название по географическому и хозяйственному признаку, как место, где зимой находили убежище салемские рыбаки и их лодки.
Почему его называют "островом", хотя он соединён с материком
Несмотря на название, сегодня Уинтер фактически перестал быть островом в прямом смысле: он давно соединён с основной землёй. Ещё в XVII веке, по мере роста Салема, была построена насыпная дамба (causeway), связавшая Winter Island с соседним полуостровом Салем-Нек. Исторические источники указывают, что эта дамба возникла уже в 1660-х годах, обеспечив постоянный сухопутный переход. Со временем узкая перемычка была укреплена дорогой (ныне Winter Island Road), и остров стал легко доступен пешком и на транспорте. Фактически Уинтер превратился в полуостров, оставаясь частью суши даже при приливах. В официальных документах города Салем он сейчас прямо назван полуостровом площадью около 54 акров, примыкающим к району Salem Neck.
Исторически же Winter Island действительно был отделён водой: его окружают заливчики и ковши, которые ранее создавали естественную изоляцию. С запада и северо-запада остров отделён от материка небольшими бухтами (Cat Cove, Smith Pool и др.), а с юга и востока омывается водами протоки Salem Channel. В колониальные времена эти бухты были заметно глубже, чем сейчас, и богаты рыбой, что подчёркивало ощущение островного пространства. Однако за прошедшие столетия природное мелководье и инженерные работы (строительство дамбы, создание солёного плавательного бассейна Smith Pool в 1930-х годах и пр.) изменили географию: проливы частично обмелели и оказались перерезаны дамбой, благодаря чему Winter Island утратил изоляцию. Тем не менее, историческое название сохранилось. Местные жители и документы по-прежнему называют эту территорию островом: по традиции и в силу того, что со всех сторон, кроме узкой перемычки, она окружена водой. Даже будучи соединённым с сушей, Уинтер остаётся «островом» в восприятии горожан, поскольку географически выдаётся в гавань и обособлен от основной части Салема. Сегодня здесь расположен парк Winter Island Marine Park с кемпингом, старинным фортом Пикеринг и маяком (Fort Pickering Light) – все они напоминают, что когда-то это был отдельный стратегический остров на входе в порт Салема.
В заключение, название Winter Island отражает важную страницу истории Салема: остров получил своё имя благодаря функции зимней гавани для рыбаков в XVII веке, и хотя впоследствии он был физически присоединён к материку насыпью, традиционное название закрепилось навсегда. Таким образом, «остров» Уинтер называется так по историко-географическим причинам, даже если современная карта показывает его как полуостров. Это наглядный пример того, как география и инфраструктура (строительство дамбы) повлияли на статус и восприятие территории: от острова в прошлом – к полуострову сегодня, но с сохранением прежнего имени как дань истории и практике местных жителей.
И немного маскота Салемской Академии. Салем.

Дорогой дневник...
От меня тут просили немного баек.
В отношении Господина П. в 2014 году было возбуждено уголовное дело по факту мошенничества в результате которых организации Н. был причинён значительный материальный ущерб.
А вскоре после этого в 2015 году было открыто дело о банкротстве господина П, потому как он не имел возможности погасить гражданский вред причинённый организации Н.
Между этими двумя событиями, - заведением уголовного дела и открытием дела о банкротстве, - господин П. и его жена, госпожа Л., подали заявление о разводе и разделе совместно нажитого имущества.
В результате этого раздела господину П. доставалась пара люстр и ещё какая-то мелочёвка. А его бывшей жене доставалось несколько квартир, дачных участков, автомобили и прочее.
Господин П. и госпожа Л. при этом продолжали жить вместе и воспитывать дочь.
В 2026 году в продолжающихся судебных процессах защита госпожи Л. на чистом глазу утверждает, что никакого намерения нанести вред кредиторам (организации Н.) не было и что развод и раздел имущества не имел цели вывести это имущество из конкурсной массы, подлежащей продаже и возмещению ущерба.
При том что судами ранее уже данный факт был установлен.
Вот я слушаю всё это и просто думаю, какими же мразями надо быть, чтобы так бессовестно и самозабвенно врать.
Upd:
В дополнение судья спрашивает, аффилированы ли лица, которым в последствии продавалось имущество после развода?
Госпожа Л. говорит, что нет. Между тем, в социальных сетях имелись фото, где указанные лица вместе крестили детей.
Мммм...
Дорогой дневник...
... мне жутко хочется попрокрастинировать, поэтому вместо того, что я должен делать, буду писать всякую ерунду в виде заметок.
например распишу какой-либо функционал форумного движка.
Счётчик игровых постов
Кто-то задумывался над тем, как работает счётчик игровых постов?
Если без лишних технических сложностей, то форумы сервиса mybb/rusff позволяют нам считать общее количество сообщений пользователя, при этом даже это делают не совсем корректно. Например, при удалении сообщений счётчик не уменьшается, то есть мы видим не актуальное значение.
А вот функционала отслеживать посты в конкретном форуме у нас нет и реализовывается он скриптами. Признаться, я не знаю, как это делается у моих коллег (например, у Deff'a), но в нашем случае мы активно лепим костыли, перехватывая события отправки формы поста в определённых форумах, после чего на моём хостинге и в моей базе данных у пользователя с id X увеличивается значение количества постов. А при загрузке страницы это значение подгружается из базы данных. Фактически при принятии анкеты каждому игроку прописывается значение игровых постов равное 0, а уже затем скрипт визуально подменяет этот 0 на значение из базы.
При удалении же поста такой же перехватчик событий уменьшает это самое значение.
Ещё у нас есть страничка админка, на которой я и Эш раз в некоторое время запускаем ручной пересчёт: скрипт пробегается по всем темам всех игровых разделов и считает посты авторов, чтобы даже в случае если когда-то в скрипте произошёл сбой, он корректно обновил все данные.
При том, что я учился на фронтэнд-разработчика мне совсем не нравится такой подход. Он слишком полагается на отсутствие сбоев и перекладывает почти всю ответственность на устройства пользователей, что не есть хорошо.
Вообще причина необходимости на каждый чих писать скрипты стала одной из главных причин почему я решил переносить форум на новый движок (но об этом как-нибудь в другой раз).
А теперь о том, как оно будет:
Общее описание
Функционал реализован в виде плагина и работает полностью на сервере, что снижает нагрузку на ваши устройства и сразу возвращает готовый результат. Ко всему прочему он обладает важными дополнениями, которых мы лишены сейчас.
Например, он всегда корректно обрабатывает разделение сообщение, слияние сообщений, удаление тем, перенос тем, слияние тем...
*Если бы вы знали, как я и Селина вымирали, тестируя все эти сценарии*
... и многие другие.
Но поговорим о плагине более предметно. Чтобы запустить его, админу достаточно в весьма дружелюбной админке включить плагин, указать форумы, в которых следует вести подсчёт и решить, нужно ли учитывать первый пост темы.

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

И конечно это всё можно настроить
Топ игроков
Немного посидев, я решил расширить работу плагина работой с топом игроков.
Такой топ можно автоматически вывести в шапке форума (по умолчанию) или вставить вручную любое другое место на форуме.
В топе можно настроить:
- сколько игроков показывать (Например, 3. При этом если у игрока 1 - 4 поста, у игрока 2 - 3 поста, у игрока 3 - 2 поста и у игрока 4 - 2 поста, то выводиться будут четверо);
- за какой период считать рейтинг (всё время, последние 7 дней, последние 30 дней, последние 365 дней, текущая неделя, текущий месяц, текущий год, прошлый месяц или определённый период);
- отображать в топе только аватарки или аватарки с именами;
- отображать или скрывать количество постов;
- исключать отдельные группы пользователей, чтобы они не учитывались в топе;
- исключать конкретных пользователей по UID, чтобы они не учитывались в топе.
Общий топ пользователей
Кроме топа игроков по игровым постам, плагин умеет показывать и общий топ пользователей по количеству сообщений.
Он имеет все те же самые настройки, что и у топа постописцев + одну дополнительную: можно выбирать, нужно ли учитывать игровые посты или вычитать их из общего числа постов.

Режимы обновления топов
Топы можно обновлять по-разному:
- в реальном времени — рейтинг пересчитывается при каждом выводе;
- раз в час;
- раз в день;
- раз в неделю.
ну а если вдруг нужно пересчитать топ прямо сейчас, то в админке есть специальная кнопка.

Статистика игровых постов
Также в админке есть отдельный раздел со статистикой игровых постов, где можно посмотреть активность пользователей по периодам:
- за последние 7 дней;
- за последние 30 дней;
- за последние 365 дней;
- за выбранный период;
- за всё время.
Есть фильтры по датам, лимит вывода и сортировка. Результат в виде обычного текста или BB-кода, а потом скопировать его и выложить на форум.

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

В этом же разделе плагин показывает своё общее состояние:
- требуется ли пересчёт;
- почему он требуется;
- когда был последний пересчёт;
- сколько постов учтено;
- сколько пользователей обновлено;
- сколько отрицательных счётчиков исправлено.
Да, даже отрицательные счётчики предусмотрены. Просто потому что.
Перед нами человек, который писал так много, что клавиатура просила отпуск.
На данный момент плагин прошёл несколько итераций тестирования, как автоматического, так и ручного. Отдельное спасибо Селине, что тоже ввязалась в это дело (есть подозрение, что хмурое выражение лица у неё не просто так).

Дорогой дневник...
... с утра я успел переделать кучу работы. Впереди мне предстоит ещё небольшая (большая) аналитическая задачка, но пока пришло время попить кофе и немного отдохнуть. А именно внести ещё пару улучшений в плагин уведомлений для форумного движка.
Уведомления вообще занятная штука. Мне довелось покопаться во внутренностях скрипта уведомлений от Алекса и я нахожу его весьма презанятным. Он большой молодец. В тоже время я понимаю, что я вообще не хочу заниматься чем-то подобным: с одной стороны потому что опять же этот функционал реализуется скриптами, а значит страдает надёжность и производительность, с другой - такой функционал более сложный в реализации и его куда сложнее расширять в случае необходимости.
Но уведомления нужны. К счастью, мне их даже не пришлось писать с нуля. На сайте в разделе плагинов уже был готовый плагин, мне же нужно было его взять, локализовать на русский язык и внести свои правки с учётом нужд (спойлер: правок таких было очень много, но всё равно это было быстрее, чем написать свой плагин с нуля).
Итак...
Система уведомлений MyAlerts
«Эй, тебя процитировали».
«Эй, тебе написали личное сообщение».
«Эй, кто-то ответил в твоей теме».
«Эй, тут вообще-то что-то произошло, может быть, перестанешь смотреть в стену?»
Примерно так, плагин привычно зазывает вас, но делает это вежливее.
Главная идея плагина простая: уведомления создаются на сервере, хранятся в базе данных и показываются пользователю уже в готовом виде, благодаря чему они работают значительно стабильнее и быстрее.
Где отображаются уведомления
Всё предельно привычно: в панели навигации, во вкладке браузера и в уведомлении в углу экрана.



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

В котором можно:
- посмотреть последние уведомления;
- открыть нужное уведомление;
- отметить всё как прочитанное;
- удалить прочитанные;
- удалить все уведомления;
- включить отображение только непрочитанных.
Если хочется посмотреть всё подробнее, есть отдельная страница профиля с уведомлениями: адресфорума/alerts.php
На ней уведомления выводятся уже полноценным списком с пагинацией.
Какие уведомления есть уже сейчас
На данный момент плагин умеет уведомлять о базовых форумных событиях:
- изменение репутации;
- новое личное сообщение;
- добавление в список друзей;
- цитирование в сообщении;
- ответ в вашей теме;
- ответ в теме, на которую вы подписаны;
- оценка вашего поста;
- голосование в опросе вашей темы;
- уведомление администраторам о новой регистрации;
- уведомления о новых сообщениях в важных темах (например, новостях).
Плюс плагин регистрирует уведомления от других плагинов, и теперь вы узнаете когда:
- пользователь создал эпизод с вашим участием;
- пользователь отписался в эпизоде с вашим участием;
- наступила ваша очередь писать пост;
- когда автор поста был изменён (администратором);
- когда эпизод был закрыт;
- когда в эпизод был добавлен или удалён участник;
- когда порядок очереди в эпизоде был изменён;
- когда у привязанного аккаунта пришло личное сообщение;
- когда вас добавили в переписку;
- когда тема переписки была изменена.
Обновление без перезагрузки страницы
Опять же в рамках привычного, плагин умеет периодически проверять новые уведомления без полной перезагрузки страницы.
Администратор может настроить:
- автообновление страницы уведомлений;
- автообновление счётчика в шапке;
- частоту проверки новых событий.
Настройки для пользователей
У каждого пользователя в профиле есть своя страница настроек уведомлений: адресфорума/alerts.php?action=settings
Там можно выбрать, какие уведомления получать, а какие отключить.
Например, кому-то нужны уведомления о цитировании, но не нужны уведомления о репутации.
Кому-то важны личные сообщения, но не интересны ответы в подписанных темах.
А кто-то включит вообще всё, потому что воробушек-социофобушек.

В текущей версии настройки сгруппированы (как раз этим занимался сегодня, как и добавлением уведомлений о регистрации пользователей для админов).
Сейчас всё ещё кажется, что они выводятся практически одной длинной простынёй, где всё смешано в кашу, но это лишь вопрос добавления групп существующим плагинам (всё что под группой "Основные" - уведомления которые отдают другие плагины и о них поговорим позднее). Они так же будут разбиты и получат заголовки для удобства ориентирования.
Настройки в админке
В админке у плагина есть такие настройки.
- сколько уведомлений показывать на странице;
- сколько уведомлений показывать в выпадающем окне;
- как часто обновлять страницу уведомлений;
- как часто обновлять счётчик в шапке;
- размер аватарок в уведомлениях;
- включить или выключить всплывающие карточки;
- длительность всплывающих карточек;
- ID отслеживаемых тем;
- группы пользователей, которые должны получать уведомления по отслеживаемым темам.

Основные настройки MyAlerts
Отдельно есть управление типами уведомлений.
Администратор может решить:
- включён ли конкретный тип уведомлений;
- может ли пользователь сам его отключить;
- включён ли он по умолчанию для новых пользователей.
Чистота и порядок
Плагин следит не только за созданием уведомлений, но и за тем, чтобы они не превращались в мусорную свалку.
Например:
- если личное сообщение удалено, связанное уведомление тоже убирается;
- если пост с цитатой удалён, уведомление о цитировании тоже очищается;
- если удаляется тема, связанные с ней уведомления удаляются;
- пользователь может удалить одно уведомление, все прочитанные или вообще всё сразу.
Бонус
Количество уведомлений на тестовом аке, на котором проверяется плагин эпизодов:
P.S. ну и да, отдельно приятно, что это всё бесплатно о.о
Дорогой дневник...
... ещё целых полтора часа до окончания рабочего дня, и в последний час я даже выкоротал время ещё немного поработать над функционалом движка.
Скрытие блока автора
Все знают про тэг hideprofile (ну или почти все), идея которого весьма поста - скрывать в постах блок автора и оставлять только его текстовое содержимое.
Однако в данном случае реализовывать этот функционал я решил не через привычный всем bb-код, а через обыкновенный чекбокс.
Как это выглядит для пользователя
В форме новой темы, ответа и редактирования сообщения появляется отдельная галочка:
«Скрыть панель автора в этом сообщении»


Вуаля, вы великолепны. Никаких bb-кодов. Просто снимаете или ставите галочку и видите результат.
А второй плагин...
дорогой дневник...
... это кубики.
Кубики у нас используют по разному. Кто-то в играх во флудилке, кто-то в конкурсах, а кто-то в эпизодах при решении различных вопросов.
И в общем-то всем известен механизм: жмёшь кнопку на тулбаре bb-кодов, выбираешь количество кубиков и граней, или пишешь руками 1d20, получаешь заветное число да и действуешь.
Но конечно мне хотелось сделать это нормально, а не на честном слове и замусоривших web скриптах.
И если делать нормально, то нужно ответить на ряд вопросов:
Когда именно бросок должен генерироваться?
Можно ли его поменять после публикации?
Что делать, если пользователь отредактировал пост?
Как понять, что результат не подделали?
Что будет через год, когда в базе накопятся тысячи бросков?
Как дать другим плагинам возможность использовать наш кубик?
Как не превратить каждое открытие темы в ужас для базы данных?
Ну и...
Кубики
Реализованный плагин добавляет на форум привычные броски кубиков через BBCode (вообще-то в рамках движка они называются MyCode).
Самый простой пример:
[dice=1d20]
Можно бросать несколько кубиков:
[dice=2d6]
Можно использовать модификатор:
[dice=2d6+3]
(в данном случае будет бонусные +3 очка к броску)
Или отрицательный модификатор:
[dice=1d20-1]
(а тут одно очко будет отнято)


Главное отличие от простых скриптов в том, что результат броска создаётся не при каждом просмотре страницы, а при сохранении сообщения.
То есть бросок не меняется от обновления страницы.
Не меняется от перезахода в тему.
А самое главное - это быстродействие и надёжность (о последней ещё будет сказано дальше).
Как отображается результат
Администратор может выбрать режим отображения бросков:
- полный режим: выражение, итог и значения отдельных кубиков;
- выражение и итог;
- только итог;
- компактный вид.
Например, в полном режиме бросок может выглядеть примерно так:
2d6+3 → 11 (4 + 4 + 3)
А в компактном режиме — короче:
2d6+3 = 11
Конкретный вид может зависеть от установленного дизайна и стоящих перед АМС целей.
Ограничения и защита от злоупотреблений
Админка также позволяет настроить:
- какие группы могут делать броски;
- сколько бросков можно сделать в одном сообщении;
- максимальное количество кубиков;
- максимальное количество граней;
- разрешены ли модификаторы;
- максимальный размер модификатора.
Редактирование постов
Самая чувствительная часть любых бросков кубиков на форуме — редактирование этих самых постов.
Плагин поддерживает несколько политик безопасности:
- полное блокирование изменения бросков (у вас не получится удалить из своего поста бросок, но вы сможете отредактировать остальную его часть);
- разрешение добавлять новые броски, но не удалять и не заменять старые (у вас не получится удалить уже сделанный бросок, но вы сможете отредактировать остальной пост и добавить новый бросок);
- разрешение перебросов (вам разрешено удалять уже совершённые броски и так же можно делать новые).
По умолчанию логичнее использовать строгий режим: если бросок уже сделан, пользователь не должен иметь возможность просто удалить его и сделать новый, пока не выпадет что-нибудь устраивающее его больше. И на данный момент я склоняюсь к тому, что будет включён именно этот режим.
Если говорить ещё про защиту, то кубики защищены от копирования готовых бросков, будь то свои или чужие.
Обслуживание и чистота базы
Я стараюсь не забывать делать на этом упор для всего функционала, чтобы вне зависимости от накопленных на форуме данных форум продолжал работать чисто и быстро.
Поэтому плагин умеет:
- удалять осиротевшие записи, если пост уже удалён;
- удалять устаревшие API-броски без привязки к посту;
- работать батчами, чтобы не нагружать базу одним огромным запросом;
- финализировать старые броски.
Последний пункт особенно интересен.
Финализация означает, что старый служебный токен в тексте поста заменяется уже готовым результатом. После этого запись из таблицы удаляется.
Есть два режима финализации:
- обычный текст;
- подписанный финальный BBCode.
Обычный текст просто оставляет результат в сообщении.
Подписанный BBCode хранит результат так, чтобы можно было проверить, что он не был повреждён или подменён.
По умолчанию такая финализаия происходит раз в 3 месяца, но этот срок гибко настраивается в админке.
Есть ещё куча всяких мелочей для админов, которые позволяют менять html вывода, гибко настраивать CSS и проводить диагностику, но вам, полагаю, это уже не так интересно)
Экономика
К экономическим моделям на форумах можно относиться по разному. Моё отношение? Это хороший способ сподвигнуть пользователей (в том числе и себя) на дополнительную активность.
Вообще-то у меня есть маленькая мечта когда-то сделать форум с развитой экономической системой, которая будет вписана в рамки игрового лора, но это всё в далёких планах, а то что есть сейчас... это сейчас.
В тоже время я считаю, что:
1. Такая система не должна жёстко навязываться пользователям, потому как не всем она нравится, а потому должна быть опциональной;
2. Такая система не должна напрягать своей реализацией ни пользователей ни администрацию, дабы время тратилось не на подсчёт написанных постов/символов/выдачу наград и т.д., а на то, ради чего мы сюда приходим - общение и творчество.
Поэтому, садясь за написание экономического плагина, я ставил перед собой такие задачи:
- максимально автоматизировать весь процесс, чтобы если игрокам или админам и приходилось что-то делать, то в каких-то редких и незначительных моментах;
- сделать плагин максимально гибким и настраиваемым, дабы позволить менять эти самые настройки по своему усмотрению в любой момент времени в зависимости от ситуации на ролевой.
Так родился плагин, который я назвал FRPG_Economy, и он добавляет на форум полноценную финансовую систему.
Благодаря ему, кошелёк в профиле пользователя не просто «поле с числом», которое меняет админ, а именно глобальная система с валютой, банком, историей операций, автоматическими наградами, переводами, обслуживанием, аудитом и API для будущих плагинов.
Валюта и номиналы
"Экономика" позволяет поддерживать не одну валюту, но реализовывать работу с неограниченным количеством номиналов.
Например:
Золото → Серебро → Бронза
Или:
Доллары → Центы
Или вообще что-нибудь своё, потому что названия, иконки и курсы настраиваются в админке.
Можно задать:
- полное название номинала;
- короткое название;
- порядок отображения;
- курс к младшему номиналу;
- текстовый, unicode, html или графический вид;
- включён ли номинал сейчас.
То есть можно сделать как простую валюту:
100 монет
так и более красивую систему:
2 золота 15 серебра 40 бронзы
Автоконвертация и ручной обмен
Можно включить автоконвертацию.
Например, если у пользователя стало 157 бронзы, система сама приведёт баланс к виду:
1 серебро 57 бронзы
А можно автоконвертацию выключить.
Тогда пользователь сам сможет обменивать номиналы в банке, если ему это нужно. Например, разменять серебро на бронзу или наоборот.
Где виден баланс



Баланс отображается (опционально можно менять):
- в постах в мини-профиле игрока;
- в профиле;
- на странице банка.
Формат отображения тоже настраивается:
- все номиналы;
- только старший ненулевой;
- выбранный номинал;
- компактный вид.
То есть можно сделать подробно:
Деньги: 2 золота 15 серебра 40 бронзы
А можно короче:
Деньги: 2 золота
Банк
У пользователей появляется страница банка:
/bank.php
Там можно посмотреть:
- текущий баланс;
- историю операций;
- историю переводов;
- обмен валюты, если ручной обмен разрешён;
- перевод другому пользователю.
История не грузится бесконечной простынёй. Есть пагинация и сортировка.

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

Самому себе переводить нельзя.
Если денег не хватает — перевод не проходит.
Есть защита от случайного повторного отправления формы, чтобы пользователь не списал деньги дважды двойным кликом или обновлением страницы.
Комиссии
Для переводов администрация может настроить комиссию.
Она может быть:
- отключена;
- фиксированной;
- процентной.
Комиссия списывается с отправителя.
Также дальше администратор выбирает, куда она уходит:
- сгорает;
- уходит в системный кошелёк;
- уходит указанному пользователю.
Например:
Пользователь переводит 100 монет Комиссия 5% Получатель получает 100 Отправитель теряет 105 5 монет уходят в системный кошелёк
Повторить и вернуть
В истории переводов есть удобные действия:
- если перевод исходящий — его можно повторить.
- если перевод входящий — его можно вернуть.
В обоих случаях открывается форма перевода с уже заполненными данными. Это мелочь, но она делает банк гораздо удобнее.
Автоматические начисления
Плагин умеет сам выдавать награды в реальном времени.
Например:
- бонус после активации аккаунта;
- награда за обычные посты;
- награда за игровые посты;
- награда за количество символов;
- бонус за быстрый ответ.
Для игровых постов можно задать формулу по которой эта награда будет начисляться.
Можно ограничить минимальное количество символов, максимальную награду и выбрать, в каких форумах это работает.
Редактирование постов
То, о чём часто забывают и что могло бы ломать систему.
Допустим, пользователь написал большой игровой пост, получил награду за символы, а потом отредактировал сообщение и оставил там две строки.
Или наоборот: написал короткий пост, получил мало, потом дописал продолжение.
Экономика умеет пересчитывать награду после редактирования.
Есть несколько режимов:
- не пересчитывать;
- только увеличивать награду;
- увеличивать и уменьшать награду.
По умолчанию логичнее использовать режим, где награда может и увеличиваться, и уменьшаться. Так система закрывает очевидный эксплойт.
При этом старая операция не подменяется. В истории админки появляется отдельная корректировка:
Корректировка награды за пост
То есть всегда понятно, почему баланс изменился.
Удаление и восстановление постов
Если награждённый пост удалили или скрыли, награду можно откатить.
Если пост потом восстановили, награда возвращается.
И это не создаёт дубль.
Система помнит, что за этот пост уже была награда, что она была откатана, и что её нужно именно восстановить, а не начислить заново.
Это важно, потому что модерация на форуме — обычное дело, и экономика не должна ломаться из-за скрытия, восстановления или физического удаления сообщений.
Ручные операции для администрации
В админке есть раздел операций.
Администратор может:
- начислить деньги;
- списать деньги;
- установить баланс;
- обменять номиналы;
- указать причину и служебный комментарий.
Все такие действия попадают в историю.
То есть нельзя просто «тихо поправить число в базе». Любое изменение баланса оставляет след.
Быстрые операции из поста
Для АМС есть быстрые операции прямо в постах.
Например, в игровой теме можно нажать кнопку у поста и начислить автору награду или списать сумму.
Права на такие действия настраиваются:
- кто видит кнопку;
- в каких форумах она работает;
- можно ли начислять;
- можно ли списывать;
- обязательна ли причина.
Операция сохраняет связь с постом, темой и форумом.
То есть потом в аудите можно понять не только кому начислили деньги, но и за какой пост.
История и аудит
Все изменения баланса записываются в журнал операций.
Это одна из самых важных частей плагина.
В истории видно:
- тип операции;
- сумму;
- номинал;
- владельца кошелька;
- исполнителя;
- источник операции;
- связанный пост, тему или форум;
- дату;
- причину.
В банке пользователь видит схожую информацию, касающуюся его.
В админке есть и аудит с фильтрами и при желании можно получить выгрузку и проанализировать данные, чтобы затем внести правки в экономический баланс.
Внешние кошельки и будущие плагины
Важно сказать, что я не стал пытаться в один плагин запихнуть всё на свете.
Магазин, лотерея, фракции, территории, влияние и прочие большие системы должны быть отдельными плагинами.
Но экономика даёт им API.
Например, будущий плагин фракций сможет иметь свою таблицу фракций, свои ранги, территории, влияние и описания, а деньги хранить через экономику. То есть фракции будут отдельным плагином, а экономика просто предоставит безопасный кошелёк.
Обслуживание и чистота базы
Как и с кубиками, тут тоже важно, чтобы через год форум не умер под весом накопленных данных.
Поэтому экономика умеет:
- чистить старые ненужные данные;
- создавать снапшоты балансов;
- пересобирать кошельки из снапшота и истории операций;
- проверять отрицательные балансы;
- искать дубли;
- чинить неконсистентные данные;
- проверять связи;
- диагностировать подозрительные переводы;
- работать батчами, чтобы не делать один огромный запрос.
Итог
По итогу получилась весьма крупная система, которая реализовывает основу для глобальной экономической модели, предоставляя как саму валюту, так и функционал для работы с ней. То есть решает те задачи, которые я перед собой ставил.
Стикеры
Ещё один реализованный плагин и на этот раз его "пользовательское" не менее заметно, чем "админское".
По сути каждому знакома реализация стикеров на MyBB/Rusff. Но она не идеальна и определённо требует улучшений. Эти улучшения я и постарался привнести в своей реализации на движке.
Как это работает
Всё привычно: пользователь нажимает кнопку стикеров в панели редактора и выбирает нужную картинку, после чего она вставляется в редактор в не менее привычном виде.
[img]ссылка-на-стикер[/img]

В модальном окне можно просматривать:
- системные паки;
- свои личные стикеры;
- избранное;
- недавно использованные;
- поиск.
Системные паки
Системные паки — это наборы, которые добавляет администрация.
Администратор может создавать паки, загружать туда стикеры, менять порядок, включать и выключать наборы.
Системные стикеры доступны пользователям в модальном окне, если плагин включён и у пользователя есть право пользоваться стикерами.
При этом всё хранится не где-то в стороннем сервисе, а в файловом хранилище форума, что ускоряет их загрузку.
Личные стикеры пользователей
Но только системными наборами дело не ограничивается.
Плагин позволяет пользователям загружать свои личные стикеры, если администрация дала им такое право.
В личном кабинете пользователь может:
- загрузить стикер;
- переименовать его;
- разложить по личным пакам;
- удалить;
- выбрать обложку пака;
- скопировать BBCode;
- быстро отфильтровать стикеры по паку;
- применить массовые действия.
Оформление паков
Вкладки стикеров оформляются в виде стикера-обложки, а если такового нет, то в виде названия пака.

Избранное и недавние
У каждого стикера есть иконка звёздочки, после клика на которую они попадают в группу "Избранное". Убрать их из избранного можно кликнув по этой звёздочке ещё раз

В недавних стикерах отображаются N стикеров (в зависимости от настроек), которые вы использовали недавно.
Обмен паками
Есть ещё одна приятная возможность: пользователь может поделиться своим паком.
Для этого создаётся ссылка обмена. Другой пользователь открывает её и копирует пак себе.
Массовая загрузка
Реализована возможность загружать стикеры пачкой. Это удобно, когда нужно добавить не один-два файла, а целый набор.
Впрочем, для таких операций есть разумные ограничения.
Админка
В ACP у плагина есть отдельный раздел.
Там можно управлять:
- системными паками;
- системными стикерами;
- пользовательскими стикерами;
- настройками доступа;
- лимитами загрузки;
- логированием;
- задачами обслуживания;
- диагностикой.

Особенно важно, что администрация может видеть не только системные стикеры, но и пользовательские. Это нужно для модерации и обслуживания.

Дорогой дневник...
... в этот раз кратко. Добавил упоминание через "@", [b ]никнейм[/b], all для администраторов и модераторов, обращение к гостям и запятую после обращения.
Всё это, конечно же, создаёт уведомление упомянутым пользователям.
... автопродление темы.
По умолчанию в форумном движке темы бесконечные, т.е. не ограничены числом сообщений.
Для флудовых тем это может иметь последствия в производительности, поэтому пришлось не только устанавливать ограничение (привычное в 2000, но вообще настраиваемо), но и прикрутить пересоздание.
Из новых плюшек: если вы писали пост и тема закрылась, он не потеряется и сохранится в черновиках.
...
+ кнопки быстрой прокрутки вверх и вниз;
+ аватарки пользователей рядом с никами на главной странице, странице просмотра тем, личках и т.д. (на движке с которым работаю - это не базовый функционал). Так же по ним можно кликнуть и открыть маленькое окошко через которое можно посмотреть статус онлайна, найти сообщения, темы или написать в лс;
+ счётчики символов постов и формы ответа (отключаются в настройках профиля).
Накинул небольшой плагин, для PR аккаунтов.
С одной стороны всё привычно: автоматический вход в аккаунт, редирект в тему с рекламой, копирование одного из вариантов рекламы (последнее уже было реализовано ранее).
Но добавил и новое - автоматическое определение темы в которую делать редирект по id форума и названию.
В настройках плагина указывается id форума, указывается ключевое слово по которому искать (например, "Реклама"), он разбирает названия, находит в нём наибольшее число (например, Реклама № 31 и Реклама #32 → 32 определяется как наибольшее), и делает редирект в эту тему.
Если он не может определить в каком-то случае наибольшее число (например, две темы Реклама № 32, ну вдруг), то тогда проверяет id топика и берёт наибольший из них.
Для простых игроков, конечно, пользы 0. Но сейчас каждый раз когда тема с рекламой заканчивается, мне приходится идти в конфиг и менять на новый айдишник. Не очень люблю такое) Теперь на автомате.
Сегодня в основном занимался правками касающихся оптимизации, быстродействия, очистки мусорных данных и объединения нескольких схожих по теме плагинов (например, обращение к гостю и пользователям по клику на ник) в один.
По итогу оптимизорованными оказались отступы [ indent] (ему ещё можно задавать количество таких отступов через числовое значение [ indent=4] или писать короче [tab]), обтекание изображение ([ float]), копирование темы и постов, разделение кнопки репутации на быстрый лайк и лайк с комментарием, а так же таблицы (им можно достаточно легко создавать заголовки, цвет фона и ширину столбцов).


Всё это полезно и нужно было бы сделать в любом случае, но честно говоря я просто отсрочиваю момент, когда придётся сесть и написать десятки тысяч строчек кода для финальных и самых крупных модулей, автоматизирующих примерочную, инвентарь, карточку персонажа и т.д.
+ добавил возможность публиковать отложенные посты для АМС;
+ добавил функционал позитива
+ добавил возможность выбирать размер шрифт и сами шрифты в постах с сохранением на всех устройствах
+ ...
дальше отдельными постами.
Дорогой дневник...
Сам я почти никогда не пользовался функционалом закладок. Отсутствие синхронизации на устройствах, не самый удобный функционал добавления, да и смешиваются в кучу...
Не знаю, буду ли пользоваться ими в будущем, но знаю тех, кто их использует. А потому решил реализовать и повысить качество пользовательского опыта.
Закладки
Главная идея простая: пользователь может добавить любой доступный ему пост в личные закладки, разложить закладки по категориям, оставить к ним заметки и потом быстро вернуться к нужному месту.
Закладки создаются на сервере, хранятся в базе данных и привязаны к конкретному пользователю.
Как добавить пост в закладки
В каждом посте появляется кнопка закладки.
Нажали — открывается небольшое окно, где можно:
- добавить пост в закладки;
- выбрать категорию;
- создать новую категорию;
- оставить личную заметку;
- обновить уже существующую закладку;
- удалить закладку, если она больше не нужна.


Кнопка добавления иуже добавленный пост

Модальное окно добавления
Категории закладок
Свалить всё в одну кучу — это, конечно, тоже вариант, но потом получится маленькая личная свалка.
Теперь закладки можно раскладывать по категориям.
Например: посты, важное, лор, дневники и т.д.
Категории личные. Каждый пользователь сам решает, как ему удобнее всё организовать.
Категории можно:
- создавать;
- переименовывать;
- удалять;
- переносить закладки между категориями.
Если категория удаляется, сами закладки не исчезают автоматически: их можно оставить без категории или перенести в другую.
Заметки к закладкам
У каждой закладки может быть личная заметка.
Это удобно, если нужно не просто сохранить пост, а ещё и объяснить будущему себе, зачем ты это сделал. Будущий вы скажет спасибо.
Где смотреть все закладки
Таких места два:
1. У пользователя появляется отдельная страница в личном разделе:
адресфорума/usercp.php?action=bookmarks
Там закладки выводятся полноценным списком.
На странице можно:
- просматривать все свои закладки;
- фильтровать их по категориям;
- искать по названию темы, имени автора и заметке;
- открывать сохранённый пост;
- редактировать заметку и категорию;
- удалять одну закладку;
- удалять несколько закладок сразу;
- переносить несколько закладок в другую категорию;
- видеть, какие закладки больше недоступны.

Если закладок много, список разбивается на страницы.
2. Окно закладок

В окне можно:
- увидеть последние сохранённые посты;
- быстро перейти к нужной закладке;
- отфильтровать список по категории;
- перейти на полную страницу закладок.
В этом же окне доступно переключение в минималистичный вид, который сожмёт лишнюю информацию.

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

Дорогой дневник...
Мои загрузки.
Я до сих пор удивляюсь почему люди так редко ими пользуются, предпочитая тягать ссылки на изображения со сторонних хостингов, где ссылки живут один месяц, а затем умирают.
Даже в рамках mybb/rusff это весьма полезный функционал чтобы загрузить аватарки, подписи, оформления эпизодов и кучу всяких других изображений.
Проблема в том, что на новом движке такого функционала не было. Вместо него движок предлагал систему вложений, когда загружать файлы можно в конкретный пост, который будет отображаться иконкой, которую можно раскрыть, чтобы посмотреть.
То есть в который раз передо мной встала задача реализовать систему и улучшить её, просто потому что, а почему бы и да?
Мои загрузки
Ну и, собственно, идея уже описана выше: пользователь получает личное хранилище изображений прямо на форуме.
Можно загрузить картинку, разложить изображения по папкам, получить прямую ссылку, BBCode для вставки в пост и быстро использовать всё это в редакторе.
Загрузка изображений
Пользователь может загружать изображения в личный раздел.
Плагин принимает картинки, проверяет их, сохраняет оригинал и создаёт миниатюру (последнее нужно чтобы в списке файлов предпросмотр грузился быстро, а не загружал полноразмерные версии).
Загруженная картинка получает:
- оригинальное имя файла;
- прямую ссылку;
- BBCode для вставки;
- дату загрузки;
- размер;
- миниатюру;
- папку, если пользователь решил разместить её в каком-то конкретном месте.

Загрузка доступна не только на странице "Моих загрузок", но и по нажатию Ctrl+V или перетягиванию изображения в форму ответа.
Личный раздел в User CP
У пользователя появляется отдельная страница в личном разделе:
адресфорума/usercp.php?action=myuploads
Там хранится всё загруженное.
На странице можно:
- посмотреть свои изображения;
- загрузить новое изображение;
- открыть прямую ссылку;
- скопировать BBCode;
- удалить ненужный файл;
- искать по файлам;
- фильтровать изображения по папкам;
- сортировать и наводить порядок;
- добавлять и изменять свои комментарии к изобаржениям;
- видеть статистику по своему хранилищу.

Папки для изображений
В Моих загрузках есть папки.
Пользователь может создать свои разделы, например:
- аватары;
- эпизоды;
- анкеты;
- карты;
- отношения;
- вдохновение;
- мемы;
- и т.д.
Папки можно использовать как маленькие личные полочки. Не обязательные, но очень приятные, когда файлов становится много.
Иконки папок
У папок могут быть иконки.
Это маленькая деталь, но она делает хранилище визуально понятнее. Одно дело — просто список названий, и совсем другое — когда у папки с картами есть своя иконка, у папки с аватарами своя и т.д.
Администратор может управлять библиотекой иконок через админку.
Пользователь же получает более наглядное и аккуратное хранилище.

Тут, по хорошему, должно быть ещё раза в 2 больше текста про админку, но это уже не то, что вам интересно, потому остановлюсь на уже написанном)
Дорогой дневник...
У одного человека может быть один аккаунт.
А может быть два.
А может быть пять.
И всё это, конечно, очень здорово и разнообразно, до тех пор, пока тебе не нужно выйти из одного аккаунта, войти во второй, ответить в теме, выйти, войти в третий, загрузить изображения, проверить личные сообщения, снова выйти, снова войти в основной, вспомнить, где ты был, зачем ты туда шёл, и кто все эти люди.
Форуму нужен нормальный способ работать с несколькими аккаунтами.
Переключатель аккаунтов
И вот, собственно и он.
Плагин, который позволяет связать несколько аккаунтов между собой и быстро переключаться между ними без бесконечного выхода и входа.
Основной аккаунт становится связующим звеном, собирающем вокруг себя все прочие аккаунты.
Теперь пользователь может привязать к своему аккаунту другие профили.
Например:
- основной аккаунт;
- второй персонаж;
- третий персонаж;
- технический профиль;
- профиль ивентов;
- и т.д.
После привязки аккаунты начинают отображаться в переключателе. Больше не нужно каждый раз вводить логин и пароль, если нужно быстро перейти в другой профиль.
При этом привязка не происходит достаточно просто из меню профиля и для неё нужно только подтверждение паролем. То есть случайно или без доступа к аккаунту привязать чужой профиль не получится.
Быстрое переключение
Главная радость плагина — это, конечно, переключение.
Пользователь видит свои связанные аккаунты и может быстро перейти в нужный. Нажал — и ты уже в нужном аккаунте.
Что важно, в отличии от используемых сейчас на форумах mybb/rusff скриптов, данные сохраняются в базе данных, а значит доступны на всех устройствах и браузерах без необходимости постоянно вводить их заново.

Выбор автора при ответе
Отдельная приятная вещь: плагин может добавлять выбор автора прямо в форму ответа или создания темы.
То есть можно сидеть под основным аккаунтом, открыть форму ответа и выбрать, от чьего имени будет опубликован пост.
Это сильно уменьшает количество лишних действий.

Смена автора сообщения
И если всё-таки написал не с того аккаунта — не страшно.
Всегда можно сменить автора уже существующего сообщения внутри связки аккаунтов.


Обычный пользователь может менять автора только между своими связанными аккаунтами. А для администрации и модераторов может быть включён расширенный режим.
Общие аккаунты
Есть ещё кое-что интересное: общие аккаунты. Такой аккаунт можно открыть для использования другими пользователями.
Причём доступ может быть:
- для всех пользователей;
- только для списка друзей.
Второй вариант удобен, когда общий аккаунт должен быть доступен не всему форуму, а только конкретной команде, соавторам или участникам определённого проекта.
Приватность и скрытые аккаунты
Разумеется, не все связи нужно показывать всем. Плагин позволяет скрывать аккаунты из публичных списков.
Можно скрывать отдельный аккаунт или включать приватность связки, чтобы посторонние пользователи не видели, какие профили между собой связаны. Владелец при этом продолжает видеть свои аккаунты и пользоваться ими.
Список аккаунтов
У плагина есть отдельная страница списка аккаунтов:
адресфорума/accountlist.php
Там можно увидеть связанные профили, если администратор включил отображение списка.
При этом приватность и скрытие учитываются: если аккаунт не должен быть виден посторонним, он не должен внезапно вывалиться в общий список.

Отображение в профиле и сообщениях
Плагин может (но не обязан) отображать связанные аккаунты:
- в профиле пользователя;
- в сообщениях;
- в списке участников;
- в шапке форума;
- в боковой панели;
- на отдельной странице списка аккаунтов.
Администратор сам решает, где это нужно, а где лучше не перегружать интерфейс. так же плагин способен считать общее количество сообщений со всех аккаунтов.
Уведомления о личных сообщениях
Есть ещё одна вещь, которая кажется маленькой, но на практике очень полезна. Если личное сообщение пришло на привязанный аккаунт, основной аккаунт может увидеть уведомление.

Админские настройки как и в прошлый раз оставлю без разбора 
Переписка. Личные сообщения.
Один пользователь написал другому пользователю, второй ответил, первый прочитал, все довольны, мир прекрасен, коммуникация построена.
Проходит время, открываешь стандартные личные сообщения...
Куча входящих, куча исходящих. разные темы, множество страниц. Сообщения от других пользователей и твои сообщения находятся на разных страницах. И сообщения, которые приходится открывать по одному.
Ужасно.
А ведь мы привыкли к диалогам. Открыл чат — видишь историю. Написал ответ — видишь его сразу. Получил сообщение — видишь его сразу. Нужно найти старое сообщение — ищешь внутри переписки. Нужно сохранить важное — добавляешь в избранное.
И вот примерно с этой мысли всё и началось.
Symposium
Symposium — это плагин, который превращает стандартные личные сообщения форума в нормальную систему переписок в виде полноценных диалогов.
Диалоги вместо отдельных писем

Классическая переписка во время тестов
Главная идея простая: переписка собирается в один разговор. Больше не нужно прыгать между входящими и отправленными, чтобы понять, кто кому что ответил.
Открыл диалог — и видишь всю историю:
- входящие сообщения;
- свои ответы;
- даты;
- время;
- статус прочтения;
- избранное.
Свои сообщения и сообщения собеседника при этом визуально разделяются, как в привычных мессенджерах.
Список переписок

=
Вместо унылого списка отдельных ЛС пользователь получает страницу диалогов.
Там видно:
- с кем идёт переписка;
- название беседы;
- последнее сообщение;
- дату последней активности;
- количество непрочитанных сообщений;
- аватар собеседника или участников;
- быстрые действия.
Избранные сообщения
Уже упоминал их. В переписках часто бывают сообщения, которые хочется не потерять. Поэтому сообщения можно добавить в избранное.
Нажал на звёздочку — сообщение помечено. Потом можно открыть только избранные сообщения в конкретной переписке и быстро найти важное.
Поиск в переписке
Иногда нужно найти не просто важное сообщение, а конкретную фразу.
Например: «а где мы обсуждали маскарад?»
Или: «как звали того парня?»
Для этого есть поиск внутри переписки. Вбил слово или фразу — получил нужные сообщения.
Групповые беседы
Форумная переписка — это не всегда два человека.
Иногда нужно собрать нескольких участников: соигроков, администрацию, организаторов эпизода, игроков одного сюжета.
Symposium поддерживает групповые беседы.
Можно создать разговор не только с одним пользователем, но и с несколькими. У беседы появляется список участников, название, история сообщений и общий контекст.
Переименование беседы
Иногда «Переписка с Dofa» — это хорошо.
А иногда хочется назвать разговор нормально:
«Бабочки»;
«Сюжет на осень»;
«Эпизод с балом»;
«Админские вопросы»;
«Отношения персонажей».
Поэтому беседы можно переименовывать.
Это маленькая функция, но она очень помогает, когда переписок становится много. Потому что одно дело — список одинаковых диалогов с пользователями, и совсем другое — понятные названия, по которым сразу видно, что где лежит.
Уведомления
Плагин интегрируется с системой уведомлений. То есть пользователь видит, что ему написали, может быстро перейти к нужному диалогу и не пропустить важное.
Админские шутки опускаю)
Добавил тэг hide, который имеет 5 вариаций:
1. Скрывает текст ото всех кроме автора и АМС
[hide]content[/hide]
2. Скрывает текст по количеству сообщений (вариант по умолчанию)
[hide=999]content[/hide]
3. Скрывает текст по лайку (нужно поставить лайк, чтобы увидеть сообщение)
[hide=like]content[/hide]
4. Скрывает текст ото всех кроме конкретных пользователей
[hide="Kayden Moore, Emilia Nightray"]content[/hide]
Так же добавлены варианты по id пользователя и смешанный:
[hide='uid:1, uid:38']content[/hide]
[hide="Kayden Moore#1, Emilia Nightray#38"]content[/hide]
5. Скрывает текст до определённой даты
[hide="06.05.2026"]content[/hide]
Контент раскрывается в полночь на следующий день, то есть в 00:00 07.05.2026
Каждый вариант можно включать и отключать в админке. В модальном окне доступен выбор для лёгкого заполнения.
Буду ли использовать все эти варианты после переезда пока не знаю, но реализовать стоило.
Сегодня занимался тем, что добивал bb-коды в тулбар редактора.
Закинул bb-код [ you] (защем? не знаю, но пусть будет), поясняющий текст (делал и думал о наших поляках), маркировочный текст, подстрочный и надстрочный тексты.
Ну и приятность для себя - менеджер тулбара, который позволяет менять порядок и группировку кнопок без лазания в код.
На этом работа с текстовым редактором и bb-кодами завершена.
Вы здесь » Kindred Spirits » Блоги » Дорогой дневник