[Mod] модуль "Быстрый заказ"

да, так и есть. сейчас тестирую модуль и обратил внимание на эти не понятные баги. я конечно очень прошу прощения, но не могли бы вы подсказать, как решить вопрос с тем, что бы окошко авторизации закрывалось и было активным? и по удалению товаров после заказа - тоже прошу помощи: поверхностный поиск по файлам скрипта не дал результатов в нахождении участка кода, ответственного за удаление товаров из корзины после оформления быстрого заказа... быть может там и нет этой возможности?
в общем, очень надеюсь на помощь и буду благодарен подсказке как это всё пофиксить!
1) по окошку. Там в js скрипте не хватает закрывающей скобки и фигурной скобки. Попробуй в строке 745 (перед закрывающим тегом script) прописать });
2) в файле \published\SC\html\scripts\modules\abstract\_methods\checkout\confirmation.php после строки
PHP:
$orderID = $checkoutEntry->emulate_ordOrderProcessing();
вставить
PHP:
$cartEntry = new ShoppingCart();
$cartEntry->cleanCurrentCart();
 
1) по окошку. Там в js скрипте не хватает закрывающей скобки и фигурной скобки. Попробуй в строке 745 (перед закрывающим тегом script) прописать });
2) в файле \published\SC\html\scripts\modules\abstract\_methods\checkout\confirmation.php после строки
PHP:
$orderID = $checkoutEntry->emulate_ordOrderProcessing();
вставить
PHP:
$cartEntry = new ShoppingCart();
$cartEntry->cleanCurrentCart();
спасибо, пробую. судя по всему речь идет о файле темплейта checkout.your_info_new.html ?) да, там строка 745, но там как раз уже стоит закрывающая });
причем у меня не только не получается закрыть окно, но и в обще окошечко авторизации не работает. ввожу мыло, появляется
Пользователь с таким E-mail зарегистрирован. Хотите войти?
ввожу пароль, подтверждаю, и ничего. ни "войти", ни "выслать пароль?" не срабатывают. тоже самое, если хочу закрыть окно, нажав на крестик. везде по ссылкам идет вызов javascript:void(0); но по какой то причине не обрабатывается.
mdss, может быть у вас есть еще идеи или варианты, как это починить?)
 
