R2m0x94 (Vasily)

R2m0x94 (Vasily)

С нами с 07 мая 2018; Место в рейтинге пользователей: #396
R2m0x94 (Vasily)
30 декабря 2020, 01:16
0
Но при добавлении к товару, когда после перейти в пакет msProductKits, там пусто :'( печалька…
R2m0x94 (Vasily)
30 декабря 2020, 00:59
0
Алексей, Спасибо. Тоже делал такой функционал, но только через тв. перечислял id дополнительных, но тут почувствовал гибкость исполнения. Только поставил и смотрю чанк. Предлагаю заменить на такой
{var $item_name = $product | resource : 'pagetitle'}
<tr>
    <td style="width: 40%;">
        {if $product > 0}
        <strong><a href="{$product | url}">{$item_name}</a></strong>
        {else}
        <strong>{$name}</strong>
        {/if}
    </td>
    <td style="width: 50%;"><small>{$description}</small></td>
    <td style="width: 10%; text-align: center;">
        <small>{$count} шт.</small>
    </td>
</tr>
R2m0x94 (Vasily)
17 декабря 2020, 19:26
+4
Когда пролистываешь вниз баг, оказываешься наверху. И такой баг уже довольно давно наблюдается. Спасибо
R2m0x94 (Vasily)
10 ноября 2020, 19:53
0
Было бы неплохо, да и посмотрел примеры vYLVjRz, ZEWJNRE, PoNjpYG — крутая тема, тут надо подумать как использовать её с getTables или с pdoTools. Так, как понимаю, что pdoTools вообще обновляться возможно не будет больше.
R2m0x94 (Vasily)
26 октября 2020, 21:15
0
Нет, он создаётся на время запроса, затем чистится и отследить сложно, поэтому в лог попадает последующий запрос, который кешируется и пишется в лог, потому что его уже нет и создался новый. Тут вариант допиливать инструкцию или комментировать например дописать условия отработки в лог
R2m0x94 (Vasily)
26 октября 2020, 19:03
0
Да ошибки так и не ушли, пока решил просто комментарием вывода этой ошибки в лог, но это не решение проблемы. Конечно можно отключить кэширование бд, но это тоже не решение проблемы. Если только частичное, но вопрос до сих пор ещё активный
R2m0x94 (Vasily)
11 октября 2020, 01:37
0
На фронте цена без success не обновляется, поэтому перезагрузка, пока как решить не знаю
R2m0x94 (Vasily)
11 октября 2020, 01:14
0
Возможно success не пишется из-за версии jQuery 3.4.1.., а на закуску рабочий вариант, правда с перезагрузкой :/
<script>
// Пришлось делать перезагрузку стр.
$(document).on('change','.autosave', function(){ 
    //$.post('assets/components/autosave/action.php', { product_id: $(this).data('product_id'), price: $(this).val()}).done(function(data) { 
    //    alert("Data Loaded: " + data);
    //});
    $.ajax({  
        type: "POST",  
        url: 'assets/components/autosave/action.php', 
        data: { product_id: $(this).data('product_id'), price: $(this).val()},
        success:  function(data) { 
            if (!data){
                miniShop2.Message.success('Успешно обновлена!' + data)
                location.reload(true);
                //setInterval('location.reload()', 444);
            } else{
                miniShop2.Message.error('Что-то пошло не так, попробуйте позже!');
                console.log($.post);
                console.log(data);
            }
        } 
    }); 
});

</script>
В чанке вывода mFilter2
<input type="number" name="price" class="autosave" data-product_id="{$id}" value="{$price | replace : ' ' : ''}"/>
А в action.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

define('MODX_API_MODE', true);
//require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/index.php';

/** @noinspection PhpIncludeInspection */
require dirname(dirname(dirname(dirname(__FILE__)))) . '/index.php';


