Андрей Копп

Андрей Копп

С нами с 07 октября 2013; Место в рейтинге пользователей: #176

Добавление select с данными из другой таблицы в modExtra

Всем привет. Кто-нибудь на заготовке modExtra делал CоmboBox с данными из других таблиц? У меня есть файл вызывающий модальное окно с полями для заполнения:

assets/components/extras/js/mgr/widgets/categories.window.js
Extras.window.CreateCategory = function (config) {
    config = config || {};
    if (!config.id) {
        config.id = 'extras-category-window-create';
    }
    Ext.applyIf(config, {
        title: _('extras_category_create'),
        width: 550,
        autoHeight: true,
        url: Extras.config.connector_url,
        action: 'mgr/category/create',
        fields: this.getFields(config),
        keys: [{
            key: Ext.EventObject.ENTER, shift: true, fn: function () {
                this.submit()
            }, scope: this
        }]
    });
    Extras.window.CreateCategory.superclass.constructor.call(this, config);
};
Ext.extend(Extras.window.CreateCategory, MODx.Window, {

    getFields: function (config) {
        return [{
            xtype: 'textfield',
            fieldLabel: _('extras_category_name'),
            name: 'name',
            id: config.id + '-name',
            anchor: '99%',
            allowBlank: false,
        }, {
            xtype: 'textfield',
            fieldLabel: _('extras_category_repository'),
            name: 'repository_id',
            id: config.id + '-repository_id',
            anchor: '99%',
            allowBlank: true,
        }, {
            xtype: 'xcheckbox',
            boxLabel: _('extras_category_active'),
            name: 'active',
            id: config.id + '-active',
            checked: true,
        }];
    },

    loadDropZones: function () {
    }

});
Ext.reg('extras-category-window-create', Extras.window.CreateCategory);


Extras.window.UpdateCategory = function (config) {
    config = config || {};
    if (!config.id) {
        config.id = 'extras-category-window-update';
    }
    Ext.applyIf(config, {
        title: _('extras_category_update'),
        width: 550,
        autoHeight: true,
        url: Extras.config.connector_url,
        action: 'mgr/category/update',
        fields: this.getFields(config),
        keys: [{
            key: Ext.EventObject.ENTER, shift: true, fn: function () {
                this.submit()
            }, scope: this
        }]
    });
    Extras.window.UpdateCategory.superclass.constructor.call(this, config);
};
Ext.extend(Extras.window.UpdateCategory, MODx.Window, {

    getFields: function (config) {
        return [{
            xtype: 'hidden',
            name: 'id',
            id: config.id + '-id',
        }, {
            xtype: 'textfield',
            fieldLabel: _('extras_category_name'),
            name: 'name',
            id: config.id + '-name',
            anchor: '99%',
            allowBlank: false,
        }, {
            xtype: 'textfield',
            fieldLabel: _('extras_category_repository'),
            name: 'repository_id',
            id: config.id + '-repository_id',
            anchor: '99%',
            allowBlank: true,
        }, {
            xtype: 'xcheckbox',
            boxLabel: _('extras_category_active'),
            name: 'active',
            id: config.id + '-active',
        }];
    },

    loadDropZones: function () {
    }

});
Ext.reg('extras-category-window-update', Extras.window.UpdateCategory);
SEQUEL.ONE
22 сентября 2018, 17:03
modx.pro
5
2 010
+1

mFilter2 вывод фильтров в другом блоке



Всем привет. Возможно кто-то уже сталкивался с такой задачей, когда фильтры могут идти не только в одном блоке поочерёдно, но и находится выше контентной части (как показано на скриншоте). Как это можно реализовать простым и понятным путём? Не хочется городить велосипеды.
SEQUEL.ONE
22 сентября 2018, 00:51
modx.pro
3
2 174
+2

Как вывести секцию CDATA в XML?

Всем привет. Встала задача вывести в XML секцию CDATA, сам XML генерируется на PHP через массив. Вот пример того как это всё выводится:

<?php
/*
 * Выводим данные по всем репозиториям для дерева разделов
 */
require_once  dirname(__FILE__).'/response.class.php';
 
class ExtrasRepository extends ExtrasResponse{
    var $root = '<repositories/>';

	public function process(){
		$result = array(
			'repository'  => [
			    'id' => '4d4c3fa6b2b0830da9000001',
                'name' => 'Extras',
                'description' => '<img src="http://modxcms.com/assets/images/icons/ico_tools.png" alt="Add-ons" class="left" /> <h3>Want something not included in the MODx core install?</h3><p>Menu builders to image galleries, helper utilitis to podcasting and everything in between. These add-ons can help you build a site to <em>exactly</em> match your vision.</p>',
				'createdon' => '2011-02-04T18:05:07+0000',
                'rank' => 0,
                'packages' => 760,
                'tag' => '',
                'templated' => 0
            ],
		);

		return $this->toXML($result);
	}

}
return 'ExtrasRepository';
SEQUEL.ONE
17 сентября 2018, 11:53
modx.pro
2
1 231
+1

Добавление данных в таблицу базы из AjaxForm и FormIT

Всем привет. Делаю сейчас компонент, в котором пользователи добавляют свои блоги и на них могут подписываться. Застопорился на моменте когда нужно добавлять данные. Решил что через AjaxForm и FormIt надёжнее.

Вообщем делал следующим образом. Вызвал сниппет с такими параметрами:

{'!AjaxForm' | snippet : [
    'snippet' => 'FormIt',
    'form' => '@FILE components/ticketscommunity/form.tpl',
    'redirectTo' => 16,
    'hooks' => 'email,TicketsCommunityHooksBlog',
    'emailSubject' => 'Добавление нового блога "[[+name]]"',
    'emailTo' => 'admin@site.com',
    'validate' => 'alias:required',
    'validationErrorMessage' => 'В форме содержатся ошибки!',
    'successMessage' => 'Сообщение успешно отправлено'
]}
SEQUEL.ONE
16 сентября 2018, 13:59
modx.pro
2
1 470
+1

Оформление заказов по этапам

С НОВЫМ ГОДОМ! Счастья, здоровья и всех благ!

Народ может кто-нибудь подсказать как в minishop2 можно сделать оформление заказа по шагам? Тоесть на первой странице у нас будет список товаров в корзине с введением скидок с купона, на втором шаге заполнение данных для оформления заказа, на третьем шаге оплата через PayPal и редирект после успешной оплаты на страницу с благодарностью, что выбрали наш магазин? И все шаги это отдельные странички были бы?
SEQUEL.ONE
03 января 2017, 12:22
modx.pro
4
2 569
0

Вопросы по MinifyX

Каждый раз прежде, когда пытался использовать это дополнение, натыкался на нерешимые преграды и отказывался, так и не исследовав всё до конца.
Но в текущий проект большой и требует серьёзной оптимизации — вот и пытаюсь последние 2 дня разобраться что откуда растёт.
Итак, у меня следующие вопросы по использованию MinifiX:
Василий Столейков
25 августа 2016, 16:00
modx.pro
4
4 735
0

[Решено] Дополнительные поля в Tickets

Всем привет! Создаю форму добавления объявлений, добавил новые TV поля таким образом:

<input type="text" name="tv_price" value="0" />
где tv_price название tv параметра, но при сохранении сохраняет только значение value по умолчанию, тоесть 0. Не могу разобраться, как прописать name правильно tv.price или tvprice?

UPD: Всё оказалось намного проще. Выводим TicketForm с параметрами:

[[!TicketForm?
&requiredFields=`parent,pagetitle,content,bprice,bcountry,bregion,bcity`
&allowedFields=`parent,pagetitle,content,published,bprice,bcountry,bregion,bcity`
&parents=`322,335,338,345,351,352,353,354,355,356,357,358,361,365,369,373`
]]
а в чанке который выводит форму прописываем TV-параметры в name без префиксов tv., tv_ а как есть:

