Курс: 1 USD = 102 RUB

SanDev's Shop

Цена: $8 ($3)

››› DialogPM by Sander v.1.0.14

Опубликован: 2024-04-13, 17:16

DialogPM by Sander v.1.0.14

Продвинутая система общения между пользователями.
Модуль реализован по принципу чата, где сообщения обновляются в режиме реального времени.
За основу внешнего вида взят интерфейс телеграма и адаптирован в рамках web интерфейса и возможностей DLE.


Данный модуль я делал очень продолжительное время. Постоянно что-то переделывал или добавлял. Вот буквально на днях перед релизом добавил еще один достаточно интересный функционал для использования ЛС в качестве обратной связи с администрацией сайта. Но лучше распишу все по порядку.
Большая просьба полностью ознакомиться с описанием модуля. Практически на все вопросы вы сможете найти ответы в этой статье.


Особенности
  1. Модуль доступен только по реальному адресу example.com/pm/
  2. У каждой беседы свой URL: example.com/pm/Логин_Пользователя/
  3. Адаптивная верстка
  4. Совместимость со стандартными ЛС. Достаточно установить модуль и все старые сообщения будут отображаться в чате
  5. Очень простая установка
  6. Все действия выполняются на AJAX (за исключением перехода по страницам)
  7. Можно запретить пользователям общаться друг с другом и использовать модуль только как обратную связь с заданным списком пользователей.
  8. На 98% открытый исходный код.
  9. Никакого html в php файлах. Все в шаблонах.
  10. Русская и Английская локализация. Можно легко добавить свой языковый файл. Но в шаблонах нужно будет вручную менять тексты.



Главная страница
DialogPM by Sander v.1.0.14

На главной странице всегда отображается сайдбар и пустой "контент". Если у группы пользователей есть ограничение на количество сообщений, то в верхней части будет отображаться прогресс бар. Если ограничений нет, то и прогресс бара соответственно тоже не будет:
DialogPM by Sander v.1.0.14

В сайдбаре есть кнопка меню, поиск и список пользователей.
Еще важный момент. Верстка модуля сделана с поддержкой адаптивности, на мобильных устройствах главная страница будет принимать следующий вид:
DialogPM by Sander v.1.0.14

Меню и поиск опишу отдельно. Список пользователей формируется и сортируется по дате последнего сообщения, входящего или исходящего. При этом новые не прочитанные сообщения будут всегда в начале списка.
В строке пользователя указывается: полное имя (или логин), дата последнего сообщения, логин и группа пользователя.
Так же на аватарке в виде кружочка показывается статус пользователя.
Список собеседников обновляется на AJAX с заданным интервалом. При получении нового сообщения в заголовок страницы будет дописано количество новых сообщений.
DialogPM by Sander v.1.0.14



Меню пользователя
DialogPM by Sander v.1.0.14

При клике на иконку меню на AJAX поверх окна подгружается меню. В нем можно очистить всю историю переписок, перейти на страницу игнорируемых пользователей (в скобочках указано их количество) и посмотреть статистику сообщений.
Если у группы пользователя есть ограничение на количество сообщений, то это будет так же отображено в статистике.
DialogPM by Sander v.1.0.14

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


Игнорируемые пользователи
DialogPM by Sander v.1.0.14

При клике на крестик выскочит стандартное окно подтверждения действия. При клике на сам блок профиля будет выполнен переход на страницу диалога с пользователем. При клике на иконку пользователей в левой колонке будет показан текущий список собеседников для быстрого перехода к диалогу.
DialogPM by Sander v.1.0.14



Поиск пользователей
Я очень старался сделать его удобным и наглядным, надеюсь у меня получилось.
DialogPM by Sander v.1.0.14

  1. Поиск выполняется на AJAX.
  2. В качестве даты отображается дата последнего посещения.
  3. В списке выполняется подсветка искомого слова.
  4. Поиск и подсветка выполнятся сразу и в полном имени и в логине.
  5. Приоритет поиска идет по логину. У кого ближе к началу искомая фраза тот выше в выдаче, затем сортировка по алфавиту
    DialogPM by Sander v.1.0.14

  6. Поиск выполняется автоматически при вводе текста, с задержкой 600мс. Но можно нажать Enter, тогда поиск будет выполнен мгновенно.



