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

Discussion in 'Модернизация расширений' started by Zivl_Ru, Oct 2, 2007.

  1. Offline

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

    Joined:
    Sep 21, 2007
    Messages:
    5
    Likes Received:
    0
    Gender:
    Male
    Нужно чтобы после размещения/изменения контента, оповещение высылалось не на админку, а на e-mail корректору. После проверки сообщение должно приходить автору. Может есть какое расширение? Вроде всё пересмотрел - ничего не нашёл...
    Заранее благодарен.
     
  2.  
  3. OlegM
    Offline

    OlegM Russian Joomla! Team Staff Member

    Joined:
    Apr 12, 2007
    Messages:
    4,310
    Likes Received:
    375
    Gender:
    Male
    Ответ: Оповещение о размещении/изменении контента на e-mail

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

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

    Joined:
    Sep 21, 2007
    Messages:
    5
    Likes Received:
    0
    Gender:
    Male
    Ответ: Оповещение о размещении/изменении контента на 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 Доброта

    Joined:
    Mar 12, 2007
    Messages:
    5,094
    Likes Received:
    158
    Gender:
    Male
    Ответ: Оповещение о размещении/изменении контента на 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 и сделать его доступным авторам (в вашем случае это менеджеры) объяснять не буду...сам компонент можно найти на этом форуме.
     

Share This Page

Loading...