Pavel

Pavel

С нами с 29 января 2015; Место в рейтинге пользователей: #498
Pavel
10 февраля 2021, 14:05
0
вопрос решился после комментирования строки 384 в файле
core/components/tickets/model/tickets/tickets.class.php

а именно
$ms2Gallery->syncFiles('tickets', $id, true);
Два раза синхронизация делалась. один раз в ms2gallery и еще раз в тикетах

@Василий Наумкин Василий, с этим ничего не сделать? Я бы уже воспользовался встроенным загрузчиком файлов, но мне нужно ограничить кол-во файлов на загрузку и на разные категории разный лимит
Pavel
28 июня 2020, 03:58
0
зайти в настройки, выбрать раздел msearch2 и удалить путь к CSS ([[+cssUrl]]web/default.css) — должно сработать
Pavel
25 мая 2019, 16:58
0
Хочу грузить картинку в папку ресурса —
$folder = '/assets/images/resources/'.$id.'';
— но не грузит, видимо там папки этой на момент загрузки еще нет… кто нибудь делал такое? просто нужно потом удалять эту картинку, при удалении тикета, если грузить ее сразу в его папке, думаю, это решило бы проблему… чем писать еще доп плагин по удалению этих картинко, если их к тому же несколько… Может Василий подскажет? Как правильно грузить фотку?
Pavel
16 мая 2019, 00:44
0
Решено, переходя на Fenom переписал шаблоны и потерялся тэг HEAD — из за чего конфигу некуда было встать!) все из-за невнимательности…
Pavel
15 мая 2019, 23:56
0
к сожалению разницы нету… вопрос так и не решился, не знаю что с этим делать…
Pavel
04 марта 2019, 21:11
0
Володя привет! Будет ли обновление под новый протокол Яндекс Кассы? уже 2019 год так-то )) м?
Pavel
17 сентября 2018, 01:11
0
немного неправильно поняли. Есть шаблон `base` и шаблон `home` в шаблоне home пишем {extends 'template:base'} и напимер {var $doc = $_modx->resource.id} — в шаблоне base мы хотим получить $doc — но так не работает…
Pavel
16 сентября 2018, 17:05
0
Василий приветствую! интересует, могу ли я при расширении шаблона передать что нибудь в него? конкретно интересует передача класса для body. Я, конечно, понимаю, что можно значение класса обернуть в {block} — но может можно передавать в extends как это сделано в чанках? Спасибо!
Pavel
17 июля 2017, 15:37
0
по хорошему, тут нужно отправку на почту засунуть в отдельную функцию, которая будет принмать значения почты и имя чанка, а потом уже внутри case 'OnDocFormSave' ее вызывать. Но моих знаний недостаточно ) если кто знает как улучшить данный костыль — напишите сюда)
Pavel
17 июля 2017, 14:03
+3
Я не php программист, написал как смог… можете улучшать на свое усмотрение. Плагин отправляет месадж в телеграмм и на почту админу/юзеру. Можно создать разные чанки для писем админу и юзеру. Сам плагин нужно включить для события OnDocFormSave. Для отправки на телеграмм нужно создать своего бота и получить токен + узнать ИД чата — как это сделать гуглите, инфы полно.

<?php

// указать id шаблонов, для которых будет работать плагин. 
$template = array(7,13,14);
if (!in_array($resource->get('template'), $template)) {
    return;
}
    
$user = $modx->getObject('modUser', $resource->get('createdby'));
$profile = $user->getOne('Profile');
$usermail = $profile->get('email');
$username = $profile->get('fullname');
    
$manger = $modx->getObject('modUser', $resource->get('editedby'));
    
$page_id = $resource->get('id');
$res = $modx->getObject('modResource', $page_id);
$title = $resource->get('pagetitle');
$pub = $resource->get('published');

$txt ='';
    
$url = 'https://site.ru/manager/index.php?a=resource/update&id='.$page_id;
$front_url = 'https://site.ru/'.$resource->get('uri');

    
function sendTelegram($msg = '', $chat = '') {

    $msg = urlencode($msg);
    
	$token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
	$tele="https://api.telegram.org/bot".$token."/sendMessage?disable_web_page_preview=true&chat_id=".$chat."&text=".$msg." ";
	$ch = curl_init();

	curl_setopt($ch, CURLOPT_URL, "$tele");
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_exec($ch);
	curl_close($ch);

}

