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

Aleksandr Huz
14 июля 2021, 13:59
+1
Пока нет, но записал в todo-список.
Николай Каленников
14 июля 2021, 13:47
0
Поддержка полей с типом Image+ планируется?
Andrey
13 июля 2021, 20:10
0
Я надеялся, что есть готовое или встроенное решение, просто я его не нашёл)
Но это весьма полезно, спасибо!
Андрей
13 июля 2021, 19:43
2
+3
Можно написать плагин, который зарегает кастомный css, в котором прописать нужные стили.

<?php
$eventName = $modx->event->name;
switch($eventName) {
    case 'OnDocFormRender':
        $modx->regClientCSS('/../assets/css/custom.css');
        break;
}

В css где tv53 это id твшки например так:
#tv53 .x-form-item {
	display: inline-block;
	max-width: 60px;
}
И получить необходимое:

Ну или написать свой тип ТВ — Custom Template Variables и выводить как угодно =)
Andrey
13 июля 2021, 18:42
0
<p>Выберите файл(ы), но не более 5 файлов</p>
            <p class="addfile" id="addP"><input type="file" class="form-input" name="file" multiple accept="image/*,image/jpeg">
            <input type="button" id="addB" value="+" onmousedown="viewAddfile1()"></p>
            <p class="addfile" id="addP1"><input type="file" class="form-input" name="file1" multiple accept="image/*,image/jpeg">
            <input type="button" id="addB1" value="+" onmousedown="viewAddfile2()"></p>
            <p class="addfile" id="addP2"><input type="file" class="form-input" name="file2" multiple accept="image/*,image/jpeg">
            <input type="button" id="addB2" value="+" onmousedown="viewAddfile3()"></p>
            <p class="addfile" id="addP3"><input type="file" class="form-input" name="file3" multiple accept="image/*,image/jpeg">
            <input type="button" id="addB3" value="+" onmousedown="viewAddfile4()"></p>
            <p class="addfile" id="addP4"><input type="file" class="form-input" name="file4" multiple accept="image/*,image/jpeg"></p>

            <span class="error_file"></span>
          </div>
          <script>
            function viewAddfile1(){
              document.getElementById("addP1").style.display = "flex";
            };
            function viewAddfile2(){
              document.getElementById("addP2").style.display = "flex";
            };
            function viewAddfile3(){
              document.getElementById("addP3").style.display = "flex";
            };
            function viewAddfile4(){
              document.getElementById("addP4").style.display = "flex";
            };
          </script>
5 или 4?
Andrey
13 июля 2021, 17:22
0
&emailTpl=`email_calctest.tpl`
Чанк так и называется? Может без .tpl попробовать?)
Алексей
13 июля 2021, 17:18
0
Спасибо за наводку! Так и есть! Компонент autoRedirector использует эти события и перебирает у себя в цикле дерево ресурсов.

А ещё вопрос можно ли как то отключить лог действий пользователя для импорта, а то недавно чистил таблицу, она уже на 2 гига выросла…
Andrey
13 июля 2021, 17:14
0
В типе «дата» нельзя несколько одновременно выбрать. А чекбоксы визуально проще выглядят — сразу все дни. Да, их можно выстроить в несколько столбцов, но их порядок сверху вниз, а хотелось бы, как строки, слева направо. Или, если на одной вкладке несколько тв, хочется иметь возможность расположить их в линию хотя бы, а не друг под другом. Типа, как если бы каждый отдельный чекбокс был inline-block, а сейчас они, как block. Вообще хочется гибкости в отображении любых тв в админке…
Роман
13 июля 2021, 16:34
0

Можно использовать тип ввода «Дата».
Александр
13 июля 2021, 16:32
0
Вот держите:
<h1>Заказ {$page}</h1>
<h3>Ссылка на страницу: {$_modx->makeUrl($_modx->resource.id)}</h3>
<hr>
<h2>Данные заказчика:</h2>
{$name != '' ? "<p><strong>Имя зазказчика: </strong>"~$name~"</p>" : ''}

{$phone != '' ? "<p><strong>Телефон: </strong>"~$phone~"</p>" : ''}

{$email != '' ? "<p><strong>E-mail: </strong>"~$email~"</p>" : ''}

{$company != '' ? "<p><strong>Компания: </strong>"~$company~"</p>" : ''}

