Андрей Копп
С нами с 07 октября 2013; Место в рейтинге пользователей: #176Добавление select с данными из другой таблицы в modExtra
Всем привет. Кто-нибудь на заготовке modExtra делал CоmboBox с данными из других таблиц? У меня есть файл вызывающий модальное окно с полями для заполнения:
assets/components/extras/js/mgr/widgets/categories.window.js
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);
mFilter2 вывод фильтров в другом блоке
Как вывести секцию 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';
Добавление данных в таблицу базы из 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' => 'Сообщение успешно отправлено'
]}
Оформление заказов по этапам
С НОВЫМ ГОДОМ! Счастья, здоровья и всех благ!
Народ может кто-нибудь подсказать как в minishop2 можно сделать оформление заказа по шагам? Тоесть на первой странице у нас будет список товаров в корзине с введением скидок с купона, на втором шаге заполнение данных для оформления заказа, на третьем шаге оплата через PayPal и редирект после успешной оплаты на страницу с благодарностью, что выбрали наш магазин? И все шаги это отдельные странички были бы?
Народ может кто-нибудь подсказать как в minishop2 можно сделать оформление заказа по шагам? Тоесть на первой странице у нас будет список товаров в корзине с введением скидок с купона, на втором шаге заполнение данных для оформления заказа, на третьем шаге оплата через PayPal и редирект после успешной оплаты на страницу с благодарностью, что выбрали наш магазин? И все шаги это отдельные странички были бы?
Вопросы по MinifyX
Каждый раз прежде, когда пытался использовать это дополнение, натыкался на нерешимые преграды и отказывался, так и не исследовав всё до конца.
Но в текущий проект большой и требует серьёзной оптимизации — вот и пытаюсь последние 2 дня разобраться что откуда растёт.
Итак, у меня следующие вопросы по использованию MinifiX:
Но в текущий проект большой и требует серьёзной оптимизации — вот и пытаюсь последние 2 дня разобраться что откуда растёт.
Итак, у меня следующие вопросы по использованию MinifiX:
[Решено] Дополнительные поля в Tickets
Всем привет! Создаю форму добавления объявлений, добавил новые TV поля таким образом:
UPD: Всё оказалось намного проще. Выводим TicketForm с параметрами:
<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">
Проблема с tv при выводе с помощью Fenom
Здравствуйте! Вот пытаюсь вывести tv «special_thumb» через снипет pdoResources в шаблоне используя Fenom:
Мой вопрос в следующем: как вывести tv параметр используя 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?
mFilter2 и кастомные таблицы
Вчера начал делать фильтрацию таблицы с фирмами на mFilter2. Сначало я создал файл кастомного класса:
core/components/msearch2/custom/filters/custom.class.php со следующим содержимым:
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;
}
}