Окно чата
DialogPM by Sander v.1.0.14

  1. В верхней части указан профиль собеседника, справа в кружочке количество сообщений в беседе (скриншот сделан из профиля test).
  2. В основном окне чата полагаю все и так понятно, последнее сообщение еще не прочитано собеседником, поэтому помечено красной полоской.
  3. Между списком сообщений и формой ввода видна красная полоска, это визуализация обратного отсчета до следующего обновления чата. Полоску при желании можно легко убрать в шаблоне.
  4. Редактор можно использовать любой стандартный: BB, FroalaEditor или TinyMCE.
  5. Если пользователь отсутствовал некоторое продолжительное время, обновление чата будет приостановлено для предотвращения выполнения ненужных запросов, время можно поменять в настройках
    DialogPM by Sander v.1.0.14

  6. Меню своего сообщения
    DialogPM by Sander v.1.0.14

  7. Меню сообщения собеседника, отличие - отсутствие возможности редактирования и есть возможность пожаловаться. При удалении сообщения будет выскакивать окно подтверждения действия
    DialogPM by Sander v.1.0.14

  8. При редактировании сообщения редакторы не отображаются, но используется обработчик BB редактора.
    DialogPM by Sander v.1.0.14

  9. При получении нового сообщения от другого (не текущего) пользователя, в левой колонке будет показано число новых сообщений
    DialogPM by Sander v.1.0.14

  10. Развернутый список пользователей, текущий пользователь выделен.
    DialogPM by Sander v.1.0.14
    Поиск работает так же как на главной.
  11. Архив сообщений отображается на отдельной странице, в нем ограниченный функционал, отображаются сразу все сообщения от новых к старым.
    DialogPM by Sander v.1.0.14

  12. Можно массово удалить выбранные сообщения
    DialogPM by Sander v.1.0.14

  13. Иконка стирательной резинки позволяет полностью удалить все сообщения в текущем диалоге.
  14. При клике на кнопку игнора редактор прячется
    DialogPM by Sander v.1.0.14

  15. Если же сам пользователь находится в игноре у получателя будет следующее сообщение:
    DialogPM by Sander v.1.0.14

  16. При желании можно приостановить автообновление чата или обновить чат вручную с помощью иконок
    DialogPM by Sander v.1.0.14

  17. В зависимости от настроек можно выключить или наоборот включить звук новых сообщений
    DialogPM by Sander v.1.0.14

  18. Иконка ниже позволяет в 2 раза увеличить высоту чата для удобства чтения длинных сообщений.
  19. Запоминается состояние кнопок сайдбара: "Список пользователей", "Приостановить обновление", "Без звука" и "Развернуть".



Настройки
  1. 'limit' => 100, - максимальное видимое количество сообщений в текущем диалоге
  2. 'search_limit' => 20, - максимальное количество отображаемых пользователей при поиске
  3. 'online_time' => 10, - сколько минут бездействия считать пользователя онлайн
  4. 'interval' => 7, - интервал между обновлениями чата
  5. 'offline' => 1, - через сколько минут бездействия переводить чат в оффлайн режим
  6. 'main_interval' => 10, - интервал обновления списка пользователей на главной странице модуля
  7. 'allow_ignore' => true, - разрешить использовать игнорирование (в случае запрета, кнопки и тексты в шаблоне нужно будет убрать вручную)
  8. 'soundoff' => 0, - выключить звук. Т.е. по умолчанию изначально кнопка отключения звука будет активной
  9. 'stopupdate' => 0, - выключить автообновление чата.
  10. 'allow_search' => true, - разрешить использовать поиск пользователей на сайте
  11. 'send_email' => true, - отправлять на почту уведомление о новом сообщении.
  12. 'email_subj' => 'Новое персональное сообщение', - заголовок/тема письма
  13. 'pm_subj' => 'Новое ЛС', - модулем не используется, но т.к. используется стандартная таблица для хранения писем - необходимо указывать заголовок письма. Да и в шаблоне email сообщения используется тема.
  14. 'feedback_only' => false, - запретить пользователям общаться между собой, только с заданными списком контактов
  15. 'feedback_users' => [], - через запятую логины пользователей которым можно писать сообщения, если включен параметр выше



