PageSourceSearch

https://horrorbook.ru/application/maxsite/templates/mf/custom/cart/js/cart-my.js

js horrorbook.ru collected 2026-10-09 02:50:47 UTC 7,491 bytes, 197 lines download raw bytes

1/*
2 * (c) MaxSite CMS
3 * http://max-3000.com/
4 *
5 * Корзина — настраиваемая часть
6 * Файл должен быть загружен после cart.js
7 *
8 */
9	
10$(function(){
11
12	// селекторы/css-классы блоков вывода 
13	var cartS = {};
14	
15	cartS['showItemsCount'] = '.cart-item-count'; // блок для вывода колва одного товара
16	cartS['allCount'] = '.cart-all-count'; // блок для вывода колво наименований всех товаров
17	cartS['tableItems'] = '.cart-table-items'; // блок, где выводится таблица всех товаров
18	cartS['message'] = '.cart-message'; // блок, где выводятся сообщения
19	
20	
21	// прочие настройки
22	var cartVar = {};
23	
24	// формат вывода одного товара корзины с возможностью редактирования колва
25	// input.cart-item-count-change — input, где меняется колво товара
26	// для основного блока контейнера обязательно указывать id="cart-item{key}"
27	cartVar['format'] = '<div class="flex pad5 {count0}" id="cart-item{key}">'
28		+ '<div class="flex-grow5">{name}{desc}</div>'
29		+ '<div class="w10"><input class="w100 cart-item-count-change" type="number" min="0" max="{maxcount}" value="{count}" data-id="{key}"></div>'
30		+ '<div class="w10 t-right">{price}</div>'
31		+ '<div class="w10 mar10-l pad5-rl bold t-right bg-gray100">{sum}</div>'
32		+ '</div>';
33	
34	// тоже самое, только без возможности редактирования
35	cartVar['format_noedit'] = '<div class="flex pad5 {count0}" id="cart-item{key}">'
36		+ '<div class="flex-grow5">{name}{desc}</div>'
37		+ '<div class="w10">{count} шт.</div>'
38		+ '<div class="w10 t-right">{price}</div>'
39		+ '<div class="w10 mar10-l pad5-rl bold t-right bg-gray100">{sum}</div>'
40		+ '</div>';
41		
42	// класс для input, где можно менять колво товаров. Указывается в format
43	cartVar['item_count_change'] = '.cart-item-count-change';
44	
45	// класс если колво товара == 0 — в формате {count0} заменяется на этот текст
46	cartVar['count0'] = 'bg-gray100 t-red';
47	
48	// до и после для описания товара, если есть
49	cartVar['desc_start'] = '<div class="t90 italic mar10-tb">';
50	cartVar['desc_end'] = '</div>';
51	
52	
53	// блок ИТОГО сумма
54	cartVar['total_start'] = '<div class="bg-gray200 t-right mar10-t mar30-b pad5">Итого: <b>';
55	cartVar['total_end'] = '</b></div>';
56
57	// всего Товаров в корзине см. cartS['showItemsCount']
58	cartVar['showItemsCount_start'] = 'Товаров в корзине: ';
59	cartVar['showItemsCount_end'] = '';
60	
61	// сообщение об очистке корзины
62	cartVar['clear'] = 'Корзина очищена';
63	
64	// сообщение что корзина пуста
65	cartVar['cart_empty'] = 'Корзина пуста';
66	
67	// колво каждого товара в таблице 
68	cartVar['item_count_start'] = ' (';
69	cartVar['item_count_end'] = ' шт.)';
70	
71	// знак валюты — добавляется в конце {sum}
72	cartVar['currency'] = ' грн.';
73
74
75	// инициализация корзины
76	mycart = new Cart('cart', cartVar, cartS);
77	// mycart.log();
78	
79	// проставим внутри .cart-item-count колво товаров
80	mycart.showItemsCount();
81	
82	mycart.showAllCount(); // всего товаров в корзине
83	
84	// показать текущую корзину без редактирования и пустых товаров
85	mycart.showCartNoEmpty('.cart-table-items', '<h4>Ваша корзина</h4>');
86	
87	// действия по кнопкам
88	
89	// кнопка показать корзину
90	$(".cart-show").click(function() {
91		
92		mycart.showCart();
93		
94		return false;
95	});
96	
97	// кнопка показать корзину без полей редактирования
98	$(".cart-show-noedit").click(function() {
99		
100		mycart.showCartNoEdit();
101		
102		return false;
103	});
104	
105	// кнопка добавить в корзину
106	$(".cart-add-item").click(function() {
107		
108		var e = $(this);
109		
110		if (mycart.addItem(e)) // если было добавление
111		{
112			mycart.showAllCount(); // всего товаров в корзине
113			mycart.showCartNoEdit(); // обновляем таблицу товаров
114			mycart.showItemsCount(); // проставим колво каждого товара
115			mycart.showMessage('«' + e.data('name') + '» в корзину добавлен!', 'bg-green100 pad10');
116		}
117		
118		return false;
119	});
120	
121	// кнопка очистить корзину
122	$(".cart-clear").click(function() {
123		
124		mycart.clearCart(); // очистка
125		mycart.showAllCount(); // всего товаров в корзине
126		$(cartS['tableItems']).html(''); // блок корзины теперь пустой
127		mycart.showMessage(cartVar['clear'], 'bg-yellow pad10'); // сообщение
128		mycart.showItemsCount(); // проставим колво каждого товара
129		
130		return false;
131	});
132	
133	// input-number где можно изменить кол-во
134	$(cartS['tableItems']).on('change', cartVar['item_count_change'], function(e) {
135		
136		var t = $(this);
137		var count = t.val();
138		var itemId = t.data('id');
139		
140		mycart.changeCount(itemId, count); // изменяет колво
141		mycart.showCart(); // обновляем таблицу товаров
142		
143		// найдем заново input для фокуса, поскольку он был переписан html(html)
144		$("#cart-item"+itemId).find(cartVar['item_count_change']).focus();
145		mycart.showItemsCount(); // проставим колво каждого товара
146		
147		return false;
148	});
149	
150	// кнопка оформить заказ
151	$(".cart-show-order").click(function() {
152		
153		// форма имеет фиксированный id
154		$("#cart-form-order").show().removeClass('b-hide'); // показываем форму
155		
156		$('.cart-form-order-hidden').html(mycart.setHiddenForOrder()); // все hidden элементы
157		
158		// корзина без пустых товаров
159		mycart.showCartNoEmpty('.cart-form-order-table', '<h4>Ваш заказ</h4>');
160		
161		// console.log();;
162		
163		return false;
164	});
165	
166	// отмена/скрытие формы заказа
167	$(".cart-form-order-cancel").click(function() {
168		$("#cart-form-order").hide();
169		return false;
170	});
171	
172	// ajax отправка формы заказа
173	$('#cart-form-order').submit(function(){
174		
175		// console.log();
176		// alert('Отправка формы');
177		
178		$.post(
179			window.cart_form_ajax,
180			$("#cart-form-order").serialize(),       
181			function(msg) {
182				$('.cart-show-order').hide(); // кнопка Оформить заказ
183				$('#cart-form-order').slideUp('slow'); // форма отправки
184				$('#cart-form-order-result').html(msg); // результат
185				
186				// и очистить корзину
187				mycart.clearCart(); // очистка
188				mycart.showAllCount(); // всего товаров в корзине
189				$(cartS['tableItems']).html(''); // блок корзины теперь пустой
190				mycart.showItemsCount(); // проставим колво каждого товара
191			}
192		);
193		
194		return false;
195	});
196	
197});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.