Куки я собираюсь передавать в зашифрованном виде, поэтому, думаю, шанс взлома сокращается)
16 мая 2022, 18:22
0
Восклицательный знак в плейсхолдере [[!+photo:default=`/assets/photouser/default.jpg`]] оказался лишним. Без него работает.
Но странно что так [[!+photo]] работает.
04 апреля 2022, 10:41
0
Оказалось что на хосте версия php 5.6.
Обновление до 7.4. помогло устранить ошибку.
02 апреля 2022, 18:17
0
Большое спасибо! Фото товара удаляется и создается.
Но в логах появилась ошибка:
[2022-04-02 18:12:05] (ERROR @ /home/users/j/*************/domains/*************.ru/core/components/minishop2/model/minishop2/msproductfile.class.php : 190) [miniShop2] Could not generate thumbnail for "/assets/images/products/127/sp01rm.jpg". Array
(
[0] => phpThumb() v1.7.16-202012161640 in file "phpthumb.class.php" on line 234
[1] => setCacheDirectory() starting with config_cache_directory = "/home/users/j/*************/domains/*************.ru/core/cache/phpthumb/" in file "phpthumb.class.php" on line 1048
[2] => setting config_cache_directory to $this->realPathSafe(/home/users/j/*************/domains/*************.ru/core/cache/phpthumb) = "/home/users/j/*************/domains/*************.ru/core/cache/phpthumb" in file "phpthumb.class.php" on line 1076
[3] => setSourceFilename(/home/users/j/*************/domains/*************.ru/ms_jmsg0U) set $this->sourceFilename to "/home/users/j/*************/domains/*************.ru/ms_jmsg0U" in file "phpthumb.class.php" on line 299
[4] => Addding ImageMagick formats to $AvailableImageOutputFormats (text;ico;bmp;wbmp;gif;png;jpeg) in file "phpthumb.class.php" on line 1006
[5] => $AvailableImageOutputFormats = array(text;ico;bmp;wbmp;gif;png;jpeg;webp) in file "phpthumb.class.php" on line 1012
[6] => $this->thumbnailFormat set to $this->config_output_format "jpeg" in file "phpthumb.class.php" on line 1023
[7] => $this->thumbnailFormat set to $this->f "webp" in file "phpthumb.class.php" on line 1030
[8] => $this->thumbnailQuality set to "90" in file "phpthumb.class.php" on line 1040
[9] => $this->sourceFilename set to "/home/users/j/*************/domains/*************.ru/ms_jmsg0U" in file "phpthumb.class.php" on line 933
[10] => SetCacheFilename() _src set from md5($this->sourceFilename) "/home/users/j/*************/domains/*************.ru/ms_jmsg0U" = "5ec982fbf998889e03e617f327ec8b8d" in file "phpthumb.class.php" on line 3616
[11] => SetCacheFilename() _par set from md5(_bgffffff_farC_zc1_h400_w400_dpi150) in file "phpthumb.class.php" on line 3655
[12] => starting ExtractEXIFgetImageSize() in file "phpthumb.class.php" on line 3409
[13] => getimagesize(/home/users/j/*************/domains/*************.ru/ms_jmsg0U) says image is 800x800 in file "phpthumb.class.php" on line 3419
[14] => $this->useRawIMoutput=false because "bg" is set in file "phpthumb.class.php" on line 1649
[15] => $this->useRawIMoutput=false after checking $UnAllowedParameters in file "phpthumb.class.php" on line 1655
[16] => phpThumb_tempnam() returning "/home/users/j/*************/domains/*************.ru/core/cache/phpthumb/pThumbzm75H2" in file "phpthumb.class.php" on line 4498
[17] => ImageMagickSwitchAvailable(thumbnail) = 1 in file "phpthumb.class.php" on line 1581
[18] => getimagesize(/home/users/j/*************/domains/*************.ru/ms_jmsg0U) SUCCEEDED: Array
(
[0] => 800
[1] => 800
[2] => 2
[3] => width="800" height="800"
[bits] => 8
[channels] => 3
[mime] => image/jpeg
)
in file "phpthumb.class.php" on line 1750
[19] => ImageMagickSwitchAvailable(density) = 1 in file "phpthumb.class.php" on line 1581
[20] => getimagesize(/home/users/j/*************/domains/*************.ru/ms_jmsg0U) returned [w=800;h=800;f=2] in file "phpthumb.class.php" on line 1765
[21] => source dimensions set to 800x800 in file "phpthumb.class.php" on line 1768
[22] => SetOrientationDependantWidthHeight() starting with "800"x"800" in file "phpthumb.class.php" on line 3388
[23] => SetOrientationDependantWidthHeight() setting w="400", h="400" in file "phpthumb.class.php" on line 3404
[24] => ImageMagickSwitchAvailable(repage) = 1 in file "phpthumb.class.php" on line 1581
[25] => Remaining $this->fltr after ImageMagick: (array(0) { } ) in file "phpthumb.class.php" on line 2316
[26] => ImageMagick called as (convert '/home/users/j/*************/domains/*************.ru/ms_jmsg0U[0]' -flatten -density '150' -thumbnail 'x400' -gravity center -crop '400x400+0+0' +repage png:'/home/users/j/*************/domains/*************.ru/core/cache/phpthumb/pThumbzm75H2' 2>&1) in file "phpthumb.class.php" on line 2334
[27] => getimagesize(/home/users/j/*************/domains/*************.ru/core/cache/phpthumb/pThumbzm75H2) returned [w=400;h=400;f=3] in file "phpthumb.class.php" on line 2351
[28] => ImageMagickThumbnailToGD::imagecreatefrompng() succeeded, $this->gdimg_source is now (400x400) in file "phpthumb.class.php" on line 2357
[29] => ImageMagickThumbnailToGD() returning $this->IMresizedData (102449 bytes) in file "phpthumb.class.php" on line 2358
[30] => deleting "/home/users/j/*************/domains/*************.ru/core/cache/phpthumb/pThumbzm75H2" in file "phpthumb.class.php" on line 2364
[31] => skipping SourceImageToGD() because $this->gdimg_source is already a resource (400x400) in file "phpthumb.class.php" on line 3778
[32] => CalculateThumbnailDimensions() starting with [W,H,sx,sy,sw,sh] initially set to [400,400,,,,] in file "phpthumb.class.php" on line 3260
[33] => CalculateThumbnailDimensions() starting with [x,y,w,h] initially set to [0,0,400,400] in file "phpthumb.class.php" on line 3275
[34] => CreateGDoutput() returning canvas "400x400" in file "phpthumb.class.php" on line 3383
[35] => ImageResizeFunction($o, $s, 0, 0, 0, 0, 400, 400, 400, 400) in file "phpthumb.class.php" on line 4473
[36] => memory_get_usage() after copy-resize = 27499336 in file "phpthumb.class.php" on line 433
[37] => memory_get_usage() after imagedestroy = 26672832 in file "phpthumb.class.php" on line 435
[38] => AntiOffsiteLinking() says this is allowed in file "phpthumb.class.php" on line 2578
[39] => skipping AlphaChannelFlatten() because ($this->thumbnailFormat == "webp") in file "phpthumb.class.php" on line 2642
[40] => GenerateThumbnail() completed successfully in file "phpthumb.class.php" on line 447
[41] => imageinterlace($this->gdimg_output, 1) in file "phpthumb.class.php" on line 483
[42] => RenderOutput() attempting imagewebp($this->gdimg_output) in file "phpthumb.class.php" on line 486
[43] => GD does not have required built-in support for WebP output in file "phpthumb.class.php" on line 552
)
С чем она может быть связана?
Проверил все права на папки все в норме.
Так же выставил «phpthumb_allow_src_above_docroot» = «Да»
27 января 2022, 14:10
0
Вот еще вариант, если нужен будет полный url по ID страницы
[[~[[*id]]? &scheme=`full`]]
[[~23? &scheme=`full`]]
26 января 2022, 21:03
0
Николай, спасибо за ответ!
У меня получилось реализовать следующим образом:
1. В ноде получаю куку PHPSESSID
req.headers.cookie
2. С помощью пакета php-unserialize разбираю данные сессии и получаю user_id
3. Если в $dataarr['modx.user.contextTokens'] пусто, то перекидываю на страницу авторизации.
22 октября 2021, 17:12
0
Прошу прощения за не полную информацию. Дополнил свой вопрос.
14 июня 2021, 00:48
0
Спасибо за предложение! Я в итоге увлекся и сделал сам :)
Результат прикрепляю ниже. Может кому пригодится.
На правильность метода не претендую, для меня это рабочий вариант) От прорисовки страницы до загрузки таблицы с 30000 строк = 2,1 сек.
pdoPage сниппет. С ним одна проблема — он выводит результат на страницу, который нам не нужен. Пока не понял как его убрать — просто вывожу в скрытый div.
Каждое значение в кавычках соответсвует столбцам таблицы. В конце строки нужна запятая!
Инициализация dataTable:
$(function () {
var orderparam = [0, "desc"]; //сортировка по дефолту по первому столбцу таблицы
var columnparam = ["Id", "SecondName", "Note"]; //столбцы таблицы
var table = $("#example1").DataTable({
"order": [orderparam],
"lengthChange": false,
"processing": true,
"serverSide": true, //определяет в каком формате мы отправим данные для dataTable в callback
"ajax": function (data, callback, settings) {
var pageinfo = table.page.info(); //узнаем номер страницы для передачи в pdoPage
var orderinfo = table.order(); //узнаем сортировку для pdoPage
var searchinfo = table.search(); //данные поиска для pdoPage
//перед заполнением таблицы запрашиваем данные у pdoPage с помощью get запроса
$.ajax({
url: "kartoteka?page=" + (pageinfo.page + 1) + '&sortby=' + columnparam[orderinfo[0][0]] + '&sortdir=' + orderinfo[0][1] + '&search=' + searchinfo,
}).then(function (json, textStatus, jqXHR) {
var json = JSON.parse(json); //получаем JSON от pdoPage
var output = json.output.replace(/,\s*$/, ""); //берем только нужные нам данные. Убираем лишнюю запятую.
var dr = JSON.parse('{"data":[' + output + ']}'); //полученные нами данные - текст. Конвертируем его в JSON.
//все что мы получили отдаем для заполнения таблицы
callback({
draw: data.draw, //специальный счетчик обращений dataTable
recordsTotal: json.total, //количество строк в ответе от pdoPage
recordsFiltered: json.total, //количество строк в ответе от pdoPage
data: dr.data //данные для заполнения
});
});
},
//если вдруг нужны кнопки. Они отрисовываются после заполнения таблицы. Поэтому, кнопки добавляем с помощью initComplete
"buttons": ["colvis"],
"initComplete": function () {
table.buttons().container().appendTo($('#example1_wrapper .col-md-6:eq(0)')); //обратите внимание не селекторы, у вас они могут отличаться
}
});
});
12 июня 2021, 11:36
0
Спасибо за ответ.
Если вас не затруднит — поделитесь, пожалуйста, ссылкой на пример или примером кода.
22 января 2020, 13:30
0
В итоге плагин сделал вот так:
switch ($modx->event->name) {
case 'OnBeforeDocFormSave':
$id = $resource->get('id');
$parent = $modx->getParentIds($id, 10, array('context' => 'web'));
$datestart = date("Ymd", strtotime($resource->tv17));
$dateend = date("Ymd", strtotime($resource->tv18));
if ($parent[0] == 2) {
if ($datestart > $dateend) {
$modx->event->output('Сообщение о ошибке');
}
}
break;
}
OnBeforeDocFormSave — плагин срабатывает до сохранения ресурса $modx->event->output() — выводит текст о ошибке в модальном окне и не сохраняет ресурс
22 января 2020, 11:55
0
Действительно, работает. Большое спасибо!)
Может вам так же известно как подсветить поле красным и сфокусироваться на нем?
Как это работает с стандартной валидацией полей в MODx при сохранении.
21 января 2020, 21:19
0
Спасибо!
Разбираюсь с плагинами.
Подскажите, как получить TV до сохранения ресурса.
$resource->getTVValue('date') — таким образом берет уже существующее значение
Событие использую OnBeforeDocFormSave. Или нужно другое событие?
Если я просто на странице вызываю $_SESSION['paymentstatus'] = '1'; (без аякса), то параметр в сессию добавляется.
А удаление дублей это заложено в модыкс? Где-то это контролируется?
Обновил информацию в посте
Сделал франкенштейна из разных кусков :)
Нет понимания можно ли как-то повторно сгенерировать ссылку.
Куки я собираюсь передавать в зашифрованном виде, поэтому, думаю, шанс взлома сокращается)
Но странно что так [[!+photo]] работает.
Обновление до 7.4. помогло устранить ошибку.
Но в логах появилась ошибка:
С чем она может быть связана?
Проверил все права на папки все в норме.
Так же выставил «phpthumb_allow_src_above_docroot» = «Да»
У меня получилось реализовать следующим образом:
1. В ноде получаю куку PHPSESSID
2. С помощью пакета php-unserialize разбираю данные сессии и получаю user_id
3. Если в $dataarr['modx.user.contextTokens'] пусто, то перекидываю на страницу авторизации.
Результат прикрепляю ниже. Может кому пригодится.
На правильность метода не претендую, для меня это рабочий вариант) От прорисовки страницы до загрузки таблицы с 30000 строк = 2,1 сек.
pdoPage сниппет. С ним одна проблема — он выводит результат на страницу, который нам не нужен. Пока не понял как его убрать — просто вывожу в скрытый div.
Комментарии:
Инициализация dataTable:
Если вас не затруднит — поделитесь, пожалуйста, ссылкой на пример или примером кода.
OnBeforeDocFormSave — плагин срабатывает до сохранения ресурса
$modx->event->output() — выводит текст о ошибке в модальном окне и не сохраняет ресурс
Может вам так же известно как подсветить поле красным и сфокусироваться на нем?
Как это работает с стандартной валидацией полей в MODx при сохранении.
Разбираюсь с плагинами.
Подскажите, как получить TV до сохранения ресурса.
$resource->getTVValue('date') — таким образом берет уже существующее значение
Событие использую OnBeforeDocFormSave. Или нужно другое событие?