DialogPM v.1.0 by Sander для DLE

DialogPM v.1.0 by Sander

DialogPM v.1.0 by Sander

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


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


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



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

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

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

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



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

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

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


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

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



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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

  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 и старше (На старых версиях DLE рекомендуется использовать только BB редактор)
Версия PHP: 5.4 и старше

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


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


С уважением,
Олег Александрович a.k.a. Sander
Купить модуль
  • Стоимость модуля: $8
  • В комплекте: 2 лицензии
  • Стоимость дополнительной лицензии: $3
Комментарии: (8)
  1. foto
    Клиент 13 августа 2018 14:18 #
    Ура, нарешті дочекався, дякую, зара затестую)
    0
    1. foto
      Администратор 13 августа 2018 14:19 #
      Пока что можете не спешить.
      Я еще архив с инструкцией не упаковал :)
      0
  2. foto
    Клиент 13 августа 2018 14:39 #
    для использования ЛС в качестве обратной связи с администрацией сайта

    Вот если бы гостям можно было использовать ЛС, можно было бы этим модулем полностью заменить обратную связь.

    Видно, что Вы над модулем постарались :) И цена небольшая, особенно за 2 лицензии.
    +1
    1. foto
      VIP 13 августа 2018 16:13 #
      Тоже интересует данный вариант
      0
    2. foto
      Администратор 13 августа 2018 16:37 #
      Не, многовато переделывать.
      Сама структура БД завязана на ID пользователя, соответственно модуль тоже.
      +1
      1. foto
        VIP 13 августа 2018 18:12 #
        Может быть в будущем)

        Спасибо за крутые модули!
        0
  3. foto
    VIP 13 августа 2018 18:35 #
    Замечательно! Забрал ))
    Спасибо!
    +1
  4. foto
    Посетитель Вчера, 18:22 #
    Хотелось бы лимиты и настройки вынести в настройки групп, и сделать крон для удаления старых сообщений, опять же в настройках групп у каждой из них задавать сколько хранить сообщения для данной группы.
    0
Добавить комментарий
  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2018.
При копировании, ссылка на источник обязательна.