$modx->getService('error', 'error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget('FILE');

if (!$modx->user->hasSessionContext('mgr')){
    echo 'Access denied';
    exit;
}

if((int)$_POST['product_id'] > 0){
    if($product = $modx->getObject('msProduct',(int)$_POST['product_id'])){
        $product->set('price',$_POST['price']);
        $product->save();
    }
}
R2m0x94 (Vasily)
11 октября 2020, 00:16
0
Работает, спасибо :)
У меня кэшировался mFilter2, от туда и непонятки были, но в уведомление data всё ровно не пишется :(
R2m0x94 (Vasily)
10 октября 2020, 23:44
0
<script>
$(document).on('change','.autosave',function(){ 
    $.post('assets/components/autosave/action.php', 
    { product_id: $(this).data('product_id'), value: $(this).val() })
      .done(function(data) { 
        alert("Data Loaded: " + data);
        console.log($.post);
      });
});
</script>
В пост отправляется
ƒ (a,c,d,e){return n.isFunction©&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}
R2m0x94 (Vasily)
10 октября 2020, 23:26
0
Спасибо, поправил, но сохранения не происходит, консоль пустой, data пустая, ошибок нет, единственное, что пишет консоль — предупреждение
[Violation] 'load' handler took 1776ms
И alert вылетает
Data Loaded:
R2m0x94 (Vasily)
10 октября 2020, 12:49
0
Спасибо, попробовал. /assets/components/autosave/action.php отдаёт 500 ошибку при смене цены и не сохраняет
R2m0x94 (Vasily)
10 октября 2020, 11:42
0
Ну не на всю продукцию править надо цены, а на некую часть. Да на счёт умножения я знаю как сделать, и к тому же msPre решает эту проблему, но вопрос в другом, про фронтенд
R2m0x94 (Vasily)
10 октября 2020, 01:10
0
Ещё не пробовал, попробую отпишусь. Кстати существует атрибут content=editable на саму таблицу, которую вывожу, через mFilter2. Люди говорят, что можно через процессор сохранять по ajax, следовательно вариант проще есть, просто надо вещать на элемент и сохранить будет возможно, правда, вот как через процессор это сделать с ajax пока не вникал, но через форму на php по sql запросу получается отредактировать таблицу (без процессора modx, пока тестирую). GetTables слишком трудно даётся, да и к тому же ещё не успел спросить про фильтр, так и не дошел до него, а про getTabs, тоже не вникнул почему у меня нет вкладок, как их туда прописать.

По сути мне всего то надо в уже имеющейся таблице, которую вывожу на mFilter2 — сделать ячейку или поле +price доступным для быстрого редактирования (событие doubleClick например), так как цены часто меняются и всё, вот думаю если товаров больше 100k как это сделать? И я понимаю, что это реально сделать, но с процессором MODX ещё не доводилось иметь дело, думаю вскором проработать этот вопрос, если есть решение буду очень благодарен
R2m0x94 (Vasily)
08 октября 2020, 13:37
0
Да в модульном есть, но модульное не использую, так как и так в quickview таблица в модульном выводится. И надо в таблице прикрутить редактор. Прикрутить, то получается, вот только загвоздка при авто сохранении не понимаю ничего не происходит, а когда из textarea убираю атрибут data-editor=«xml», то редактор слитает и авто сохранение происходит.

Если добавить класс к textarea[data-editor] в assets/components/gettables/js/gettables.js
$('.ace_text-input').addClass('get-table-autosave');
То вообще row не выводится
R2m0x94 (Vasily)
08 октября 2020, 11:13
0
А в модулюном quickview теперь «Строка таблицы не найдена» и не происходит автосохранение
0.0044389: __construct
0.0000319: cacheConfig
0.0001361: handleRequest getTable/autosave
0.0006440: xPDO query object created
0.0005109: Included list of tvs: equipment, technical_specifications, videos
0.0002639: leftJoined modTemplateVarResource as TVequipment
0.0000439: leftJoined modTemplateVarResource as TVtechnical_specifications
0.0000389: leftJoined modTemplateVarResource as TVvideos
0.0000961: Added selection of msProduct: `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `alias_visible`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `content`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
0.0000060: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `equipment`
0.0000021: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `technical_specifications`
0.0000019: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `videos`
0.0000191: Replaced TV conditions
0.0000060: Processed additional conditions
0.0000880: Added where condition: id=3374, modResource.id:IN(3374)
0.0000029: Replaced TV conditions
0.0000598: Sorted by modResource.id, ASC
0.0000041: Limited to 1, offset 0
0.0002069: SQL prepared "SELECT `msProduct`.`id`, `msProduct`.`type`, `msProduct`.`contentType`, `msProduct`.`pagetitle`, `msProduct`.`longtitle`, `msProduct`.`description`, `msProduct`.`alias`, `msProduct`.`alias_visible`, `msProduct`.`link_attributes`, `msProduct`.`published`, `msProduct`.`pub_date`, `msProduct`.`unpub_date`, `msProduct`.`parent`, `msProduct`.`isfolder`, `msProduct`.`introtext`, `msProduct`.`content`, `msProduct`.`richtext`, `msProduct`.`template`, `msProduct`.`menuindex`, `msProduct`.`searchable`, `msProduct`.`cacheable`, `msProduct`.`createdby`, `msProduct`.`createdon`, `msProduct`.`editedby`, `msProduct`.`editedon`, `msProduct`.`deleted`, `msProduct`.`deletedon`, `msProduct`.`deletedby`, `msProduct`.`publishedon`, `msProduct`.`publishedby`, `msProduct`.`menutitle`, `msProduct`.`donthit`, `msProduct`.`privateweb`, `msProduct`.`privatemgr`, `msProduct`.`content_dispo`, `msProduct`.`hidemenu`, `msProduct`.`class_key`, `msProduct`.`context_key`, `msProduct`.`content_type`, `msProduct`.`uri`, `msProduct`.`uri_override`, `msProduct`.`hide_children_in_tree`, `msProduct`.`show_in_tree`, `msProduct`.`properties`, IFNULL(`TVequipment`.`value`, '') AS `equipment`, IFNULL(`TVtechnical_specifications`.`value`, '') AS `technical_specifications`, IFNULL(`TVvideos`.`value`, '') AS `videos` FROM `modx_site_content` AS `msProduct` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVequipment` ON `TVequipment`.`contentid` = `msProduct`.`id` AND `TVequipment`.`tmplvarid` = 95 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVtechnical_specifications` ON `TVtechnical_specifications`.`contentid` = `msProduct`.`id` AND `TVtechnical_specifications`.`tmplvarid` = 94 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVvideos` ON `TVvideos`.`contentid` = `msProduct`.`id` AND `TVvideos`.`tmplvarid` = 96 WHERE  ( `msProduct`.`id` = 3374 AND `modResource`.`id` IN (3374) )  ORDER BY modResource.id ASC LIMIT 1 "
0.0004120: Could not process query, error #1054: Unknown column 'modResource.id' in 'where clause'
0.0074599: Total time
4 194 304: Memory usage
R2m0x94 (Vasily)
08 октября 2020, 11:05
0
Только вот без этого ace пропадает, но сохраняет, а с ace не сохраняет. Плюс в параметрах
'content'=>[
                'edit'=>[
                    'type'=>'textarea','editor'=>'ace','editor_mode'=>'xml','editor_height'=>'400','editor_theme'=>'idle_fingers'
                ],
и все равно атрибуты не подсовывает
R2m0x94 (Vasily)
08 октября 2020, 10:46
0
В конфиге edit поля таблицы прописать 'editor'=>'ace':
Обновил версию, но редактор так и не подключился