R2m0x94 (Vasily)

R2m0x94 (Vasily)

С нами с 07 мая 2018; Место в рейтинге пользователей: #396
R2m0x94 (Vasily)
08 октября 2020, 10:33
0
Да, это в чанке getTable.EditRow.tpl, напортачил))
<textarea data-editor="xml" data-gutter="1" rows="15"
из-за этого авто сохранение почему-то перестаёт работать
R2m0x94 (Vasily)
08 октября 2020, 09:49
0
Скорей всего это из-за моего шаманства. Сейчас проверю…
R2m0x94 (Vasily)
08 октября 2020, 09:47
0
Да, скрипт assets\components\gettables\js\gettables.js подгружается, а позавчера сохранялось всё норм было
R2m0x94 (Vasily)
08 октября 2020, 09:45
0
да и если просто getTable на странице выводу то перестал автосохранять
R2m0x94 (Vasily)
08 октября 2020, 09:21
0
Можно же выборку сделать через pdoPage с элементом getTable, без pdoTools параметров, или ошибаюсь?

Ещё заметил, что при GetTableFetch в quickview, что некоторые id дублируются аж по 8 штук,
R2m0x94 (Vasily)
08 октября 2020, 09:17
0
Главное, что запись в него не идёт. Хотя есле в инпекторе браузера убрать атрибут readonly, то сохраняет. Я вот, что не понял, когда в quickview выаожу таблицу, то там почему-то не идёт сохранение через GetTablesFetch, может ещё надо какую строку подкрутить?

Ну а в модульном всё сохраняет))
R2m0x94 (Vasily)
08 октября 2020, 00:28
0
там в js 1 строчка кода. я для этого дописал
'readonly': textarea.attr('readonly')
или в конструкторе
'readonly'=>'readonly',
R2m0x94 (Vasily)
07 октября 2020, 23:02
0
Да, getTableFetch выводит в quickview супер-круто. Спасибо
R2m0x94 (Vasily)
07 октября 2020, 21:33
0
А есть, какой-то простой способ редактировать поле (уже из выборки pdo) tv через процессор напрямую из фронтенда?
R2m0x94 (Vasily)
07 октября 2020, 20:53
0
не найдено
0.5348940: toJSON {
    "getTableEditRowTpl": "getTable.EditRow.tpl",
    "getTableFilterTpl": "getTable.Filter.tpl",
    "getTableModalCreateUpdateTpl": "getTable.Modal.CreateUpdate.tpl",
    "getTableNavTpl": "getTable.nav.tpl",
    "getTableOuterTpl": "getTable.outer.tpl",
    "getTableRowTpl": "getTable.row.tpl",
    "getTabsTpl": "getTabs.tpl",
    "limit": 10,
    "outputSeparator": "\n",
    "sortby": "id",
    "sortdir": "ASC",
    "showLog": 1,
    "table": {
        "class": "modResource",
        "actions": {
            "update": {
                "icon": "far fa-edit",
                "processors": {
                    "modResource": "resource\/update"
                }
            }
        },
        "pdoTools": {
            "class": "modResource",
            "parents": 3679,
            "template": 4,
            "includeTVs": "technical_specifications,equipment,videos",
            "where": {
                "template": 4,
                "id": 3690
            },
            "limit": 5
        },
        "checkbox": 0,
        "autosave": 1,
        "row": {
            "id": {
                "custom": {
                    "cls": "red",
                    "icon": "far fa-edit",
                    "tag": "a",
                    "attr": "data-data-tag"
                }
            },
            "content": {
                "edit": {
                    "type": "textarea"
                }
            },
            "technical_specifications": {
                "class": "TV",
                "label": "\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438",
                "edit": {
                    "type": "textarea"
                }
            },
            "equipment": {
                "class": "TV",
                "label": "\u041a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438",
                "edit": {
                    "type": "textarea",
                    "where_field": "`TVequipment`.`value`",
                    "search_fields": {
                        "contentid": "id",
                        "tmplvarid": 95
                    },
                    "readonly": 1
                }
            },
            "videos": {
                "class": "TV",
                "label": "\u0412\u0438\u0434\u0435\u043e",
                "edit": {
                    "type": "textarea"
                }
            },
            "alias": {
                "edit": {
                    "readonly": 1
                }
            }
        }
    }
}
0.0000050: __construct
0.0000019: getTables loaded.
0.0000341: cacheConfig
0.0005000: load propertySet getTables_bootstrap_v3
0.0000069: cacheConfig
0.0002151: registerCSS_JS
0.0001290: handleRequest getTable/fetch
0.5363231: Total time
4 194 304: Memory usage
R2m0x94 (Vasily)
07 октября 2020, 20:25
0
// id'шники вывожу на стр.
<div class="quickview-parent"
	data-quickview-mode="modal"
	data-data-action="chunk"
	data-data-element="quickview.tpl"
	data-quickview-loop="true"
	data-quickview-viewhash="true"
	data-dialog-size="size-wide"
	data-dialog-buttons='["prev","next"]'>
	[[!pdoPage?
		&parents=`3679`
		&element=`msProducts`
		&tpl=`@INLINE
		<a class='quickview'
		    data-click
		    data-data-id="[[+id]]"
		    data-quickview-group="product"
		    data-dialog-title="[[+pagetitle]]">[[+pagetitle]]</a>
	`]]
	[[!+page.nav]]
</div>

