Всего 125 668 комментариев

Сергей Карпович
23 января 2021, 10:40
0
Показывает успешно оформленный заказ после оформления заказа
Сергей Карпович
23 января 2021, 10:31
0
Не то, это мы просто показываем доступ запрещен, если не админ.
А нужно иметь возможность админу смотреть заказы других пользователей, переходя по ссылке
Dmytro Lukianenko
23 января 2021, 10:16
+5
Evolution CMS 3.0 Online Presentation
23.01.2021 12:00 (GMT +2)

На русском:
youtu.be/YhbLiL3lT_4

In english:
youtu.be/xDIdfZrlCgk

Afterparty for all 16:00 (GMT +2):
meet.google.com/qdq-etsc-zca
Dmytro Lukianenko
23 января 2021, 10:16
+2
Нужно установить DocLister и FormLister и будет все ок.

В 3.0 их убрали из ядра, и в целом все дополнения можно будет ставить через Composer с зависимостями.

Это самый ближайшие планы, в ядре все готово уже но нужно немного поправить дополнения
Max
Max
23 января 2021, 09:46
0
Разобрался!
Обращался к TV полю неверно, вместо "$_modx->resource.icons" а просто «icons»
{set $rows = json_decode($_modx->resource.icons, true)}
            {foreach $rows as $row}
            <h3>{$row.title}</h3>
            <img src="{$row.img}" />
            {/foreach}
Осталось теперь только понять, почему на других проектах этого не требовалось, сборки одинаковые, сейчас глянул другие сайты, там обращаюсь без $_modx->resource.value, все работает
PS Все, тоже разобрался, там я уже с переменной работаю, которую получаю из условия {if}, поэтому обращение к классу modx не требуется, оно было ранее.
Нормально сам с собой в субботу пообщался =))))
Max
Max
23 января 2021, 09:40
0
Я столкнулся сегодня на одном из новых сайтах, разработку веду на одинаковых сборках, использую siteExtra, но на последнем сайте migx ни чего не выводит, var_dump(json_decode($value)) дает NULL.
Через getImageList выводит, нифига не пойму что где отвалилось.
Вы нашли причину?
Андрей
23 января 2021, 02:09
0
Либо написать свой сниппет для выборки заказов, либо править msGetOrder, там есть проверка вывода по id юзера, и админу чужие заказы не покажет.
Артем
23 января 2021, 01:30
+3
Понял. а если сделать проверку типа
Тогда остается доступ к произвольным *.tpl, *.html и *.php файлам. В общем, это довольно скользкая штука и рано или поздно может аукнуться. Хорошей практикой будет просто указывать этот шаблон на сервере и не париться о всяких проверках.
Тем более, в твоем примере просто проверяется наличие '@FILE' в строке, а не на первой позиции. Это я к тому, что накосячить с этим гораздо проще, чем кажется.

А если $_REQUEST['minQuery'] будет равна 'три'
То она просто скастуется до 0 через (int), а затем будет взято 3. В общем, в этой переменной всегда будет число и ошибки не будет. Максимум — условие не пройдет, если передать отрицательный minQuery.
Артур Шевченко
23 января 2021, 00:39
0
Потому что value="@CODE {$modx->removeCollection('modResource')}"
Понял. а если сделать проверку типа
if(strpos($_POST['tpl'], '@FILE') !== false){
$tpl = $_POST['tpl'];
}
достаточно просто
А если $_REQUEST['minQuery'] будет равна 'три', тут
if(mb_strlen(str_replace(' ', '', $query)) < $minQuery){
    $res = ['success' => false, 'message' => 'Количество символов в запросе должно быть больше ' . $minQuery];
    return json_encode($res);
}
будет ошибка, нет?
Артур Шевченко
23 января 2021, 00:18
0
[[+modx.user.id:ismember=`Administrator`:then=`
[[!msGetOrder? &tpl=`tpl-get-order`]]
`:else=`Доступ запрещён`]]
Sergey
23 января 2021, 00:11
0
Так нигде не написано, что она невидимая и как она отличается от второй. Теперь ясно, почему не всплывает)
Артем
22 января 2021, 23:27
+2
Почему?
Потому что value="@CODE {$modx->removeCollection('modResource')}"

С одной стороны да, а с другой, изначально я не планировал использовать msProducts, поэтому и получал объекты.
Если у тебя будет 30к товаров, то getIterator сожрет всю оперативку даже не дойдя до половины.

$query = strip_tags($_POST['query']); // хватит?
Конечно, защищает от любых sql-инъекций.

Тогда уже так
достаточно просто
$minQuery = (int) $_REQUEST['minQuery'] ?: 3;
Вячеслав
22 января 2021, 23:00
0
Вот решение:
<form action="" method="post">
  <label for="POST-name">number:</label>
  <input id="POST-name" type="text" name="number">
  <input type="submit" value="go">
</form>
<div>
{'!GoogleSheets' | snippet: [
     'table' => 'https://docs.google.com/spreadsheets/d/1th/edit#gid=0',
     'range' => 'sheet1',
     'query' =>  $.post.number,
] | table: 'table table-hover'}
</div>
Поиск работает по введенному значению))

Отдельное спасибо Aleksandr Huz!
Артур Шевченко
22 января 2021, 22:37
0
Сорри, я правил, у меня в оригинале другой код))) Спасибо что заметили. Исправил, там конечно же должно быть submit.
Артур Шевченко
22 января 2021, 22:34
0
Вот это очень плохо, вот прям очень. Не нужно прокидывать tpl с фронта, его нужно задавать строго на сервере.
Почему?

Объекты тут вообще не нужны
С одной стороны да, а с другой, изначально я не планировал использовать msProducts, поэтому и получал объекты.

неплохо хотя бы поверхностно обработать
Прям согласен.
$query = strip_tags($_POST['query']); // хватит?
Можно добавить (int).
Тогда уже так
if($_POST['minQuery'] && is_numeric($_POST['minQuery'])){
    $minQuery = (int)$_POST['minQuery'];
}
else{
    $minQuery = 3;
}
Aleksandr Huz
22 января 2021, 22:33
0
document.querySelector('.jsSearchForm').addEventListener(event, function (e) {
     e.preventDefault();
     let formData = new FormData(e.target.closest('form'));
     sendAjax(formData);
});
Точно работает?
event — это submit?
e.target — если сабмит, то это и есть форма.
Артем
22 января 2021, 22:28
+2
<input type="hidden" name="tpl" value="@FILE chunks/blocks/service-item.html">
Вот это очень плохо, вот прям очень. Не нужно прокидывать tpl с фронта, его нужно задавать строго на сервере.

$resources = $modx->getIterator('msProduct',$dbQuery);
Объекты тут вообще не нужны, гораздо правильнее заменить это на
$dbQuery->select(['id']);
if ($dbQuery->prepare() && $dbQuery->stmt->execute()) {
    $ids = $dbQuery->stmt->fetchAll(PDO::FETCH_COLUMN);
}

$query было бы неплохо хотя бы поверхностно обработать, т.к. он дальше напрямую передается в запрос.

$minQuery = $_POST['minQuery'] ?: 3;
Можно добавить (int).
Prihod
22 января 2021, 20:39
1
0
В MODX Revolution 2.8.1 возникает ошибка
Fatal error: Uncaught Exception: String could not be parsed as XML in
которая будет поправлена в новой сборке пакета, а пока можно обновить файл core/components/cmpgeneratorpro/model/cmpgeneratorpro/mysql/dbhelper.class.php на этот