Сообщения

Любая помощь по установке/настройке/модификации concrete5

Сообщения

Сообщение fallingfalling » 11 июл 2011, 16:22 ,  »  Сообщение:#1

Здравствуйте. У меня возник вот такой вопрос, в личном кабинете пользователя есть такая функция, называется Сообщения. При переходе в этот раздел появляется список Входящих и исходящих сообщений... Ну как список, просто табличка. Так вот, вопрос след., облазил всё, так и не понял как писать личные сообщения. Есть ли толк вообще от этого раздела в личном кабинете?
Аватара пользователя
fallingfalling
 
Сообщения: 36
Зарегистрирован: 27 июн 2011, 23:52
Откуда: Курчатов

Re: Сообщения

Сообщение Count_Raven » 12 июл 2011, 12:29 ,  »  Сообщение:#2

Объясняю:

Чтобы писать личные сообщения, пользователь, которому вы хотите отправить сообщение, должен включить у себя в профиле (поставить галку) Хочу принимать личные сообщения от пользователей.

Если у пользователя в профиле это включено, то Вы, зайдя к этому пользователю в профиль, увидите кнопку "Отправить сообщени" или "Send private message" и сможете ему написать.

Чтобы это работало, у пользователей должен быть атрибут. Тут баг был в какой-то версии, то ли в текущей, то ли в прошлой, что при установке этот атрибут не добавлялся. Сча посмотрю какой.

Вот, посмотрел:
Должен быть у пользователей атрибут profile_private_messages_enabled, это его дескриптор (handle), а назвать Вы его можете "Я хочу получать личные сообщения от других пользователей". Тип - флажки (checkbox).

Посмотрите, есть ли он у Вас, если есть - просто пусть пользователи у себя в профиле включат его, чтобы получать мессаги.
Если его нет - создайте его.

Можно еще один атрибут добавить, тогда оповещения о новых личных сообщениях будут приходить пользователю на электронную почту.

Проблема описана тут:
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку



Вообще система весьма полезная - такая внутренняя почта. Я эту систему модернизировал на сайте realtmir.ru (социальная сеть для людей, занимающихся недвижимостью и агентств недвижимости) и там как в социальных сетях - при новом сообщении сверху страницы мигает конвертик с количеством новых сообщений. Вообще там можно много прикрутить.

Есть там еще небольшой баг с удаленными пользователями, я его пару месяцев назад отправлял на Bug Tracker. Он принят. Думаю, исправят в следующей версии. Находится тут:
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку


Вооот ;-)
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

Re: Сообщения

Сообщение fallingfalling » 12 июл 2011, 13:25 ,  »  Сообщение:#3

Count_Raven, огромное спасибо! Добавил атрибут и всё заработало.
А реально ли сделать чтоб оповещения о новых сообщениях на сайте отображались?
Аватара пользователя
fallingfalling
 
Сообщения: 36
Зарегистрирован: 27 июн 2011, 23:52
Откуда: Курчатов

Re: Сообщения

Сообщение Count_Raven » 12 июл 2011, 14:23 ,  »  Сообщение:#4

Конечно реально, у меня на realtmir.ru отображаются.

Приведу пример из моего кода:

Код: Выделить всё
    Loader::model('user_private_message'); // загружаем модель
    $db = Loader::db(); // загружаем хелпер для базы данных
    $u = new User(); // создаем статичный объект пользователя

    if ($u->isRegistered() && $u->isLoggedIn()) { // проверяем, пользователь у нас в сети =)
        $ui = UserInfo::getByID($u->getUserID()); // берем ID пользователя
        $msgMailboxID = UserPrivateMessageMailbox::MBTYPE_INBOX; // Берем идентификатор ящика для сообщений для текущего пользователя
        $new_messages = $db->getRow('SELECT COUNT(*) AS cnt FROM UserPrivateMessagesTo WHERE msgIsNew = 1 AND msgMailboxID = ? and uID = ?', array($msgMailboxID, $ui->getUserID())); // ищем новые сообщения
        $new_messages_count = intval($new_messages['cnt']); // берем их количество

        if ($new_messages_count > 0) {
               // если количество новых сообщений больше 0, то тут что-нибудь делаем, у меня тут выводится конвертик мигающий с количеством новых сообщений
        }


Это просто можно вставить в шаблон, в место, где должна отображаться ссылка на новые сообщения. Можно из этого сделать AJAX-скрипт, который будет не только при обновлении страницы, а и при появлении нового сообщения сразу сигнализировать пользователю об этом. Ну тогда надо будет добавить AJAX-запрос на JavaScript с setInterval, который будет, например, каждую минуту проверять состояние и сигнализировать в случае появления новых сообщений.
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

Re: Сообщения

Сообщение fallingfalling » 14 июл 2011, 18:30 ,  »  Сообщение:#5

никак не могу сообразить... извиняюсь за тупость
копирую вышеприведенный код, вставляю на сайт с помощью модуля "php блок", но ничего не отображается
Аватара пользователя
fallingfalling
 
Сообщения: 36
Зарегистрирован: 27 июн 2011, 23:52
Откуда: Курчатов

Re: Сообщения

Сообщение Count_Raven » 16 июл 2011, 16:53 ,  »  Сообщение:#6

fallingfalling писал(а):никак не могу сообразить... извиняюсь за тупость
копирую вышеприведенный код, вставляю на сайт с помощью модуля "php блок", но ничего не отображается


Давайте в понедельник или завтра. Объясню.
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

Re: Сообщения

Сообщение fallingfalling » 16 июл 2011, 19:23 ,  »  Сообщение:#7

Count_Raven писал(а):Давайте в понедельник или завтра. Объясню.

Хорошо :)
Аватара пользователя
fallingfalling
 
Сообщения: 36
Зарегистрирован: 27 июн 2011, 23:52
Откуда: Курчатов

Re: Сообщения

Сообщение Count_Raven » 20 июл 2011, 14:43 ,  »  Сообщение:#8

Блин, все время не найду.

Попробуйте так:
Добавьте (может PHP-блок, я им никогда в жизни не пользовался), либо где-то в шаблоне добавьте тот же код, только я тут правочку сделал:

Код: Выделить всё
    Loader::model('user_private_message'); // загружаем модель
    $db = Loader::db(); // загружаем хелпер для базы данных
    $u = new User(); // создаем статичный объект пользователя

    if ($u->isRegistered() && $u->isLoggedIn()) { // проверяем, пользователь у нас в сети =)
        $ui = UserInfo::getByID($u->getUserID()); // берем ID пользователя
        $msgMailboxID = UserPrivateMessageMailbox::MBTYPE_INBOX; // Берем идентификатор ящика для сообщений для текущего пользователя
        $new_messages = $db->getRow('SELECT COUNT(*) AS cnt FROM UserPrivateMessagesTo WHERE msgIsNew = 1 AND msgMailboxID = ? and uID = ?', array($msgMailboxID, $ui->getUserID())); // ищем новые сообщения
        $new_messages_count = intval($new_messages['cnt']); // берем их количество

        if ($new_messages_count > 0) {
               echo '<a href="/index.php/profile/messages/">У вас есть новые сообщения ('.$new_messages_count.')</a>';
        }



1. Создайте двух пользователей, включите у них возможность отправлять и принимать сообщения.
2. Зайдите под одним пользователем и отправьте второму сообщение.
3. Зайдите под вторым пользователем, только не ходите на страницу сообщений в профиле, а то они уже сразу отметятся просмотренными, а не новыми. И вы должны увидеть ссылку "У вас есть новые сообщения (1)" на месте вашего PHP-блока или там, где вы это в шаблон добавили (если решили добавлять в шаблон, я просто такие вещи прямо в шаблон всегда прописываю).
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

Re: Сообщения

Сообщение fallingfalling » 25 июл 2011, 16:58 ,  »  Сообщение:#9

Всё получилось, спасибо )
Аватара пользователя
fallingfalling
 
Сообщения: 36
Зарегистрирован: 27 июн 2011, 23:52
Откуда: Курчатов


Вернуться в Помощь по concrete5

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron