MS2: доп. поле товара (плагин) типа «checkbox»
        Друзья, всем привет!
Уже несколько часов не могу найти ответа на простой, казалось бы, вопрос. Нужно добавить товару кастомное поле типа checkbox, в нашем случае оно имеет имя «outofstock». Все делаю по инструкции (текстовые поля добавлял неоднократно). Поле добавилось и работает на странице товара. Но если добавить это поле в грид категории и пытаться его отредактировать из грида, получается следующее:
Вот так выглядит плагин:
Файл msproductdata.js:
Файл msproductdata.map.inc.php:
Поле: outofstock
Тип: TINYINT
Длина/значения: 1
По умолчанию: 0
Атрибуты: unsigned
Null: да
Нутром чую, что проблема в msproductdata.js, а именно в части getColumns, но знаний не хватает понять, где именно проблема.
Помогите, кто чем может :)
    
    
                                                                                
            Уже несколько часов не могу найти ответа на простой, казалось бы, вопрос. Нужно добавить товару кастомное поле типа checkbox, в нашем случае оно имеет имя «outofstock». Все делаю по инструкции (текстовые поля добавлял неоднократно). Поле добавилось и работает на странице товара. Но если добавить это поле в грид категории и пытаться его отредактировать из грида, получается следующее:
- Отображается как 1/0, т.е. цифра (соответственно, checked/unchecked), а не как чекбокс;
 - Если редактировать — появляется checkbox, можно поставить галку (он в момент редактирования пустой вне зависимости от имеющегося значения);
 - После сохранения (перехода на другой товар) — сохраняется значение true или false, вот именно словами (в зависимости от того, была поставлена в чекбокс галка или нет);
 - Если затем перезагрузить страницу, то все значения обратно становятся 0 или 1 (но при этом измененные значения сохраняются, т.е. если я на предыдущем шаге галку ставил, то показывает 1, а если нет, то 0).
 
Вот так выглядит плагин:
Файл msproductdata.js:
miniShop2.plugin.outofstock = {
    getFields: function(config) {
        return {
            outofstock:{
                xtype:'xcheckbox',
                inputValue:1,
                checked:parseInt(config.record.outofstock),
                description: '<b></b>
' + _('ms2_product_outofstock_help')}
        }
    }
    ,getColumns: function() {
        return {
            outofstock:{width:50, sortable:false,  editor:
            {xtype:'xcheckbox', name: 'outofstock'}}
        }
    }
};Файл msproductdata.map.inc.php:
<?php
return array(
    'fields' => array(
        'outofstock' => NULL
    )
,'fieldMeta' => array(
        'outofstock' => array(
            'dbtype' => 'tinyint',
            'precision' => '1',
            'attributes' => 'unsigned',
            'phptype' => 'boolean',
            'null' => true,
            'default' => 0,
        )
    )
,'indexes' => array(
        'outofstock' => array (
            'alias' => 'outofstock',
            'primary' => false,
            'unique' => false,
            'type' => 'BTREE',
            'columns' =>
                array (
                    'outofstock' =>
                        array (
                            'length' => '',
                            'collation' => 'A',
                            'null' => false,
                        ),
                ),
        )
    )
);В БД добавил поле с такими параметрами:Поле: outofstock
Тип: TINYINT
Длина/значения: 1
По умолчанию: 0
Атрибуты: unsigned
Null: да
Нутром чую, что проблема в msproductdata.js, а именно в части getColumns, но знаний не хватает понять, где именно проблема.
Помогите, кто чем может :)
Комментарии: 4
                Владимир, спасибо, все работает! :)            
                    
                Можете продублировать решение, если не сложно? :) Ссылка битая, а я что-то запутался в выводах            
                    
                Для расширения полей удобно использовать — msFieldsManager            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.