Данный материал предоставлен сайтом ProWebber.cc исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Скачать бесплатно DialogPM by Sander.
Скачать бесплатно DialogPM by Sander.
Продвинутая система общения между пользователями.
Модуль реализован по принципу чата, где сообщения обновляются в режиме реального времени.
За основу внешнего вида взят интерфейс телеграма и адаптирован в рамках web интерфейса и возможностей DLE.
Данный модуль я делал очень продолжительное время. Постоянно что-то переделывал или добавлял. Вот буквально на днях перед релизом добавил еще один достаточно интересный функционал для использования ЛС в качестве обратной связи с администрацией сайта. Но лучше распишу все по порядку.
Большая просьба полностью ознакомиться с описанием модуля. Практически на все вопросы вы сможете найти ответы в этой статье.
Особенности
[*] Модуль доступен только по реальному адресу example.com/pm/
[*] У каждой беседы свой URL: example.com/pm/Логин_Пользователя/
[*] Адаптивная верстка
[*] Совместимость со стандартными ЛС. Достаточно установить модуль и все старые сообщения будут отображаться в чате
[*] Очень простая установка
[*] Все действия выполняются на AJAX (за исключением перехода по страницам)
[*] Можно запретить пользователям общаться друг с другом и использовать модуль только как обратную связь с заданным списком пользователей.
[*] На 98% открытый исходный код.
[*] Никакого html в php файлах. Все в шаблонах.
[*] Русская и Английская локализация. Можно легко добавить свой языковый файл. Но в шаблонах нужно будет вручную менять тексты.
Главная страница
На главной странице всегда отображается сайдбар и пустой "контент". Если у группы пользователей есть ограничение на количество сообщений, то в верхней части будет отображаться прогресс бар. Если ограничений нет, то и прогресс бара соответственно тоже не будет:
В сайдбаре есть кнопка меню, поиск и список пользователей.
Еще важный момент. Верстка модуля сделана с поддержкой адаптивности, на мобильных устройствах главная страница будет принимать следующий вид:
Меню и поиск опишу отдельно. Список пользователей формируется и сортируется по дате последнего сообщения, входящего или исходящего. При этом новые не прочитанные сообщения будут всегда в начале списка.
В строке пользователя указывается: полное имя (или логин), дата последнего сообщения, логин и группа пользователя.
Так же на аватарке в виде кружочка показывается статус пользователя.
Список собеседников обновляется на AJAX с заданным интервалом. При получении нового сообщения в заголовок страницы будет дописано количество новых сообщений.
Меню пользователя
При клике на иконку меню на AJAX поверх окна подгружается меню. В нем можно очистить всю историю переписок, перейти на страницу игнорируемых пользователей (в скобочках указано их количество) и посмотреть статистику сообщений.
Если у группы пользователя есть ограничение на количество сообщений, то это будет так же отображено в статистике.
Думаю вы обратили внимание, что исходящих сообщений 8, а из них не прочитанных 13. Такое возможно когда пользователь написал сообщение и удалил его. А принимающая сторона еще не прочитала. Поэтому получается, что фактически в исходящих сообщения нет, но в реальности оно есть у принимающей стороны и оно еще не прочитано.
Игнорируемые пользователи
При клике на крестик выскочит стандартное окно подтверждения действия. При клике на сам блок профиля будет выполнен переход на страницу диалога с пользователем. При клике на иконку пользователей в левой колонке будет показан текущий список собеседников для быстрого перехода к диалогу.
Поиск пользователей
Я очень старался сделать его удобным и наглядным, надеюсь у меня получилось.
[*] Поиск выполняется на AJAX.
[*] В качестве даты отображается дата последнего посещения.
[*] В списке выполняется подсветка искомого слова.
[*] Поиск и подсветка выполнятся сразу и в полном имени и в логине.
[*] Приоритет поиска идет по логину. У кого ближе к началу искомая фраза тот выше в выдаче, затем сортировка по алфавиту
[*] Поиск выполняется автоматически при вводе текста, с задержкой 600мс. Но можно нажать Enter, тогда поиск будет выполнен мгновенно.
Окно чата
[*] В верхней части указан профиль собеседника, справа в кружочке количество сообщений в беседе (скриншот сделан из профиля test).
[*] В основном окне чата полагаю все и так понятно, последнее сообщение еще не прочитано собеседником, поэтому помечено красной полоской.
[*] Между списком сообщений и формой ввода видна красная полоска, это визуализация обратного отсчета до следующего обновления чата. Полоску при желании можно легко убрать в шаблоне.
[*] Редактор можно использовать любой стандартный: BB, FroalaEditor или TinyMCE.
[*] Если пользователь отсутствовал некоторое продолжительное время, обновление чата будет приостановлено для предотвращения выполнения ненужных запросов, время можно поменять в настройках
[*] Меню своего сообщения
[*] Меню сообщения собеседника, отличие - отсутствие возможности редактирования и есть возможность пожаловаться. При удалении сообщения будет выскакивать окно подтверждения действия
[*] При редактировании сообщения редакторы не отображаются, но используется обработчик BB редактора.
[*] При получении нового сообщения от другого (не текущего) пользователя, в левой колонке будет показано число новых сообщений
[*] Развернутый список пользователей, текущий пользователь выделен.
Поиск работает так же как на главной.
[*] Архив сообщений отображается на отдельной странице, в нем ограниченный функционал, отображаются сразу все сообщения от новых к старым.
[*] Можно массово удалить выбранные сообщения
[*] Иконка стирательной резинки позволяет полностью удалить все сообщения в текущем диалоге.
[*] При клике на кнопку игнора редактор прячется
[*] Если же сам пользователь находится в игноре у получателя будет следующее сообщение:
[*] При желании можно приостановить автообновление чата или обновить чат вручную с помощью иконок
[*] В зависимости от настроек можно выключить или наоборот включить звук новых сообщений
[*] Иконка ниже позволяет в 2 раза увеличить высоту чата для удобства чтения длинных сообщений.
[*] Запоминается состояние кнопок сайдбара: "Список пользователей", "Приостановить обновление", "Без звука" и "Развернуть".
Настройки
'limit' => 100, - максимальное видимое количество сообщений в текущем диалоге
'search_limit' => 20, - максимальное количество отображаемых пользователей при поиске
'online_time' => 10, - сколько минут бездействия считать пользователя онлайн
'interval' => 7, - интервал между обновлениями чата
'offline' => 1, - через сколько минут бездействия переводить чат в оффлайн режим
'main_interval' => 10, - интервал обновления списка пользователей на главной странице модуля
'allow_ignore' => true, - разрешить использовать игнорирование (в случае запрета, кнопки и тексты в шаблоне нужно будет убрать вручную)
'soundoff' => 0, - выключить звук. Т.е. по умолчанию изначально кнопка отключения звука будет активной
'stopupdate' => 0, - выключить автообновление чата.
'allow_search' => true, - разрешить использовать поиск пользователей на сайте
'send_email' => true, - отправлять на почту уведомление о новом сообщении.
'email_subj' => 'Новое персональное сообщение', - заголовок/тема письма
'pm_subj' => 'Новое ЛС', - модулем не используется, но т.к. используется стандартная таблица для хранения писем - необходимо указывать заголовок письма. Да и в шаблоне email сообщения используется тема.
'feedback_only' => false, - запретить пользователям общаться между собой, только с заданными списком контактов
'feedback_users' => [], - через запятую логины пользователей которым можно писать сообщения, если включен параметр выше
Шаблоны
404.tpl - страница ошибки, если указан не существующий URL или пользователь
dialog.tpl - страница диалога
dialog_item.tpl - шаблон сообщений (включая разделитель-дату)
editor.tpl - форма редактора
ignore.tpl - страница игнорируемых пользователей
index.tpl - индексная страница, основная оболочка
main.tpl - главная страница
menu.tpl - меню профиля пользователя
userlist.tpl - шаблон пользователя в списке
Демо
Адрес: d130.sandev.pro
Логины: test, crazybird, greenrabbit, angryapple
У всех пользователей из групп "Журналист" и "Главный редактор" - пароль test
Логины: test, crazybird, greenrabbit, angryapple
У всех пользователей из групп "Журналист" и "Главный редактор" - пароль test
Информация
Стоимость модуля 8wmz
Количество лицензий в комплекте: 2шт
Стоимость дополнительной лицензии: 3wmz
Для работы модуля требуется ionCube Loader v.6.x и старше (для PHP 7.x версия куба должна быть 10.x)
Версия DLE: 10.1 и старше (На старых версиях DLE рекомендуется использовать только BB редактор)
Версия PHP: 5.4 и старше
Контакты
Skype: sander8804
Telegram: @Sandev
ICQ: 404-037-556
E-Mail: [email protected]
С уважением,
Олег Александрович a.k.a. Sander