switch ($modx->event->name) {
 
    case 'OnDocFormSave':
            
        if ($resource->get('class_key') == 'Ticket' ) {
            if ($mode == 'new') { // если это новый тикет
                if($pub == 1) {
                    // ничего не отправляем, т.к. тикет опубликован
                } else {
                    $txt = 'Новый тикет! '.$title.'. URL: '.$url.' Ожидает модерации!';
                }
            } else { // Если тикет обновили
                if ($manger->isMember(array('Administrator','Moderator')) ) {
                    if (!$resource->get('published')) {
                        $txt = 'Модератор снял с публикации - '.$title.'. URL: '.$url.'';
                    } else {
                        $txt = 'Модератор опубликовал - '.$title.'. URL: '.$front_url.'';
                    }    
                } else if ($pub == 1) {
                    // Если юзер обновил тикет - снимаем с публикации.
                    $txt = 'Страницу каталога обновили! '.$title.'. URL: '.$url.' Ожидает модерации!';
                    $res->set('published', 0);
                    $res->save();
                }    
            }
            sendTelegram($msg = $txt, $chat = 'ХХХХХХХХ'); // указываем ID чата и отправляем сообщение в телеграмм
        }
        break;
}

// отправка email

if(!$pub) {
    $pub = 0;
}

// добавляем плейсхолдеры для чанка. Используем как [[+my.title]]
$modx->setPlaceholders(array(
   'username' => $username,
   'usermail' => $usermail,
   'title' => $title,
   'pub' => $pub, // статус публикации - 0/1
   'mode' => $mode, // статус тикета - new/upd
   'url' => $url, // урл тиката в админке
   'front_url' => $front_url, // урл тикета на фронте
),'my.');


// в массиве указываем почту и чанк шаблон для отправки
$notify = array(
    'admin@site.ru' => 'notifyTplToAdmin',
    $usermail => 'notifyTplToUser'
);


foreach ( $notify as $k => $v ) {
  
    /*Активируем почтовый сервис MODX*/
    $modx->getService('mail', 'mail.modPHPMailer');
    $modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender'));
    $modx->mail->set(modMail::MAIL_FROM_NAME, $modx->getOption('site_name'));
                
    /*Адрес получателя нашего письма*/
    $modx->mail->address('to', $k);
    $modx->mail->set(modMail::MAIL_SUBJECT, 'Тут тема письма');
    
    /*Подставляем чанк с телом письма*/
    $modx->mail->set(modMail::MAIL_BODY, $modx->getChunk($v));
    
    // Отправляем письмо
    $modx->mail->setHTML(true);
    
    if ($mode == 'new') {
        if (!$modx->mail->send()) {
            $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
        }
    } else {
        // не отправляем письма при каждом обновлении, только если опубликовано или снято с публикации
        if ($manger->isMember(array('Administrator','Moderator')) ) {
            if (!$modx->mail->send()) {
                $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
            }
        } else if ($resource->get('published') == 1) {
            if (!$modx->mail->send()) {
                $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
            }
        }
    }
    
    $modx->mail->reset();
}
Pavel
15 июля 2017, 02:09
0
Вообщем написал свой плагин, подписался на OnDocFormSave, проверяю, если он новый и еще не опубликован — то отправляю смс в телеграмм. Если кому надо — пишите.
Pavel
13 июля 2017, 16:17
0
я не совсем понял, в чем отличие от GeoLocation? тоже вроде ваш сниппет был..?
Pavel
19 мая 2017, 23:29
0
добавляю через Тикетс — в форме вставляю {'!ms2guploader' | snippet: ['uploadLimit' => 10]}
Фото загружается, но не сохраняется и не сохраняется сортировка в уже загруженных фото… можете написать норм мануал, а то слова «вставить там где надо» немного непонятны ;) Спасибо!
Pavel
18 мая 2017, 16:24
+1
супер, спасибо! буду ждать ;)
Pavel
18 мая 2017, 16:11
+1
ох, блин, жалко… А планируется?
Pavel
18 мая 2017, 16:09
0
Можно прикрутить его к Тиккетам? при добавлении с фронта?
Pavel
18 мая 2017, 13:32
0
может, но задачи разные бывают, возможность должна быть…
Pavel
27 декабря 2016, 17:30
0
Зачем? Если я замею потом город, то он все равно будет показывать мой реальный город? Где логика?)

При первом входе снниппет должен показывать Реальный город, а не по умолчанию, а при смене этого города показывать тот город который я выбрал…

Сейчас работает так — я заходу, пишет ваш город «по умолчанию..» я хочу его сменить, нажимаю, меня спрашивают — ваш город по умолчанию?) я говорю ДА… и никаких изменений… т.е он не определяет мой город?)
Хотя плейсхолдер real нормально показывает мой город. Что то ту не так…

Как сделать, чтоб при первом заходе показывало REAL, и при нажатии на кнопку ДА записывало этот город в CURRENT? Сэйчас это не работает… =\

P.S. Еще можно сделать, если по каким-то причинам город определить не удалось, указывать в настройках дефолтный город.