Оповещение о размещении/изменении контента на e-mail

Тема в разделе "Модернизация расширений", создана пользователем Zivl_Ru, 02.10.2007.

  1. Offline

    Zivl_Ru Недавно здесь

    Регистрация:
    21.09.2007
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Нужно чтобы после размещения/изменения контента, оповещение высылалось не на админку, а на e-mail корректору. После проверки сообщение должно приходить автору. Может есть какое расширение? Вроде всё пересмотрел - ничего не нашёл...
    Заранее благодарен.
     
  2.  
  3. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 356
    Симпатии:
    370
    Пол:
    Мужской
    Ответ: Оповещение о размещении/изменении контента на e-mail

    Я тоже не видел. Надо ковырять com_content
     
  4. Offline

    Zivl_Ru Недавно здесь

    Регистрация:
    21.09.2007
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Оповещение о размещении/изменении контента на e-mail

    В общем, решил проблему.
    Задача была такая:
    1. Автор размещает материал и, не публикуя, отсылает сообщение корректору.
    2. Корректор проверяет и сообщает автору.
    3. Автор публикует материал.
    Пробовал разные варианты, пришёл к мнение что самое удобное - воспользоваться стандартной Джумловской функцией отправки ссылки на страницу. В файле components\com_content\content.html.php нашёл функцию, которая отвечает за отправку сообщения. Называется она EmailIcon (function EmailIcon). Чтобы скрыть пиктограмму от обычных пользователей (наверное, можно как-то сделать копию функции, нго у меня не получилось. Решил что не очень то она и нужна посетителям...) в строку
    Код (PHP):
    1. if ( $params->get( 'email' ) && !$params->get( 'popup' ) && !$hide_js )
    вставил разрешение на просмотр только менеджерам и корректорам. Получилось вот что:
    Код (PHP):
    1. if ( $params->get( 'email' ) && !$params->get( 'popup' ) && !$hide_js & $my->usertype == 'Manager' || $my->usertype == 'Corrector' )
    Теперь ищем где формируется форма. Функция называется emailForm (function emailForm). И в предыдущей и в этой функциях добавляем глобальную переменную $my в global. Так как нужно сделать сообщения от менеджеров и корректоров, копируем поля формы и пишем:
    Код (PHP):
    1. //Форма для авторов
    2. <?php  if ($my->usertype == 'Manager') {
    3. //Поля формы
    4. }
    5. <?php  if ($my->usertype == 'Corrector') {
    6. //Поля формы
    7. }
    В описания полей (<input type="text"...) Добавляем параметр value, чтобы не заполнять форму вручную:
    Адрес корректора (_EMAIL): value="<?php echo "ххх@хххх.ru" ; ?>"
    Имя отправителя (_EMAIL_YOUR_NAME): value="<?php echo $my->name ; ?>"
    Адрес отправителя (_EMAIL_YOUR_MAIL): value="<?php echo $my->email ; ?>"
    Тему письма (_SUBJECT_PROMPT): value="Ххххххххххх"
    Так же заполняем письмо автору. Единственная проблемма - не знаю как вставить мыло автора :( Может кто подскажет?
    В файле language\russian.php, если надо, находим строку DEFINE('_EMAIL_MSG' и корректируем сообщение (тело письма) и добавляем ещё одно сообщение, которое будет приходить от корректора.
    В файле components\com_content\content.php находим:
    Код (PHP):
    1. // message text
    2.                 $msg = sprintf( _EMAIL_MSG, html_entity_decode( $mosConfig_sitename, ENT_QUOTES ), $yourname, $youremail, $link );
    , делаем копию и описываем в каком случае какое сообщение будет передаваться:
    Код (PHP):
    1. // message text
    2.           if ($my->usertype == 'Manager'){
    3.                 $msg = sprintf( _EMAIL_MSG, html_entity_decode( $mosConfig_sitename, ENT_QUOTES ), $yourname, $youremail, $link );
    4.                 }
    5.           if ($my->usertype == 'Corrector'){
    6.                 $msg = sprintf( _EMAIL_COR, html_entity_decode( $mosConfig_sitename, ENT_QUOTES ), $yourname, $youremail, $link );
    7.                 }

    Ну вот и всё.
    Не судите строго, так как не знаю не только PHP, но и программирования вообще)))
    Спасибо тем кто пишет в форумах:)
    З.Ы. Да, чуть не забыл! Эта функция отказывается работать с неопубликованными объектами, уж как я только её не ковырял!!! Делаем так - документ ставим "опубликован", а уровень доступа "специальный", ну а после проверки - в "общий".
     
  5. Fanamura
    Offline

    Fanamura Доброта

    Регистрация:
    12.03.2007
    Сообщения:
    5 108
    Симпатии:
    159
    Пол:
    Мужской
    Ответ: Оповещение о размещении/изменении контента на e-mail

    Вы молодец. :)
    Можно проще. Немного хакнув компонент ja_sumbit
    в файле components\com_ja_submit\ja_submit.php в районе 203 строки есть:

    Код (CODE):
    1. //sending emails
    2. ...
    3. $headers = "From: ".$mosConfig_mailfrom."\r\n" .
    4.    'Reply-To: '.$mosConfig_mailfrom."\r\n";

    $mosConfig_mailfrom определяется в глобальной конфигурации и является имейлом администратора, но вам ничего не мешает занемить их на другие или дополнить
    например так:
    Код (CODE):
    1. $core1 = '1111@2222.ru';
    2. $headers = "From: ".$core1."\r\n" .
    3.    'Reply-To: '.$core1."\r\n";

    Затем в настройках самбита:
    Доступные категории Выберите категории, в которые пользователь сможет отправлять публикации
    Группы для автопубликации
    Выберите группы пользователей, для которых будет разрешена АВТОМАТИЧЕСКАЯ публикация отправляемых сообщений

    Выберите "None" если Вы НЕ хотите разрешать АВТОМАТИЧЕСКУЮ публикацию сообщений
    Категории для автопубликации
    Выберите категории, в которых будет разрешена АВТОМАТИЧЕСКАЯ публикация сообщений

    Выберите "None" если Вы НЕ хотите разрешать АВТОМАТИЧЕСКУЮ публикацию сообщений

    без комментариев.
    ===============
    Что получаем: автор размещает материал, который не публикуется и нигде, кроме админки разумеется, не выводится, ВСЕ его данные, включая адрес имейл отсылаются корректору, корректор проверяет, отвечает автору, автор из админки публикует материал.

    Как сделать пункт меню для ja_submit и сделать его доступным авторам (в вашем случае это менеджеры) объяснять не буду...сам компонент можно найти на этом форуме.
     

Поделиться этой страницей

Загрузка...