Сообщение о ЧЕРНОВИКЕ

Отнял у пользователей возможность публиковать тикеты для создания, так называемой, модерации, по этому рецепту: https://bezumkin.ru/sections/components/2957/

Работает, но, на почту теперь не приходит оповещение о появлении нового тикета. При публикации письмо с уведомлением об этом приходить, а вот если пользователь сохраняет черновик — нет.

Как решить этот вопрос и получать уведомление при создании тикета в даже в черновиках?
Виктор
22 сентября 2016, 06:23
modx.pro
2 365
0

Комментарии: 18

Виктор
Виктор
22 сентября 2016, 13:27
0
может хотя бы кто то знает, где приписана отправка письма?
    Роман Садоян
    22 сентября 2016, 13:48
    0
    не углубляясь в тему, могу порекомендовать плагин на событие onDocFormSave, который будет проверять published, если 0 то — отсылать уведомление, если 1 то ничего не делать.
    Ну и при этом поле createdon

    Отсылать уведомление придется в ручную через PHPMailer вытащив все данные из тикета.
      Виктор
      Виктор
      22 сентября 2016, 13:50
      0
      не понял, зачем отсылать уведомление вручную? что тогда плагин будет делать?
        Роман Садоян
        22 сентября 2016, 14:00
        0
        в ручную, в том смысле, что тебе придется написать код отправки через PHPMailer в этом плагине ну или где-нибудь еще.
    Виктор
    Виктор
    22 сентября 2016, 14:39
    0
    ладно, а если пойти другим путем.

    Есть возможность редиректить пользователя после публикации тикета не на тикет, а на нужную страницу? Так же как с &redirectUnpublished, только с опубликованным.
      Виктор
      Виктор
      22 сентября 2016, 15:02
      0
      Вот все зашибись придумали в Тикетах, кроме этого момента с модерацией. Премодерация через костыль, и письмо при этом не приходит. Чутка недодумали
        Василий Наумкин
        22 сентября 2016, 15:22
        0
        Да, чутка за тебя твою работу не сделали.

        Извини.
          Виктор
          Виктор
          22 сентября 2016, 15:36
          0
          Не мою работу, а логичный функционал. Согласись, было бы уместно и даже нужно, оповещать о поступивших на модерацию тикетах.
            Василий Наумкин
            22 сентября 2016, 16:41
            0
            Какую еще модерацию?

            Черновик — это черновик, неготовый еще результат. Человек начал что-то писать, сохранил, продолжил позже. Когда закончит — опубликует готовый текст.

            Tickets изначально были системой для техподдержки (и в этом качестве сегодня используются в modhost и modstore), а потом переросли в дополнение для сообществ. Никакой модерации ни в том, ни в другом случае не требуется. Именно поэтому, сюрприз!, её и нет.

            Если же лично тебе, для твоего случая, она нужна — то тебе её и придётся писать. Тем более, что делается это за 15 минут.
              Виктор
              Виктор
              22 сентября 2016, 17:10
              0
              Да, ты все верно говоришь, черновик это черновик. Да, переросло в дополнение. И в этом качестве было бы кстати иметь возможность не публиковать тикет (он же отзыв, например) не сразу, а сперва модерировать его.

              Именно поэтому ты и написал решение-полукостыль для этой цели. И было бы совершенно замечательно, если вместо этого была бы опция аля «отправлять на модерацию» перед публикацией. И это ни разу не сюрприз. Ноо, ты автор ты этой штуковины, тебе решать, само собой, что для нее делать а что нет. Тем более что лучше потратить 15 минут на пару колких комментов, чем на полезное дополнение и небольшую подсказку.

              А я для себя обошелся другим простым решением, которое подходит в данном случае. На почту отправляется письмо с сообщением при создании ресурса в папке тикетов.

              <?php
              if ($resource->get('parent') == 300) {
                  
              $message = $modx->getChunk('mail-tpl');
               
              $modx->getService('mail', 'mail.modPHPMailer');
              $modx->mail->set(modMail::MAIL_BODY,$message);
              $modx->mail->set(modMail::MAIL_FROM,'mail@domen.ru');
              $modx->mail->set(modMail::MAIL_FROM_NAME,'От кого');
              $modx->mail->set(modMail::MAIL_SUBJECT,'Тема');
              $modx->mail->address('to','urmail@domen.ru');
              $modx->mail->address('reply-to','urmail@domen.ru');
              $modx->mail->setHTML(true);
              if (!$modx->mail->send()) {
                  $modx->log(modX::LOG_LEVEL_ERROR,'Произошла ошибка при отправке сообщения: '.$modx->mail->mailer->ErrorInfo);
              }
              $modx->mail->reset();
              
              }
                Роман Садоян
                22 сентября 2016, 18:14
                0
                Это где сие, в плагине?
                ты можешь сам написать функционал который организует модерацию статей и сделать пул реквест))) Попутно запулить в документацию как этим пользоваться.
                  Виктор
                  Виктор
                  22 сентября 2016, 18:37
                  0
                  Это плагин, на событие OnBeforeDocFormSave, а
                  if ($resource->get('parent') == 300) {
                  id ресурса с тикетами.

                  Пока еще не могу, плохо знаю xPDO для пул реквестов. Но, скоро обучимся. Тогда с удовольствием
                    Сергей Шлоков
                    22 сентября 2016, 19:03
                    1
                    0
                    Во-первый, лучше использовать событие «OnDocFormSave», так как может возникнуть ситуация, когда тикет не сохранится (по ошибке или кто отменит в плагине). А уведомление о тикете отправится в любом случае.
                    Во-вторых, есть смысл использовать настройки и чанки Tickets.
                    if ($modx->event->name == 'OnDocFormSave' && $resource->class_key = 'Ticket') {
                        $Tickets = $modx->getService('tickets', 'Tickets', $modx->getOption('tickets.core_path', null, $modx->getOption('core_path') . 'components/tickets/') . 'model/tickets/', $scriptProperties);
                        $ticket = $resource->toArray();
                        $Tickets->sendTicketMails($ticket);
                    }
                    П.С. Не тестировал.
                      Виктор
                      Виктор
                      22 сентября 2016, 21:15
                      0
                      Спасибо за совет, с событием действительно, пожалуй лучше «OnDocFormSave».

                      А ваш вариант плагина, на какой емайл должен отправлять?
                        Сергей Шлоков
                        22 сентября 2016, 22:26
                        0
                        Тем кто указан в настройке tickets.mail_bcc
                          Виктор
                          Виктор
                          22 сентября 2016, 22:32
                          0
                          ага. Но не отправляет. Указан id1, т.е. администратор
                          Сергей Шлоков
                          22 сентября 2016, 22:43
                          0
                          А тикет создается под учётной записью с id=1?
                          Виктор
                          Виктор
                          23 сентября 2016, 07:08
                          0
                          Нет, тикет создается псевдо-зарегистрированным юзером с другим id, но он и не должен ничего получать, он только создает тикет, а админ должен получить об этом сообщение
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      18