// В чанке quickview.tpl
    {'!getTable' | snippet : [
    'showLog'=>1,
    'toJSON'=>1,
    'table'=>[
        'class'=>'modResource',
        'actions'=>[
            'update' =>[
                'icon' => 'far fa-edit',
                'processors'=>['modResource'=>'resource/update'],
            ],
        ],
        'pdoTools'=>[
            'class'=>'modResource',
            'parents'=>3679,
            'template'=>4,
            'includeTVs'=>'technical_specifications,equipment,videos',
            'where'=>[
                'template' => 4, 
                'id' => $_modx->resource.id,
            ],
            'limit'=>5,
        ],
        'checkbox'=>0,
        'autosave'=>1,
        'row'=>[
            'id'=>[
                'custom' =>[
                
                'cls'=>'red',
                'icon' => 'far fa-edit',
                'tag' =>'a',
                'attr' => 'data-data-tag',
                ],
            ],
            'content'=>[
                'edit'=>[
                    'type'=>'textarea',
                ],
                
            ],
            'technical_specifications'=>[
                'class'=>'TV',
                'label'=>'Технические характеристики',
                'edit'=>['type'=>'textarea',],
            ],
            'equipment'=>[
                'class'=>'TV',
                'label'=>'Комплект поставки',
                'edit'=>[
                    'type'=>'textarea',
                    'where_field'=>'`TVequipment`.`value`',
                    'search_fields' => [
                        'contentid' => 'id',
                        'tmplvarid' => 95,
                    ],
                    'readonly'=>1,
                ],
                
           ],
           'videos'=>[
                'class'=>'TV',
                'label'=>'Видео',
                'edit'=>['type'=>'textarea',],
            ],
           'alias'=>['edit'=>['readonly'=>1,],],
        ],
    ],
]}
R2m0x94 (Vasily)
07 октября 2020, 20:20
0
А какой синтаксис параметров !getTable вывести их из коробки? Например
[[!getTable? &table=`в фигурных или квадратных?`]]
R2m0x94 (Vasily)
07 октября 2020, 20:16
0
Ну да в модалке можно, просто при ajax пагинации ace слитает
R2m0x94 (Vasily)
07 октября 2020, 20:13
0
Попробовал выводить модалку quickview, а в ней форму редактирования, но не вышло. Взял за основу пример 5.
Окно открылось, но getTable сниппет отдаёт 'не найдено', хоть и в сервис quickview подключил getTable.

...
                            }
            }
        }
    }
}
0.0000050: __construct
0.0000019: getTables loaded.
0.0000191: cacheConfig
0.0004060: getTables init from cache.
0.0004311: load propertySet getTables_bootstrap_v3
0.0000069: cacheConfig
0.0002370: registerCSS_JS
0.0001199: handleRequest getTable/fetch
0.4405050: Total time
2 097 152: Memory usage
R2m0x94 (Vasily)
07 октября 2020, 12:39
0
А как сделать, если стр. много и при переключении на вторую стр. редактор-ACE не слитал?
R2m0x94 (Vasily)
07 октября 2020, 10:21
0
Было б вообще волшебно, чтоб как в админке с emmet'ом, но пока ещё эта настройка 'editor'=>'ACE' — не работает
R2m0x94 (Vasily)
06 октября 2020, 16:54
0
Ещё предлагаю внести корректировки в textarea, чтобы можно было кодить с ACE
// такова типа (или же из системной настройки, если он установлен и возможность вкл/выкл редактора в системной настройке)
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js"></script>
<style>
    .autosize {
      /*resize: none;
      overflow: hidden;*/
      height:400px!important;
    }
    .autosize[readonly], .autosize[readonly] div {
        background: brown;
        user-select: none;
        cursor: not-allowed;
    }
</style>

autosize();
function autosize(){
    var text = $('.autosize');

    text.each(function(){
        $(this).attr('rows',1);
        resize($(this));
    });

    text.on('input', function(){
        resize($(this));
    });
    
    function resize ($text) {
        $text.css('height', 'auto');
        $text.css('height', $text[0].scrollHeight+'px');
    }
}

// Hook up ACE editor to all textareas with data-editor attribute
$(function() {
  $('textarea[data-editor]').each(function() {
    var textarea = $(this);
    var mode = textarea.data('editor');
    var editDiv = $('<div>', {
      position: 'absolute',
      width: textarea.width(),
      height: textarea.height(),
      'class': textarea.attr('class'),
      'readonly': textarea.attr('readonly')
    }).insertBefore(textarea);

    textarea.css('display', 'none');
    var editor = ace.edit(editDiv[0]);
    editor.renderer.setShowGutter(textarea.data('gutter'));
    editor.getSession().setValue(textarea.val());
    editor.getSession().setMode("ace/mode/" + mode);
    editor.setTheme("ace/theme/idle_fingers");
    //editor.setTheme("ace/theme/chrome");

    // copy back to textarea on form submit...
    textarea.closest('form').submit(function() {
      textarea.val(editor.getSession().getValue());
    })
  });
});



// Ещё в чанк getTable.EditRow.tpl для textarea
    {case 'textarea'}
        <textarea data-editor="xml" data-gutter="1" rows="15" data-field="{$edit.field}" name="{$edit.field}" placeholder="{$edit.placeholder}" class="form-control autosize get-table-autosave"
            style="max-height: 400px;" {if $edit.readonly}readonly{/if}>{$edit.value}</textarea>
        <span class="error_{$edit.field}"></span>
R2m0x94 (Vasily)
06 октября 2020, 11:11
0
Подключил bootstrap без quickview, окно открылось с полями, как и было задумано, но при сохранении в уведомлении пишет, что объект не сохранен.
Object   не сохранен update
И не сохранились значения, а напрямую в таблице всё сохраняется и сохранялось без проблем