Initial commit

This commit is contained in:
2026-02-18 23:06:50 +05:00
parent dc18a135c3
commit 092f4fd71e
25 changed files with 2149 additions and 2 deletions

View File

@@ -1,3 +1,15 @@
# basket
### basket
Модуль Корзина Только для AVE.CMS ALT
## Модуль Корзина
### Модуль позволяет организовать торговлю любыми товарами с использованием корзины и формы оформления заказа.
#### Инструкция в файле README.txt (находится в корневой папке с файлами)
#### либо читаем тему в группе https://vk.com/topic-38315276_27718595?offset=0
### Changelog:
04.09.2019 - версия 1.26.1 - адаптация для версии ave.cms 3.26
Версия 1.0.1

32
READ_ME.txt Normal file
View File

@@ -0,0 +1,32 @@
Добавляем данную форму в шаблон Рубрики иил Запроса
<form class="product" method="post" action="[tag:path]">
<!-- Изображение летит в корзину -->
<img class="product-image" src="">
<input type="hidden" name="module" value="basket" />
<input type="hidden" name="action" value="add" />
<input type="hidden" name="p_id" value="[tag:docid]" />
<input type="hidden" name="p_name" value="ID ПОЛЯ НАИМЕНОВАНИЯ" />
<input type="hidden" name="p_price" value="ID ПОЛЯ ЦЕНЫ" />
<input type="hidden" name="p_article" value="ID ПОЛЯ АРТИКУЛА" />
<input type="hidden" name="p_size" value="ID ПОЛЯ РАЗМЕРА" />
<div class="product-to-basket">
<input type="text" name="quantity" value="1" size="1" maxlength="2" />
<input type="submit" class="button" value="Add" />
</div>
<!-- Можно ссылкой добавлять в корзину -->
<a id="[tag:docid]-ID ПОЛЯ НАИМЕНОВАНИЯ-ID ПОЛЯ ЦЕНЫ-ID ПОЛЯ АРТИКУЛА-ID ПОЛЯ РАЗМЕРА" href="/?module=basket&action=add&p_id=[tag:docid]&p_name=ID ПОЛЯ НАИМЕНОВАНИЯ&p_price=ID ПОЛЯ ЦЕНЫ&p_article=ID ПОЛЯ АРТИКУЛА&p_size=ID ПОЛЯ РАЗМЕРА&quantity=1" onClick="return false;" class="addCart">В корзину</a>
</form>
Обязательным условием при работе с AJAX добавлением нужны библиотеки jQuery, jQuery Form (библиотеки есть в папке lib/scripts).
Также используется библиотека jQuery Block - для затемнения экрана.
modules/basket/js/basket.js - также нужно подключить к шаблону.
Все скрипты являются простой демонстрацией модуля.

407
class.basket.php Normal file
View File

