Павел Гвоздь

Павел Гвоздь

С нами с 31 мая 2015; Место в рейтинге пользователей: #2
Павел Гвоздь
24 ноября 2015, 11:31
0
Себе заливать чтоли?
Павел Гвоздь
18 ноября 2015, 17:58
0
Очистить то очистил корзину, когда товары приходится все удалить. А вот как дать пользователю понять, что корзина очистилась по причине того, что все товары, которые он выбрал, уже недоступны, да ещё и перезагрузить страницу, чтобы он не бился головой об стену, так сказать, думая, что корзина то у него полная.

Поясню немного иначе. Скрипт, проверяя определённые условия, удаляет товары из корзины перед оформлением заказа. Может получиться так, что товары придётся удалить все. Следовательно пользователю об этом стоит сообщить, что корзина его пуста в связи с неимением уже на складе товара. А вот как потом обновить страницу? У меня получается либо обновить страницу и оставить пользователя в непонимании, что вообще произошло, либо сообщить юзеру сообщение и оставить страницу «как есть», что тоже плохо. Вот так делема. :)
Павел Гвоздь
18 ноября 2015, 17:37
0
Вот у меня в связи с этим вопрос — как это реализовать?)
А, помоему там в объекте «order» передан класс для работы с корзиной. Спасибо!
Павел Гвоздь
18 ноября 2015, 17:36
0
Тогда, если это решается так, то у меня другой вопрос. Вот у меня есть определённая проверка, после которой омжет оказаться так, что в оформленном заказе не останется товаров, следовательно такой заказ юзеру отдавать безсмысленно, как и оставлять его в системе. Я его удаляю. Возвращаю в msorderhandler.class.php сообщение о том, что товары, которые он выбрал уже недоступны для покупки, а как корзину его опустошить из плагина по событию msOnCreateOrder?
Павел Гвоздь
18 ноября 2015, 17:20
0
Или решение есть только при событии msOnCreateOrder? То бишь удалять выбранные мной товары из заказа, когда он уже сохранён и объект создан.
Павел Гвоздь
18 ноября 2015, 08:53
0
Вопрос. Когда ты изменил поле для своего типа документов, после новой генерации компонента оно сбросится? И что нужно сделать для того, чтобы тот JS файл пересоздался заново? То бишь, что нужно сделать, чтобы нечаяно сбросить внесённые мной изменения в этот файл?
Павел Гвоздь
17 ноября 2015, 09:33
+1
Странноватый вопрос. Я почему-то думал, что люди выбирают MODX за его «резиновость». Видимо некоторые руководствуются другими причинами…

Кстати, «бегунок цен, как в miniShop» — это не «как в miniShop», а «как в mSearch2».
Павел Гвоздь
16 ноября 2015, 15:48
0
А разве нельзя будет с помощью способа в этом плагине обойтись без создания компонента ради модели, действуя по твоей инструкции?
Павел Гвоздь
16 ноября 2015, 15:03
+1
Как приятнее, так и делайте. :) В новых версиях, которые будет делать Василий, и этот способ, как я понял, будет поддерживаться.
Павел Гвоздь
16 ноября 2015, 11:48
0
Спасибо. Я так понимаю, на посещаемых сайтах решение, которое предоставил Николай в своей статье подойдёт больше?
Павел Гвоздь
16 ноября 2015, 11:42
0
Как понять «злоупотреблять»? Не совсем понимаю, сколько надо подгрузить loadClass и прописать дополнительных колонок, чтобы начало грузить систему?
Павел Гвоздь
16 ноября 2015, 10:38
0
Спасибо, Сергей, большое за помощь. Только я видимо не ясно описал то, что мне нужно. Твоё решение добавляет таб на основное окно со списком заказов. А мне надо в модальное окошко с подробностями заказа. Поэтому я и ссылаюсь на тот кусок кода в minishop2, говоря "если на табах этих нет ID". А твоё решение работает, только не решает моей задачи, к сожалению. Кстати событие плагина можно использовать вот такое "msOnManagerCustomCssJs". В minishop2 это дело уже предусмотрено.
Павел Гвоздь
16 ноября 2015, 10:20
0
Василий, я правильно понимаю, что это как-то связано вот с этим — habrahabr.ru/post/253737/?

И что твоим способом можно обойтись без создания своих компонентов ради моделей, как описано в той инструкции от Николая?
Павел Гвоздь
16 ноября 2015, 09:24
0
Так, а как воспользоваться методом MODx.addTab, если на табах этих нет ID? Прописав такой код мне ничего не добавило:
MODx.addTab('minishop2-window-order-update',
{
	id: "mskupon-order-kupons-tab",
	title: _('mskupon_tab_title'),
	items: [{
		xtype: "mskupon-order-kupons-grid"
	}]
})

Насколько вообще плохо то решение, с помощью которого мне удалось решить это, подскажи, пожалуйста? И если не трудно, то как в данном случае воспользоваться методом .addTab?
Павел Гвоздь
15 ноября 2015, 20:41
1
0
Удалось решить, вытащив метод .push() из метода .on(). То бишь вот код, который добавляет табу:
Ext.ComponentMgr.onAvailable('minishop2-window-order-update', function()
{
	msComponent.order_id = this.record.id || 0;
	msComponent.ms2tab_order = {
		autoHeight: true,
		autoWidth: true,
		bodyCssClass: "tab-panel-wrapper",
		border: true,
		hideMode: "offsets",
		order_id: msComponent.order_id,
		title: _('mscomponent_tab_title'),
		xtype: "mscomponent-order-grid",
	};
	
	this.fields.items.push(msComponent.ms2tab_order);
});

Не знаю, насколько это правильно. Надеюсь знающие расскажут.
Павел Гвоздь
15 ноября 2015, 20:13
0
Если сделать вот так:
this.on('beforerender', function()
{
	this.fields.items.push(msComponent.ms2tab_order);
	this.load();
});

То в консоль вываливает ошибку:
Uncaught TypeError: Cannot read property 'getUpdater' of undefined
Павел Гвоздь
15 ноября 2015, 17:33
+2
Есть в наше время такие сервисы, вроде антигейт/антикапча, которые позволяют при помощи миллиона маленьких китайцев обойти капчу. Думаю, если кому-то нужно будет накрутить, ежели он умудрился обойти проверку по IP, — то и обойдёт проверку по капче.
Вообще к капче отношусь очень скептически. С одной стороны при должном подходе она не поможет, с другой стороны она очень раздражает. На хабре проскакивали интересные идеи, которые можно было бы использовать вместо надоедливой капчи. При желании это дело можно откопать.
Павел Гвоздь
12 ноября 2015, 09:10
1
+4
Есть у меня плагин для подмены мыл менеджеров в зависимости от города. Может чем-то поможет:

<?php
if( $modx->event->name == 'msOnCreateOrder' )
{
	$address = $msOrder->getOne('Address');
	$city = $address->city;
	
	$emails = array(
		'Москва' => array(
			'***@mail.ru',
			'***@mail.ru',
		),
		'Санкт-Петербург' => array(
			'***@mail.ru',
		),
	);
	
	if( !empty($emails[ $city ]) )
	{
		$manager_emails = implode( ',', $emails[ $city ] );
	}
	
	$modx->setOption('ms2_email_manager', $manager_emails);
}