Вопросы

Как запретить менеджеру добавлять ресурс в группу, к которой у него нет доступа?

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

Группа System используется для ресурсов типа Login и к ней доступ ограничен чтобы скрыть соответствующие ресурсы из дерева.
Так как сделать чтобы эта группа не отображалась у пользователей, у которых нет к ней доступа?
Андрей
16 апреля 2020, 00:55
modx.pro
717
0

Удаление компонентов modX через api

Доброго времени суток! Может кто в курсе на счет удаления компонентов, используя api modx?
То есть, желательно, чтобы производились аналогичные действия как и при удалении через админку:
  1. Удаляются регистрационные записи из базы
  2. Удаляются папки из assets/components/ и core/components/
  3. Удаляются чанки со сниппетами, пространства имен и т.д.
Думаю, что через процессоры 99% можно, но в доках инфы, вроде бы, не нашел
unreal_serg
15 апреля 2020, 23:39
modx.pro
947
0

Всплывающие подсказки в форме поиска mSearch2

Добрый день.

На сайте работает mSearch2.
Форма поиска выводится:
[[!mSearchForm?
   &pageId=`31`
   &tplForm=`mSearchForm`
   &autocomplete=`queries`
]]
При наборе какого-либо текста в форме поиска появляются всплывающие подсказки. Некоторые из них отображаются в верхнем регистре, некоторые в нижнем.

Как сделать (где настроить), чтобы все всплывающие подсказки появлялись в нижним регистре?
Maxim
15 апреля 2020, 21:24
modx.pro
1 432
0

Вывод ошибки в AjaxForm

Друзья, проверяю форму на заполненность одного поля из двух. Вот вызов сниппета:
{'!AjaxForm' | snippet : [
       'snippet'=>'FormIt'
       'hooks'=>'spam,email'
       'emailFrom'=>'noreply@test.loc'
       'form'=>'tpl.callBack'
       'emailTpl'=>'tpl.callBackMail'
       'emailTo'=>'inbox@mail.local'
       'emailSubject'=>'Обратная связь с сайта'
       'validate'=>'name:required,phone:oneOfTwoFields,email:email:oneOfTwoFields,link:blank'
       'customValidators' => 'oneOfTwoFields'
       'validationErrorMessage'=>'Пожалуйста, заполните необходимые поля.'
       'successMessage'=>'Ваше обращение отправлено. Мы свяжемся с вами!'
    ]}
А вот сниппет кастомного валидатора:
<?php
$success = true;

$phone = trim($_POST['phone']);
$email = trim($_POST['email']);

if (empty($phone) && empty($email)) {
    $success = false;
    $validator->addError($key, 'Заполните поле Телефон или Email.');
}

return $success;
Валидация работает, но не могу понять как выводить во всплывающем окне эту ошибку (когда не заполнены оба поля)? Всегда выводится 'Пожалуйста, заполните необходимые поля.'
Анатолий
15 апреля 2020, 16:05
modx.pro
1 488
0

TV с флагом страны

Кто-нибудь заморачивался с созданием TV, которое выводит выпадающий список с флагами стран непосредственно в админке? Если прописать значение в формате css, к примеру:
<span class="flag-icon flag-icon-gr"></span>
на бэккенде подхватится при условии подключения файла стилей.
Как с этим быть в админке?
Антон
15 апреля 2020, 15:45
modx.pro
719
0

Pdopage через where в плагине фильтрует по всем контекстам, хотя айди родителя в 1 конектсте, как исправить?

Код фильтра
P.S как только не пытался сделать простое действие вывести объекты по tv он выводит во всех контекстах, при получении данных на плагин они нормальные, на выход where они нормальные, такие же как и обычные. P.S. не смотрите на бред в некоторых местах пробовал по разному, если вводить только год то ищет по всем контекстам, если выбрать пункт какой-либо фильтрует нормально, так же выбирал заказчик и год, тоже фильтрует нормально, если выбрать только год то ищет по всем, хотя parent указан, указывал по разному, и :Like, и :IN и :=
На выходе where имеет это