<input type="text" name="bprice" value="0">
Андрей Копп
19 августа 2016, 23:01
modx.pro
6
1 881
+1

Проблема с tv при выводе с помощью Fenom

Здравствуйте! Вот пытаюсь вывести tv «special_thumb» через снипет pdoResources в шаблоне используя Fenom:
{$_modx->runSnippet('!pdoResources', [
    'parents'=>$_modx->resource.id,
    'sortby'=>'menuindex',
    'sortdir'=>'ASC',
    'depth'=>1,
    'limit'=>0,
    'includeTVs'=>'special_thumb',
    'prepareTVs'=>1,
    'includeContent'=>1,
    'tpl'=>'@INLINE 
    <div class="special_item">
    	<div class="container">
    		<div class="row"> 
    			<div class="col-md-4 text-right">
    				<img src="{$special_thumb}" alt="">
    			</div>
    			<div class="col-md-8">
    				<h3>{$pagetitle}</h3>
    				{$content}
    				<a href="{$_modx->makeUrl($id)}" title="{$pagetitle}" class="read_more">Подробнее</a>
    			</div>
    		</div>
    	</div>
    </div>
    '
])}
Код работает, но не выводится tv special_thumb, логи смотрел, там ошибок нет, заметил что в запросе есть такая строка
`TVspecial_thumb` ON `TVspecial_thumb`.`contentid` = `modResource`.`id`
но не понял что это значит.

Мой вопрос в следующем: как вывести tv параметр используя Fenom?
Алексей
16 августа 2016, 08:46
modx.pro
4
4 383
0

mFilter2 и кастомные таблицы

Вчера начал делать фильтрацию таблицы с фирмами на mFilter2. Сначало я создал файл кастомного класса:

core/components/msearch2/custom/filters/custom.class.php со следующим содержимым:

<?php
class CustomFilter extends mse2FiltersHandler {
    
	function __construct(mSearch2 &$mse2,array $config = array()) {
        parent::__construct($mse2, $config);
        $this->modx->addPackage('spromo' ,MODX_CORE_PATH.'components/spromo/model/');
        $this->modx->addPackage('gl' ,MODX_CORE_PATH.'components/gl/model/');
        $this->modx->addPackage('voteforms' ,MODX_CORE_PATH.'components/voteforms/model/');
    }
    
	public function getSpromoCompaniesValues(array $fields, array $ids) {
		$filters = array();
		$no_id = false;
		if (!in_array('id', $fields)) {
			$fields[] = 'id';
			$no_id = true;
		}
		$q = $this->modx->newQuery('SpromoCompanies');
		$q->select(implode(',', $fields));
		$q->where(array('SpromoCompanies.id:IN' => $ids));
		$tstart = microtime(true);
		if ($q->prepare() && $q->stmt->execute()) {
			$this->modx->queryTime += microtime(true) - $tstart;
			$this->modx->executedQueries++;
			while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
				foreach ($row as $k => $v) {
					$v = trim($v);
					if ($k == 'category_id') {
						if ($row['parent'] == $v) {continue;}
						else {$k = 'parent';}
					}
					if ($v == '' || ($k == 'id' && $no_id)) {
						continue;
					}
					elseif (isset($filters[$k][$v])) {
						$filters[$k][$v][] = $row['id'];
					}
					else {
						$filters[$k][$v] = array($row['id']);
					}
				}
			}
		}
		else {
			$this->modx->log(modX::LOG_LEVEL_ERROR, "[mSearch2] Error on get filter params.\nQuery: ".$q->toSql()."\nResponse: ".print_r($q->stmt->errorInfo(),1));
		}

		return $filters;
	}
}
Андрей Копп
30 июля 2016, 12:49
modx.pro
4
2 837
+1

Как организовать меню?

Всем привет. Столкнулся не совсем со стандартной задачей. Нужно вывести от родителя все дочерние ресурсы по блокам, как показано на скриншоте:


Андрей Копп
28 июля 2016, 19:01
modx.pro
1
1 189
+1