может быть у вас есть еще идеи или варианты, как это починить?)
вот весь скрипт, че уж мелочиться )) С ним должно работать все нормально.
HTML:
{literal}
<script type="text/javascript">
var customer_address = JSON.parse('{/literal}{$customer_address}{literal}');
var def = {};
{/literal}
{foreach key=key item=val from=$default}
def.{$key} = "{$val}";
{/foreach}
{literal}
$(document).ready(function(){
$(function (){
  //добавляем на страницу скрытые елементы
  $('body').append('<div id="overlay"></div>');
  $('body').append('<div id="loading"></div>');
  $('body').append('<div id="auth_form"><div id="close_w"><a href="javascript:void(0);"><img src="{/literal}{$smarty.const.URL_ROOT}{literal}/images_common/close.gif" border="0" id="close_remind" /></a></div><div class="auth_desc">Пользователь с таким E-mail зарегистрирован. Хотите войти?</div><div class="msg_error" id="auth_err"></div><div class="msg_ok" id="auth_ok"></div><form onsubmit="return false;" action="/checkout/"><input name="action" value="auth" type="hidden" /><div class="elem"><div class="call">{/literal}{lbl_usr_custinfo_login}{literal}</div><div class="block overflow"><span class="field"><input class="required" type="text" name="auth[Login]" value="{/literal}{$auth.Login|escape:'html'}{literal}" /></span></div></div><div class="elem"><div class="call">{/literal}{lbl_usr_custinfo_password}{literal}</div><div class="block overflow"><span class="field"><input class="required" name="auth[cust_password]" type="password" id="auth_ps"/></span></div></div><div class="elem"><div class="block overflow"><a href="javascript:void(0);">Войти</a>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" class="remind_password">{/literal}{lbl_lnk_forgot_password}{literal}</a></div></div></form></div>');

	$("#auth_form input").keypress(function (e) {
	if (e.which == 13) $('.elem a:contains(Войти)').click(); // отправка авторизации по enter
	if (e.which === 0) $('#close_w a').click(); // по esc закрыть окно авторизации
	});
	 $('.loader').ajaxStop(function(){ $(this).hide(); });

	var openLoader = function(imgID){
		$('#' + imgID + '_loader').show();
	};

	// удаляем/возвращаем дефолтное значение с поля
	var SetClearDef = function(){
		$('.field input, .field textarea').click(function(){if ( $(this).val() == def[$(this).attr('rel')] ) $(this).val('');});
		$('.field input, .field textarea').blur(function(){if ( !$(this).val() ) $(this).val(def[$(this).attr('rel')]);});
    };

	var getReq = function(){
	 				var i = 0; reqel = new Array();
	 				$('.required').each(function(){reqel[i] = $(this).attr('name');i++;});
	 				return reqel;
	};

	var SetAutocomplete = function(BlockID){
			var CountryID = '#' + BlockID + ' select[rel=countries]';
			var ZoneID = '#' + BlockID + ' select[rel=zones]';
			var CityID = '#' + BlockID + ' input[rel=city]';

			// выбор областей
			$(CountryID).change( function(){
				var state = $(ZoneID);
		        var suit = state.parent('span');
				if (state.hasClass("required")) {req = 1;} else req = 0;
				suit.html('<img src="' +  STORE_URL + '/images_common/big_loader.gif" border="0" />');
				$.ajax({
					type: "POST",
					url: STORE_URL + "/getzones.php",
					data: 'tp=f&cID=' +$(CountryID).val() + '&req=' + req,
					success:function(data){
						suit.html(data);
						suit.liveValidation({
							required: ['shipping_address[zoneID]'],
							fields: { "shipping_address[zoneID]": /^\S.*$/ }
						});
					}
				});
			});

			// авотоподбор городов
			var a = $(CityID).autocomplete({
				serviceUrl: STORE_URL + '/getcity.php',
				minChars:2,
				delimiter: /(,|;)\s*/, // regex or character
				width:170,
				maxHeight: 0, // если ноль то показывает весь список
				zIndex: 9999,
				deferRequestBy: 0, //miliseconds
				params: { country: function(){
									if ( $(CountryID).length ) return $(CountryID).val();
									return '';
									},
						  zone: function(){
									if ( $(ZoneID).length ) return $(ZoneID).val();
									return '';
									}}, //aditional parameters
				noCache: false //default is false, set to true to disable caching
		  });
	};

	var showError = function(msg,ID){
  	 err_bl = $('#' + ID);
  	 $('html, body').stop().animate({scrollTop: err_bl.html(msg).show().offset().top}, 1500);
  	 return false;
    };

	var setPosition = function(ID){
  	 _bl = $('#' + ID);
  	 $('html, body').stop().animate({scrollTop: _bl.offset().top}, 1500);
  	 return false;
    };

   $.fn.center = function () {
        var w = $(window);
        this.css("position", "absolute");
        this.css("top", (w.height() - this.height()) / 2 + w.scrollTop() + "px");
        this.css("left", (w.width() - this.width()) / 2 + w.scrollLeft() + "px");
        return this
    };

  // открываем окно
	var zID = 0;
	var open_remind = function(){
			email_val = $('span.field input[rel=email]').val();
			if( email_val.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/) ){
				if (zID) clearInterval(zID);
				openLoader('personal_info');
				$.ajax({
					type: "POST",
					url: STORE_URL + "/?ukey=checkout",
					cache: false,
					data: 'action=checkLogin&Login=' + email_val,
					success:function(data){
						if (data){
						  $('input[name="auth[Login]"]').val(email_val);
						  $('#auth_form input').css('');
						  $('#auth_form').liveValidation({
								required: getReq(),
								fields: {"auth[Login]": /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/, "auth[cust_password]": /^\S.*$/}
						  });
						  ShowImage();
						  setTimeout(function() { $('#auth_ps').focus(); return false }, 1000);
						}
					}
				  });
		}};

  // открытие формы смены адреса
  var openChoiceAddress = function() {
		openLoader('personal_info');
		$.ajax({
			type: "POST",
			url: STORE_URL + '/?ukey=change_address', data: 'ajax=1',
			cache: false,
			success:function(data2) {
				if (data2) {
					hidePart('personal_info');
					$('#choice_address').show().html(data2);
					SetClearDef();
					$('#choice_address').liveValidation({
						required: getReq(),
						fields: {	"address[first_name]": /^\S.*$/,
									"address[last_name]": /^\S.*$/,
									"address[countryID]": /^\S.*$/,
									"address[state]": /^\S.*$/,
									"address[zoneID]": /^\S.*$/,
									"address[city]": /^\S.*$/,
									"address[address]": /^\S.*$/,
									"address[zip]": /^\S.*$/,
									"confirmation_code": /^\S.*$/
									}
					});
					SetAutocomplete('choice_address');
					SetCheckChoice();
				}
			}
		});
  };


  // изменение адреса, авторизованного пользователя
  var SetCheckChoice = function(){
	  $('#choice_address form').submit(function(){
		  var formID = $(this);
			if ( $('#address-id-0').attr('checked') && $('#choice_address img[alt=Invalid]').length ) return showError('Заполните обязательные поля','choice_err');
			openLoader('personal_info');
			$.ajax({
				type: "POST",
				url: STORE_URL + '/?ukey=change_address',
				data: formID.serialize() + '&ajax=1',
				cache: false,
				success:function(data) {
					var answer = JSON.parse(data); //alert('name = ' + answer.success.first_name ); alert('succes = ' + answer.success);
					if ( answer.error ) showError(answer.error,'choice_err');
					if ( answer.success ) showCurrentAddress(answer.success);
				}
			});
			return false;
  		});
	};

  var hidePart = function(PartID) { $('#' + PartID).children('div').hide(); };
  //var showPart = function(PartID) { $('#' + PartID + ' div').show(); };

  var showCurrentAddress = function(address){
  	openLoader('personal_info');
	hidePart('personal_info');
	$('#show_info').show().children('span').hide(); // отображаем блок и прячем все его элементы
	for(var i in address) if ( $('#block_' + i) && address[i] ) { $('#block_' + i).show(); $('#show_' + i).html(address[i]); };
	// shipping_method
	$.ajax({
		type: "POST",
		url: STORE_URL + '/?ukey=checkout&step=shipping',
		data: 'ajax=1',
		cache: false,
		success:function(data) {
			if ( data == '2' ) { // нет методов доставки
				SetShipingGetPayment();
			} else {
				$('#shipping_method').html(data);
				$('#shipping_method table').attr('cellspacing', 0);
				$('#shipping_method tr:odd').addClass('zebra');
				$('#shipping_info').show();
				// проверяем выбрано ли доставка по умолчанию
				if ( $('#shipping_method input:checked').val() ) SetShipingGetPayment();
				// выбрать метод доставки и показать под него методы оплаты
				$('.radio_shipping_method').click(function(){ SetShipingGetPayment(); });
			};
		}
	});
  };

 //  выделение доставки, выбор оплаты, если она уже выбрана то отображение подтверждения
  var SetShipingGetPayment = function(){ $('.msg_error').hide();
  	$('#payment_info, #confirmation').hide();
	openLoader('shipping_info');
	$.ajax({
		type: "POST",
		url: STORE_URL + "/?ukey=checkout&step=shipping",
		cache: false,
		data: $('#shipping_method form').serialize() + '&ajax=1',
		success:function(data){
			if ( data ) {
				$.ajax({
					type: "POST",
					url: STORE_URL + "/?ukey=checkout&step=billing",
					cache: false,
					data: 'ajax=1',
					success:function(data2){
						// если способов оплаты нет или один, то метод оплаты уже выбран
						if ( data2 == '1') {
							$.ajax({
								type: "POST",
								url: STORE_URL + '/?ukey=checkout&step=confirmation',
								data: 'ajax=1',
								cache: false,
								success:function(data3) {
									$('#confirmation_method').html(data3);
									$('#confirmation').show();
									SetSendConfirmation();
								}
							});
						} else {
							$('#payment_method').html(data2);
							$('#payment_method table').attr('cellspacing', 0);
							$('#payment_method tr:odd').addClass('zebra');
							$('#payment_info').show();
							// проверяем выбрано ли доставка по умолчанию
							if ( $('#payment_method input:checked').val() ) SetPaymentGetConfirmation();
							// выбрать метод доставки и показать под него методы оплаты
							$('.radio_payment_method').click(function(){ SetPaymentGetConfirmation(); });
						};
					}
				  });
			} else {
			    // отображаем ошибку
				showError('Ошибка доставки','customer_err');
			};
		}
	  });

  };
  //  выбор оплаты и отображение подтверждения
    var SetPaymentGetConfirmation = function(){ $('.msg_error').hide();
		openLoader('payment_info');
		$('#confirmation').hide();
		$.ajax({
		type: "POST",
		url: STORE_URL + "/?ukey=checkout&step=billing",
		cache: false,
		data: $('#payment_method form').serialize() + '&ajax=1',
		success:function(data){
			// если способов оплаты нет или один, то метод оплаты уже выбран
			if ( data == '1') {
				$.ajax({
					type: "POST",
					url: STORE_URL + '/?ukey=checkout&step=confirmation',
					data: 'ajax=1',
					cache: false,
					success:function(data2) {
						$('#confirmation_method').html(data2);
						$('#confirmation').show();
						SetSendConfirmation();
					}
				});
			} else {
			    // отображаем ошибку
				showError('Ошибка оплаты','customer_err');
			};
		}
	  });

	};

	  //  отправка подтверждения
    var SetSendConfirmation = function(){
		$('#confirmation form').submit(function(){ $('.msg_error').hide();
			openLoader('confirmation');
			$.ajax({
				type: "POST",
				url: STORE_URL + '/?ukey=checkout&step=confirmation',
				data: $('#confirmation form').serialize() + '&ajax=1',
				cache: false,
				success:function(data3) {
					var answer = JSON.parse(data3);
					if ( answer.error ) showError(answer.error,'confirmation_err');
					if ( answer.success ) {
						var link = STORE_URL + '/?ukey=checkout&step=success&orderID=' + answer.success;
						location.href = link;
					};
				}
			});
			return false;
		});
	};
	
	
// лайтбокс


function ShowImage(){

  //Опредиляем на сколько сбвинут вертикальный скроллинг окна браузера
	var yScroll = $.browser.opera? window.innerHeight : $(window).height();
	//Опредиляем высоту окна
  var windowHeight = $.browser.opera? window.innerWidth : $(window).width();
	//Вертикальная позиция popup
	yScroll = 0;
  var posTop = Math.round((windowHeight/2) + yScroll);

   // alert( 'yScroll = ' + yScroll + '   windowHeight = ' + windowHeight  + ' hight not ie = ' + window.innerHeight);

  //показываем индикатор загрузки
  $('#loading').css({display:'block',top:posTop+'px'});
  //прячем всплывающее "окно" если оно не скрыто
  $('#auth_form').css('display','none');

    //после того как картинка загрузится
    $('#loading').css('display','none');//убираем индикатор загрузки




    //устанавливаем минусовые margin чтобы див #popup был по центру окна
//    $('#auth_form').css({top:posTop+'px',marginLeft:'-'+Math.round($("#auth_form").innerWidth()/2)+'px',marginTop:'-'+Math.round($("#auth_form").innerHeight()/2)+'px'});
	$('#auth_form').center();
    $('#overlay').css({//растягиваем фоновый слой
					width:		$(window).width(),
					height:		$(document).height(),
					opacity:  0.5
				}).fadeIn(5,function() {//показываем затемненный фон;
    //после этого плавное появление дива #popup с нашей картинкой
    $('#auth_form').fadeIn().css('opacity','1');
    }).click(function(){$('#close_w a').click();});


}



///////////////////////////////
///////////////////////////////
///////////////////////////////



if ( !customer_address ) {
// установка формы персональных данных
	SetClearDef();

	$('#info_form').liveValidation({
	    required: getReq(),
		fields: {{/literal}
					{foreach key=key item=val from=$additional_fields}
					   {if $val.reg_field_required}
					      "customer_info[_custom_fields][{$val.reg_field_ID}]": /^\S.*$/,
					   {/if}
					{/foreach}
				{literal}
					"customer_info[first_name]": /^\S.*$/,
					"customer_info[last_name]": /^\S.*$/,
					"customer_info[Email]": /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/,
					"auth[Login]": /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/,
					"auth[cust_password]": /^\S.*$/,
					"shipping_address[countryID]": /^\S.*$/,
					"shipping_address[state]": /^\S.*$/,
					"shipping_address[zoneID]": /^\S.*$/,
					"shipping_address[city]": /^\S.*$/,
					"shipping_address[address]": /^\S.*$/,
					"shipping_address[zip]": /^\S.*$/,
					"confirmation_code": /^\S.*$/
					}
		});


  SetAutocomplete('info_form');

// отправка формы с песональными данными
  $('#info_form form').submit(function(){
  $('.msg_error').hide();
     if ( $('#info_form img[alt=Invalid]').length ) return showError('Заполните обязательные поля','customer_err');
	 openLoader('personal_info');
	 $.ajax({
		type: "POST",
		url: STORE_URL + "/?ukey=checkout",
		cache: false,
		data: $('#info_form form').serialize() + '&ajax=1',
		success:function(data){
			var answer = JSON.parse(data);
			if ( answer.error ) showError(answer.error,'customer_err');
			if ( answer.success ) { showCurrentAddress(answer.success); };
		}
	  });
	return false;
  });

 /////////////////
 // проверка мыла & авторизация
 /////////////////

	$('input[rel=email]').focus(function(){
         // проверяем каждые 0,5с значение поля. необходимо для различных видов заполениея поля (из буфера винды, кеша браузера и т.д.)
		    zID = setInterval(open_remind ,500);
	});
	$('input[rel=email]').keyup(open_remind);
  $('input[rel=email]').blur(function(){ clearInterval(zID); });

  // закрываем
  $('#close_w a').click(function(){
  	$('#overlay').fadeOut();
  	$('.msg_error').hide();$('#auth_form').hide();
	if (zID) clearInterval(zID);
	$('input[rel=email]').parent().html('<input type="text" value="' + $('input[name="customer_info[Email]"]').val() + '" name="customer_info[Email]" rel="email">').liveValidation({
							required: ['customer_info[Email]'],
							fields: { "customer_info[Email]": /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/ }
						}).focus();
	$('#without_reg').val('1');
  });

  // авторизация
  $('.elem a:contains(Войти)').click(function(){
  $('.msg_error').hide();
	var img_src = $('#close_w img').attr('src');
	$('#close_w img').ajaxStart(function(){
		$('#close_w img').attr('src', STORE_URL + '/images_common/big_loader.gif');
	});
	$('#close_w img').ajaxStop(function(){
		$('#close_w img').attr('src', img_src);
	});
	$.ajax({
		type: "POST",
		url: STORE_URL + "/?ukey=checkout",
		cache: false,
		data: $('#auth_form form').serialize(),
		success:function(data){
			if ( data ) {
				$('#close_w a').click();
				customer_address = JSON.parse(data);
				showCurrentAddress(customer_address);
			} else {
			    // отображаем ошибку
				$('#auth_form').css('height','280px');
				$('#auth_ok').hide();
				$('#auth_err').html('Пароль неверен. <a href="javascript:void(0);" onclick="remind_password();">Выслать пароль на почту?</a>').show();
			};
		}
	  });
  });

  open_remind(); // если при первой загрузке браузер вставил мыло, проверим его

	// напоминание пароля
	$('.remind_password').click(function(){remind_password()});

} else showCurrentAddress(customer_address);

// изменить текущие персональные данные
$('#show_info input[name="chg_address"]').click(function(){ $('.msg_error').hide();
	hidePart('personal_info');
	$('#shipping_info, #payment_info, #confirmation').hide();
	if ( customer_address ) { openChoiceAddress(); } else $('#info_form').show();
});

// скрыть / отобразить раздел
$(".minimize").toggle(
	function(){
		$(this).parent().next().hide();
		$(this).html('Показать');
		return false;
	},
	function(){
		$(this).parent().next().show();
		$(this).html('Скрыть');
		return false;
	}
);

});

  // напоминание пароля
 function remind_password(){
 	var img_src = $('#close_w img').attr('src');
	$('#close_w img').ajaxStart(function(){
		$('#close_w img').attr('src', STORE_URL + '/images_common/big_loader.gif');
	});
	$('#close_w img').ajaxStop(function(){
		$('#close_w img').attr('src', img_src);
	});
  	$.ajax({ type: "POST", cache: false, url: STORE_URL + '/?ukey=remind_password', data: 'action=remind&ajax=1&email=' + $('input[name="auth[Login]"]').val(),
			 success: function(data){
				 $('#auth_form').css('height','280px');
			 	if(data){
					$('#auth_err').hide();
					$('#auth_ok').html('Пароль выслан Вам на почту').show();
				} else {
					$('#auth_ok').hide();
					$('#auth_err').html('Зачем Вы изменили e-mail? Он неверен').show();
				}
			 }
	});
  };
			/*var customer = JSON.parse(data);
			alert('имя = ' + customer.name); */

});
</script>
{/literal}
 
