DialogPM v.1.0.3 by Sander для DLE

DialogPM v.1.0.3 by Sander

DialogPM v.1.0.3 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.3 by Sander

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

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

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



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

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

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


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

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



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

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

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



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

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

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

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

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

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

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

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

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

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

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

  17. В зависимости от настроек можно выключить или наоборот включить звук новых сообщений
    DialogPM v.1.0.3 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 и старше
Кодировка: 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
* Исправлен баг связанный с работой интерфейса при удалении и очистке диалога


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


С уважением,
Олег Александрович a.k.a. Sander
Купить модуль
  • Стоимость модуля: $8
  • В комплекте: 2 лицензии
  • Стоимость дополнительной лицензии: $3
Комментарии: (49)
  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
    Посетитель 14 ноября 2018 18:22 #
    Хотелось бы лимиты и настройки вынести в настройки групп, и сделать крон для удаления старых сообщений, опять же в настройках групп у каждой из них задавать сколько хранить сообщения для данной группы.
    0
  5. foto
    VIP 25 декабря 2018 21:12 #
    Для 1251 для работы модуля, достаточно будет только файлы перекодировать или не поможет?
    0
    1. foto
      Администратор 25 декабря 2018 21:50 #
      Нет. 1251 модуль не поддерживает.
      0
  6. foto
    Клиент 11 января 2019 21:52 #
    Сандер, в модуле есть возможность возможность ограничивать доступ к ЛС определенным группам юзеров?
    допустим двум группам на сайте запрещено использование ЛС, и надо чтобы ни они не могли никому писать, не этим группам не смогли отправить ЛС.
    0
    1. foto
      Администратор 12 января 2019 00:48 #
      Да, можно.
      В настройках групп пользователей DLE. При этом отображается стандартная ошибка с сообщением, что группа пользователя не может использовать ЛС.
      0
  7. foto
    Клиент 12 января 2019 03:29 #
    Да, эта настройка есть но она в стандарте работает только в одностороннем порядке, тоесть юзеры этой группы написать не могут но из других им групп могут написать, прочитать на сайте они не могут, но при включенном уведомлении об ЛС на имейл, они прочитают на почте прислАнное им ЛС. В твоем модуле такого бага нет?
    0
    1. foto
      Администратор 12 января 2019 18:25 #
      Баг был. Исправил в v.1.0.1
      0
      1. foto
        VIP 14 января 2019 03:04 #
        Спасибо!
        А какие файлы изменены? Чтобы всё не перезаливать.
        0
        1. foto
          Клиент 14 января 2019 05:40 #
          Там в txt указано... Вы бы скачали сначала...
          +2
          1. foto
            VIP 14 января 2019 20:51 #
            Опередил события )) Дякую!
            0
  8. foto
    Клиент 12 января 2019 03:43 #
    "FastPM v2.0" ))
    Хороший модуль, спасибо!
    0
  9. foto
    Гость 13 января 2019 20:32 #
    Еще бы расширить данный модуль глобально.

    Модуль интеграции между сайтами на dle.

    Акаунты login@dle-domane.com
    Чат именно между сайтами с интеграцией в личные сообщения.

    Нужен сервер мессенжера для авторизации.
    Логично офсайт разработчика типа im.dle-news.ru


    Если нельзя отправить сообщение, тогда отправляется email на почту указанную в аккаунте сайта.
    0
  10. foto
    Клиент 18 января 2019 02:32 #
    Приобрел, тестирую, пока все нравится. Но.. по прежнему можно отправить стандартное ЛС из карточки popup и профиля пользователя, всплывает стандартное окно с формой отправки ЛС и сообщение отправляется даже юзеру из запрещенной группы. Как в этом случае быть? просто убрать кнопки отправки лс из карточки и профиля? или нужно тогда где то заменить стандартный адрес
    с
    http://site.com/index.php?do=pm&doaction=newpm&username=логинюзера
    на
    http://site.com/pm/
    0
    1. foto
      Администратор 20 января 2019 11:52 #
      Модуль умеет перехватывать ссылки вида
      /index.php?do=pm&doaction=newpm&username=логинюзера
      Но в профиле у этой кнопки стоит принудительный JS обработчик который открывает окно DLE.

      Внимание! У Вас нет прав для просмотра скрытого текста.
      +1
  11. foto
    Клиент 18 января 2019 03:45 #
    Еще я сам себе могу писать лс, не знаю даже можно ли это считать багом, но думаю стоит это исправить.
    -1
    1. foto
      Клиент 18 января 2019 06:14 #
      Вконтакте Вы тоже можете благополучно поговорить наедине с самим собой.
      0
      1. foto
        Посетитель 22 января 2019 04:55 #
        У ВК полно лишних стоек под БД, у DLE сайтов обычно такого нет.
        0
  12. foto
    Гость 21 января 2019 17:38 #
    Сюда бы еще функцию, чтобы админов можно было добавлять в диалог других людей, типо групповой чат. Типо решение конфликтов.
    +1
    1. foto
      Администратор 23 января 2019 14:25 #
      В текущей реализации - это в принципе невозможно.
      Он использует БД и структуру хранения сообщений самого DLE.

      Нужный вам модуль должен работать по совершенно другим алгоритмам.
      0
      1. foto
        Посетитель 24 января 2019 10:45 #
        Завязываться на таблицу _pm была плохой идеей, структура персональных сообщений в DLE как минимум дико устарела и одной ногой торчит из начала 2000-ых, а второй опирается на костыль...

        Нужно было полностью отдельный модуль делать, с лёгким обменом картинками и файлами в сообщениях с очень гибкой системой настроек, жалобой на спам и прочим...
        0
        1. foto
          Администратор 24 января 2019 12:32 #
          Напишите ваш модуль.
          Покажите пример, как надо.
          0
          1. foto
            Посетитель 10 февраля 2019 23:39 #
            Ясно, ЧСВ столкнулось с критикой выбора структуры...
            -4
  13. foto
    Клиент 24 января 2019 12:54 #
    Модуль идеален, очень толково все продуманно и реализовано, от технической части до внешнего вида, юзабельности и множества настроек. Модуль сейчас не уступает ни каким современным мессинджерам по сути, в нем все есть для активного общения, и картинки и видео вставки, а в каких таблицах там хранятся сообщения, вообще до лампочки, главное функционал. Мои пользователи уже оценили обнову и безмежно благодарят, и я тоже.
    Считаю что Разработчики DLE, просто обязаны выкупить мод и запустить его в новые версии.
    +2
  14. foto
    Гость 13 февраля 2019 13:32 #
    Не хватает какой-нибудь метки о том, с какой новости открыли этот диалог.
    Вот допустим есть у нас сайт, на который пользователи могут добавлять различные модули для DLE. У каждой новости разный автор. Захотел я уточнить у автора, работает ли его модуль на версии DLE 13.1. Написал ему сообщение по ссылке из его новости. На следующий день он мне присылает ответ, а я не помню про какой модуль я спрашивал, потому что в тот день я написал 10-рым таким авторам. Вот и хотелось бы, чтобы под именем было написано название новости из которой я написал сообщение.
    0
  15. foto
    Гость 13 февраля 2019 13:35 #
    Может даже организовать диалог с новостью. Вместо имени автора новости её название. Это как обратная связь.
    0
    1. foto
      Администратор 13 февраля 2019 14:30 #
      Нет, подобный функционал не планируется добавлять.
      0
  16. foto
    Клиент 29 апреля 2019 15:16 #
    Нравится отношения автора к клиентам.

    Радует, что модуль будучи закодированный можно изменить под себя. В отличии от других авторов (), ту же тенденцию заметил и у LazyDev) Если мне не показалось, так же хочу сказать отдельное спасибо за вменяемые цены на модули.
    +1
  17. foto
    Клиент 28 мая 2019 00:40 #
    Приветствую. А можно уменьшить интервал времени при котором была бы запись времени в БД? Не как сейчас, что каждое сообщение с временем т.е ежесекундно. Надеюсь поняли)
    0
    1. foto
      Администратор 28 мая 2019 13:45 #
      Если вы про дату последнего посещения пользователя, то запрос не выполняется каждый раз.
      Интервал обновления составляет половину от параметра
      // Сколько минут после последнего посещения считать онлайном
      'online_time' => 10,
      0
      1. foto
        Клиент 29 мая 2019 02:03 #
        не, я про время между сообщениями
        0
        1. foto
          Администратор 29 мая 2019 14:43 #
          Нет. И не планирую как-либо ограничивать пользователей в этом плане.
          Так же не вижу смысла объединять сообщения или скрывать время.
          Лишняя работа и усложнение фукнционала ради крайне сомнительной необходимости.
          0
          1. foto
            Посетитель 30 мая 2019 10:32 #
            Поскольку это формат чата, стоило бы добавить всё таки таймаут на объединение сообщений при определённых условиях (например получатель его ещё не прочитал).

            Юзеры любят строчить тексты, особенно есть индивидуумы отправляющие предложение по словам построчно, а это каждая строка = 1 записи в БД.
            +1
            1. foto
              Клиент 8 июня 2019 10:27 #
              Согласенс
              0
  18. foto
    Клиент 30 мая 2019 11:56 #
    Можно ли сделать чтобы при просмотре новых сообщений, количество непрочитанных сообщений уменьшалось.
    Так как сейчас, если пришло 5 новых сообщений, я открыл из них только 3 у меня будут висеть все 5 непрочитанных сообщений.
    Перезагрузка страницы помогает, но неплохо было бы без неё.
    0
    1. foto
      Администратор 30 мая 2019 17:49 #
      Внимание! У Вас нет прав для просмотра скрытого текста.
      +1
      1. foto
        Клиент 5 июня 2019 23:05 #
        Найти строку
        var dpmLang = {js_lang};

        Ниже вставить:
        var dpm_unread = {pm_unread};

        Здесь ошибка. Вместо var должно быть let.

        Отметка о сообщениях пропадает при переходе к другому диалогу.
        Хотелось бы, чтобы сразу при открытии диалога пропадала иконка с уменьшенным количеством сообщений
        0
        1. foto
          Администратор 18 июня 2019 10:24 #
          Внимание! У Вас нет прав для просмотра скрытого текста.
          0
          1. foto
            Клиент 18 июня 2019 10:37 #
            Спасибо, работает. Но при всех прочитанных сообщениях остаётся иконка с 0. После перезагрузки пропадает вовсе. понимаю, что это дело в шаблоне, но можно какое либо пояснение какая переменная отвечает за количество новых сообщений, чтобы сделать проверку на 0 и удалить иконку
            0
            1. foto
              Администратор 18 июня 2019 10:38 #
              Она указана в скобках.
              0
  19. foto
    Клиент 19 июня 2019 21:43 #
    Купил, установил и сайт не работает вообще, как исправить ? dle 11.1
    0
    1. foto
      Администратор 20 июня 2019 11:48 #
      Разобрались в частном порядке.
      Практически всегда, когда возникает ошибка Internal Server Error - проблема в .htaccess файле.
      В данном случае проблема была в кодировке, UTF8 with BOM
      Т.е. в конце файла размещался специальный юникод BOM символ, который апач не мог обработать, отчего и вылетала ошибка.
      +2
      1. foto
        Клиент 20 июня 2019 14:57 #
        Спасибо помог, все отлично. Хороший модуль
        0
Добавить комментарий
  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2019.
При копировании, ссылка на источник обязательна.