@@ -0,0 +1,407 @@
<?php
/**
* Класс работы с Корзиной
*
* @package AVE.cms
* @subpackage module_Basket
* @filesource
*/
class ModulBasket
{
/**
* СВОЙСТВА
*/
/**
* ВНУТРЕННИЕ МЕТОДЫ
*/
/**
* ВНЕШНИЕ МЕТОДЫ
*/
/**
* Получить список товаров в корзине
*
*/
function getBasket()
{
global $AVE_DB;
$sql = $AVE_DB->Query("
SELECT
b.basket_product_id AS id,
f.field_value AS name,
d.field_value AS article,
e.field_value AS size,
b.basket_product_quantity AS quantity,
b.basket_product_amount AS amount
FROM
" . PREFIX . "_module_basket AS b
LEFT JOIN
" . PREFIX . "_document_fields AS f
ON f.Id = b.basket_product_name_id
LEFT JOIN
" . PREFIX . "_document_fields AS d
ON d.Id = b.basket_product_article_id
LEFT JOIN
" . PREFIX . "_document_fields AS e
ON e.Id = b.basket_product_size_id
WHERE b.basket_session_id = '" . session_id() . "'
ORDER BY b.id ASC
");
$total = 0;
$total_send = 0;
$products = array();
while($row = $sql->FetchRow())
{
$total += $row->amount;
$total_send += $row->amount;
$quantity += $row->quantity;
$row->price = $row->amount / $row->quantity;
array_push($products, $row);
}
$sql = $AVE_DB->Query("
SELECT *
FROM " . PREFIX . "_module_basket_delivery
WHERE delivery_activ = '1'
ORDER BY delivery_position ASC
");
$delivery = array();
while($row = $sql->FetchRow())
{
array_push($delivery, $row);
}
$sql = $AVE_DB->Query("
SELECT *
FROM " . PREFIX . "_module_basket_payment
WHERE payment_activ = '1'
ORDER BY payment_position ASC
");
$payment = array();
while ($row = $sql->FetchRow())
{
$payment_delivery = explode(',', $row->payment_delivery);
if (in_array($_SESSION['delivery_id'], $payment_delivery)) array_push($payment, $row);
}
if (isset($_SESSION['delivery_id'])) {
$row = $AVE_DB->Query("
SELECT
delivery_price,
delivery_price_operands
FROM " . PREFIX . "_module_basket_delivery
WHERE id = ".$_SESSION['delivery_id']." AND delivery_activ = '1'
LIMIT 1
")
->FetchRow();
if ($row->delivery_price_operands == "Money"){
$total = $total + $row->delivery_price;
}else if ($row->delivery_price_operands == "%"){
$total = ($row->deliveryt_price_operands == '%') ? $total+$total/100*$row->delivery_price : $total - $row->delivery_price;
}
$total = $total + $delivery_price;
if (isset($_SESSION['payment_id'])){
$row = $AVE_DB->Query("
SELECT
payment_price,
payment_price_operands
FROM " . PREFIX . "_module_basket_payment
WHERE id = ".$_SESSION['payment_id']." AND payment_activ = '1'
LIMIT 1
")
->FetchRow();
if ($row->payment_price_operands == "Money"){
$total = $total + $row->payment_price;
}else if ($row->payment_price_operands == "%"){
$total = ($row->payment_price_operands == '%') ? $total+$total/100*$row->payment_price : $total - $row->payment_price;
}
}
}
return array('products' => $products, 'total' => $total, 'delivery' => $delivery, 'payment' => $payment, 'total_cart' => $total_cart, 'total_send' => $total_send, 'quantity' => $quantity);
}
/**
* Добавить товар в корзину
*
* @param int $product_id идентификатор товара
* (идентификатор документа с атрибутами товара)
* @param int $name_id идентификатор наименования товара
* (идентификатор поля рубрики для наименования)
* @param int $price_id идентификатор цены товара
* (идентификатор поля рубрики для цены)
* @param int $article_id идентификатор артикула товара
* (идентификатор поля рубрики для артикула)
* @param int $size_id идентификатор размера товара
* (идентификатор поля рубрики для размера)
* @param int $quantity количество добавляемых в корзину товаров
*/
function basketProductAdd($product_id = 0, $name_id = 0, $price_id = 0, $article_id = 0, $size_id = 0, $quantity = 1)
{
global $AVE_DB;
$product_id = (int)$product_id;
$name_id = (int)$name_id;
$price_id = (int)$price_id;
$article_id = (int)$article_id;
$size_id = (int)$size_id;
$quantity = (int)$quantity;
if ($product_id === 0 || $name_id === 0 || $price_id === 0 || $article_id === 0 || $size_id === 0 || $quantity === 0) return;
$session_id = session_id();
$sql = $AVE_DB->Query("
SELECT
Id,
rubric_field_id,
field_value
FROM " . PREFIX . "_document_fields
WHERE document_id = '" . $product_id . "'
AND (rubric_field_id = '" . $name_id . "' OR rubric_field_id = '" . $price_id . "' OR rubric_field_id = '" . $article_id . "' OR rubric_field_id = '" . $size_id . "')
");
$product = array();
while ($row = $sql->FetchRow())
{
$product[$row->rubric_field_id] = array('id' => $row->Id,
'val' => $row->field_value);
}
if (!empty($product))
{
$exists = $AVE_DB->Query("
SELECT 1
FROM " . PREFIX . "_module_basket
WHERE basket_product_id = '" . $product_id . "'
AND basket_session_id = '" . $session_id . "'
")->GetCell();
if ($exists)
{
$AVE_DB->Query("
UPDATE " . PREFIX . "_module_basket
SET
basket_product_quantity = basket_product_quantity + " . $quantity . ",
basket_product_amount = basket_product_amount + " . $quantity * $product[$price_id]['val'] . "
WHERE basket_product_id = '" . $product_id . "'
AND basket_session_id = '" . $session_id . "'
");
}
else
{
$AVE_DB->Query("
INSERT
INTO " . PREFIX . "_module_basket
SET
basket_session_id = '" . $session_id . "',
basket_product_id = '" . $product_id . "',
basket_product_name_id = '" . $product[$name_id]['id'] . "',
basket_product_price_id = '" . $product[$price_id]['id'] . "',
basket_product_article_id = '" . $product[$article_id]['id'] . "',
basket_product_size_id = '" . $product[$size_id]['id'] . "',
basket_product_quantity = '" . $quantity . "',
basket_product_amount = '" . $quantity * $product[$price_id]['val'] . "'
");
}
}
}
/**
* Удалить товар из корзины
*
* @param int $product_id
*/
function basketProductDelete($product_id)
{
global $AVE_DB;
$AVE_DB->Query("
DELETE
FROM " . PREFIX . "_module_basket
WHERE basket_product_id = '" . (int)$product_id . "'
AND basket_session_id = '" . session_id() . "'
");
}
/**
* Пересчет корзины
*
* @param array $quantity
* @param array $delete
*/
function basketOrderUpdate($quantity = array(), $delete = array(), $delivery_id, $payment_id)
{
global $AVE_DB;
unset ($_SESSION['delivery_id']);
unset ($_SESSION['payment_id']);
if (!(isset($delete) && is_array($delete))) $delete = array();
$session_id = session_id();
if (isset($delivery_id) && !isset($payment_id)){
$_SESSION['delivery_id'] = $delivery_id;
}else if (isset($delivery_id) && isset($payment_id)){
$_SESSION['delivery_id'] = $delivery_id;
$_SESSION['payment_id'] = $payment_id;
}
// Изменяем в корзине количества товаров
if (isset($quantity) && is_array($quantity))
{
foreach ($quantity as $product_id => $product_quantity)
{
$product_id = (int)$product_id;
if (!is_numeric($product_quantity)) continue;
$product_quantity = (int)$product_quantity;
// если количество равно 0 - удаляем товар из корзины
if ($product_quantity === 0) $delete[$product_id] = 1;
if (isset($delete[$product_id])) continue;
$AVE_DB->Query("
UPDATE " . PREFIX . "_module_basket
SET
basket_product_amount = basket_product_amount / basket_product_quantity * " . $product_quantity . ",
basket_product_quantity = '" . $product_quantity . "'
WHERE basket_product_id = '" . $product_id . "'
AND basket_session_id = '" . $session_id . "'
");
}
}
// Удаляем помеченные товары
foreach ($delete as $product_id => $val)
{
$AVE_DB->Query("
DELETE
FROM " . PREFIX . "_module_basket
WHERE basket_product_id = '" . (int)$product_id . "'
AND basket_session_id = '" . $session_id . "'
");
}
}
/**
* Отправка заказа
*
*/
function basketOrderSend()
{
global $AVE_DB, $AVE_Template;
$customer = array();
$customer['name'] = isset($_REQUEST['name']) ? trim(stripslashes($_REQUEST['name'])) : '';
if ($customer['name'] !== '') $customer['name'] = preg_replace('/[^\x20-\xFF]|[><]/', '', $customer['name']);
$customer['email'] = isset($_REQUEST['email']) ? trim(stripslashes($_REQUEST['email'])) : '';
if ($customer['email'] !== '')
{
$regex_email = '/^[\w.-]+@[a-z0-9.-]+\.(?:[a-z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$/i';
if (!preg_match($regex_email, $customer['email'])) $customer['email'] = '';
}
$customer['phone'] = isset($_REQUEST['phone']) ? trim(stripslashes($_REQUEST['phone'])) : '';
if ($customer['phone'] !== '') $customer['phone'] = preg_replace('/[^\x20-\xFF]|[><]/', '', $customer['phone']);
$customer['address'] = isset($_REQUEST['address']) ? trim(stripslashes($_REQUEST['address'])) : '';
if ($customer['address'] !== '') $customer['address'] = preg_replace('/[^\x20-\xFF]|[><]/', '', $customer['address']);
$customer['description'] = isset($_REQUEST['description']) ? trim(stripslashes($_REQUEST['description'])) : '';
if ($customer['description'] !== '') $customer['description'] = preg_replace('/[^\x20-\xFF]|[><]/', '', $customer['description']);
$delivery_method = $AVE_DB->Query("
SELECT delivery_price, delivery_title, delivery_price_operands
FROM " . PREFIX . "_module_basket_delivery
WHERE id = ".$_SESSION['delivery_id']." AND delivery_activ = '1'
LIMIT 1
")->FetchRow();
$delivery_method_titel = $delivery_method->delivery_title;
$delivery_method_price = $delivery_method->delivery_price;
$delivery_method_operands = $delivery_method->delivery_price_operands;
$AVE_Template->assign('delivery_method_titel', $delivery_method_titel);
$AVE_Template->assign('delivery_method_price', $delivery_method_price);
$AVE_Template->assign('delivery_method_operands', $delivery_method_operands);
$payment_method = $AVE_DB->Query("
SELECT payment_price, payment_title, payment_price_operands
FROM " . PREFIX . "_module_basket_payment
WHERE id = ".$_SESSION['payment_id']." AND payment_activ = '1'
LIMIT 1
")->FetchRow();
$payment_method_titel = $payment_method->payment_title;
$payment_method_price = $payment_method->payment_price;
$payment_method_operands = $payment_method->payment_price_operands;
$AVE_Template->assign('payment_method_titel', $payment_method_titel);
$AVE_Template->assign('payment_method_price', $payment_method_price);
$AVE_Template->assign('payment_method_operands', $payment_method_operands);
// Передаем в шаблон информацию о заказчике
$AVE_Template->assign('customer', $customer);
// Формируем тело письма
$mail_body = $AVE_Template->fetch(BASE_DIR . '/modules/basket/templates/mail_text.tpl');
// Если заказчик указал E-mail - отправляем письмо заказчику
if ($customer['email'])
{
send_mail(
$customer['email'],
$mail_body,
$AVE_Template->get_config_vars('BASKET_SHOP_NAME') . ' '
. $AVE_Template->get_config_vars('BASKET_ORDER_TITLE'),
get_settings('mail_from'),
$AVE_Template->get_config_vars('BASKET_SHOP_NAME'),
'html'
);
}
// Письмо администратору
send_mail(
get_settings('mail_from'),
$mail_body,
$AVE_Template->get_config_vars('BASKET_SHOP_NAME') . ' '
. $AVE_Template->get_config_vars('BASKET_ORDER_TITLE'),
get_settings('mail_from'),
$AVE_Template->get_config_vars('BASKET_SHOP_NAME'),
'html'
);
// Удаляем заказ из корзины
$AVE_DB->Query("
DELETE
FROM " . PREFIX . "_module_basket
WHERE basket_session_id = '" . session_id() . "'
");
}
}
?>

300
class.basket_admin.php Normal file
View File

@@ -0,0 +1,300 @@
<?php
/**
* Класс работы с Корзиной
*
* @package AVE.cms
* @subpackage module_Basket
* @filesource
*/
class ModulBasketAdmin
{
/**
* СВОЙСТВА
*/
/**
* ВНУТРЕННИЕ МЕТОДЫ
*/
/**
* ВНЕШНИЕ МЕТОДЫ
*/
///////////
// Старт //
///////////
function basketStart($tpl_dir)
{
global $AVE_DB, $AVE_Template, $AVE_Globals;
$home = true;
$payment = array();
$sql = $AVE_DB->Query("
SELECT *
FROM " . PREFIX . "_module_basket_payment
ORDER BY payment_position ASC
");
while ($row = $sql->FetchRow()) array_push($payment,$row);
$delivery = array();
$sql = $AVE_DB->Query("
SELECT *
FROM " . PREFIX . "_module_basket_delivery
ORDER BY delivery_position ASC
");
while ($row = $sql->FetchRow()) array_push($delivery,$row);
if ($home == true){
$AVE_Template->assign('payment', $payment);
$AVE_Template->assign('delivery', $delivery);
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'basket_start.tpl'));
}
}
////////////////
// Вид оплаты //
////////////////
function basketDelPaymentMethod($id)
{
global $AVE_DB;
if ($id != 1)
{
$AVE_DB->Query("
DELETE
FROM " . PREFIX . "_module_basket_payment
WHERE id = '" . $id . "'
");
}
header("Location:index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_payment&cp=" . SESSION);
exit;
}
function basketNewPaymentMethod()
{
global $AVE_DB;
$AVE_DB->Query("
INSERT " . PREFIX . "_module_basket_payment
SET payment_title = '" . $_POST['payment_title'] . "'
");
header("Location:index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_payment&cp=" . SESSION);
exit;
}
function basketDisplayMethods()
{
global $AVE_DB;
$methods = array();
$sql = $AVE_DB->Query("
SELECT *
FROM " . PREFIX . "_module_basket_payment
ORDER BY payment_position ASC
");
while ($row = $sql->FetchRow()) array_push($methods,$row);
return $methods;
}
function basketPaymentMethods($tpl_dir)
{
global $AVE_DB, $AVE_Template;
if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save')
{
foreach ($_POST['payment_title'] as $id => $payment_title)
{
if (!empty($payment_title))
{
$AVE_DB->Query("
UPDATE " . PREFIX . "_module_basket_payment
SET
payment_title = '" . $payment_title . "',
payment_activ = '" . $_POST['payment_activ'][$id] . "',
payment_position = '" . $_POST['payment_position'][$id] . "'
WHERE
id = '" . $id . "'
");
}
}
}
$AVE_Template->assign('methods', $this->basketDisplayMethods());
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'basket_payment.tpl'));
}
function basketEditPaymentMethod($tpl_dir,$id)
{
global $AVE_DB, $AVE_Template;
if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save')
{
$AVE_DB->Query("
UPDATE " . PREFIX . "_module_basket_payment
SET
payment_title = '" . $_POST['payment_title'] . "',
payment_description = '" . $_POST['payment_description'] . "',
payment_activ = '" . $_POST['payment_activ'] . "',
payment_price = '" . $_POST['payment_price'] . "',
payment_price_operands = '" . $_POST['payment_price_operands'] . "',
payment_delivery = '" . ((isset($_POST['payment_delivery']) && is_array($_POST['payment_delivery'])) ? implode(',', $_POST['payment_delivery']) : '') . "'
WHERE
id = '" . $_REQUEST['id'] . "'
");
echo '<script>window.opener.location.reload(); window.close();</script>';
}
$sql = $AVE_DB->Query("
SELECT *
FROM " . PREFIX . "_module_basket_payment
WHERE id = '" . $id . "'
");
$row = $sql->FetchRow();
$row->payment_delivery = explode(',', $row->payment_delivery);
$oCKeditor = new CKeditor();
$oCKeditor->returnOutput = true;
$oCKeditor->config['toolbar'] = 'Verysmall';
$oCKeditor->config['height'] = 200;
$config = array();
$Edi = $oCKeditor->editor('payment_description', $row->payment_description, $config);
$AVE_Template->assign('Edi', $Edi);
$AVE_Template->assign('basket_delivery', $this->basketDisplayDelivery());
$AVE_Template->assign('payment', $row);
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'basket_payment_edit.tpl'));
}
function basketDisplayDelivery()
{
global $AVE_DB;
$basket_delivery = array();
$sql = $AVE_DB->Query("
SELECT *
FROM " . PREFIX . "_module_basket_delivery
ORDER BY delivery_position ASC
");
while ($row = $sql->FetchRow()) array_push($basket_delivery,$row);
return $basket_delivery;
}
//------------------------------------------------------
function basketDeliveryMethods($tpl_dir)
{
global $AVE_DB, $AVE_Template;
if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save')
{
foreach ($_POST['delivery_title'] as $id => $delivery_title)
{
if (!empty($delivery_title))
{
$AVE_DB->Query("
UPDATE " . PREFIX . "_module_basket_delivery
SET
delivery_title = '" . $delivery_title . "',
delivery_activ = '" . $_POST['delivery_activ'][$id] . "',
delivery_position = '" . $_POST['delivery_position'][$id] . "'
WHERE
id = '" . $id . "'
");
}
}
}
$AVE_Template->assign('methods', $this->basketDisplayDelivery());
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'basket_delivery.tpl'));
}
function basketNewDeliveryMethod()
{
global $AVE_DB;
$AVE_DB->Query("
INSERT " . PREFIX . "_module_basket_delivery
SET delivery_title = '" . $_POST['delivery_title'] . "'
");
header("Location:index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_delivery&cp=" . SESSION);
exit;
}
function basketDelDeliveryMethod($id)
{
global $AVE_DB;
if ($id != 1)
{
$AVE_DB->Query("
DELETE
FROM " . PREFIX . "_module_basket_delivery
WHERE id = '" . $id . "'
");
}
header("Location:index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_delivery&cp=" . SESSION);
exit;
}
function basketEditDeliveryMethod($tpl_dir,$id)
{
global $AVE_DB, $AVE_Template;
if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save')
{
$AVE_DB->Query("
UPDATE " . PREFIX . "_module_basket_delivery
SET
delivery_title = '" . $_POST['delivery_title'] . "',
delivery_description = '" . $_POST['delivery_description'] . "',
delivery_activ = '" . $_POST['delivery_activ'] . "',
delivery_price = '" . $_POST['delivery_price'] . "',
delivery_price_operands = '" . $_POST['delivery_price_operands'] . "'
WHERE
id = '" . $_REQUEST['id'] . "'
");
echo '<script>window.opener.location.reload(); window.close();</script>';
}
$sql = $AVE_DB->Query("
SELECT *
FROM " . PREFIX . "_module_basket_delivery
WHERE id = '" . $id . "'
");
$row = $sql->FetchRow();
$oCKeditor = new CKeditor();
$oCKeditor->returnOutput = true;
$oCKeditor->config['toolbar'] = 'Verysmall';
$oCKeditor->config['height'] = 200;
$config = array();
$Edi = $oCKeditor->editor('delivery_description', $row->delivery_description, $config);
$AVE_Template->assign('Edi', $Edi);
$AVE_Template->assign('delivery', $row);
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'basket_delivery_edit.tpl'));
}
}
/**
*/
?>

BIN
images/loader-12.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
images/trash.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 B

4
index.php Normal file
View File

@@ -0,0 +1,4 @@
<?php
header('Location:/');
exit;
?>

20
info.php Normal file
View File

@@ -0,0 +1,20 @@
<?php
if (! defined('BASE_DIR'))
exit;
$module = array(
'ModuleSysName' => 'basket',
'ModuleVersion' => '1.26.1',
'ModuleAutor' => 'AVE.cms Team',
'ModuleCopyright' => '&copy; 2007-' . date('Y') . ' AVE.cms',
'ModuleStatus' => 1,
'ModuleIsFunction' => 1,
'ModuleTemplate' => 1,
'ModuleAdminEdit' => 1,
'ModuleFunction' => 'mod_basket',
'ModuleTag' => '[mod_basket]',
'ModuleTagLink' => null,
'ModuleAveTag' => '#\\\[mod_basket]#',
'ModulePHPTag' => "<?php mod_basket(); ?>"
);
?>

86
js/basket.js Normal file
View File

@@ -0,0 +1,86 @@
<!--
$().ready(function() {
//Функция замирания экрана
function block_page(){
$.blockUI({
message: '<img src="'+avemediapath+'/images/loader-12.gif" alt="" />',
css: {
top: ($(window).height() - 30) /2 + 'px',
left: ($(window).width() - 30) /2 + 'px',
width: '30px',
border: 'none',
padding: '15px',
backgroundColor: '#000',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
'border-radius': '10px',
opacity: .5,
color: '#fff'
}
});
};
//Удалить из корзины
$("#basket li img").live('click', function(){
block_page();
//$("#basket .ajax-loader").show();
var pid = $(this).attr('id').split('_');
$.post(aveabspath,
{module: "basket", action: "delete", id: pid[1]},
function(response) {
$("#basket").before(response).remove();
setTimeout($.unblockUI, 100);
});
return false;
});
//Добавить в корзину - only link
$('a.addCart').live('click', function(){
block_page();
var data = $(this).attr('id').split('-');
$.post(aveabspath,
{module: "basket", action: "add", p_id: data[0], p_name: data[1], p_price: data[2], p_article: data[3], p_size: data[4], quantity: "1"},
function(response) {
$("#basket").before(response).remove();
setTimeout($.unblockUI, 100);
});
return false;
});
//Добавить в корзину
$(".product").submit(function(e) {
e.preventDefault();
$(this).ajaxSubmit({
type: "post",
resetForm: true,
beforeSubmit: function(formData, jqForm) {
$("#basket .ajax-loader").show();
var productImage = jqForm.find(".product-image");
var imagePosition = productImage.offset();
var basketPosition = $("#basket").offset();
productImage.before('<img src="' + productImage.attr("src")
+ '" class="fly-image" style="position: absolute; top: '
+ imagePosition.top + 'px; left: '
+ imagePosition.left + 'px;" />');
$(".fly-image").animate({
top: basketPosition.top + 'px',
left: basketPosition.left + 'px',
opacity: 0,
width: $("#basket").width(),
heigth: $("#basket").height()},
"slow",
false,
function(){
$(".fly-image").remove();
});
},
success: function(response) {
$("#basket").before(response).remove()
.find(".ajax-loader").hide();
}
});
return false;
});
});
-->

55
js/jquery.block.min.js vendored Normal file
View File

@@ -0,0 +1,55 @@
;(function($){if(/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery)||/^1.1/.test($.fn.jquery)){alert('blockUI requires jQuery v1.2.3 or later! You are using v'+$.fn.jquery);return;}
$.fn._fadeIn=$.fn.fadeIn;var noOp=function(){};var mode=document.documentMode||0;var setExpr=$.browser.msie&&(($.browser.version<8&&!mode)||mode<8);var ie6=$.browser.msie&&/MSIE 6.0/.test(navigator.userAgent)&&!mode;$.blockUI=function(opts){install(window,opts);};$.unblockUI=function(opts){remove(window,opts);};$.growlUI=function(title,message,timeout,onClose){var $m=$('<div class="growlUI"></div>');if(title)$m.append('<h1>'+title+'</h1>');if(message)$m.append('<h2>'+message+'</h2>');if(timeout==undefined)timeout=3000;$.blockUI({message:$m,fadeIn:700,fadeOut:1000,centerY:false,timeout:timeout,showOverlay:false,onUnblock:onClose,css:$.blockUI.defaults.growlCSS});};$.fn.block=function(opts){return this.unblock({fadeOut:0}).each(function(){if($.css(this,'position')=='static')
this.style.position='relative';if($.browser.msie)
this.style.zoom=1;install(this,opts);});};$.fn.unblock=function(opts){return this.each(function(){remove(this,opts);});};$.blockUI.version=2.39;$.blockUI.defaults={message:'<h1>Please wait...</h1>',title:null,draggable:true,theme:false,css:{padding:0,margin:0,width:'30%',top:'40%',left:'35%',textAlign:'center',color:'#000',border:'3px solid #aaa',backgroundColor:'#fff',cursor:'wait'},themedCSS:{width:'30%',top:'40%',left:'35%'},overlayCSS:{backgroundColor:'#000',opacity:0.6,cursor:'wait'},growlCSS:{width:'350px',top:'10px',left:'',right:'10px',border:'none',padding:'5px',opacity:0.6,cursor:'default',color:'#fff',backgroundColor:'#000','-webkit-border-radius':'10px','-moz-border-radius':'10px','border-radius':'10px'},iframeSrc:/^https/i.test(window.location.href||'')?'javascript:false':'about:blank',forceIframe:false,baseZ:1000,centerX:true,centerY:true,allowBodyStretch:true,bindEvents:true,constrainTabKey:true,fadeIn:200,fadeOut:400,timeout:0,showOverlay:true,focusInput:true,applyPlatformOpacityRules:true,onBlock:null,onUnblock:null,quirksmodeOffsetHack:4,blockMsgClass:'blockMsg'};var pageBlock=null;var pageBlockEls=[];function install(el,opts){var full=(el==window);var msg=opts&&opts.message!==undefined?opts.message:undefined;opts=$.extend({},$.blockUI.defaults,opts||{});opts.overlayCSS=$.extend({},$.blockUI.defaults.overlayCSS,opts.overlayCSS||{});var css=$.extend({},$.blockUI.defaults.css,opts.css||{});var themedCSS=$.extend({},$.blockUI.defaults.themedCSS,opts.themedCSS||{});msg=msg===undefined?opts.message:msg;if(full&&pageBlock)
remove(window,{fadeOut:0});if(msg&&typeof msg!='string'&&(msg.parentNode||msg.jquery)){var node=msg.jquery?msg[0]:msg;var data={};$(el).data('blockUI.history',data);data.el=node;data.parent=node.parentNode;data.display=node.style.display;data.position=node.style.position;if(data.parent)
data.parent.removeChild(node);}
$(el).data('blockUI.onUnblock',opts.onUnblock);var z=opts.baseZ;var lyr1=($.browser.msie||opts.forceIframe)?$('<iframe class="blockUI" style="z-index:'+(z++)+';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>'):$('<div class="blockUI" style="display:none"></div>');var lyr2=opts.theme?$('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+(z++)+';display:none"></div>'):$('<div class="blockUI blockOverlay" style="z-index:'+(z++)+';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');var lyr3,s;if(opts.theme&&full){s='<div class="blockUI '+opts.blockMsgClass+' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:fixed">'+'<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title||' ')+'</div>'+'<div class="ui-widget-content ui-dialog-content"></div>'+'</div>';}
else if(opts.theme){s='<div class="blockUI '+opts.blockMsgClass+' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:absolute">'+'<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title||' ')+'</div>'+'<div class="ui-widget-content ui-dialog-content"></div>'+'</div>';}
else if(full){s='<div class="blockUI '+opts.blockMsgClass+' blockPage" style="z-index:'+(z+10)+';display:none;position:fixed"></div>';}
else{s='<div class="blockUI '+opts.blockMsgClass+' blockElement" style="z-index:'+(z+10)+';display:none;position:absolute"></div>';}
lyr3=$(s);if(msg){if(opts.theme){lyr3.css(themedCSS);lyr3.addClass('ui-widget-content');}
else
lyr3.css(css);}
if(!opts.theme&&(!opts.applyPlatformOpacityRules||!($.browser.mozilla&&/Linux/.test(navigator.platform))))
lyr2.css(opts.overlayCSS);lyr2.css('position',full?'fixed':'absolute');if($.browser.msie||opts.forceIframe)
lyr1.css('opacity',0.0);var layers=[lyr1,lyr2,lyr3],$par=full?$('body'):$(el);$.each(layers,function(){this.appendTo($par);});if(opts.theme&&opts.draggable&&$.fn.draggable){lyr3.draggable({handle:'.ui-dialog-titlebar',cancel:'li'});}
var expr=setExpr&&(!$.boxModel||$('object,embed',full?null:el).length>0);if(ie6||expr){if(full&&opts.allowBodyStretch&&$.boxModel)
$('html,body').css('height','100%');if((ie6||!$.boxModel)&&!full){var t=sz(el,'borderTopWidth'),l=sz(el,'borderLeftWidth');var fixT=t?'(0 - '+t+')':0;var fixL=l?'(0 - '+l+')':0;}
$.each([lyr1,lyr2,lyr3],function(i,o){var s=o[0].style;s.position='absolute';if(i<2){full?s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"'):s.setExpression('height','this.parentNode.offsetHeight + "px"');full?s.setExpression('width','jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"'):s.setExpression('width','this.parentNode.offsetWidth + "px"');if(fixL)s.setExpression('left',fixL);if(fixT)s.setExpression('top',fixT);}
else if(opts.centerY){if(full)s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');s.marginTop=0;}
else if(!opts.centerY&&full){var top=(opts.css&&opts.css.top)?parseInt(opts.css.top):0;var expression='((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';s.setExpression('top',expression);}});}
if(msg){if(opts.theme)
lyr3.find('.ui-widget-content').append(msg);else
lyr3.append(msg);if(msg.jquery||msg.nodeType)
$(msg).show();}
if(($.browser.msie||opts.forceIframe)&&opts.showOverlay)
lyr1.show();if(opts.fadeIn){var cb=opts.onBlock?opts.onBlock:noOp;var cb1=(opts.showOverlay&&!msg)?cb:noOp;var cb2=msg?cb:noOp;if(opts.showOverlay)
lyr2._fadeIn(opts.fadeIn,cb1);if(msg)
lyr3._fadeIn(opts.fadeIn,cb2);}
else{if(opts.showOverlay)
lyr2.show();if(msg)
lyr3.show();if(opts.onBlock)
opts.onBlock();}
bind(1,el,opts);if(full){pageBlock=lyr3[0];pageBlockEls=$(':input:enabled:visible',pageBlock);if(opts.focusInput)
setTimeout(focus,20);}
else
center(lyr3[0],opts.centerX,opts.centerY);if(opts.timeout){var to=setTimeout(function(){full?$.unblockUI(opts):$(el).unblock(opts);},opts.timeout);$(el).data('blockUI.timeout',to);}};function remove(el,opts){var full=(el==window);var $el=$(el);var data=$el.data('blockUI.history');var to=$el.data('blockUI.timeout');if(to){clearTimeout(to);$el.removeData('blockUI.timeout');}
opts=$.extend({},$.blockUI.defaults,opts||{});bind(0,el,opts);if(opts.onUnblock===null){opts.onUnblock=$el.data('blockUI.onUnblock');$el.removeData('blockUI.onUnblock');}
var els;if(full)
els=$('body').children().filter('.blockUI').add('body > .blockUI');else
els=$('.blockUI',el);if(full)
pageBlock=pageBlockEls=null;if(opts.fadeOut){els.fadeOut(opts.fadeOut);setTimeout(function(){reset(els,data,opts,el);},opts.fadeOut);}
else
reset(els,data,opts,el);};function reset(els,data,opts,el){els.each(function(i,o){if(this.parentNode)
this.parentNode.removeChild(this);});if(data&&data.el){data.el.style.display=data.display;data.el.style.position=data.position;if(data.parent)
data.parent.appendChild(data.el);$(el).removeData('blockUI.history');}
if(typeof opts.onUnblock=='function')
opts.onUnblock(el,opts);};function bind(b,el,opts){var full=el==window,$el=$(el);if(!b&&(full&&!pageBlock||!full&&!$el.data('blockUI.isBlocked')))
return;if(!full)
$el.data('blockUI.isBlocked',b);if(!opts.bindEvents||(b&&!opts.showOverlay))
return;var events='mousedown mouseup keydown keypress';b?$(document).bind(events,opts,handler):$(document).unbind(events,handler);};function handler(e){if(e.keyCode&&e.keyCode==9){if(pageBlock&&e.data.constrainTabKey){var els=pageBlockEls;var fwd=!e.shiftKey&&e.target===els[els.length-1];var back=e.shiftKey&&e.target===els[0];if(fwd||back){setTimeout(function(){focus(back)},10);return false;}}}
var opts=e.data;if($(e.target).parents('div.'+opts.blockMsgClass).length>0)
return true;return $(e.target).parents().children().filter('div.blockUI').length==0;};function focus(back){if(!pageBlockEls)
return;var e=pageBlockEls[back===true?pageBlockEls.length-1:0];if(e)
e.focus();};function center(el,x,y){var p=el.parentNode,s=el.style;var l=((p.offsetWidth-el.offsetWidth)/2)-sz(p,'borderLeftWidth');var t=((p.offsetHeight-el.offsetHeight)/2)-sz(p,'borderTopWidth');if(x)s.left=l>0?(l+'px'):'0';if(y)s.top=t>0?(t+'px'):'0';};function sz(el,p){return parseInt($.css(el,p))||0;};})(jQuery);

4
lang/index.php Normal file
View File

@@ -0,0 +1,4 @@
<?php
header('Location:/');
exit;
?>

91
lang/ru.txt Normal file
View File

@@ -0,0 +1,91 @@
MODULE_NAME = "Корзина"
MODULE_DESCRIPTION = "Модуль позволяет организовать торговлю любыми товарами с использованием корзины и формы оформления заказа. Разместите системный тег <strong>[mod_basket]</strong> в нужном месте вашего шаблона сайта или содержимом документа."
BASKET_SHOP_NAME = "Мини-магазин AVE.cms"
BASKET_SHOP_LOGO = "logo_bw.png"
BASKET_SHOP_ADDRESS = "МойГород, ул. Ленина, д.1<br>тел./факс: (111) 555-55-66<br>Email: info@mysite.ru"
BASKET_PRODUCT_NAME = "Наименование"
BASKET_PRODUCT_QUANTITY = "Количество"
BASKET_PRODUCT_PRICE = "Цена"
BASKET_PRODUCT_AMOUNT = "Сумма"
BASKET_PRODUCT_DELETE = "Удалить"
BASKET_ORDER_TITLE = "Уведомление о заказе"
BASKET_ORDER_HEAD = "Обратите внимание этот документ не&nbsp;является официальным счетом.<br>При получении заказа&nbsp;Вы получите счет который можно будет использовать в&nbsp;финансовой отчетности и&nbsp;документы подтверждающие покупку."
BASKET_ORDER_TOTAL = "Итого"
BASKET_ORDER_DATE = "Дата заказа"
BASKET_ORDER_INFO = "У вас есть вопросы? Обратитесь к нашим менеджерам."
BASKET_ORDER_CHECKOUT = "Оформить"
BASKET_ORDER_SHOW_TIP = "Проверьте список товаров в&nbsp;корзине. При необходимости можете изменить количество товаров в&nbsp;заказе, либо исключить некоторые товары из&nbsp;заказа. Для пересчета суммы заказа используйте кнопку &laquo;Обновить&raquo;. Если список товаров составлен правильно&nbsp;&mdash; переходите к&nbsp;заполнению персональной информации по&nbsp;ссылке &laquo;Продолжить&raquo;."
BASKET_ORDER_FORM_TIP = "Пожалуйста заполните все поля&nbsp;&mdash; это поможет нам максимально быстро и&nbsp;точно выполнить Ваш заказ. Если Вы&nbsp;введёте E-mail то&nbsp;получите копию заказа, а&nbsp;так-же будете получать уведомления о&nbsp;этапах выполнения Вашего заказа. В&nbsp;поле &laquo;Адрес&raquo; укажите адрес доставки и&nbsp;информацию для курьера (станцию метро, номер подъезда, код домофона). Если у&nbsp;Вас есть какие-то дополнительные пожелания относительно заказа&nbsp;&mdash; опишите их&nbsp;в&nbsp;поле &laquo;Комментарий&raquo;."
BASKET_ORDER_SEND_SUCCESS = "Заказ успешно отправлен"
BASKET_CUSTOMER_INFO = "Информация о заказчике"
BASKET_CUSTOMER_NAME = "Имя"
BASKET_CUSTOMER_EMAIL = "E-mail"
BASKET_CUSTOMER_PHONE = "Телефон"
BASKET_CUSTOMER_ADDRESS = "Адрес"
BASKET_CUSTOMER_DESCRIPTION = "Комментарий"
BASKET_PROGRESSBAR_STEP1 = "Список товаров"
BASKET_PROGRESSBAR_STEP2 = "Персональная информация"
BASKET_PROGRESSBAR_STEP3 = "Финиш"
BASKET_TITLE = "Корзина"
BASKET_CURRENCY = "р."
BASKET_UNIT = "шт."
BASKET_UPDATE = "Обновить"
BASKET_NEXT = "Продолжить"
BASKET_SEND = "Отправить"
BASKET_EMPTY = "Корзина пуста"
[admin]
ModName = "Корзина"
WelcomeText = "Управление модулем Корзина"
mainPage = "Главная страница"
Yes = "Да"
No = "Нет"
ButtonSave = "Сохранить"
ButtonAdd = "Добавить"
ButtonEdit = "Редактировать"
Actions = "Действия"
PaymentMethod = "Вид оплаты"
PaymentMethodName = "Наименование оплаты"
PaymentMethodPosition = "Позиция"
PaymentMethodActive = "Активно"
NewPaymentMethod = "Добавить вид оплаты"
PaymentMethodDel = "Удалить"
PaymentMethodEdit = "Редактировать"
PaymentMethodDelTitle = "Вы действительно хотите удалить метод оплаты?"
PaymentCostPercent = "% (Процентов)"
PaymentCostMoney = "Сумма (стоимость)"
PaymentCostText = "Текст (просто)"
AllowedDeliveryMethods = "Совместимые виды доставки"
PaymentPrice = "Стоимость"
PaymentDelivery = "Виды доставки"
PaymentActive = "Активен"
PaymentName = "Наименование"
PaymentDescription = "Описание"
DeliveryMethodInf = "Пожалуйста выберите виды доставки заказа совместимые с видом платежа. Для выбора нескольких видов произведите выбор удерживая нажатой клавишу Ctrl"
EditPaymentMethod = "Редактировать вид платежа"
EditPaymentInfo = "Внимание! При редактировании вида платежа проверте все введеные данные. В случае неверных данных возможны ошибки при оплате товара. Это может привести к потере денежных средств как со стороны клиента так и со сторны администрации сайта."
DeliveryMethod = "Вид доставки"
DeliveryMethodName = "Наименование доставки"
DeliveryMethodPosition = "Позиция"
DeliveryMethodActive = "Активно"
NewDeliveryMethod = "Добавить вид доставки"
DeliveryMethodDel = "Удалить"
DeliveryMethodEdit = "Редактировать"
DeliveryMethodDelTitle = "Вы действительно хотите удалить метод доставки?"
DeliveryPrice = "Стоимость"
DeliveryName = "Наименование"
DeliveryDescription = "Описание"
DeliveryActive = "Активен"
EditDeliveryMethod = "Редактировать вид доставки"
EditDeliveryInfo = "Внимание! При редактировании вида доставки проверте все введеные данные. В случае неверных данных возможны ошибки при оплате товара. Это может привести к потере денежных средств как со стороны клиента так и со сторны администрации сайта."

175
module.php Normal file
View File

@@ -0,0 +1,175 @@
<?php
/**
* AVE.cms - Модуль Корзина
*
* @package AVE.cms
* @subpackage module_Basket
* @filesource
*/
if (!defined('BASE_DIR')) exit;
/**
* Обработка тэга модуля
*
*/
function mod_basket()
{
global $AVE_Template;
// Если выводится страница модуль Корзина - корзину не выводим
if (isset($_REQUEST['module']) && $_REQUEST['module'] == 'basket') return;
require_once(BASE_DIR . '/modules/basket/class.basket.php');
$oBasket = new ModulBasket;
$AVE_Template->register_object('oBasket', $oBasket);
$AVE_Template->config_load(BASE_DIR . '/modules/basket/lang/' . $_SESSION['user_language'] . '.txt');
$AVE_Template->display(BASE_DIR . '/modules/basket/templates/basket_show.tpl');
}
if (!defined('ACP') && isset($_REQUEST['module']) && $_REQUEST['module'] == 'basket' && !empty($_REQUEST['action']))
{
require_once(BASE_DIR . '/modules/basket/class.basket.php');
$oBasket = new ModulBasket;
$AVE_Template->register_object('oBasket', $oBasket);
$AVE_Template->config_load(BASE_DIR . '/modules/basket/lang/' . $_SESSION['user_language'] . '.txt');
switch ($_REQUEST['action'])
{
case 'add':
$p_id = (isset($_REQUEST['p_id'])) ? (int)$_REQUEST['p_id'] : 0;
$p_name = (isset($_REQUEST['p_name'])) ? (int)$_REQUEST['p_name'] : 0;
$p_price = (isset($_REQUEST['p_price'])) ? (int)$_REQUEST['p_price'] : 0;
$p_article = (isset($_REQUEST['p_article'])) ? (int)$_REQUEST['p_article'] : 0;
$p_size = (isset($_REQUEST['p_size'])) ? (int)$_REQUEST['p_size'] : 0;
$quantity = (isset($_REQUEST['quantity'])) ? (int)$_REQUEST['quantity'] : 1;
$oBasket->basketProductAdd($p_id, $p_name, $p_price, $p_article, $p_size, $quantity);
if (empty($_POST['action']))
{
header("Location:" . get_referer_link());
}
else
{
$AVE_Template->display(BASE_DIR . '/modules/basket/templates/basket_show.tpl');
}
exit;
case 'delete':
$id = (isset($_REQUEST['id'])) ? (int)$_REQUEST['id'] : 0;
$oBasket->basketProductDelete($id);
if (empty($_POST['action']))
{
header("Location:" . get_referer_link());
}
else
{
$AVE_Template->display(BASE_DIR . '/modules/basket/templates/basket_show.tpl');
}
exit;
case 'order':
unset ($_SESSION['delivery_id']);
unset ($_SESSION['payment_id']);
define('MODULE_SITE', $AVE_Template->get_config_vars('BASKET_TITLE'));
define('MODULE_CONTENT', $AVE_Template->fetch(BASE_DIR . '/modules/basket/templates/order_show.tpl'));
break;
case 'update':
$product_delete = isset($_REQUEST['product_delete']) ? $_REQUEST['product_delete'] : null;
$product_quantity = isset($_REQUEST['product_quantity']) ? $_REQUEST['product_quantity'] : null;
$delivery_id = isset($_REQUEST['delivery_id']) ? $_REQUEST['delivery_id'] : null;
$payment_id = isset($_REQUEST['payment_id']) ? $_REQUEST['payment_id'] : null;
$oBasket->basketOrderUpdate($product_quantity, $product_delete, $delivery_id, $payment_id);
if (empty($_POST['action']))
{
header("Location:" . get_referer_link());
}
else
{
$AVE_Template->display(BASE_DIR . '/modules/basket/templates/order_show.tpl');
}
exit;
case 'form':
define('MODULE_SITE', $AVE_Template->get_config_vars('BASKET_TITLE'));
define('MODULE_CONTENT', $AVE_Template->fetch(BASE_DIR . '/modules/basket/templates/order_form.tpl'));
break;
case 'send':
$oBasket->basketOrderSend();
define('MODULE_SITE', $AVE_Template->get_config_vars('BASKET_TITLE'));
define('MODULE_CONTENT', $AVE_Template->fetch(BASE_DIR . '/modules/basket/templates/order_finish.tpl'));
unset ($_SESSION['delivery_id']);
unset ($_SESSION['payment_id']);
break;
}
}
if (defined('ACP') && !empty($_REQUEST['moduleaction']))
{
require_once(BASE_DIR . '/modules/basket/class.basket_admin.php');
$aBasket = new ModulBasketAdmin;
$tpl_dir = BASE_DIR . '/modules/basket/templates_admin/';
$tpl_dir_source = BASE_DIR . '/modules/basket/templates_admin';
$lang_file = BASE_DIR . '/modules/basket/lang/' . $_SESSION['admin_language'] . '.txt';
$AVE_Template->config_load($lang_file, 'admin');
$config_vars = $AVE_Template->get_config_vars();
$AVE_Template->assign('config_vars', $config_vars);
$AVE_Template->assign('source', $tpl_dir_source);
if (!empty($_REQUEST['moduleaction']))
{
switch ($_REQUEST['moduleaction'])
{
case '1':
$aBasket->basketStart($tpl_dir);
break;
case 'basket_payment':
$aBasket->basketPaymentMethods($tpl_dir);
break;
case 'basket_payment_new':
$aBasket->basketNewPaymentMethod();
break;
case 'basket_payment_del':
$aBasket->basketDelPaymentMethod($_REQUEST['id']);
break;
case 'basket_payment_edit':
$aBasket->basketEditPaymentMethod($tpl_dir, $_REQUEST['id']);
break;
case 'basket_delivery':
$aBasket->basketDeliveryMethods($tpl_dir);
break;
case 'basket_delivery_new':
$aBasket->basketNewDeliveryMethod();
break;
case 'basket_delivery_del':
$aBasket->basketDelDeliveryMethod($_REQUEST['id']);
break;
case 'basket_delivery_edit':
$aBasket->basketEditDeliveryMethod($tpl_dir, $_REQUEST['id']);
break;
}
}
}
?>

110
sql.php Normal file
View File

@@ -0,0 +1,110 @@
<?php
/**
* AVE.cms - Модуль Корзина
*
* @package AVE.cms
* @subpackage module_Basket
* @filesource
*/
/**
* mySQL-запросы для установки, обновления и удаления модуля
*/
$module_sql_install = array();
$module_sql_deinstall = array();
$module_sql_update = array();
$module_sql_deinstall[] = "DROP TABLE IF EXISTS `%%PRFX%%_module_basket`;";
$module_sql_deinstall[] = "DROP TABLE IF EXISTS `%%PRFX%%_module_basket_payment`;";
$module_sql_deinstall[] = "DROP TABLE IF EXISTS `%%PRFX%%_module_basket_delivery`;";
$module_sql_deinstall[] = "DROP TABLE IF EXISTS `%%PRFX%%_module_basket_processing`;";
//Основная таблица
$module_sql_install[] = "CREATE TABLE `%%PRFX%%_module_basket` (
`id` int(11) NOT NULL auto_increment,
`basket_session_id` varchar(50) default NULL,
`basket_product_id` int(11) default NULL,
`basket_product_name_id` int(11) default NULL,
`basket_product_price_id` int(11) default NULL,
`basket_product_article_id` int(22) default NULL,
`basket_product_size_id` int(22) default NULL,
`basket_product_quantity` smallint(5) default NULL,
`basket_product_amount` float(10,2) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
//Метод оплаты
$module_sql_install[] = "CREATE TABLE `%%PRFX%%_module_basket_payment` (
`id` int(11) NOT NULL auto_increment,
`payment_title` varchar(255) NOT NULL,
`payment_price` text NOT NULL,
`payment_price_operands` enum('Money','%','Text') NOT NULL default 'Money',
`payment_description` text default NULL,
`payment_delivery` tinytext default NULL,
`payment_activ` tinyint(1) unsigned NOT NULL default '0',
`payment_position` tinyint(2) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
//Выбор доставки
$module_sql_install[] = "CREATE TABLE `%%PRFX%%_module_basket_delivery` (
`id` int(11) NOT NULL auto_increment,
`delivery_title` varchar(255) NOT NULL,
`delivery_price` text NOT NULL,
`delivery_price_operands` enum('Money','%','Text') NOT NULL default 'Money',
`delivery_description` text default NULL,
`delivery_activ` tinyint(1) unsigned NOT NULL default '0',
`delivery_position` tinyint(2) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
//Тестовые данные
$module_sql_install[] = "INSERT INTO `%%PRFX%%_module_basket_delivery` VALUES ('1', 'Курьером по москве', '0', 'Money', '', '1', '1');";
$module_sql_install[] = "INSERT INTO `%%PRFX%%_module_basket_delivery` VALUES ('2', 'Курьером в подмосковье', '0', 'Money', '', '1', '2');";
$module_sql_install[] = "INSERT INTO `%%PRFX%%_module_basket_delivery` VALUES ('3', 'Почта России', '0', 'Money', '', '1', '3');";
$module_sql_install[] = "INSERT INTO `%%PRFX%%_module_basket_delivery` VALUES ('4', 'Самовывоз', '0', 'Money', '', '1', '4');";
$module_sql_install[] = "INSERT INTO `%%PRFX%%_module_basket_payment` VALUES (1, 'Наличными курьеру', 'Отдать бабло Курьеру', 'Text', 'Наличные при получении (по Москве) - оплата осуществляется наличными деньгами курьеру в момент доставки. После комплектации заказа наш менеджер свяжется с Вами по контактному телефону и еще раз уточнит параметры заказа и Ваш адрес. Если Вы, подтвердив заказ, в дальнейшем отказываетесь от его получения, то Вам необходимо оплатить стоимость доставки + 50 руб за каждую возвращенную позицию. В случае необходимости возврата или обмена изделия свяжитесь с нашим менеджером.', '1,2', 1, 1);";
$module_sql_install[] = "INSERT INTO `%%PRFX%%_module_basket_payment` VALUES (2, 'Наличными в офисе', '0.00', 'Money', 'Наличные при получении - оплата осуществляется наличными деньгами в офисе компании. После комплектации заказа наш менеджер свяжется с Вами по контактному телефону и еще раз уточнит параметры заказа. Если Вы, подтвердив заказ, в дальнейшем отказываетесь от его получения, то Вам необходимо оплатить стоимость доставки + 50 руб за каждую возвращенную позицию. В случае необходимости возврата или обмена изделия свяжитесь с нашим менеджером.', '4', 1, 2);";
$module_sql_install[] = "INSERT INTO `%%PRFX%%_module_basket_payment` VALUES (3, 'Безналичная оплата', '10.00', '%', 'Банковский платеж - после оформления заказа Вы сразу же можете распечатать квитанцию для оплаты через банк. Большая просьба - после осуществления перевода сразу уведомить нас об отправке денег по адресу e-mail. Мы сформируем и отправим Ваш заказ в течение 3-5 рабочих дней с момента поступления денег на наш расчетный счет. Если заказанного товара не окажется на складе, наш менеджер обязательно свяжется с Вами для разрешения возникшей ситуации.', '3,4', 1, 3);";
// Обновление модуля
$module_sql_update[] = "
UPDATE
`%%PRFX%%_module`
SET
ModuleAveTag = '" . $modul['ModuleAveTag'] . "',
ModulePHPTag = '" . $modul['ModulePHPTag'] . "',
ModuleVersion = '" . $modul['ModuleVersion'] . "'
WHERE
ModuleSysName = '" . $modul['ModuleSysName'] . "'
LIMIT 1;
";
$module_sql_update[] = "
RENAME TABLE
`%%PRFX%%_modul_basket_payment`
TO
`%%PRFX%%_module_basket_payment`
";
$module_sql_update[] = "
RENAME TABLE
`%%PRFX%%_modul_basket_delivery`
TO
`%%PRFX%%_module_basket_delivery`
";
$module_sql_update[] = "
RENAME TABLE
`%%PRFX%%_modul_basket_payment`
TO
`%%PRFX%%_module_basket_payment`
";
?>

15
templates/basket_show.tpl Normal file
View File

@@ -0,0 +1,15 @@
{oBasket->getBasket assign='basket'}
<div id="basket" class="box">
<h2>{#BASKET_TITLE#} <span class="ajax-loader" style="display:none;"><img src="{$ABS_PATH}modules/basket/images/loader-12.gif" alt="load..."></span></h2>
{if $basket.products}
<div>
<ul>
{foreach from=$basket.products item=product}<li><a href="{$ABS_PATH}?module=basket&action=delete&id={$product->id}" onClick="return false;"><img src="{$ABS_PATH}modules/basket/images/trash.gif" id="basket-delete_{$product->id}"></a>{$product->name} <small>({$product->quantity}{#BASKET_UNIT#}) - {$product->amount|string_format:"%.2f"}{#BASKET_CURRENCY#}</small></li>
{/foreach}
</ul>
<hr />
<p><a href="{$ABS_PATH}index.php?module=basket&action=order">{#BASKET_ORDER_CHECKOUT#}</a> {#BASKET_ORDER_TOTAL#}: {$basket.total|string_format:"%.2f"}{#BASKET_CURRENCY#} {$basket.quantity}</p>
</div>
{/if}
</div>

4
templates/index.php Normal file
View File

@@ -0,0 +1,4 @@
<?php
header('Location:/');
exit;
?>

159
templates/mail_text.tpl Normal file
View File

@@ -0,0 +1,159 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{#BASKET_SHOP_NAME#}</title>
{literal}
<style type="text/css">
html,body,td,th,div {font:11px Verdana,Arial,Helvetica,sans-serif;}
.border {background-color:#ccc;}
.header {background-color:#eee;}
.row {background-color:#fff;}
</style>
{/literal}
</head>
{oBasket->getBasket assign='basket'}
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><strong>{#BASKET_SHOP_NAME#}</strong><br>{#BASKET_SHOP_ADDRESS#}</td>
<td align="right"><img src="{$smarty.const.HOST}{$smarty.const.ABS_PATH}templates/{$smarty.const.THEME_FOLDER}/images/{#BASKET_SHOP_LOGO#}" alt="" border="0" /></td>
</tr>
</table>
<hr noshade="noshade" size="1">
<h3><strong>{#BASKET_ORDER_TITLE#}</strong></h3>
<hr noshade="noshade" size="1">
<em>{#BASKET_ORDER_HEAD#}</em>
<hr noshade="noshade" size="1"><br>
<table width="100%" border="0" cellpadding="3" cellspacing="1" class="border">
<col valign="top" align="center" width="30">
<col valign="top">
<col valign="top" align="center" width="100">
<col valign="top" align="center" width="100">
<col valign="top" align="center" width="100">
<col valign="top" align="right" width="100">
<col valign="top" align="right" width="100">
<thead>
<tr>
<th class="header"><strong>№</strong></th>
<th class="header"><strong>{#BASKET_PRODUCT_NAME#}</strong></th>
<th class="header"><strong>{#BASKET_PRODUCT_SIZE#}</strong></th>
<th class="header"><strong>{#BASKET_PRODUCT_ARTICLE#}</strong></th>
<th class="header"><strong>{#BASKET_PRODUCT_QUANTITY#}</strong></th>
<th class="header"><strong>{#BASKET_PRODUCT_PRICE#}</strong></th>
<th class="header"><strong>{#BASKET_PRODUCT_AMOUNT#}</strong></th>
</tr>
</thead>
<tbody>
{foreach name=product from=$basket.products item=product}
<tr>
<td class="row">{$smarty.foreach.product.iteration}</td>
<td class="row">{$product->name|truncate:100|escape}</td>
<td class="row">{$product->size}</td>
<td class="row">{$product->article}</td>
<td class="row">{$product->quantity}{#BASKET_UNIT#}</td>
<td class="row" nowrap="nowrap">{$product->price|string_format:"%.2f"}{#BASKET_CURRENCY#}</td>
<td class="row" nowrap="nowrap">{$product->amount|string_format:"%.2f"}{#BASKET_CURRENCY#}</td>
</tr>
{/foreach}
<tr>
<td class="row" colspan="4" align="right">{#BASKET_ORDER_TOTAL#} </td>
<td class="row"><strong>{$basket.total_send|string_format:"%.2f"}{#BASKET_CURRENCY#}</strong></td>
</tr>
</tbody>
</table>
<br>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th width="250" align="left" class="header">Вид доставки</th>
<th width="150" align="left" class="header">Стоимость доставки</th>
</tr>
</thead>
<tbody>
<tr>
<td class="row">{$delivery_method_titel}</td>
<td class="row"><strong>{if $delivery_method_operands|escape == '%'}{$delivery_method_price}%{elseif $delivery_method_operands|escape == 'Money'}{if $delivery_method_price|escape == 0 || $delivery_method_price=='0.00'}Бесплатно{else}{num_format val=$delivery_method_price|string_format:"%.2f"} руб.{/if}{elseif $delivery_method_operands|escape == 'Text'}{$delivery_method_price|escape}{/if}</strong></td>
</tr>
</tbody>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th width="250" align="left" class="header">Вид оплаты</th>
<th width="150" align="left" class="header">Стоимость</th>
</tr>
</thead>
<tbody>
<tr>
<td class="row">{$payment_method_titel}</td>
<td class="row"><strong>{if $payment_method_operands|escape == '%'}{$payment_method_price}%{elseif $payment_method_operands|escape == 'Money'}{if $payment_method_price|escape == 0 || $payment_method_price=='0.00'}Бесплатно{else}{num_format val=$payment_method_price|string_format:"%.2f"} руб.{/if}{elseif $payment_method_operands|escape == 'Text'}{$payment_method_price|escape}{/if}</strong></td>
</tr>
</tbody>
</table>
<br>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="row"><strong>{#BASKET_ORDER_TOTAL#}</strong> - <strong>{$basket.total|string_format:"%.2f"}{#BASKET_CURRENCY#}</strong></td>
</tr>
</table>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="4">
<col width="100" valign="top" align="right">
<thead>
<tr>
<td class="header">&nbsp;</td>
<td class="header"><strong>{#BASKET_CUSTOMER_INFO#}</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td>{#BASKET_CUSTOMER_NAME#}</td>
<td>{$customer.name|escape}</td>
</tr>
<tr>
<td>{#BASKET_CUSTOMER_EMAIL#}</td>
<td>{$customer.email}</td>
</tr>
<tr>
<td>{#BASKET_CUSTOMER_PHONE#}</td>
<td>{$customer.phone|escape}</td>
</tr>
<tr>
<td>{#BASKET_CUSTOMER_ADDRESS#}</td>
<td>{textformat wrap_char='<br>'}{$customer.address|truncate:1000|escape}{/textformat}</td>
</tr>
<tr>
<td>{#BASKET_CUSTOMER_DESCRIPTION#}</td>
<td>{textformat wrap_char='<br>'}{$customer.description|truncate:1000|escape}{/textformat}</td>
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr>
<td>{#BASKET_ORDER_DATE#}</td>
<td>{$smarty.now|date_format:"%d.%m.%Y, %H:%M"}</td>
</tr>
</tbody>
</table>
<hr noshade="noshade" size="1">
<strong>{#BASKET_ORDER_INFO#}</strong><br>
<br>
<strong>{#BASKET_SHOP_NAME#}</strong><br>
{#BASKET_SHOP_ADDRESS#}
</td>
</tr>
</table>
</body>
</html>

View File

@@ -0,0 +1,13 @@
<div id="basket-order" class="tablebox">
<table class="progress" width="100%" border="0" cellpadding="0" cellspacing="0">
<col width="38"><col width="195">
<col width="38"><col width="195">
<col width="38"><col width="195">
<tr>
<th>1</th><td>{#BASKET_PROGRESSBAR_STEP1#}</td>
<th>2</th><td>{#BASKET_PROGRESSBAR_STEP2#}</td>
<th class="active">3</th><td class="active">{#BASKET_PROGRESSBAR_STEP3#}</td>
</tr>
</table>
<p>{#BASKET_ORDER_SEND_SUCCESS#}</p>
</div>

97
templates/order_form.tpl Normal file
View File

@@ -0,0 +1,97 @@
{oBasket->getBasket assign='basket'}
{if $basket.products}
<div id="basket-order" class="tablebox">
<table class="progress" width="100%" border="0" cellpadding="0" cellspacing="0">
<col width="38"><col width="195">
<col width="38"><col width="195">
<col width="38"><col width="195">
<tr>
<th>1</th><td>{#BASKET_PROGRESSBAR_STEP1#}</td>
<th class="active">2</th><td class="active">{#BASKET_PROGRESSBAR_STEP2#}</td>
<th>3</th><td>{#BASKET_PROGRESSBAR_STEP3#}</td>
</tr>
</table>
<p><em>{#BASKET_ORDER_FORM_TIP#}</em></p>
<form method="post" action="index.php?module=basket&action=send">
{* раскомментировать при желании отображать список заказанных товаров
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<colgroup>
<col width="40">
<col>
<col width="80">
<col width="80">
<col width="80">
<col width="80">
<col width="80">
</colgroup>
<thead>
<tr>
<th>№</th>
<th>{#BASKET_PRODUCT_NAME#}</th>
<th>{#BASKET_PRODUCT_SIZE#}</th>
<th>{#BASKET_PRODUCT_ARTICLE#}</th>
<th>{#BASKET_PRODUCT_QUANTITY#}</th>
<th>{#BASKET_PRODUCT_PRICE#}</th>
<th>{#BASKET_PRODUCT_AMOUNT#}</th>
</tr>
</thead>
<tbody>
{foreach name=product from=$basket.products item=product}
<tr>
<td align="center">{$smarty.foreach.product.iteration}</td>
<td align="left">{$product->name|escape}</td>
<td align="center">{$product->size|escape}</td>
<td align="center">{$product->article|escape}</td>
<td align="center">{$product->quantity}</td>
<td align="center">{$product->price|string_format:"%.2f"}</td>
<td align="center">{$product->amount|string_format:"%.2f"}</td>
</tr>
{/foreach}
</tbody>
<tfoot>
<tr>
<th colspan="7" align="right">{$basket.total|string_format:"%.2f"}</th>
</tr>
</tfoot>
</table>
*}
<fieldset>
<p>
<label>{#BASKET_CUSTOMER_NAME#}</label>
<input type="text" name="name" title="" maxlength="50" value="{$smarty.request.name|default:$smarty.session.user_name|escape}" />
</p>
<p>
<label>{#BASKET_CUSTOMER_EMAIL#}</label>
<input type="text" name="email" title="" maxlength="100" value="{$smarty.request.email|default:$smarty.session.user_email|escape}" />
</p>
<p>
<label>{#BASKET_CUSTOMER_PHONE#}</label>
<input type="text" name="phone" title="" maxlength="50" value="{$smarty.request.phone|escape}" />
</p>
<p>
<label>{#BASKET_CUSTOMER_ADDRESS#}</label>
<textarea name="address" title="">{$smarty.request.address}</textarea>
</p>
<p>
<label>{#BASKET_CUSTOMER_DESCRIPTION#}</label>
<textarea name="description" title="">{$smarty.request.description}</textarea>
</p>
<input type="submit" class="button" value="{#BASKET_SEND#}" />
</fieldset>
</form>
</div>
{else}
<h2 id="page-heading">{#BASKET_EMPTY#}</h2>
{/if}

213
templates/order_show.tpl Normal file
View File

@@ -0,0 +1,213 @@
{oBasket->getBasket assign='basket'}
{if $basket.products}
<div id="basket-order" class="tablebox">
<table class="progress" width="100%" border="0" cellpadding="0" cellspacing="0">
<col width="38"><col width="195">
<col width="38"><col width="195">
<col width="38"><col width="195">
<tr>
<th class="active">1</th><td class="active">{#BASKET_PROGRESSBAR_STEP1#}</td>
<th>2</th><td>{#BASKET_PROGRESSBAR_STEP2#}</td>
<th>3</th><td>{#BASKET_PROGRESSBAR_STEP3#}</td>
</tr>
</table>
<p><em>{#BASKET_ORDER_SHOW_TIP#}</em></p>
<form method="post" action="{$smarty.const.ABS_PATH}">
<input type="hidden" name="module" value="basket" />
<input type="hidden" name="action" value="update" />
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<colgroup>
<col width="80">
<col>
<col width="80">
<col width="80">
<col width="80">
<col width="80">
<col width="80">
</colgroup>
<thead>
<tr>
<th>{#BASKET_PRODUCT_DELETE#}</th>
<th>{#BASKET_PRODUCT_NAME#}</th>
<th>{#BASKET_PRODUCT_SIZE#}</th>
<th>{#BASKET_PRODUCT_ARTICLE#}</th>
<th>{#BASKET_PRODUCT_QUANTITY#}</th>
<th>{#BASKET_PRODUCT_PRICE#}</th>
<th>{#BASKET_PRODUCT_AMOUNT#}</th>
</tr>
</thead>
<tbody>
{foreach from=$basket.products item=product}
<tr>
<td align="center"><input type="checkbox" name="product_delete[{$product->id}]" value="1" /></td>
<td align="left">{$product->name|escape}</td>
<td align="left">{$product->size|escape}</td>
<td align="center">{$product->article|escape}</td>
<td align="center"><input type="text" name="product_quantity[{$product->id}]" size="1" maxlength="2" value="{$product->quantity}" /></td>
<td align="right">{$product->price|string_format:"%.2f"}</td>
<td align="right">{$product->amount|string_format:"%.2f"}</td>
</tr>
{/foreach}
</tbody>
</table>
<br /><br />
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th colspan="4" class="table-head">Пожалуйста, выберите желаемый вид доставки</th>
</tr>
</thead>
<tbody>
<tr>
<th width="5">&nbsp;</th>
<th width="250" align="left">Вид доставки</th>
<th width="150" align="left">Стоимость доставки</th>
<th align="left">Описание</th>
</tr>
{foreach from=$basket.delivery item=delivery}
<tr>
<td><input style="cursor:pointer" type="radio" name="delivery_id" value="{$delivery->id|escape}" {if $delivery->id|escape==$smarty.session.delivery_id}checked{/if}></td>
<td><strong>{$delivery->delivery_title|escape}</strong></td>
<td><strong>
{if $delivery->delivery_price_operands|escape == '%'}{$delivery->delivery_price}%
{elseif $delivery->delivery_price_operands|escape == 'Money'}
{if $delivery->delivery_price|escape == 0 || $delivery->delivery_price=='0.00'}Бесплатно{else}{num_format val=$delivery->delivery_price|string_format:"%.2f"} руб.{/if}
{elseif $delivery->delivery_price_operands|escape == 'Text'}{$delivery->delivery_price|escape}{/if}
</strong></td>
<td><a class="tooltip" title="" href="javascript:void(0);">Подробнее</a></td>
</tr>
{/foreach}
</tbody>
</table>
{if $smarty.session.delivery_id}
<br /><br />
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th colspan="4" class="table-head">Выбор метода платежа</th>
</tr>
</thead>
<tbody>
<tr>
<th width="5">&nbsp;</th>
<th width="250" align="left">Метод оплаты</th>
<th width="150" align="left">Стоимость</th>
<th align="left">Описание</th>
</tr>
{foreach from=$basket.payment item=payment}
<tr>
<td><input style="cursor:pointer" type="radio" name="payment_id" value="{$payment->id|escape}" {if $payment->id|escape==$smarty.session.payment_id}checked{/if}></td>
<td><strong>{$payment->payment_title|escape}</strong></td>
<td><strong>
{if $payment->payment_price_operands|escape == '%'}{$payment->payment_price}%
{elseif $payment->payment_price_operands|escape == 'Money'}
{if $payment->payment_price|escape == 0 || $payment->payment_price=='0.00'}Бесплатно{else}{num_format val=$payment->payment_price|string_format:"%.2f"} руб.{/if}
{elseif $payment->payment_price_operands|escape == 'Text'}{$payment->payment_price|escape}{/if}
</strong></td>
<td><a class="tooltip" title="" href="javascript:void(0);">Подробнее</a></td>
</tr>
{/foreach}
</tbody>
</table>
{/if}
<br /><br />
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th colspan="5" class="table-head">Итого</th>
</tr>
</thead>
<tfoot>
<tr>
<th colspan="7" align="right">
<span class="ajax-loader" style="display:none;"><img src="{$ABS_PATH}templates/{$smarty.const.THEME_FOLDER}/images/loader-12.gif"></span>{$basket.total|string_format:"%.2f"}
</th>
</tr>
</tfoot>
</table>
<br /><br />
<input type="submit" class="button" value="{#BASKET_UPDATE#}" style="float:left;" />
<br /><br />
{if $smarty.session.delivery_id && $smarty.session.payment_id}
<a href="index.php?module=basket&action=form">{#BASKET_NEXT#}</a>
{/if}
</form>
{literal}
<script type="text/javascript">
$(document).ready(function() {
$("#basket-order form").submit(function() {
$(this).ajaxSubmit({
type: "post",
beforeSubmit: function(formData, jqForm) {
$("#basket-order .ajax-loader").show();
},
success: function(response) {
$("#basket-order").before(response).remove();
}
});
return false;
});
$("input:radio[name=delivery_id]").click(function() {
$("#basket-order form").unbind("submit").ajaxSubmit({
type: "post",
data: {delivery: '1', payment: '0'},
beforeSubmit: function(formData, jqForm) {
$("#basket-order .ajax-loader").show();
},
success: function(response) {
$("#basket-order").before(response).remove();
}
});
return false;
});
$("input:radio[name=payment_id]").click(function() {
$("#basket-order form").unbind("submit").ajaxSubmit({
type: "post",
data: {delivery: '1', payment: '1'},
beforeSubmit: function(formData, jqForm) {
$("#basket-order .ajax-loader").show();
},
success: function(response) {
$("#basket-order").before(response).remove();
}
});
return false;
});
});
</script>
{/literal}
</div>
{else}
<h2 id="page-heading">{#BASKET_EMPTY#}</h2>
{/if}

View File

@@ -0,0 +1,79 @@
<div class="title"><h5>{#DeliveryMethod#}</h5></div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
{#WelcomeText#}
</div>
</div>
<div class="widget">
<div class="head">
<h5>{#DeliveryMethod#}</h5>
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_payment&cp={$sess}">{#EditPaymentMethod#}</a></div>
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=basket&moduleaction=1&cp={$sess}">{#mainPage#}</a></div>
</div>
<form action="index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_delivery&cp={$sess}&sub=save" method="post" class="mainForm">
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col>
<col width="60">
<col width="140">
<col width="20">
<col width="20">
<thead>
<tr>
<td>{#DeliveryMethodName#}</td>
<td>{#DeliveryMethodPosition#}</td>
<td>{#DeliveryMethodActive#}</td>
<td colspan="2">{#Actions#}</td>
</tr>
</thead>
<tbody>
{foreach from=$methods item=delivery}
<tr>
<td>
<div class="pr12"><input type="text" name="delivery_title[{$delivery->id}]" value="{$delivery->delivery_title|stripslashes}"></div>
</td>
<td>
<div class="pr12"><input name="delivery_position[{$delivery->id}]" type="text" value="{$delivery->delivery_position}" size="3" maxlength="3" /></div>
</td>
<td>
<input type="radio" name="delivery_activ[{$delivery->id}]" value="1" {if $delivery->delivery_activ=='1'}checked {/if}/><label>{#Yes#}</label>&nbsp;
<input type="radio" name="delivery_activ[{$delivery->id}]" value="0" {if $delivery->delivery_activ=='0'}checked {/if}/><label>{#No#}</label>
</td>
<td>
<a class="topleftDir icon_sprite ico_edit" href="javascript:void(0);" title="{#ButtonEdit#}" onclick="windowOpen('index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_delivery_edit&cp={$sess}&pop=1&id={$delivery->id}','800','680','1','shopshipper');"></a>
</td>
<td>
{if $delivery->id!=1}
<a class="topleftDir icon_sprite ico_delete ConfirmDelete" title="{#DeliveryMethodDel#}" dir="{#DeliveryMethodDel#}" name="{#DeliveryMethodDelTitle#}" href="index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_delivery_del&id={$delivery->id}"></a>
{/if}
</td>
</tr>
{/foreach}
<tr>
<td colspan="5"><input type="submit" class="basicBtn" value="{#ButtonSave#}"></td>
</tr>
</tbody>
</table>
</form>
</div>
<div class="widget">
<div class="head">
<h5>{#NewDeliveryMethod#}</h5>
</div>
<form method="post" action="index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_delivery_new&cp={$sess}" class="mainForm">
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic" id="Fields">
<tr>
<td class="first">
<input style="width:250px" type="text" name="delivery_title" value="" placeholder="{#DeliveryMethodName#}">&nbsp;<input type="submit" class="basicBtn" value="{#ButtonAdd#}" />
</td>
</tr>
</table>
</form>
</div>

View File

@@ -0,0 +1,56 @@
<div class="first"></div>
<div class="title"><h5>{#EditDeliveryMethod#}</h5></div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
{#EditDeliveryInfo#}
</div>
</div>
<div class="widget">
<div class="head">
<h5>{#EditDeliveryMethod#}</h5>
</div>
<form method="post" action="index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_delivery_edit&cp={$sess}&pop=1&id={$smarty.request.id}&sub=save" class="mainForm">
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<tr>
<td width="180">{#DeliveryName#}</td>
<td>
<input style="width:200px" type="text" name="delivery_title" value="{$delivery->delivery_title|stripslashes}">
</td>
</tr>
<tr>
<td>{#DeliveryDescription#}</td>
<td>{$Edi}</td>
</tr>
<tr>
<td>{#DeliveryActive#} </td>
<td>
<input type="radio" name="delivery_activ" value="1" {if $delivery->delivery_activ=='1'}checked {/if}/><label>{#Yes#}</label>&nbsp;
<input type="radio" name="delivery_activ" value="0" {if $delivery->delivery_activ=='0'}checked {/if}/><label>{#No#}</label>
</td>
</tr>
<tr>
<td>{#DeliveryPrice#}</td>
<td>
<input name="delivery_price" type="text" id="delivery_price" value="{$delivery->delivery_price}" size="55" style="width: 300px;" style="float: left;" />
<select name="delivery_price_operands">
<option value="Money" {if $delivery->delivery_price_operands=='Money'}selected="selected"{/if}>{#PaymentCostMoney#}</option>
<option value="%" {if $delivery->delivery_price_operands=='%'}selected="selected"{/if}>{#PaymentCostPercent#}</option>
<option value="Text" {if $delivery->delivery_price_operands=='Text'}selected="selected"{/if}>{#PaymentCostText#}</option>
</select>
</td>
</tr>
<tr>
<td colspan="2"><input class="basicBtn" type="submit" value="{#ButtonSave#}" /></td>
</tr>
</table>
</form>
</div>

View File

@@ -0,0 +1,77 @@
<div class="title"><h5>{#PaymentMethod#}</h5></div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
{#WelcomeText#}
</div>
</div>
<div class="widget">
<div class="head">
<h5>{#PaymentMethod#}</h5>
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_delivery&cp={$sess}">{#EditDeliveryMethod#}</a></div>
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=basket&moduleaction=1&cp={$sess}">{#mainPage#}</a></div>
</div>
<form action="index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_payment&cp={$sess}&sub=save" method="post" class="mainForm">
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col>
<col width="60">
<col width="140">
<col width="20">
<col width="20">
<thead>
<tr>
<td>{#PaymentMethodName#}</td>
<td>{#PaymentMethodPosition#}</td>
<td>{#PaymentMethodActive#}</td>
<td colspan="2">{#Actions#}</td>
</tr>
</thead>
<tbody>
{foreach from=$methods item=payment}
<tr>
<td>
<div class="pr12"><input type="text" name="payment_title[{$payment->id}]" value="{$payment->payment_title|stripslashes}"></div>
</td>
<td>
<div class="pr12"><input name="payment_position[{$payment->id}]" type="text" value="{$payment->payment_position}" size="3" maxlength="3" /></div>
</td>
<td>
<input type="radio" name="payment_activ[{$payment->id}]" value="1" {if $payment->payment_activ=='1'}checked {/if}/><label>{#Yes#}</label>&nbsp;
<input type="radio" name="payment_activ[{$payment->id}]" value="0" {if $payment->payment_activ=='0'}checked {/if}/><label>{#No#}</label>
</td>
<td>
<a class="topleftDir icon_sprite ico_edit" href="javascript:void(0);" title="{#ButtonEdit#}" onclick="windowOpen('index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_payment_edit&cp={$sess}&pop=1&id={$payment->id}','800','680','1','shopshipper');"></a>
</td>
<td>
{if $payment->id!=1}
<a class="topleftDir icon_sprite ico_delete ConfirmDelete" title="{#PaymentMethodDel#}" dir="{#PaymentMethodDel#}" name="{#PaymentMethodDelTitle#}" href="index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_payment_del&id={$payment->id}"></a>
{/if}
</td>
</tr>
{/foreach}
<tr>
<td colspan="5"><input type="submit" class="basicBtn" value="{#ButtonSave#}"></td>
</tr>
</tbody>
</table>
</form>
</div>
<div class="widget">
<div class="head">
<h5>{#NewPaymentMethod#}</h5>
</div>
<form method="post" action="index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_payment_new&cp={$sess}" class="mainForm">
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic" id="Fields">
<tr>
<td class="first">
<input style="width:250px" type="text" name="payment_title" value="" placeholder="{#PaymentMethodName#}">&nbsp;<input type="submit" class="basicBtn" value="{#ButtonAdd#}" />
</td>
</tr>
</table>
</form>
</div>

View File

@@ -0,0 +1,76 @@
<div class="first"></div>
<div class="title"><h5>{#EditPaymentMethod#}</h5></div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
{#EditPaymentInfo#}
</div>
</div>
<div class="widget">
<div class="head">
<h5>{#EditDeliveryMethod#}</h5>
</div>
<form method="post" action="index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_payment_edit&cp={$sess}&pop=1&id={$smarty.request.id}&sub=save" class="mainForm">
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<tr>
<td width="180">{#PaymentName#}</td>
<td>
<input style="width:200px" type="text" name="payment_title" value="{$payment->payment_title|stripslashes}">
</td>
</tr>
<tr>
<td>{#PaymentDescription#}</td>
<td>{$Edi}</td>
</tr>
<tr>
<td>{#PaymentActive#} </td>
<td>
<input type="radio" name="payment_activ" value="1" {if $payment->payment_activ=='1'}checked {/if}/><label>{#Yes#}</label>&nbsp;
<input type="radio" name="payment_activ" value="0" {if $payment->payment_activ=='0'}checked {/if}/><label>{#No#}</label>
</td>
</tr>
<tr>
<td>{#PaymentPrice#}</td>
<td>
<input name="payment_price" type="text" id="payment_price" value="{$payment->payment_price}" size="55" style="width: 300px;" style="float: left;" />
<select name="payment_price_operands">
<option value="Money" {if $payment->payment_price_operands=='Money'}selected="selected"{/if}>{#PaymentCostMoney#}</option>
<option value="%" {if $payment->payment_price_operands=='%'}selected="selected"{/if}>{#PaymentCostPercent#}</option>
<option value="Text" {if $payment->payment_price_operands=='Text'}selected="selected"{/if}>{#PaymentCostText#}</option>
</select>
</td>
</tr>
<tr>
<td>
{#AllowedDeliveryMethods#}<br />
<small>{#DeliveryMethodInf#}</small>
</td>
<td>
<select name="payment_delivery[]" multiple="multiple" size="8" style="width:200px">
{foreach from=$basket_delivery item=delivery}
{assign var='sel' value=''}
{if $delivery->id}
{if (in_array($delivery->id,$payment->payment_delivery))}
{assign var='sel' value='selected'}
{/if}
{/if}
<option value="{$delivery->id}" {$sel}>{$delivery->delivery_title|escape:html}</option>
{/foreach}
</select>
</td>
</tr>
<tr>
<td colspan="2"><input class="basicBtn" type="submit" value="{#ButtonSave#}" /></td>
</tr>
</table>
</form>
</div>

View File

@@ -0,0 +1,62 @@
<div class="title"><h5>{#ModName#}</h5></div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
{#WelcomeText#}
</div>
</div>
<div class="widgets">
<!-- Left widgets -->
<div class="left">
<!-- Statistics -->
<div class="widget">
<div class="head">
<h5>Вид оплаты</h5>
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_payment&cp={$sess}">{#ButtonEdit#}</a></div>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="95%">
<col width="5%">
<tbody>
{foreach from=$payment item=payment}
<tr>
<td>{$payment->payment_title|stripslashes}</td>
<td align="center">{if $payment->payment_activ=='1'}<span class="icon_sprite ico_ok"></span>{else}<span class="icon_sprite ico_delete"></span>{/if}</td>
</tr>
{/foreach}
</tbody>
</table>
</div>
</div>
<!-- Right widgets -->
<div class="right">
<!-- User widget -->
<div class="widget">
<div class="head">
<h5>{#DeliveryMethod#}</h5>
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=basket&moduleaction=basket_delivery&cp={$sess}">{#ButtonEdit#}</a></div>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="95%">
<col width="5%">
<tbody>
{foreach from=$delivery item=delivery}
<tr>
<td>{$delivery->delivery_title|stripslashes}</td>
<td align="center">{if $delivery->delivery_activ=='1'}<span class="icon_sprite ico_ok"></span>{else}<span class="icon_sprite ico_delete"></span>{/if}</td>
</tr>
{/foreach}
</tbody>
</table>
</div>
</div>
<div class="fix"></div>
</div>