{$msg != '' ? "<p><strong>Комментарий: </strong>"~$msg~"</p>" : ''}

<hr>
<h2>Данные заказа:</h2>
{$maket1 != '' ? "<p><strong>Наличие макета: </strong>"~$maket1~"</p>" : ''}

{$side != '' ? "<p><strong>Сторона печати: </strong>"~$side~"</p>" : ''}

{$material != '' ? "<p><strong>Вид материала: </strong>"~$material~"</p>" : ''}

{$calc_size_castum_w != '' ? "<p><strong>Размер ширина: </strong>"~$calc_size_castum_w~"</p>" : ''}

{$calc_size_castum_h != '' ? "<p><strong>Размер высота: </strong>"~$calc_size_castum_h~"</p>" : ''}

{$calc_size != '' ? "<p><strong>Размер: </strong>"~$calc_size~"</p>" : ''}

{$pechat != '' ? "<p><strong>Вид печати: </strong>"~$pechat~"</p>" : ''}

{$calc_paper != '' ? "<p><strong>Бумага основная / обложка: </strong>"~$calc_paper~"</p>" : ''}

{$calc_thickness != '' ? "<p><strong>Плотность бумаги / обложки: </strong>"~$calc_thickness~"</p>" : ''}

{$calc_colors != '' ? "<p><strong>Цветность / обложки: </strong>"~$calc_colors~"</p>" : ''}

{$calc_print != '' ? "<p><strong>Печать: </strong>"~$calc_print~"</p>" : ''}

{$calc_format != '' ? "<p><strong>Формат: </strong>"~$calc_format~"</p>" : ''}

{$calc_count != '' ? "<p><strong>Количество листов: </strong>"~$calc_count~"</p>" : ''}

{$calc_kalendar != '' ? "<p><strong>Вид календаря: </strong>"~$calc_kalendar~"</p>" : ''}

{$calc_setka != '' ? "<p><strong>Календарная сетка: </strong>"~$calc_setka~"</p>" : ''}

{$calc_luvers != '' ? "<p><strong>Вид крепления: </strong>"~$calc_luvers~"</p>" : ''}

{$calc_reklama != '' ? "<p><strong>Количество рекламных полей: </strong>"~$calc_reklama~"</p>" : ''}

{$dlina != '' ? "<p><strong>Длина: </strong>"~$dlina~" см.</p>" : ''}

{$hirina != '' ? "<p><strong>Ширина: </strong>"~$hirina~" см.</p>" : ''}

{$qt != '' ? "<p><strong>Тираж: </strong>"~$qt~" шт.</p>" : ''}

{$calc_qt != '' ? "<p><strong>Тираж: </strong>"~$calc_qt~"</p>" : ''}

{$time != '' ? "<p><strong>Время изготовления: </strong>"~$time~"</p>" : ''} 

{$calc_time != '' ? "<p><strong>Время изготовления: </strong>"~$calc_time~"</p>" : ''} 

{$calc_bigovka != '' ? "<p><strong>Биговка: </strong>"~$calc_bigovka~"</p>" : ''} 

{$calc_postwork != '' ? "<p><strong>Постобработка: </strong>"~$calc_postwork~"</p>" : ''} 

{$qt_block != '' ? "<p><strong>Количество {$qt_block_type}: </strong>"~$qt_block~"</p>" : ''} 

{$calc_paper_block != '' ? "<p><strong>Бумага для блока: </strong>"~$calc_paper_block~"</p>" : ''}

{$calc_thickness_block != '' ? "<p><strong>Плотность бумаги блока: </strong>"~$calc_thickness_block~"</p>" : ''}

{$calc_colors_block != '' ? "<p><strong>Цветность блока: </strong>"~$calc_colors_block~"</p>" : ''}

{$calc_binding != '' ? "<p><strong>Тип крепления блока: </strong>"~$calc_binding~"</p>" : ''}

{$calc_cut != '' ? "<p><strong>Вырубка изделия: </strong>"~$calc_cut~"</p>" : ''}

{$calc_falz != '' ? "<p><strong>Количество фальцев: </strong>"~$calc_falz~"</p>" : ''}

{$calc_foil != '' ? "<p><strong>Наличие тиснения: </strong>"~$calc_foil~"</p>" : ''}

{$calc_foil_color != '' ? "<p><strong>Фольга: </strong>"~$calc_foil_color~"</p>" : ''}