Шаблоны
  1. 404.tpl - страница ошибки, если указан не существующий URL или пользователь
  2. dialog.tpl - страница диалога
  3. dialog_item.tpl - шаблон сообщений (включая разделитель-дату)
  4. editor.tpl - форма редактора
  5. ignore.tpl - страница игнорируемых пользователей
  6. index.tpl - индексная страница, основная оболочка
  7. main.tpl - главная страница
  8. menu.tpl - меню профиля пользователя
  9. userlist.tpl - шаблон пользователя в списке



Демо
Адрес: d130.sandev.pro
Логины: test, crazybird, greenrabbit, angryapple
У всех пользователей из групп "Журналист" и "Главный редактор" - пароль test



Информация
Стоимость модуля 8wmz
Количество лицензий в комплекте: 2шт
Стоимость дополнительной лицензии: 3wmz
Для работы модуля требуется ionCube Loader v.6.x и старше (для PHP 7.x версия куба должна быть 10.x)
Версия DLE: 10.1 - 17.1 (На старых версиях DLE рекомендуется использовать только BB редактор)
Версия PHP: 5.4 - 8.2 (кроме 8.0)
Кодировка: UTF-8

Купить модуль: shop.sandev.pro


Контакты
Skype: sander8804
Telegram: @Sandev
ICQ: 404-037-556
E-Mail: oleg.sandev@gmail.com


История изменений
v.1.0.1
+ Добавлен запрет на отправку сообщений, если в группе пользователя получателя отключено разрешение использования ЛС.
* Исправлено возникновение ошибки об истечении пользовательской сессии

v.1.0.2 от 10.04.2019
* Исправлен баг связанный с работой интерфейса при удалении и очистке диалога


v.1.0.3 от 23.05.2019
+ Добавлен файл лицензии для PHP 7.3
* Убрана проверка сессии, отчего часто у пользователей вылетала ошибка

v.1.0.4 от 15.11.2019
+ Добавлена возможность ограничить количество пользователей в списке диалогов

v.1.0.5 от 02.04.2020
* Убрано отображение удаленных пользователей из списка диалогов

v.1.0.6 от 05.04.2020
* Пользователю получателю не отправляется письмо на E-Mail, если он считается "онлайн" на сайте

v.1.0.7 от 27.08.2020
+ При поступлении нового сообщения, в DLE в модальном окне уведомлении, кнопка "Прочитать сообщение" теперь открывает сразу диалог с автором

v.1.0.8 от 20.01.2021
* Исправлена локализация. Фразы "недавно", "сегодня" и "вчера" перенесены в языковые файлы
+ Добавлена поддержка PHP 7.4

v.1.0.9 от 18.03.2021
* Исправлены префиксы PREFIX - USERPREFIX

v.1.0.10 от 01.06.2021
* Исправлена работа тега {%url%} в шаблоне E-Mail сообщения (#comment-id-2812)

v.1.0.11 от 04.10.2021
+ Добавлена поддержка DLE 15.0

v.1.0.12 от 15.02.2022
+ Добавлена поддержка DLE 15.1 в установщике плагина

v.1.0.13 от 16.10.2022
+ Добавлена поддержка PHP 8.1
+ Добавлена поддержка DLE 15.3

v.1.0.14 от 13.04.2024
+ Добавлена поддержка PHP 8.2

С уважением,
Олег Александрович a.k.a. Sander