{"parent:LIKE":4,"from-year:=":"2012","OR:by-year:=":"2012"}
.
<?php
if(sizeof($_POST) != 0){
    switch ($_POST['action']) {
        case 'filter':
            $Data = $_POST;
          if (sizeof($Data['fields']) >= 0) {

                $hash = (string) $_POST['hash'];
                $parentit = $Data["parent"];
                $where = array();
                // $where["template:="] = $templ;
                $fields = $Data['fields'];
                $where["parent"] = (int)$parentit;
                foreach($fields as $key => $value){
                    switch ($key){
                        case 'project-type':
                            if(sizeof($fields[$key]) != 1){
                                $where = array();
                            } else{
                                $where["parent"] = (int)$parentit;
                                $where[$key] = $fields[$key];
                            }
    
     
                            break;
    
                        case 'form':
                            $where = array();
                            
                            if(!empty($fields[$key]['customer']) && !empty($fields[$key]['year'])){
                                $where['customers-choose:LIKE'] = $fields[$key]['customer'];
                                $where["AND:parent:LIKE"] = (int)$parentit;
                                $year = $fields[$key]['year'];
                                $where["AND:from-year:="] = $year;
                                $where["OR:by-year:="] = $year;
                                
                                break;
                            } else {
                                if(!empty($fields[$key]['customer'])){
                                    $where['customers-choose:='] = $fields[$key]['customer'];
                                    
                                }
                                if(!empty($fields[$key]['year'])){
                                    $year = $fields[$key]['year'];
                                    $where["parent:LIKE"] = (int)$parentit;
                                    $where["from-year:="] = $year;
                                    $where["OR:by-year:="] = $year;
    
                                } 
                                
                            }
                            

                            
                            break;
                        default:

                            break;
                    }
                }


            
                $_SESSION['pdoPage'][$hash]['where'] = $where;
                $output['message'] = $where;
                $output['success'] = true;
                $_SESSION['pdoPage'][$hash]['parents'] = (int)$parentit;
 
                echo $modx->toJSON($output);
                die();
            } else {
                $output['message'] = 'Error';
                echo 'Error';
                die();
            }


            break;

    }
}
Slava
15 апреля 2020, 15:32
modx.pro
877
0

Вопрос по PdoMenu

Алексей
15 апреля 2020, 15:28
modx.pro
1
611
0

Как вывести родителей ресурса (категории товаров)?

Привет, в ms2 есть вкладка у товара, называется «категории»

Как бы на странице ресурса (товара) вывести список всех категорий в которых он находится? Спасибо.

Спасибо за ответ Евгений Webinmd
Сниппет выводит все вложенные категории товара в виде ссылок.
<?php
if (empty($rid)) {$rid = $modx->resource->id;}
if (empty($pid)) {$pid = $modx->resource->parent;}
if (empty($delimeter)) {$delimeter = ' , ';}
$scheme = $modx->getOption('link_tag_scheme', null, 'full', true);

$q = $modx->newQuery('msCategory');
$q->leftJoin('msCategoryMember', 'msCategoryMember', array(
    '`msCategory`.`id` = `msCategoryMember`.`category_id`'
));
$q->sortby('pagetitle','ASC');
$q->groupby('id');
$q->select(array('id','pagetitle'));
$q->where('`msCategoryMember`.`product_id` = '.$rid.' OR `id` = '.$pid);

$result = array();
if ($q->prepare() && $q->stmt->execute()) {
    while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
        $url = $modx->makeUrl($row['id'], '', '', $scheme);
        $result[] = '<a href="'.$url.'">'.$row['pagetitle'].'</a>';
    }
}
return implode($delimeter, $result);
Jazz
15 апреля 2020, 15:00
modx.pro
1
1 981
0

Как выполнить Fenom в Fenom?

Здравствуйте. Уже несколько раз сталкивался с подобным. На странице вызываю сниппет, через Fenom. Но этому сниппету нужно передать параметры от другого сниппета. Как?
Николай
15 апреля 2020, 14:17
modx.pro
982
0

Удалить товар из корзины по id ?

Может кто-то сталкивался и быстро подскажет, буду признателен.
Хочу чтобы товары, которые выводятся msProducts имели возможность быть как добавленными в корзину так и удаленными оттуда.
И если с добавление товара в корзину проблем нет, добавление происходит по id товара
<form method="post" class="ms2_form">
                    <input type="hidden" name="id" value="{$id}">
                    
                    <input type="hidden" name="count" value="1">
                    <input type="hidden" name="options" value="[]">
                    <button class="btn btn_fluid" name="ms2_action" value="cart/add">I love this one</button>
                </form>
то для удаление уже используется не id а некий ключ — некий хеш.
<form method="post" class="ms2_form">
                    <input type="hidden" name="key" value="{$product.key}">
                    <button class="link" type="submit" name="ms2_action" value="cart/remove">
                        Remove
                    </button>
                </form>
и этот key в сниппете msProducts отсутствует.
Как наименее трудозатратно удалить товар имея только id?
Спасибо.
Александр Мельник
15 апреля 2020, 14:10
modx.pro
1 605
0