{$calc_foil_klishe != '' ? "<p><strong>Изготовление клише: </strong>"~$calc_foil_klishe~"</p>" : ''}

{$calc_round != '' ? "<p><strong>Скругление углов: </strong>"~$calc_round~"</p>" : ''}

{$calc_uv != '' ? "<p><strong>Лакирование: </strong>"~$calc_uv~"</p>" : ''}

{$сalc_lamin != '' ? "<p><strong>Ламинация: </strong>"~$сalc_lamin~"</p>" : ''}

{$сalc_plotrez != '' ? "<p><strong>Плоттерная резка: </strong>"~$сalc_plotrez~"</p>" : ''}

{$calc_result != '' ? "<p><strong>Цена, руб: </strong>"~$calc_result~"</p>" : ''}

{$calc_prices != '' ? "<p><strong>Цена, руб: </strong>"~$calc_prices~"</p>" : ''}
Роман
13 июля 2021, 15:50
0
А где сам email_calctest.tpl?
Виталий Киреев
13 июля 2021, 14:59
0
Смотрите, что за плагины вызываются на OnDocFormSave. Судя по всему там у вас перегенеривается что-то на каждое сохранение ресурса.
Алексей
13 июля 2021, 14:08
0
Столкнулся с непонятным ооочень долгим обновлением одной категории во время импорта (обновление происходит через процессор «mgr/extend/updatemscategory»), может кто-то может объяснить почему так? Очень долго искал место где всё стопориться на долго.

Потом уже воспроизводил через консоль, вручную подставил теже самые данные:
$processorProps = array(
    'id' => 274,
    'class_key' => 'msCategory',
    'pagetitle' => 'ЖЕНСКОЕ',
    'context_key' => 'web',
    'parent' => 40,
);

$this->modx->runProcessor('mgr/extend/updatemscategory', $processorProps, array('processors_path' => '/var/www/site/data/www/site/core/components/msync/processors/'));
Ответ о времени и запросах из консоли:
SQL time: 5.0144 s
SQL queries: 16430 — 16 тыщь запросов к базе? ради обновления одной категории???
PHP time: 49.7612 s
Total time: 54.7757 s — 54 секунды на одну категорию??
Memory: 116 MB
Сделал временно пока так
Файл /core/components/msync/model/msync/msynccataloghandler.class.php:790:
/**
 * Update miniShop2 category
 *
 * @param $parentId
 * @param $categoryId
 * @param $categoryName
 * @return bool|mixed
 */
protected function updateMsCategory($parentId, $categoryId, $categoryName)
{
    $this->clearModxErrors();

    // $processorProps = array(
    //     'id' => $categoryId
    //     , 'class_key' => 'msCategory'
    //     , 'pagetitle' => $categoryName
    //     , 'context_key' => $this->config['catalog_context']
    // );
    // if ($parentId) $processorProps['parent'] = $parentId;

    $category = $this->modx->getObject('modResource', $categoryId);
    if($category) {
        $category->set('class_key', 'msCategory');
        $category->set('pagetitle', $categoryName);
        $category->set('context_key', $this->config['catalog_context']);
        if ($parentId) $category->set('parent', $parentId);
        $category->save();

        return true;
    } else {
        return false;
    }

    // TODO очень долго выполняется, много запросов
    //$response = $this->modx->runProcessor('mgr/extend/updatemscategory', $processorProps, array('processors_path' => $this->config['processorsPath']));

    // if (!$response->isError()) {
    //     $_SESSION['importResources']['category']['updated'][] = $categoryId;
    //     return $response;
    // } else return false;
}
Владимир
13 июля 2021, 12:15
0
Есть возможность импорта/эскпорта цен и параметров из модификаторов msOptionsPrice2?
Евгений Webinmd
12 июля 2021, 13:42
0
необходимо добавить в словарь перевод для этого ключа mse2_filter_ms_weight
Семен
12 июля 2021, 13:32
0
Спасибо, все заработало. Невнимательно документацию смотрел.

Есть еще одна небольшая проблемка, видимо мозги уже закипели окончательно.
При переходе на англ. версию сайта, все названия фильтров переводятся, кроме «объема», выводит такое
mse2_filter_ms_weight, в упор не понимаю, почему так.

Буду безмерно благодарен за помощь. Спасибо!