ExtJS для Minishop2. Поле даты.

Цель — создать тип поля, для Minishop2 в котором будет только дата (без поля выбора времени).

По логике подсмотренной в файлах Minishop2 и системных файлах MODX пытаюсь сделать вот так:

miniShop2.combo.Dates = function(config) {
	config = config || {};
	Ext.applyIf(config,{
	         hideTime: true
		,allowBlank: true
		,hiddenFormat:'Y-m-d H:i:s'
		,dateFormat: MODx.config.manager_date_format
		,dateWidth: 120
	});
	miniShop2.combo.Dates.superclass.constructor.call(this,config);
};
Ext.extend(miniShop2.combo.Dates,Ext.ux.form.DateTime);
Ext.reg('xdates',miniShop2.combo.Dates);

Один фиг поле времени выводится(
Почему?
Даниил
28 октября 2016, 06:06
modx.pro
1
2 729
0

Комментарии: 17

Володя
28 октября 2016, 09:26
0
попробуйте как
timeWidth: 0
    Даниил
    28 октября 2016, 13:41
    0
    Пробовал! В этом случае поле уходит вправо, от него как бы небольшой кусочек остается, но остается, полностью не отключается зараза))
    Даниил
    28 октября 2016, 15:04
    0
    Еще вот такой код отображает поля верно:

    miniShop2.combo.Dates = function(config) {
    	config = config || {};
    	Ext.applyIf(config,{
            format : "d.m.Y"
    	});
    	miniShop2.combo.Dates.superclass.constructor.call(this,config);
    };
    Ext.extend(miniShop2.combo.Dates,Ext.form.DateField);
    Ext.reg('xdates',miniShop2.combo.Dates);

    Данные вводятся, но после обновления страницы ресурса поле пустое, как будто ничего не заполняли. При этом физически значение существует и никуда не пропадает, просто оно не отображается в поле. Почему мне пока тоже не понятно.
      Марат Марабар
      28 октября 2016, 15:08
      0
      А если так
      ....
      ....
      Ext.extend(miniShop2.combo.Dates, Ext.form.DateField);
      ....
        Даниил
        28 октября 2016, 15:17
        0
        Ну наверное пока я размещал, Вы писали))))))
        Ответ в предыдущем сообщении. Работает, но не отображает после обновления стр.
          Марат Марабар
          28 октября 2016, 15:26
          0
          Нужно ещё name и value указать. Что-то должно получиться типа такого
          miniShop2.combo.Dates = function(config) {
          	config = config || {};
          	Ext.applyIf(config,{
          	name: 'name_column',
                  fieldLabel: 'Дата окончания доступности',
                  description: 'description',
                  allowBlank: true,
                  format: 'd.m.Y',
                  dateWidth: 120,
                  value: 'name_column'
          	});
          	miniShop2.combo.Dates.superclass.constructor.call(this,config);
          };
          Ext.extend(miniShop2.combo.Dates,Ext.form.DateField);
          Ext.reg('xdates',miniShop2.combo.Dates);
          где name_column имя колонки в БД.
            Даниил
            28 октября 2016, 16:01
            0
            Не помогло, к сожалению. Результат тот же, после обновления стр в поле пусто.
              Марат Марабар
              28 октября 2016, 16:10
              0
              А если в value указать жёстко
              value: '20.10.2016'
              Отображается?

              Не понятно где ты этот код размещаешь, как получаешь и записываешь данные.
        Даниил
        28 октября 2016, 16:29
        0
        В исходники все записано.
        Приведенный код пихаю в assets/components/minishop2/js/mgr/misc/ms2.combo.js
        Ну и потом прописываю парочке минишоповских полей в assets/components/minishop2/js/mgr/product/product.common.js
        Вот так:
        ,weight: {xtype: 'xdates', description: 'w'+_('ms2_product_weight_help')}
        			,size: {xtype: 'xdates', description: _('ms2_product_size_help')}

        Соответственно в БД у меня поля таблицы отредактированы (формат у них сделал один в один как например у полей publishedon, createdon, deletedon ну и т.п.)
          Марат Марабар
          28 октября 2016, 18:25
          0
          У тебя не получится в эти поля записать. weight использует число с плавающей точкой, а size — json строка (вроде)
          Используй через плагин своё поле — это будет правильней и ничего не перепишется при обновлении.
            Даниил
            28 октября 2016, 20:29
            0
            Да я исправил это все в коде и в БД. Задал нужный формат (точнее собсно пытаюсь вот задать) и отключил проверки где надо… Не суть вообще. Абсолютно тот же код я мог и в плагине написать, так что не обращайте внимание на то где он расположен. Представьте что это из кода плагина выдержка.

            Прост я хз как потом значение кастомных полей, если через плагин лепить, выводить в админке в таблице заказов. А если так, то оно итак уже реализовано.
              Марат Марабар
              28 октября 2016, 20:57
              0
              Так через системную настройку ms2_order_product_fields и выведешь в таблице заказов кастомное поле.
                Даниил
                29 октября 2016, 05:47
                0
                Разве? Чтот я раньше когда-то делал плагином, так и не смог добить потом чтоб вывелось в заказы… Или это в каких-то новых версиях MS2 добавилось?
          Даниил
          09 ноября 2016, 04:20
          0
          Кстати вопрос так до сих пор и не решился
            Илья Уткин
            09 ноября 2016, 07:36
            0
            Попробуйте указать xtype: datefield
              Даниил
              10 ноября 2016, 19:39
              0
              Работает. Но после обновления стр. показывает, вместо того что я сохранил, пустое поле. При этом физически данные в БД сохраняются. Выше писал об этом.
            shipulina
            21 июля 2022, 07:26
            0
            Xtype:
            {
                        xtype: 'datefield',
                        fieldLabel: _('note_date'),
                        name: 'date',
                        format: 'Y-m-d',
                        id: config.id + '-date',
                        anchor: '99%',
            }
            В get процессоре:
            public function beforeOutput()
                {
                    if(!empty($this->object->date)) {
                        $date = new DateTime($this->object->date);
                        $this->object->date = $date->format('Y-m-d');
                    }
                }
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              17