спасибо огромное за помощь! всё работает как нужно, и это несомненно радует! :) очень благодарен, что помогли решить задачу. сам бы не справился.
"мой дед говорит: делай добро и бросай его в воду. оно не пропадет - добром к тебе вернется"(с)
6d74ae0ef1977a45978be341fdc.jpg
 
всем здрасте.
использовал вот этот мод "Быстрый заказ" , но есть одно, "но" если сделать две кнопки и более кнопок то перестает работать...
Для просмотра ссылки Войди или Зарегистрируйся

добавлял в файл product_brief.html там где отоброжает список продуктов в категории...
как можно решить данную проблему...
 
если я все правильно понял то необходимо сделать переменную, которая будет меняться и присваиваться к каждой кнопке...
только осталось понять какую...
 
если я все правильно понял то необходимо сделать переменную, которая будет меняться и присваиваться к каждой кнопке...
только осталось понять какую...

не переменные а id для каждой кнопки. по тому примеру там есть такой код

Код:
$(document).ready(function() {
$("a#fast_order").fancybox();
});

вот в него и добавляем новый id $("a#мой_id_кнопки").fancybox();

есстессно и для вызова ее используем
<a id="мой_id_кнопки" href="#id_формы"><img src="/images/19.gif"></a>

<div id='id_формы'>
 
не переменные а id для каждой кнопки. по тому примеру там есть такой код

Код:
$(document).ready(function() {
$("a#fast_order").fancybox();
});

вот в него и добавляем новый id $("a#мой_id_кнопки").fancybox();

есстессно и для вызова ее используем
<a id="мой_id_кнопки" href="#id_формы"><img src="/images/19.gif"></a>

<div id='id_формы'>

Это работает только если она одна на странице, а если сделать две и более то все...
 
Это работает только если она одна на странице, а если сделать две и более то все...
вы или читать не умеете или не хотите понять суть вопроса. прочитайте мой пост еще раз, сделайте так как я написал и я уверен, что все получится
 
вы или читать не умеете или не хотите понять суть вопроса. прочитайте мой пост еще раз, сделайте так как я написал и я уверен, что все получится
Приношу свои извинения, но я не правильно задал вопрос... если сделать кнопки две и более перестает работать не само окно, а именно кнопка отправить... Еще раз извиняюсь...
 
Назад
Сверху