fix conflit
This commit is contained in:
commit
22e5b24c72
1
modules/advpicto/README.md
Normal file
1
modules/advpicto/README.md
Normal file
@ -0,0 +1 @@
|
||||
#TODO:
|
172
modules/advpicto/advpicto.php
Normal file
172
modules/advpicto/advpicto.php
Normal file
@ -0,0 +1,172 @@
|
||||
<?php
|
||||
|
||||
if (!defined('_CAN_LOAD_FILES_'))
|
||||
exit;
|
||||
|
||||
include_once dirname(__FILE__).'/classes/AdvPictoClass.php';
|
||||
|
||||
class AdvPicto extends Module
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->name = 'advpicto';
|
||||
$this->tab = 'front_office_features';
|
||||
$this->version = '1.0';
|
||||
$this->author = 'Antadis';
|
||||
$this->need_instance = 0;
|
||||
|
||||
$this->bootstrap = true;
|
||||
parent::__construct();
|
||||
|
||||
$this->displayName = $this->l('Gestionnaire de pictos');
|
||||
$this->description = $this->l('Gérez vos pictos');
|
||||
}
|
||||
|
||||
public function install()
|
||||
{
|
||||
return parent::install() && $this->registerHook('displayPictogrammesCategory') && $this->registerHook('displayPictogrammesProduct') && $this->createFolder() && $this->installDb() && $this->createTab();
|
||||
}
|
||||
|
||||
public function uninstall()
|
||||
{
|
||||
|
||||
if ( !parent::uninstall() ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->uninstallDb();
|
||||
$this->deleteTab();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function installDb()
|
||||
{
|
||||
$sql = array();
|
||||
$sql[] =
|
||||
'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'advpicto` (
|
||||
`id_advpicto` int(10) unsigned NOT NULL auto_increment,
|
||||
`active` int(11),
|
||||
`external` int(10) unsigned NOT NULL,
|
||||
`selfcategory_display` int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id_advpicto`)
|
||||
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8';
|
||||
$sql[] =
|
||||
'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'advpicto_lang` (
|
||||
`id_advpicto` int(10) unsigned NOT NULL,
|
||||
`id_lang` int(10) unsigned NOT NULL,
|
||||
`title` varchar(255) NOT NULL,
|
||||
`alt` varchar(255) NOT NULL,
|
||||
`link` varchar(255),
|
||||
`content` text,
|
||||
PRIMARY KEY (`id_advpicto`,`id_lang`)
|
||||
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8';
|
||||
$sql[] =
|
||||
'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'advpicto_shop` (
|
||||
`id_advpicto` int(10) unsigned NOT NULL,
|
||||
`id_shop` int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id_advpicto`,`id_shop`)
|
||||
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8';
|
||||
$sql[] =
|
||||
'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'advpicto_category` (
|
||||
`id_advpicto` int(10) unsigned NOT NULL,
|
||||
`id_category` int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id_advpicto`,`id_category`)
|
||||
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8';
|
||||
$sql[] =
|
||||
'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'advpicto_product` (
|
||||
`id_advpicto` int(10) unsigned NOT NULL,
|
||||
`id_product` int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id_advpicto`,`id_product`)
|
||||
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8';
|
||||
$sql[] =
|
||||
'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'advpicto_product_shop` (
|
||||
`id_advpicto_product` int(11) NOT NULL,
|
||||
`id_shop` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id_advpicto_product`,`id_shop`)
|
||||
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8';
|
||||
|
||||
return $this->uninstallDb() && $this->updateDb($sql);
|
||||
}
|
||||
|
||||
public function uninstallDb()
|
||||
{
|
||||
$sql = array();
|
||||
$sql[] = 'DROP TABLE IF EXISTS `'._DB_PREFIX_.'advpicto` ;';
|
||||
$sql[] = 'DROP TABLE IF EXISTS `'._DB_PREFIX_.'advpicto_lang` ;';
|
||||
$sql[] = 'DROP TABLE IF EXISTS `'._DB_PREFIX_.'advpicto_shop` ;';
|
||||
$sql[] = 'DROP TABLE IF EXISTS `'._DB_PREFIX_.'advpicto_category` ;';
|
||||
$sql[] = 'DROP TABLE IF EXISTS `'._DB_PREFIX_.'advpicto_product` ;';
|
||||
|
||||
return $this->updateDb($sql);
|
||||
}
|
||||
|
||||
public function updateDb( $sqls )
|
||||
{
|
||||
foreach ( $sqls as $sql ) {
|
||||
if ( !Db::getInstance()->execute($sql) ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function createFolder()
|
||||
{
|
||||
$img_dir = _PS_IMG_DIR_ . 'picto';
|
||||
$folder = is_dir($img_dir);
|
||||
if (!$folder)
|
||||
{
|
||||
$folder = mkdir($img_dir, 0755, true);
|
||||
}
|
||||
|
||||
return $folder;
|
||||
}
|
||||
|
||||
public function createTab()
|
||||
{
|
||||
$languages = Language::getLanguages();
|
||||
|
||||
$new_tab = new Tab();
|
||||
$new_tab->class_name = 'AdminAdvPicto';
|
||||
$new_tab->id_parent = Tab::getCurrentParentId();
|
||||
$new_tab->module = $this->name;
|
||||
foreach ( $languages as $language ) {
|
||||
$new_tab->name[$language['id_lang']] = 'Pictos';
|
||||
}
|
||||
|
||||
return $new_tab->add();
|
||||
}
|
||||
|
||||
public function deleteTab()
|
||||
{
|
||||
$idTab = Tab::getIdFromClassName('AdminAdvPicto');
|
||||
if ( $idTab ) {
|
||||
$tab = new Tab($idTab);
|
||||
$tab->delete();
|
||||
}
|
||||
}
|
||||
|
||||
public function hookDisplayPictogrammesCategory($params)
|
||||
{
|
||||
$id_product = $params['id_product'];
|
||||
$id_category = Tools::getValue('id_category');
|
||||
|
||||
$pictos = AdvPictoClass::getPictosForProductList($id_product, $id_category);
|
||||
|
||||
$this->smarty->assign('pictos', $pictos);
|
||||
|
||||
return $this->display(__FILE__, 'product-list.tpl');
|
||||
}
|
||||
|
||||
public function hookDisplayPictogrammesProduct($params)
|
||||
{
|
||||
$id_product = $params['id_product'];
|
||||
|
||||
$pictos = AdvPictoClass::getPictosForProductDetails($id_product);
|
||||
|
||||
$this->smarty->assign('pictos', $pictos);
|
||||
|
||||
return $this->display(__FILE__, 'product.tpl');
|
||||
}
|
||||
}
|
217
modules/advpicto/classes/AdvPictoClass.php
Normal file
217
modules/advpicto/classes/AdvPictoClass.php
Normal file
@ -0,0 +1,217 @@
|
||||
<?php
|
||||
|
||||
class AdvPictoClass extends ObjectModel
|
||||
{
|
||||
public $id_advpicto;
|
||||
public $title;
|
||||
public $alt;
|
||||
public $link;
|
||||
public $external;
|
||||
public $selfcategory_display;
|
||||
public $content;
|
||||
|
||||
public $active = true;
|
||||
|
||||
public $categories;
|
||||
|
||||
public static $definition = array(
|
||||
'table' => 'advpicto',
|
||||
'primary' => 'id_advpicto',
|
||||
'multilang' => true,
|
||||
'fields' => array(
|
||||
'title' => array(
|
||||
'type' => ObjectModel :: TYPE_STRING,
|
||||
'lang' => true,
|
||||
'validate' => 'isString',
|
||||
'required' => TRUE
|
||||
),
|
||||
'alt' => array(
|
||||
'type' => ObjectModel :: TYPE_STRING,
|
||||
'lang' => true,
|
||||
'validate' => 'isString'
|
||||
),
|
||||
'content' => array(
|
||||
'type' => ObjectModel :: TYPE_HTML,
|
||||
'lang' => true,
|
||||
'validate' => 'isString'
|
||||
),
|
||||
'link' => array(
|
||||
'type' => ObjectModel :: TYPE_STRING,
|
||||
'lang' => true,
|
||||
'validate' => 'isString'
|
||||
),
|
||||
'external' => array(
|
||||
'type' => ObjectModel :: TYPE_INT,
|
||||
'validate' => 'isBool'
|
||||
),
|
||||
'selfcategory_display' => array(
|
||||
'type' => ObjectModel :: TYPE_INT,
|
||||
'validate' => 'isBool'
|
||||
),
|
||||
'active' => array(
|
||||
'type' => ObjectModel :: TYPE_INT,
|
||||
'validate' => 'isBool'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
public function __construct($id = NULL, $id_lang = NULL, $id_shop = NULL) {
|
||||
parent::__construct($id, $id_lang, $id_shop);
|
||||
|
||||
$this->image_dir = _PS_IMG_DIR_ . 'picto/';
|
||||
}
|
||||
|
||||
public static function getAllPictos()
|
||||
{
|
||||
|
||||
$pictos = Db::getInstance()->executeS('
|
||||
SELECT adv.`id_advpicto` as id, advpl.`title`
|
||||
FROM `' . _DB_PREFIX_ . 'advpicto` adv
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'advpicto_lang` advpl ON adv.`id_advpicto` = advpl.`id_advpicto`
|
||||
GROUP BY adv.`id_advpicto`
|
||||
');
|
||||
|
||||
return $pictos;
|
||||
}
|
||||
|
||||
public function getCategories()
|
||||
{
|
||||
if(!$this->id)
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
if (!isset($this->categories)) {
|
||||
$this->categories = array();
|
||||
foreach (Db::getInstance()->executeS('
|
||||
SELECT `id_category`
|
||||
FROM `' . _DB_PREFIX_ . 'advpicto_category`
|
||||
WHERE `id_advpicto` = ' . $this->id . '
|
||||
') as $category) {
|
||||
$this->categories[] = $category['id_category'];
|
||||
}
|
||||
}
|
||||
|
||||
return $this->categories;
|
||||
}
|
||||
|
||||
public function addCategoryAssociation( $categories )
|
||||
{
|
||||
Db::getInstance()->execute('
|
||||
DELETE FROM `'._DB_PREFIX_.'advpicto_category`
|
||||
WHERE `id_advpicto` = '.(int) $this->id.'
|
||||
');
|
||||
|
||||
if ($categories)
|
||||
{
|
||||
foreach ( $categories as $category )
|
||||
{
|
||||
Db::getInstance()->execute('
|
||||
INSERT INTO `'._DB_PREFIX_.'advpicto_category`
|
||||
(`id_advpicto`,`id_category`)
|
||||
VALUES ('.(int) $this->id.','.$category.')
|
||||
');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function getPictoName($id_picto, $id_lang)
|
||||
{
|
||||
return Db::getInstance()->getValue('
|
||||
SELECT `title`
|
||||
FROM `' . _DB_PREFIX_ . 'advpicto_lang`
|
||||
WHERE `id_advpicto` = ' . $id_picto . '
|
||||
AND id_lang = ' . $id_lang . '
|
||||
');
|
||||
}
|
||||
|
||||
public static function getPictosForProductList($id_product, $id_category)
|
||||
{
|
||||
$context = Context::getContext();
|
||||
$categories = Product::getProductCategories($id_product);
|
||||
|
||||
if(!empty($categories))
|
||||
{
|
||||
$query = '
|
||||
SELECT *
|
||||
FROM `'._DB_PREFIX_.'advpicto` adv
|
||||
INNER JOIN `'._DB_PREFIX_.'advpicto_lang` advl ON adv.`id_advpicto` = advl.`id_advpicto` AND id_lang = '. $context->language->id
|
||||
;
|
||||
|
||||
if(Shop::isFeatureActive())
|
||||
{
|
||||
$query .= ' INNER JOIN `'._DB_PREFIX_.'advpicto_shop` advs ON adv.`id_advpicto` = advs.`id_advpicto` AND id_shop = '. $context->shop->id;
|
||||
}
|
||||
|
||||
$query .= '
|
||||
INNER JOIN `'._DB_PREFIX_.'advpicto_category` advc ON adv.`id_advpicto` = advc.`id_advpicto` AND advc.`id_category` IN ('. implode(',', $categories) . ')
|
||||
WHERE adv.`active` = 1
|
||||
GROUP BY adv.`id_advpicto`
|
||||
ORDER BY adv.`id_advpicto` ASC
|
||||
';
|
||||
|
||||
$pictos = Db::getInstance()->executeS($query);
|
||||
|
||||
if (empty($pictos))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach($pictos as $key => $picto)
|
||||
{
|
||||
if(!$picto['selfcategory_display'])
|
||||
{
|
||||
$pictoCategories = Db::getInstance()->executeS('
|
||||
SELECT `id_category`
|
||||
FROM `' . _DB_PREFIX_ . 'advpicto_category`
|
||||
WHERE `id_advpicto` = ' . $picto['id_advpicto']
|
||||
);
|
||||
|
||||
$pictoCategories = array_map(function($elem) { return $elem['id_category']; }, $pictoCategories);
|
||||
|
||||
if(in_array($id_category, $pictoCategories))
|
||||
{
|
||||
unset($pictos[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $pictos;
|
||||
}
|
||||
}
|
||||
|
||||
public static function getPictosForProductDetails($id_product = null)
|
||||
{
|
||||
$context = Context::getContext();
|
||||
|
||||
if(!empty($id_product) && is_int($id_product))
|
||||
{
|
||||
$query = '
|
||||
SELECT DISTINCT(advp.`id_advpicto`), `title`
|
||||
FROM `'._DB_PREFIX_.'advpicto_product` advp
|
||||
INNER JOIN `'._DB_PREFIX_.'advpicto_lang` advl ON advp.`id_advpicto` = advl.`id_advpicto` AND id_lang = '. $context->language->id
|
||||
;
|
||||
|
||||
if(Shop::isFeatureActive())
|
||||
{
|
||||
$query .= ' INNER JOIN `'._DB_PREFIX_.'advpicto_shop` advs ON advp.`id_advpicto` = advs.`id_advpicto` AND id_shop = '. $context->shop->id;
|
||||
}
|
||||
|
||||
$pictos = Db::getInstance()->executeS($query);
|
||||
|
||||
if (empty($pictos))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach($pictos as $key => $picto)
|
||||
{
|
||||
|
||||
$pictos[$key]['hasImg'] = file_exists(_PS_IMG_DIR_ .'picto/'. $picto['id_advpicto'] . '.jpg');
|
||||
}
|
||||
|
||||
return $pictos;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
49
modules/advpicto/classes/AdvPictoProductClass.php
Normal file
49
modules/advpicto/classes/AdvPictoProductClass.php
Normal file
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
class AdvPictoProductClass extends ObjectModel
|
||||
{
|
||||
public $id_advpicto_product;
|
||||
public $id_advpicto;
|
||||
public $id_product;
|
||||
|
||||
public static $definition = array(
|
||||
'table' => 'advpicto_product',
|
||||
'primary' => 'id_advpicto_product',
|
||||
'multilang' => false,
|
||||
'fields' => array(
|
||||
'id_advpicto' => array(
|
||||
'type' => ObjectModel :: TYPE_INT,
|
||||
'validate' => 'isInt'
|
||||
),
|
||||
'id_product' => array(
|
||||
'type' => ObjectModel :: TYPE_INT,
|
||||
'validate' => 'isInt'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
public function __construct($id = NULL, $id_lang = NULL, $id_shop = NULL) {
|
||||
parent::__construct($id, $id_lang, $id_shop);
|
||||
|
||||
$this->image_dir = _PS_IMG_DIR_ . 'picto/';
|
||||
}
|
||||
|
||||
public function add($auto_date = true, $null_values = false) {
|
||||
if(AdvPictoProductClass::exist($this->id_product, $this->id_advpicto, $this->id)) {
|
||||
throw new PrestaShopException('Existe déjà');
|
||||
}
|
||||
return parent::add($auto_date, $null_values);
|
||||
}
|
||||
|
||||
public function update($null_values = false) {
|
||||
if(AdvPictoProductClass::exist($this->id_product, $this->id_advpicto, $this->id)) {
|
||||
throw new PrestaShopException('Existe déjà');
|
||||
}
|
||||
return parent::update($null_values);
|
||||
}
|
||||
|
||||
public static function exist($id_product, $id_advpicto, $id_advpicto_product = null)
|
||||
{
|
||||
return Db::getInstance()->getValue('SELECT id_advpicto_product FROM '._DB_PREFIX_.'advpicto_product WHERE id_product = '.(int)$id_product.' AND id_advpicto = '.(int)$id_advpicto.(!is_null($id_advpicto_product) ? ' AND id_advpicto_product != '.(int)$id_advpicto_product : ''));
|
||||
}
|
||||
}
|
35
modules/advpicto/classes/index.php
Normal file
35
modules/advpicto/classes/index.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2015 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2015 PrestaShop SA
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
|
||||
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
|
||||
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
header('Pragma: no-cache');
|
||||
|
||||
header('Location: ../');
|
||||
exit;
|
12
modules/advpicto/config_fr.xml
Normal file
12
modules/advpicto/config_fr.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<module>
|
||||
<name>advpicto</name>
|
||||
<displayName><![CDATA[Gestionnaire de pictos]]></displayName>
|
||||
<version><![CDATA[1.0]]></version>
|
||||
<description><![CDATA[Gérez vos pictos]]></description>
|
||||
<author><![CDATA[Antadis]]></author>
|
||||
<tab><![CDATA[front_office_features]]></tab>
|
||||
<is_configurable>0</is_configurable>
|
||||
<need_instance>0</need_instance>
|
||||
<limited_countries></limited_countries>
|
||||
</module>
|
348
modules/advpicto/controllers/admin/AdminAdvPicto.php
Normal file
348
modules/advpicto/controllers/admin/AdminAdvPicto.php
Normal file
@ -0,0 +1,348 @@
|
||||
<?php
|
||||
include_once dirname(__FILE__).'/../../classes/AdvPictoClass.php';
|
||||
|
||||
class AdminAdvPictoController extends ModuleAdminController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->table = 'advpicto';
|
||||
$this->className = 'AdvPictoClass';
|
||||
$this->identifier = 'id_advpicto';
|
||||
$this->lang = true;
|
||||
$this->deleted = false;
|
||||
$this->bootstrap = true;
|
||||
$this->explicitSelect = true;
|
||||
$this->context = Context::getContext();
|
||||
$this->_defaultOrderBy = 'id_advpicto';
|
||||
$this->fieldImageSettings = array(
|
||||
'name' => 'image',
|
||||
'dir' => 'picto'
|
||||
);
|
||||
|
||||
$this->_group = 'GROUP BY a.`id_advpicto`';
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$this->fields_list = array(
|
||||
'id_advpicto' => array(
|
||||
'title' => $this->l('ID'),
|
||||
'align' => 'center',
|
||||
'width' => 25,
|
||||
'filter_key' => 'a!id_advpicto'
|
||||
),
|
||||
'title' => array(
|
||||
'title' => $this->l('Nom')
|
||||
),
|
||||
'active' => array(
|
||||
'title' => $this->l('Activé'),
|
||||
'active' => 'status',
|
||||
'filter_key' => 'a!active',
|
||||
'align' => 'text-center',
|
||||
'type' => 'bool',
|
||||
'class' => 'fixed-width-sm',
|
||||
'orderby' => false
|
||||
),
|
||||
);
|
||||
|
||||
$this->actions = array('edit','delete');
|
||||
$this->bulk_actions = array(
|
||||
'delete' => array(
|
||||
'text' => $this->l('Supprimer la liste'),
|
||||
'icon' => 'icon-trash',
|
||||
'confirm' => $this->l('Supprimer les blocs selectionné?')
|
||||
)
|
||||
);
|
||||
$this->specificConfirmDelete = false;
|
||||
}
|
||||
|
||||
public function initPageHeaderToolbar()
|
||||
{
|
||||
parent::initPageHeaderToolbar();
|
||||
|
||||
if ($this->display == 'edit' || $this->display == 'add') {
|
||||
$this->page_header_toolbar_btn['back_to_list'] = array(
|
||||
'href' => self::$currentIndex.'&token='.$this->token,
|
||||
'desc' => $this->l('Retour à la liste', null, null, false),
|
||||
'icon' => 'process-icon-back'
|
||||
);
|
||||
}
|
||||
$this->page_header_toolbar_btn['new'] = array(
|
||||
'href' => self::$currentIndex.'&addadvpicto&token='.$this->token,
|
||||
'desc' => $this->l('Ajouter un nouveau picto', null, null, false),
|
||||
'icon' => 'process-icon-new'
|
||||
);
|
||||
$this->page_header_toolbar_btn['new_product'] = array(
|
||||
'href' => $this->context->link->getAdminLink('AdminAdvPictoProduct'),
|
||||
'desc' => $this->l('Association produit', null, null, false),
|
||||
'icon' => 'process-icon-compress'
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public function renderForm()
|
||||
{
|
||||
if (!($obj = $this->loadObject(true))) {
|
||||
return;
|
||||
}
|
||||
|
||||
$context = Context::getContext();
|
||||
|
||||
if ( Tools::isSubmit('id_advpicto') ) {
|
||||
$id_advpicto = (int)Tools::getValue('id_advpicto');
|
||||
$image = __PS_BASE_URI__.'img/picto/'.$id_advpicto.'.jpg' ;
|
||||
} else {
|
||||
$image = "noimg" ;
|
||||
}
|
||||
|
||||
$selected_categories = $obj->getCategories();
|
||||
|
||||
$image = _PS_IMG_DIR_ . 'picto/' . $obj->id.'.jpg';
|
||||
$image_url = ImageManager::thumbnail($image, $this->table.'_'.(int)$obj->id.'.'.$this->imageType, 350, $this->imageType, TRUE, TRUE);
|
||||
$image_size = file_exists($image) ? filesize($image) / 1000 : FALSE;
|
||||
|
||||
|
||||
$this->fields_form = array(
|
||||
'multilang' => true,
|
||||
'tinymce' => true,
|
||||
'legend' => array(
|
||||
'title' => $this->l('Picto'),
|
||||
),
|
||||
'submit' => array(
|
||||
'name' => 'submitBlock',
|
||||
'title' => $this->l('Enregistrer')
|
||||
),
|
||||
'input' => array(
|
||||
array(
|
||||
'type' => 'text',
|
||||
'label' => $this->l('Titre'),
|
||||
'name' => 'title',
|
||||
'lang' => true,
|
||||
'required' => true,
|
||||
'size' => 255
|
||||
),
|
||||
array(
|
||||
'type' => 'text',
|
||||
'label' => $this->l('Alt'),
|
||||
'name' => 'alt',
|
||||
'lang' => true,
|
||||
'size' => 255
|
||||
),
|
||||
array(
|
||||
'type' => 'file',
|
||||
'label' => $this->l('Choisir une image'),
|
||||
'name' => 'image',
|
||||
'display_image' => TRUE,
|
||||
'image' => $image_url,
|
||||
'size' => $image_size,
|
||||
'delete_url' => self::$currentIndex.'&'.$this->identifier.'='.$this->object->id.'&token='.$this->token.'&deleteImage=1'
|
||||
),
|
||||
array(
|
||||
'type' => 'text',
|
||||
'label' => $this->l('Lien'),
|
||||
'name' => 'link',
|
||||
'lang' => true,
|
||||
'size' => 255
|
||||
),
|
||||
array(
|
||||
'type' => 'switch',
|
||||
'label' => $this->l('Lien externe'),
|
||||
'name' => 'external',
|
||||
'required' => false,
|
||||
'is_bool' => true,
|
||||
'values' => array(
|
||||
array(
|
||||
'id' => 'external_on',
|
||||
'value' => 1,
|
||||
'label' => $this->l('Yes')
|
||||
),
|
||||
array(
|
||||
'id' => 'external_off',
|
||||
'value' => 0,
|
||||
'label' => $this->l('No')
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'type' => 'textarea',
|
||||
'label' => $this->l('Contenu'),
|
||||
'name' => 'content',
|
||||
'autoload_rte' => true,
|
||||
'lang' => true,
|
||||
'cols' => 60,
|
||||
'rows' => 120
|
||||
),
|
||||
array(
|
||||
'type' => 'categories',
|
||||
'label' => $this->l('Parent category'),
|
||||
'name' => 'categoryBox',
|
||||
'tree' => array(
|
||||
'id' => 'categories-tree',
|
||||
'selected_categories' => $selected_categories,
|
||||
'use_checkbox' => true,
|
||||
'root_category' => $context->shop->getCategory()
|
||||
),
|
||||
'col' => '9',
|
||||
),
|
||||
array(
|
||||
'type' => 'switch',
|
||||
'label' => $this->l('Actif'),
|
||||
'name' => 'active',
|
||||
'required' => false,
|
||||
'class' => 't',
|
||||
'is_bool' => true,
|
||||
'values' => array(
|
||||
array(
|
||||
'id' => 'active_on',
|
||||
'value' => 1
|
||||
),
|
||||
array(
|
||||
'id' => 'active_off',
|
||||
'value' => 0
|
||||
)
|
||||
),
|
||||
),
|
||||
array(
|
||||
'type' => 'switch',
|
||||
'label' => $this->l('Affiché dans sa propre catégorie'),
|
||||
'name' => 'selfcategory_display',
|
||||
'required' => false,
|
||||
'class' => 't',
|
||||
'is_bool' => true,
|
||||
'hint' => $this->l('Permet de ne pas affiché le pictogramme dans sa propre catégorie (mais dans les autres catégories associées à un produit par exemple)'),
|
||||
'values' => array(
|
||||
array(
|
||||
'id' => 'selfcategory_display_on',
|
||||
'value' => 1
|
||||
),
|
||||
array(
|
||||
'id' => 'selfcategory_display_off',
|
||||
'value' => 0
|
||||
)
|
||||
),
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
if (Shop::isFeatureActive()) {
|
||||
$this->fields_form['input'][] = array(
|
||||
'type' => 'shop',
|
||||
'label' => $this->l('Boutique'),
|
||||
'name' => 'checkBoxShopAsso',
|
||||
'form_group_class' => 'fieldhide input_association'
|
||||
);
|
||||
}
|
||||
|
||||
return parent::renderForm();
|
||||
}
|
||||
|
||||
|
||||
public function init()
|
||||
{
|
||||
parent::init();
|
||||
|
||||
if (Shop::getContext() == Shop::CONTEXT_SHOP) {
|
||||
$this->_join .= ' LEFT JOIN `'._DB_PREFIX_. $this->table .'_shop` sa ON (a.`' . $this->identifier . '` = sa.`' . $this->identifier . '` AND sa.id_shop = '.(int)$this->context->shop->id.') ';
|
||||
}
|
||||
|
||||
if (Shop::getContext() == Shop::CONTEXT_SHOP && Shop::isFeatureActive()) {
|
||||
$this->_where = ' AND sa.`id_shop` = '.(int)Context::getContext()->shop->id;
|
||||
}
|
||||
}
|
||||
|
||||
public function postProcess()
|
||||
{
|
||||
if (Tools::getValue('deleteImage')) {
|
||||
$this->processForceDeleteImage();
|
||||
}
|
||||
|
||||
$result = parent::postProcess();
|
||||
if ( Validate::isLoadedObject($result) ) {
|
||||
$this->generatePicture($result);
|
||||
$result->addCategoryAssociation(Tools::getValue('categoryBox'));
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function processForceDeleteImage()
|
||||
{
|
||||
$picto = $this->loadObject(TRUE);
|
||||
|
||||
if (Validate::isLoadedObject($picto))
|
||||
{
|
||||
$picto->deleteImage(TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
public function generatePicture($object)
|
||||
{
|
||||
$namePost = 'image';
|
||||
if (isset($_FILES[$namePost]) && !empty($_FILES[$namePost]['tmp_name']) ) {
|
||||
$fileTemp = $_FILES[$namePost]['tmp_name'];
|
||||
$fileParts = pathinfo($_FILES[$namePost]['name']);
|
||||
|
||||
if ( $fileParts['extension'] == 'jpg' || $fileParts['extension'] == 'png' ) {
|
||||
if(!is_dir(_PS_IMG_DIR_.'picto')) {
|
||||
mkdir(_PS_IMG_DIR_.'picto', 0775);
|
||||
}
|
||||
$res = move_uploaded_file($fileTemp, _PS_IMG_DIR_.'picto/' . $object->id . '.jpg');
|
||||
if(!$res)
|
||||
$this->errors[] = sprintf(Tools::displayError('An error occured during upload of file %s'), $object->id . '.jpg');
|
||||
else
|
||||
$this->confirmations[] = sprintf($this->l('File %s has been uploaded'), $object->id . '.jpg');
|
||||
} else
|
||||
$this->errors[] = sprintf(Tools::displayError('File %s have not good extension, only .jpg or .png'), $object->id . '.jpg');
|
||||
}
|
||||
}
|
||||
|
||||
protected function updateAssoShop($id_object)
|
||||
{
|
||||
if (!Shop::isFeatureActive()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$assos_data = $this->getSelectedAssoShop($this->table, $id_object);
|
||||
|
||||
$exclude_ids = $assos_data;
|
||||
foreach (Db::getInstance()->executeS('SELECT id_shop FROM ' . _DB_PREFIX_ . 'shop') as $row) {
|
||||
if (!$this->context->employee->hasAuthOnShop($row['id_shop'])) {
|
||||
$exclude_ids[] = $row['id_shop'];
|
||||
}
|
||||
}
|
||||
|
||||
Db::getInstance()->delete($this->table . '_shop', '`' . $this->identifier . '` = ' . (int) $id_object . ($exclude_ids ? ' AND id_shop NOT IN (' . implode(', ', $exclude_ids) . ')' : ''));
|
||||
|
||||
$insert = array();
|
||||
foreach ($assos_data as $id_shop) {
|
||||
$insert[] = array(
|
||||
$this->identifier => $id_object,
|
||||
'id_shop' => (int) $id_shop,
|
||||
);
|
||||
}
|
||||
|
||||
return Db::getInstance()->insert($this->table . '_shop', $insert, FALSE, TRUE, Db::INSERT_IGNORE);
|
||||
}
|
||||
|
||||
protected function getSelectedAssoShop($table)
|
||||
{
|
||||
if (!Shop::isFeatureActive()) {
|
||||
return array();
|
||||
}
|
||||
|
||||
$shops = Shop::getShops(TRUE, NULL, TRUE);
|
||||
if (count($shops) == 1 && isset($shops[0])) {
|
||||
return array($shops[0], 'shop');
|
||||
}
|
||||
|
||||
$assos = array();
|
||||
if (Tools::isSubmit('checkBoxShopAsso_' . $table)) {
|
||||
foreach (Tools::getValue('checkBoxShopAsso_' . $table) as $id_shop => $value) {
|
||||
$assos[] = (int) $id_shop;
|
||||
}
|
||||
} else if (Shop::getTotalShops(FALSE) == 1) {
|
||||
// if we do not have the checkBox multishop, we can have an admin with only one shop and being in multishop
|
||||
$assos[] = (int) Shop::getContextShopID();
|
||||
}
|
||||
|
||||
return $assos;
|
||||
}
|
||||
}
|
175
modules/advpicto/controllers/admin/AdminAdvPictoProduct.php
Normal file
175
modules/advpicto/controllers/admin/AdminAdvPictoProduct.php
Normal file
@ -0,0 +1,175 @@
|
||||
<?php
|
||||
include_once dirname(__FILE__).'/../../classes/AdvPictoClass.php';
|
||||
include_once dirname(__FILE__).'/../../classes/AdvPictoProductClass.php';
|
||||
|
||||
class AdminAdvPictoProductController extends ModuleAdminController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->table = 'advpicto_product';
|
||||
$this->className = 'AdvPictoProductClass';
|
||||
$this->identifier = 'id_advpicto_product';
|
||||
$this->lang = false;
|
||||
$this->multishop_context = false;
|
||||
$this->deleted = false;
|
||||
$this->bootstrap = true;
|
||||
$this->explicitSelect = true;
|
||||
$this->context = Context::getContext();
|
||||
$this->_defaultOrderBy = 'id_advpicto';
|
||||
$this->fieldImageSettings = array(
|
||||
'name' => 'image',
|
||||
'dir' => 'picto'
|
||||
);
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$this->fields_list = array(
|
||||
'id_advpicto_product' => array(
|
||||
'title' => $this->l('ID'),
|
||||
'align' => 'center',
|
||||
'width' => 25,
|
||||
'filter_key' => 'a!id_advpicto_product'
|
||||
),
|
||||
'id_advpicto' => array(
|
||||
'title' => $this->l('Picto'),
|
||||
'filter_key' => 'a!id_advpicto',
|
||||
'callback' => 'getPictoName'
|
||||
),
|
||||
'id_product' => array(
|
||||
'title' => $this->l('Produit'),
|
||||
'filter_key' => 'a!id_product',
|
||||
'callback' => 'getProductName',
|
||||
),
|
||||
);
|
||||
|
||||
$this->actions = array('edit','delete');
|
||||
$this->bulk_actions = array(
|
||||
'delete' => array(
|
||||
'text' => $this->l('Supprimer la liste'),
|
||||
'icon' => 'icon-trash',
|
||||
'confirm' => $this->l('Supprimer les blocs selectionné?')
|
||||
)
|
||||
);
|
||||
$this->specificConfirmDelete = false;
|
||||
}
|
||||
|
||||
public function init()
|
||||
{
|
||||
parent::init();
|
||||
if(Tools::getValue('loadProductName') == 1)
|
||||
{
|
||||
$this->loadProductData();
|
||||
}
|
||||
}
|
||||
|
||||
public function initPageHeaderToolbar()
|
||||
{
|
||||
parent::initPageHeaderToolbar();
|
||||
|
||||
$this->page_header_toolbar_btn['back_to_list'] = array(
|
||||
'href' => $this->context->link->getAdminLink('AdminAdvPicto'),
|
||||
'desc' => $this->l('Liste des pictogrammes', null, null, false),
|
||||
'icon' => 'process-icon-back'
|
||||
);
|
||||
|
||||
if ($this->display == 'edit' || $this->display == 'add') {
|
||||
$this->page_header_toolbar_btn['new_product'] = array(
|
||||
'href' => $this->context->link->getAdminLink('AdminAdvPictoProduct'),
|
||||
'desc' => $this->l('Liste des associations', null, null, false),
|
||||
'icon' => 'process-icon-back'
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->display != 'edit' && $this->display != 'add') {
|
||||
$this->page_header_toolbar_btn['new_constructor'] = array(
|
||||
'href' => self::$currentIndex.'&addadvpicto_product&token='.$this->token,
|
||||
'desc' => $this->l('Ajouter une association produit', null, null, false),
|
||||
'icon' => 'process-icon-new'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public static function getProductName($id_product, $obj) {
|
||||
return Product::getProductName($id_product, null, Context::getContext()->language->id);
|
||||
}
|
||||
|
||||
public static function getPictoName($id_advpicto) {
|
||||
return AdvPictoClass::getPictoName($id_advpicto, Context::getContext()->language->id);
|
||||
}
|
||||
|
||||
public function loadProductData()
|
||||
{
|
||||
$id_product = Tools::getValue('id_product');
|
||||
$identifier = Tools::getValue('identifier');
|
||||
|
||||
$data['identifier'] = $identifier;
|
||||
$data['nameProduct'] = self::getProductName($id_product, null, Context::getContext()->language->id);
|
||||
|
||||
die(Tools::jsonEncode($data));
|
||||
}
|
||||
|
||||
|
||||
public function renderForm()
|
||||
{
|
||||
if (!($obj = $this->loadObject(true))) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->addJqueryUI(array('ui.core','ui.widget'));
|
||||
$this->addJqueryPlugin(array('autocomplete'));
|
||||
|
||||
$context = Context::getContext();
|
||||
$pictos = AdvPictoClass::getAllPictos();
|
||||
|
||||
$this->tpl_form_vars['product_id'] = $this->object->id_product;
|
||||
|
||||
$this->fields_form = array(
|
||||
'multilang' => true,
|
||||
'tinymce' => true,
|
||||
'legend' => array(
|
||||
'title' => $this->l('Picto'),
|
||||
),
|
||||
'submit' => array(
|
||||
'name' => 'submitAdd'.$this->table,
|
||||
'title' => $this->l('Enregistrer')
|
||||
),
|
||||
'input' => array(
|
||||
array(
|
||||
'type' => 'select',
|
||||
'label' => $this->l('Pictogramme'),
|
||||
'name' => 'id_advpicto',
|
||||
'options' => array(
|
||||
'query' => $pictos,
|
||||
'id' => 'id',
|
||||
'name' => 'title'
|
||||
),
|
||||
'required' => true,
|
||||
),
|
||||
array(
|
||||
'type' => 'product',
|
||||
'label' => $this->l('Produit'),
|
||||
'name' => 'id_product',
|
||||
'id' => 'id_product',
|
||||
'required' => true
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
if (Shop::isFeatureActive()) {
|
||||
$this->fields_form['input'][] = array(
|
||||
'type' => 'shop',
|
||||
'label' => $this->l('Boutique'),
|
||||
'name' => 'checkBoxShopAsso',
|
||||
'form_group_class' => 'fieldhide input_association'
|
||||
);
|
||||
}
|
||||
|
||||
return parent::renderForm();
|
||||
}
|
||||
|
||||
public function beforeAdd($object)
|
||||
{
|
||||
parent::beforeAdd($object);
|
||||
|
||||
}
|
||||
}
|
35
modules/advpicto/controllers/admin/index.php
Normal file
35
modules/advpicto/controllers/admin/index.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2015 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2015 PrestaShop SA
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
|
||||
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
|
||||
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
header('Pragma: no-cache');
|
||||
|
||||
header('Location: ../');
|
||||
exit;
|
35
modules/advpicto/controllers/index.php
Normal file
35
modules/advpicto/controllers/index.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2015 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2015 PrestaShop SA
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
|
||||
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
|
||||
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
header('Pragma: no-cache');
|
||||
|
||||
header('Location: ../');
|
||||
exit;
|
35
modules/advpicto/index.php
Normal file
35
modules/advpicto/index.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2015 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2015 PrestaShop SA
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
|
||||
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
|
||||
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
header('Pragma: no-cache');
|
||||
|
||||
header('Location: ../');
|
||||
exit;
|
BIN
modules/advpicto/logo.gif
Normal file
BIN
modules/advpicto/logo.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.0 KiB |
BIN
modules/advpicto/logo.png
Normal file
BIN
modules/advpicto/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.1 KiB |
35
modules/advpicto/translations/index.php
Normal file
35
modules/advpicto/translations/index.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2015 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2015 PrestaShop SA
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
|
||||
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
|
||||
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
header('Pragma: no-cache');
|
||||
|
||||
header('Location: ../');
|
||||
exit;
|
35
modules/advpicto/views/index.php
Normal file
35
modules/advpicto/views/index.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2015 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2015 PrestaShop SA
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
|
||||
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
|
||||
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
header('Pragma: no-cache');
|
||||
|
||||
header('Location: ../');
|
||||
exit;
|
@ -0,0 +1,75 @@
|
||||
{extends file="helpers/form/form.tpl"}
|
||||
|
||||
{block name="field"}
|
||||
{if $input.type == 'product' }
|
||||
<div class="col-lg-4">
|
||||
<input type="hidden" id="id_product" name="id_product" value="{$product_id}" />
|
||||
<input type="text" size="10" id="id_product_name" name="id_product_name" class="ac_input" autocomplete="off" />
|
||||
</div>
|
||||
{/if}
|
||||
{$smarty.block.parent}
|
||||
{/block}
|
||||
|
||||
{block name="defaultForm"}
|
||||
<script>
|
||||
var Choice = function () {
|
||||
var self = this;
|
||||
|
||||
this.init = function() {
|
||||
this.loadData();
|
||||
this.initAutocompleteChoice();
|
||||
}
|
||||
};
|
||||
|
||||
Choice.prototype.loadData = function() {
|
||||
|
||||
if($('#id_product').val()) {
|
||||
var idProduct = $('#id_product').val();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "{Context::getContext()->link->getAdminLink(AdminAdvPictoProduct)}",
|
||||
data: 'loadProductName=1&id_product='+idProduct+'&identifier='+idProduct,
|
||||
dataType: 'json',
|
||||
success: function (jsonData) {
|
||||
$('#id_product_name').val(jsonData.nameProduct);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Choice.prototype.initAutocompleteChoice = function() {
|
||||
$('#id_product_name').autocomplete('ajax_products_list.php', {
|
||||
minChars: 1,
|
||||
autoFill: false,
|
||||
max:20,
|
||||
matchContains: true,
|
||||
mustMatch:false,
|
||||
scroll:false,
|
||||
cacheLength:0,
|
||||
formatItem: function(item) {
|
||||
return item[0];
|
||||
},
|
||||
}).result( function(event, data, formatted) {
|
||||
var idProduct = data[1];
|
||||
var nameProduct = data[0];
|
||||
|
||||
$('#id_product').val(idProduct);
|
||||
$('#id_product_name').val(nameProduct);
|
||||
});
|
||||
|
||||
$('#id_product_name').setOptions({
|
||||
extraParams: {
|
||||
excludeIds : ',',
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
var choice = new Choice();
|
||||
choice.init();
|
||||
});
|
||||
|
||||
</script>
|
||||
{$smarty.block.parent}
|
||||
{/block}
|
9
modules/advpicto/views/templates/hook/product-list.tpl
Normal file
9
modules/advpicto/views/templates/hook/product-list.tpl
Normal file
@ -0,0 +1,9 @@
|
||||
{if $pictos}
|
||||
<ul>
|
||||
{foreach from=$pictos item=picto name=pictos}
|
||||
<li>
|
||||
<img src="{$base_dir}img/picto/{$picto.id_advpicto}.jpg" alt="{$picto.alt}" title="{$picto.title}" />
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
12
modules/advpicto/views/templates/hook/product.tpl
Normal file
12
modules/advpicto/views/templates/hook/product.tpl
Normal file
@ -0,0 +1,12 @@
|
||||
{if $pictos}
|
||||
<div class="pictos row">
|
||||
{foreach from=$pictos item=picto name=picto}
|
||||
<div class="picto md6 valign-middle">
|
||||
{if $picto.hasImg}
|
||||
<img src="{$base_dir}img/picto/{$picto.id_advpicto}.jpg" alt="{$picto.title}" />
|
||||
{/if}
|
||||
<div>{$picto.title}</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
{/if}
|
35
modules/advpicto/views/templates/index.php
Normal file
35
modules/advpicto/views/templates/index.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2015 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2015 PrestaShop SA
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
|
||||
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
|
||||
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
header('Pragma: no-cache');
|
||||
|
||||
header('Location: ../');
|
||||
exit;
|
@ -2703,24 +2703,44 @@ main#categorycms { margin-bottom: 30px }
|
||||
#category .subcategories{ margin-bottom: 15px;}
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************************************************
|
||||
*************************************** PRODUCT *****************************************
|
||||
**************************************************************************************************************/
|
||||
.intro_product {
|
||||
height: 100px;
|
||||
}
|
||||
#product {}
|
||||
#product main h1 {
|
||||
#product .block-left .inner {
|
||||
border: 1px solid #ccc;
|
||||
margin-top: 30px;
|
||||
}
|
||||
#product main .title1 {
|
||||
font-family: 'Vidaloka';
|
||||
letter-spacing: -1px;
|
||||
border-bottom: 3px solid #333333;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
#product main .title1 h1 {
|
||||
max-width: 80%;
|
||||
float: left;
|
||||
}
|
||||
#product main .title1 .social_share {
|
||||
float: right;
|
||||
margin-top: 25px;
|
||||
}
|
||||
#product .logo_manufacturer {
|
||||
margin-bottom: 10px;
|
||||
margin-bottom: 20px;
|
||||
text-align: center;
|
||||
padding-top: 20px;
|
||||
}
|
||||
#product .logo_manufacturer img {
|
||||
margin: 0 auto;
|
||||
max-height: 80px;
|
||||
max-width: 100%;
|
||||
}
|
||||
#product .payment_logo {
|
||||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
#product .view-larger {
|
||||
background: url('../img/zoom.png') no-repeat;
|
||||
@ -2749,7 +2769,28 @@ main#categorycms { margin-bottom: 30px }
|
||||
left: 30px;
|
||||
z-index: 5;
|
||||
}
|
||||
#view_full_size { position: relative; display: block;}
|
||||
#product #main-info .pictos {
|
||||
border-top: #cccccc 1px solid;
|
||||
border-bottom: #cccccc 1px solid;
|
||||
margin-top: 15px;
|
||||
}
|
||||
#product #main-info .pictos .picto {
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
font-family: 'pompiere_regular';
|
||||
color: #666666;
|
||||
height: 64px;
|
||||
}
|
||||
#product #main-info .pictos .picto:nth-child(odd) { padding-right: 5px; }
|
||||
#product #main-info .pictos .picto:nth-child(even) { padding-left: 5px; }
|
||||
#product #main-info .pictos .picto div {
|
||||
font-size: 20px;
|
||||
}
|
||||
#product #main-info .pictos .picto .img {
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
#view_full_size { position: relative; display: block; margin-top: 30px; }
|
||||
#views_block {}
|
||||
#views_block ul#thumbs_list_frame {}
|
||||
#views_block ul#thumbs_list_frame li {
|
||||
@ -2774,27 +2815,45 @@ main#categorycms { margin-bottom: 30px }
|
||||
text-decoration: underline;
|
||||
}
|
||||
#product .links {
|
||||
border-top: 1px solid #cccccc;
|
||||
margin-top: 30px;
|
||||
margin-top: 10px;
|
||||
padding-top: 10px;
|
||||
overflow: auto;
|
||||
text-align: center;
|
||||
font-size: 0;
|
||||
}
|
||||
#product .links > span {
|
||||
display: inline-block;
|
||||
}
|
||||
#product .links a {
|
||||
color: #333;
|
||||
text-transform: uppercase;
|
||||
font-family: 'pompiere_regular';
|
||||
font-size: 18px;
|
||||
float: left;
|
||||
margin-right: 15px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#product .shipmentCost {
|
||||
text-align: left;
|
||||
color: #666;
|
||||
font-size: 14px;
|
||||
}
|
||||
#product .shipmentCost i {
|
||||
font-size: 25px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
#product .shipmentCost > * {
|
||||
vertical-align: bottom;
|
||||
}
|
||||
#product .shipmentCost .name {
|
||||
font-weight: bold;
|
||||
}
|
||||
#buy_block {
|
||||
background: #f5f5f5;
|
||||
padding: 15px 30px;
|
||||
}
|
||||
.content_prices {
|
||||
border-bottom: 1px solid #cccccc;
|
||||
margin-bottom: 15px;
|
||||
text-align: center;
|
||||
text-align: left;
|
||||
}
|
||||
.content_prices .solde {
|
||||
background: url('../img/bg_soldes.png') center center no-repeat;
|
||||
@ -2825,7 +2884,7 @@ main#categorycms { margin-bottom: 30px }
|
||||
margin: 10px 0;
|
||||
}
|
||||
.box-cart-bottom .btn.btn-cart{ width: 100%; }
|
||||
#quantity_wanted_p {}
|
||||
#quantity_wanted_p { font-size: 0; }
|
||||
#quantity_wanted_p label {
|
||||
font-weight: normal;
|
||||
color: #666666;
|
||||
@ -2834,20 +2893,25 @@ main#categorycms { margin-bottom: 30px }
|
||||
float: left;
|
||||
}
|
||||
#quantity_wanted_p a {
|
||||
float: right;
|
||||
vertical-align: middle;
|
||||
font-size: 30px;
|
||||
height: 35px;
|
||||
line-height: 30px;
|
||||
margin-right: 5px;
|
||||
padding: 0;
|
||||
width: 30px;
|
||||
background-color: #b9b7b7;
|
||||
border-radius: 0px;
|
||||
}
|
||||
#quantity_wanted_p a:hover { background-color: #6ac5bb; }
|
||||
#quantity_wanted {
|
||||
color: #999999;
|
||||
text-align: center;
|
||||
float: right;
|
||||
padding: 5px;
|
||||
width: 80px;
|
||||
font-size: 15px;
|
||||
margin-right: 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.attribute_fieldset { margin-bottom: 5px; }
|
||||
.attribute_fieldset .attribute_list { clear: both; }
|
||||
@ -2869,9 +2933,33 @@ main#categorycms { margin-bottom: 30px }
|
||||
.availlability {
|
||||
color:#339966;
|
||||
margin-top: 15px;
|
||||
text-align: center;
|
||||
font-family: 'pt_sansbold';
|
||||
text-align: left;
|
||||
font-family: 'pt_sans';
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
}
|
||||
#product .availlability {
|
||||
color: #666;
|
||||
margin: 0;
|
||||
}
|
||||
#product .avail {
|
||||
margin-top: 20px;
|
||||
}
|
||||
#product .availlability span {
|
||||
font-weight: normal;
|
||||
}
|
||||
#product .availlability .name {
|
||||
font-weight: bold;
|
||||
color: #6ac5bb;
|
||||
}
|
||||
#product .availlability i {
|
||||
font-size: 25px;
|
||||
padding-right: 10px;
|
||||
position: relative;
|
||||
top: 5px;
|
||||
}
|
||||
#product #buy_block .box-cart-bottom {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.payment_logo{ text-align: center; }
|
||||
|
||||
@ -3002,8 +3090,15 @@ main#categorycms { margin-bottom: 30px }
|
||||
|
||||
|
||||
@media (max-width: 1199px) {
|
||||
#quantity_wanted_p label { float: left; width: 100%; }
|
||||
/*#product .pictos .picto { text-align: center;}*/
|
||||
#product #main-info .pictos .picto .img { }
|
||||
#product #main-info .pictos .picto div { max-width: 50%;}
|
||||
#product main .title1 h1 { width: 100%; margin-bottom: 0; max-width: none; float: none; }
|
||||
#product main .title1 .social_share { margin: 15px 0; }
|
||||
#quantity_wanted_p label { float: left; }
|
||||
#buy_block .add_to_cart_button{ font-size: 17px; }
|
||||
#product main .title1 h1 { width: 100%; }
|
||||
#product main .title1 .social_share { float:none;}
|
||||
}
|
||||
@media (max-width: 991px) {
|
||||
#quantity_wanted_p label { float: none; width: auto; }
|
||||
@ -3056,7 +3151,14 @@ main#categorycms { margin-bottom: 30px }
|
||||
width: 290px;
|
||||
}
|
||||
}
|
||||
@media (max-width: 500px){
|
||||
#product main .title1 h1 { font-size: 22px;}
|
||||
#product #main-info .pictos .picto:nth-child(odd) { padding-right: 15px; }
|
||||
#product #main-info .pictos .picto:nth-child(even) { padding-left: 15px; }
|
||||
#product #main-info .pictos .picto .img { width: 100px; text-align: center; }
|
||||
#buy_block { padding-right: 15px; padding-left: 15px; }
|
||||
|
||||
}
|
||||
/*************************************************************************************************************
|
||||
*************************************** POPUP PANIER *****************************************
|
||||
**************************************************************************************************************/
|
||||
@ -3282,26 +3384,65 @@ main#categorycms { margin-bottom: 30px }
|
||||
@media(max-width: 991px) {
|
||||
#order_step li div { text-align: center }
|
||||
}
|
||||
#shopping-cart {
|
||||
padding: 20px 15px;
|
||||
@media(min-width: 991px) {
|
||||
#shopping-cart .header .cart_navigation .btn-cart, #shopping-cart .header .cart_navigation .btn-cancel {
|
||||
background-color: transparent;
|
||||
color: #333;
|
||||
border: 1px solid #333;
|
||||
}
|
||||
#shopping-cart .header .btn.btn-cancel:hover, #shopping-cart .header .cart_navigation .btn-cart:hover {
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
#shopping-cart {
|
||||
padding: 0px 15px 20px 15px;
|
||||
}
|
||||
#shopping-cart .header .cart_navigation {
|
||||
font-size: 16px;
|
||||
margin-top: 0;
|
||||
}
|
||||
#shopping-cart .header .btn.btn-cancel, #shopping-cart .header .cart_navigation .btn-cart {
|
||||
border-color: #333;
|
||||
}
|
||||
|
||||
@media(max-width: 991px) {
|
||||
#shopping-cart .header .cart_navigation .btn-cart {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
#shopping-cart .header .btn.btn-cancel {
|
||||
background-color: #6ac5bb;
|
||||
color: #fff;
|
||||
border-color: #6ac5bb;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#shopping-cart .table-div .table-head {
|
||||
background-color: #f1f1f1;
|
||||
font-family: 'pt_sansbold';
|
||||
color: #4d4d4d;
|
||||
}
|
||||
|
||||
#shopping-cart #shopping-cart-products .image {
|
||||
border-right: 1px solid #dfdfdf;
|
||||
overflow: hidden;
|
||||
padding: 15px;
|
||||
text-align: center;
|
||||
}
|
||||
#shopping-cart #shopping-cart-products .image img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-height: 70px;
|
||||
}
|
||||
#shopping-cart #shopping-cart-products .product-infos {
|
||||
padding-left: 20px;
|
||||
}
|
||||
#shopping-cart #shopping-cart-products .product-name {
|
||||
color: #666;
|
||||
color: #333;
|
||||
display: block;
|
||||
font-family: 'pt_sansbold';
|
||||
font-size: 16px;
|
||||
font-size: 15px;
|
||||
min-height: 45px;
|
||||
}
|
||||
#shopping-cart #shopping-cart-products .product-attributes {
|
||||
color: #999;
|
||||
@ -3317,11 +3458,12 @@ main#categorycms { margin-bottom: 30px }
|
||||
background-position: -34px -36px;
|
||||
}
|
||||
#shopping-cart .delete a i { color: #ccc; font-size: 16px;}
|
||||
|
||||
#shopping-cart #shopping-cart-products .price {
|
||||
color: #4d4d4d;
|
||||
font-family: 'Vidaloka';
|
||||
letter-spacing: -1px;
|
||||
font-size: 32px;
|
||||
font-size: 25px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
#shopping-cart #shopping-cart-products .old-price {
|
||||
@ -3376,7 +3518,7 @@ main#categorycms { margin-bottom: 30px }
|
||||
color: #e4535d;
|
||||
font-family: 'Vidaloka';
|
||||
letter-spacing: -1px;
|
||||
font-size: 32px;
|
||||
font-size: 24px;
|
||||
text-align: right;
|
||||
}
|
||||
#shopping-cart #calcul {
|
||||
@ -3384,24 +3526,25 @@ main#categorycms { margin-bottom: 30px }
|
||||
}
|
||||
#shopping-cart #calcul .border {
|
||||
border: 1px solid #dfdfdf;
|
||||
border-radius: 3px;
|
||||
padding: 30px;
|
||||
border-radius: 3px 3px 0 0;
|
||||
padding: 20px;
|
||||
overflow: auto;
|
||||
}
|
||||
#shopping-cart #calcul .discount_form {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#shopping-cart #calcul .discount_form span.voucher_name { cursor: pointer;}
|
||||
#shopping-cart #calcul .discount_form span.voucher_name:hover { color: #6ac5bb; font-weight: bold; }
|
||||
#shopping-cart #calcul .discount_form .form-group {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#shopping-cart #calcul .discount_form .form-group .inner {
|
||||
position: relative;
|
||||
}
|
||||
#shopping-cart #calcul .discount_form label {
|
||||
color: #4d4d4d;
|
||||
font-family: 'pt_sansbold';
|
||||
font-size: 20px;
|
||||
font-size: 16px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
#shopping-cart #calcul .discount_form .discount_name {
|
||||
@ -3414,59 +3557,113 @@ main#categorycms { margin-bottom: 30px }
|
||||
width: 100%;
|
||||
}
|
||||
#shopping-cart #calcul .discount_form .btn {
|
||||
background: #4d4d4d;
|
||||
background:transparent;
|
||||
border: 1px solid #4d4d4d;
|
||||
color: #4d4d4d;
|
||||
border-radius: 0 2px 2px 0;
|
||||
font-family: 'pompiere_regular';
|
||||
font-size: 20px;
|
||||
font-size: 16px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
padding: 0;
|
||||
padding: 0 10px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
top: 0;
|
||||
width: 65px;
|
||||
width: 30%;
|
||||
}
|
||||
#shopping-cart #calcul .discount_form .btn:hover {
|
||||
background: #4d4d4d;
|
||||
color: #fff;
|
||||
border-color: #4d4d4d;
|
||||
}
|
||||
#shopping-cart .discount_display {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
margin-top: 15px;
|
||||
}
|
||||
#shopping-cart .discount_display > *{
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
#shopping-cart .discount_display > .title-offers u{
|
||||
text-decoration: none;
|
||||
font-family: 'pt_sansbold';
|
||||
}
|
||||
#shopping-cart #calcul .line {
|
||||
border-top: 1px solid #e5e5e5;
|
||||
color: #333;
|
||||
clear: both;
|
||||
font-family: 'pt_sans';
|
||||
font-size: 18px;
|
||||
overflow: hidden;
|
||||
padding: 10px 0;
|
||||
border-bottom: #e5e5e5 1px solid;
|
||||
}
|
||||
#shopping-cart #calcul .line:nth-child(2) {
|
||||
border-bottom: 0;
|
||||
}
|
||||
#shopping-cart #calcul .line.last-line {
|
||||
background-color: #f1f1f1;
|
||||
border: 0;
|
||||
padding-top: 22px;
|
||||
}
|
||||
#shopping-cart #calcul .line:first-child { border: 0 }
|
||||
#shopping-cart #calcul .line > div:first-child {
|
||||
padding: 7px 0 0 0;
|
||||
font-family: 'pt_sansbold';
|
||||
color: #4d4d4d;
|
||||
font-size: 16px;
|
||||
padding: 7px 0 0 90px;
|
||||
}
|
||||
#shopping-cart #calcul .line > div:last-child {
|
||||
font-family: 'Vidaloka';
|
||||
letter-spacing: -1px;
|
||||
font-size: 20px;
|
||||
padding-right: 111px;
|
||||
padding-right: 50px;
|
||||
text-align: right;
|
||||
}
|
||||
#shopping-cart #calcul .line.shipping-politic {
|
||||
#shopping-cart .blocPromo {
|
||||
margin-top: 20px;
|
||||
}
|
||||
#shopping-cart #calcul .shipping-politic {
|
||||
border: 1px solid #dfdfdf;
|
||||
border-radius: 3px;
|
||||
margin-bottom: -1px;
|
||||
border-radius: 0 0 3px 3px;
|
||||
margin-top: -1px;
|
||||
padding: 15px;
|
||||
background: #f1f1f1;
|
||||
font-size: 15px;
|
||||
font-family: 'pt_sans';
|
||||
}
|
||||
|
||||
#shopping-cart #calcul .shipping-politic .titre {
|
||||
color: #4d4d4d;
|
||||
font-family: 'pt_sansbold';
|
||||
font-size: 16px;
|
||||
margin-bottom: 10px;
|
||||
display: block;
|
||||
}
|
||||
#shopping-cart #calcul .shipping-politic p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
#shopping-cart .reminderFreeShipping {
|
||||
display: block;
|
||||
color: #e4535d;
|
||||
font-family: 'Vidaloka';
|
||||
font-family: 'pt_sans';
|
||||
margin-bottom: 10px;
|
||||
padding-bottom: 15px;
|
||||
position: relative;
|
||||
top: -12px;
|
||||
border-bottom: 1px solid #E5E5E5;
|
||||
font-style: italic;
|
||||
font-size: 15px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
background-color: #ebf7f6;
|
||||
padding: 15px;
|
||||
color: #333333;
|
||||
margin-top: 15px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
#shopping-cart .reminderFreeShipping .price {
|
||||
color: #e4535d;
|
||||
font-family: 'pt_sansbold';
|
||||
}
|
||||
#shopping-cart .reminderFreeShipping .icon-gift { color: #6ac5bb; padding-right: 50px; font-size: 22px; padding-right: 15px; }
|
||||
|
||||
#shopping-cart #calcul .line.shipping-politic > div:last-child {
|
||||
font-family: 'pt_sans';
|
||||
font-size: 16px;
|
||||
@ -3476,17 +3673,18 @@ main#categorycms { margin-bottom: 30px }
|
||||
font-family: 'Vidaloka';
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
|
||||
#shopping-cart #calcul .line #total_tax {
|
||||
font-family: 'Vidaloka';
|
||||
letter-spacing: -1px;
|
||||
font-size: 20px;
|
||||
}
|
||||
#shopping-cart #calcul .line > div.label-total-price {
|
||||
padding: 10px 0 0 0;
|
||||
|
||||
}
|
||||
#shopping-cart #calcul #total_price {
|
||||
color: #e4535d;
|
||||
font-size: 32px;
|
||||
font-size: 36px;
|
||||
}
|
||||
.cart_navigation {
|
||||
margin: 20px 0 0 0;
|
||||
@ -3498,27 +3696,51 @@ main#categorycms { margin-bottom: 30px }
|
||||
.cart_navigation .btn-cancel {
|
||||
float: left;
|
||||
}
|
||||
|
||||
#shopping-cart .footer .cart_navigation .inner {
|
||||
background-color: #f1f1f1;
|
||||
padding: 20px;
|
||||
font-family: 'pt_sansbold';
|
||||
}
|
||||
#shopping-cart .footer .cart_navigation .btn-cart, #shopping-cart .footer .cart_navigation .btn-cancel {
|
||||
font-size: 24px;
|
||||
}
|
||||
#shopping-cart .footer .cart_navigation > div:first-child .inner p { margin-bottom: 0; }
|
||||
#shopping-cart .footer .cart_navigation .btn-cancel { width: auto; float: right; background-color: #6ac5bb; color: #fff; margin: 0; }
|
||||
#shopping-cart .footer .cart_navigation .btn-cart { width: 100%; padding-bottom: 35px; }
|
||||
#shopping-cart .footer .cart_navigation .btn-cancel:hover { background-color: #e4535d; border-color: #e4535d; }
|
||||
|
||||
#shopping-cart #calcul.table-row { margin: 10px -15px 0 -15px; }
|
||||
|
||||
|
||||
|
||||
|
||||
@media (min-width: 1399px) {
|
||||
#shopping-cart .table-head .text-right, #shopping-cart #shopping-cart-products .total {
|
||||
padding-right: 50px;
|
||||
}
|
||||
}
|
||||
@media (max-width: 1199px) {
|
||||
#shopping-cart .footer .cart_navigation .btn-cart, #shopping-cart .footer .cart_navigation .btn-cancel { font-size: 20px; }
|
||||
#shopping-cart #shopping-cart-products .extension .image .custom-checkbox { margin: 24px 0 0 5px; }
|
||||
#shopping-cart #shopping-cart-products .extension .image .custom-checkbox:after { margin-right: 0 }
|
||||
}
|
||||
@media (max-width: 991px) {
|
||||
#shopping-cart #shopping-cart-products .table-row { padding: 15px 0 }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle .image { border: 0; margin-left: 0; position: absolute; left: 15px; z-index: 1; width: 25% }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle .image > a { display: block; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle .image img { margin: 0; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div { margin-left: 30%; width: 70%; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div.total { text-align: right; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div.form-group.qty { z-index: 2; padding-top: 10px; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div { margin-left: 35%; width: 65%; position: static; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div.form-group.qty { margin-left: 0; width: 35%; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div.total { padding-top: 20px; text-align: left; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div.form-group.qty { z-index: 2; padding-top: 57px; padding-left: 9%; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div.form-group.qty strong { float: left; margin-top: 4px; margin-right: 10px; }
|
||||
|
||||
#shopping-cart #shopping-cart-products .product-infos { padding-left: 15px }
|
||||
#shopping-cart #shopping-cart-products .price { line-height: 22px }
|
||||
#shopping-cart #shopping-cart-products .taxes { overflow: hidden; position: static; }
|
||||
#shopping-cart #shopping-cart-products .taxes li { font-size: 12px }
|
||||
#shopping-cart .delete { bottom: 25px; right: 25px; position: absolute; }
|
||||
#shopping-cart .delete { bottom: 15px; right: 25px; position: absolute; }
|
||||
#shopping-cart #shopping-cart-products .total { padding-left: 15px }
|
||||
#shopping-cart #shopping-cart-products .product-attributes { margin: 0; }
|
||||
#shopping-cart #shopping-cart-products .total { margin-top: -40px; text-align: right }
|
||||
@ -3526,43 +3748,56 @@ main#categorycms { margin-bottom: 30px }
|
||||
.table-div .table-row strong { color: #e4535d; display: block; font-family: 'pt_sansbold'; font-weight: normal; margin: 10px 0 0 0 }
|
||||
#shopping-cart #shopping-cart-products .total > strong { font-size: 16px; }
|
||||
#shopping-cart #shopping-cart-products .total strong { display: inline; }
|
||||
#shopping-cart #calcul .discount_form .form-group { margin-top: 30px; width: 100%; }
|
||||
#shopping-cart #calcul .line > div:last-child{ padding-right: 0;}
|
||||
#shopping-cart #calcul .discount_form .form-group { margin-top: 0px; margin-bottom: 0; width: 100%; }
|
||||
#shopping-cart #calcul .line > div:last-child{ padding-right: 15px; }
|
||||
#shopping-cart #calcul .line > div:first-child { padding-left: 15px; }
|
||||
#order #reassurance_home_store { height: auto; }
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
#shopping-cart #shopping-cart-products .table-head > div { font-size: 18px; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div.form-group.qty { padding-left: 5%; }
|
||||
#order_step { margin-top: 20px;}
|
||||
#shopping-cart .footer .cart_navigation .btn-cancel { width: 100%;}
|
||||
#shopping-cart .footer .cart_navigation > div:first-child .inner { padding: 15px; text-align: center; font-weight: normal; }
|
||||
#shopping-cart .footer .cart_navigation > div:first-child .inner p { margin-bottom: 15px; font-family: 'pt_sans'; }
|
||||
#shopping-cart .footer .cart_navigation > div:nth-child(2) .inner { padding: 0px 15px 20px 15px; }
|
||||
#shopping-cart .footer .cart_navigation .inner { padding: 15px 15px 0px 15px; }
|
||||
#shopping-cart #shopping-cart-products .table-head > div { font-size: 16px; }
|
||||
|
||||
#shopping-cart #shopping-cart-products .table-row .image { padding: 0; }
|
||||
#shopping-cart #shopping-cart-products .product-name { padding-right: 15px }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > .qty { margin-left: 0; width: 100%; }
|
||||
|
||||
#shopping-cart .delete { bottom: auto; left: auto; right: 15px; top: 0px }
|
||||
#shopping-cart .delete { bottom: 15px; left: auto; right: 15px; top: auto; }
|
||||
#shopping-cart .delete a i { font-size: 20px; }
|
||||
#shopping-cart #calcul #total_price { font-size: 24px }
|
||||
#shopping-cart #calcul .line > div:last-child { padding-right: 0; }
|
||||
#shopping-cart #calcul .line > div.label-total-price { padding: 7px 0 0 }
|
||||
#shopping-cart #calcul .border { margin: 0 }
|
||||
#shopping-cart #shopping-cart-products .taxes li { line-height: 16px; }
|
||||
#shopping-cart #shopping-cart-products .price { padding-right: 0; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div.form-group.qty { width: 40%; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div.form-group.qty { width: 35%; padding-right: 0; }
|
||||
#shopping-cart #shopping-cart-products .qty .cart_quantity_button { display: inline-block; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div.total { margin: 25px 0 0 0; width: 60%;}
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div.total { margin: 0px 0 0 0; width: 60%; text-align: left; padding-left: 0; }
|
||||
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div.form-group.qty strong { float: none; margin: 0;}
|
||||
#shopping-cart #calcul #total_price { font-family: 'pt_sans' }
|
||||
#shopping-cart #calcul #total_price { font-size: 36px; }
|
||||
#shopping-cart #calcul .line #total_tax { font-size: 22px; }
|
||||
|
||||
}
|
||||
@media (max-width: 500px) {
|
||||
#shopping-cart .reminderFreeShipping > span { max-width: 80%;}
|
||||
#shopping-cart .reminderFreeShipping > span, #shopping-cart .reminderFreeShipping .icon-gift { display: block; float: left; }
|
||||
#shopping-cart .reminderFreeShipping .icon-gift { width: 20%; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div.total { padding-left: 15px; }
|
||||
#shopping-cart #shopping-cart-products .table-row.valign-middle > div.form-group.qty { padding-top: 35px;}
|
||||
#shopping-cart #shopping-cart-products .total { margin-top: 0; text-align: left }
|
||||
#shopping-cart #calcul .line > div:first-child { padding: 0; }
|
||||
#shopping-cart #calcul .line > div:first-child, #shopping-cart #calcul .line > div:last-child { display: inline; font-size: 14px; }
|
||||
#shopping-cart #calcul .line #total_tax { font-size: 14px }
|
||||
#shopping-cart #calcul .line > div:first-child { font-family: 'pt_sans' }
|
||||
#shopping-cart #calcul .line > div:first-child, #shopping-cart #calcul .line > div:last-child { display: inline; line-height: 19px; font-size: 18px; }
|
||||
#shopping-cart #calcul .line > div:first-child { font-size: 14px; }
|
||||
#shopping-cart #calcul .line #total_tax { font-size: 22px }
|
||||
#shopping-cart #shopping-cart-products .taxes li { border: 0; float: none; padding-left: 0; }
|
||||
|
||||
#shopping-cart #calcul .discount_form .form-group { margin: 20px 0 30px 0; }
|
||||
#shopping-cart #calcul .discount_form .form-group { margin: 0; margin-bottom: 5px; }
|
||||
.cart_navigation .btn-next, .cart_navigation .btn-cancel { margin-bottom: 20px; width: 100%; }
|
||||
.cart_navigation .btn-cart { margin-bottom: 15px; width: 100% }
|
||||
#shopping-cart #calcul .line > div.label-total-price { padding-top: 0; padding-bottom: 7px; }
|
||||
#shopping-cart .footer .cart_navigation .btn-cart { margin-bottom: 0; }
|
||||
}
|
||||
|
||||
#order #message { background: #f9f9f9; border: 1px solid #dfdfdf }
|
||||
@ -4566,15 +4801,18 @@ body .addresses {
|
||||
.container.odrs .submit,
|
||||
#footer > .container,
|
||||
#footer #reinsurance > div,
|
||||
cta-product .share
|
||||
.cta-product .share, #header .account_box,
|
||||
#product .links
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
#product main .title1 { border:0; padding-top: 60px;}
|
||||
|
||||
header.page-heading h1.justif,
|
||||
.account .table-div .table-row > div:last-child {
|
||||
display: block;
|
||||
}
|
||||
|
||||
#header { border-top: 100px solid #0e0e0e; height: 0; }
|
||||
#header #header_logo { margin: -90px 0 50px 0; float: none;}
|
||||
header.page-heading { border-top: 80px solid #b4293c; height: 0; padding: 0 }
|
||||
@ -4588,6 +4826,10 @@ body .addresses {
|
||||
a:link, a:visited {background: transparent; color:#333; text-decoration:none;}
|
||||
a:link[href^="http://"]:after, a[href^="http://"]:visited:after {content: " (" attr(href) ") "; font-size: 11px; visibility: hidden;}
|
||||
a[href^="http://"] {color:#000;}
|
||||
header #header_logo { text-align: center;}
|
||||
#product #header { width: 100%; background-color: #000; height: 120px;}
|
||||
#product .block-left .inner { width: 400px; margin: auto; margin-top: 30px; }
|
||||
#product main .title1 .social_share { display: none; }
|
||||
}
|
||||
|
||||
|
||||
|
@ -290,7 +290,9 @@ span.title {
|
||||
.icon-menu:before {
|
||||
content: "\e903";
|
||||
}
|
||||
|
||||
.icon-gift:before {
|
||||
content: "\e906";
|
||||
}
|
||||
|
||||
|
||||
/* BOUTONS */
|
||||
|
35
themes/toutpratique/modules/advpicto/views/index.php
Normal file
35
themes/toutpratique/modules/advpicto/views/index.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2015 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2015 PrestaShop SA
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
|
||||
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
|
||||
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
header('Pragma: no-cache');
|
||||
|
||||
header('Location: ../');
|
||||
exit;
|
@ -0,0 +1,16 @@
|
||||
{if $pictos}
|
||||
<div class="pictos">
|
||||
<div class="row">
|
||||
{foreach from=$pictos item=picto name=picto}
|
||||
<div class="picto col-xs-6 col-xxs-12 valign-middle">
|
||||
{if $picto.hasImg}
|
||||
<div class="img">
|
||||
<img src="{$base_dir}img/picto/{$picto.id_advpicto}.jpg" alt="{$picto.title}" />
|
||||
</div>
|
||||
{/if}
|
||||
<div>{$picto.title}</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2015 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2015 PrestaShop SA
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
|
||||
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
|
||||
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
header('Pragma: no-cache');
|
||||
|
||||
header('Location: ../');
|
||||
exit;
|
@ -1,5 +1,13 @@
|
||||
<main>
|
||||
{include file="$tpl_dir./errors.tpl"}
|
||||
|
||||
{if $product->weight < 0.5}
|
||||
{assign var='calculShipping' value='3'}
|
||||
{else}
|
||||
{assign var='calculShipping' value='6'}
|
||||
{/if}
|
||||
|
||||
|
||||
{if $errors|@count == 0}
|
||||
{if !isset($allow_oosp)}
|
||||
{assign var=allow_oosp value=0}
|
||||
@ -25,7 +33,45 @@
|
||||
</div>
|
||||
{/if}
|
||||
<div class="container">
|
||||
<div class="title1 clearfix">
|
||||
|
||||
<h1 itemprop="name">{$product->name|escape:'html':'UTF-8'}</h1>
|
||||
|
||||
<div class="social_share">
|
||||
<div class="facebook">
|
||||
<div id="fb-root"></div>
|
||||
<script async>(function(d, s, id) {
|
||||
var js, fjs = d.getElementsByTagName(s)[0];
|
||||
if (d.getElementById(id)) return;
|
||||
js = d.createElement(s); js.id = id;
|
||||
js.src = "//connect.facebook.net/fr_FR/sdk.js#xfbml=1&version=v2.4";
|
||||
fjs.parentNode.insertBefore(js, fjs);
|
||||
}(document, 'script', 'facebook-jssdk'));</script>
|
||||
|
||||
<div class="fb-like" data-layout="button_count" data-colorscheme="light"></div>
|
||||
</div>
|
||||
<div class="twitter">
|
||||
<script>window.twttr = (function(d, s, id) {
|
||||
var js, fjs = d.getElementsByTagName(s)[0],
|
||||
t = window.twttr || {};
|
||||
if (d.getElementById(id)) return t;
|
||||
js = d.createElement(s);
|
||||
js.id = id;
|
||||
js.src = "https://platform.twitter.com/widgets.js";
|
||||
fjs.parentNode.insertBefore(js, fjs);
|
||||
|
||||
t._e = [];
|
||||
t.ready = function(f) {
|
||||
t._e.push(f);
|
||||
};
|
||||
|
||||
return t;
|
||||
}(document, "script", "twitter-wjs"));</script>
|
||||
<a id="twitter-wjs" class="twitter-share-button">Tweet</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</header>
|
||||
{if isset($confirmation) && $confirmation}
|
||||
@ -116,21 +162,20 @@
|
||||
<a href="#description" class="readmore">{l s='Lire la suite'}</a>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="links">
|
||||
<span class="print">
|
||||
<a href="javascript:print();">{l s='Imprimer'}</a>
|
||||
</span>
|
||||
<span class="send_to_a_friend">
|
||||
{hook h='productSend'}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
{hook h='displayPictogrammesProduct' id_product=$product->id}
|
||||
<div class="netReViewsWrap">
|
||||
{$HOOK_EXTRA_RIGHT}
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<div class="col-md-5 block-left">
|
||||
<div class="inner">
|
||||
|
||||
|
||||
{if $product_manufacturer->active}
|
||||
<div class="logo_manufacturer">
|
||||
<a href="{$link->getManufacturerLink($product_manufacturer)}">
|
||||
@ -157,7 +202,8 @@
|
||||
{if $product->show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE}
|
||||
<!-- prices -->
|
||||
<div>
|
||||
<p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer">{strip}
|
||||
<p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
|
||||
{strip}
|
||||
{if $product->quantity > 0}<link itemprop="availability" href="http://schema.org/InStock"/>{/if}
|
||||
{if $priceDisplay >= 0 && $priceDisplay <= 2}
|
||||
<span id="our_price_display" class="price" itemprop="price" content="{$productPrice|number_format:2}">{convertPrice price=$productPrice|floatval}</span>
|
||||
@ -227,14 +273,15 @@
|
||||
<!-- quantity wanted -->
|
||||
{if !$PS_CATALOG_MODE}
|
||||
<p id="quantity_wanted_p"{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}>
|
||||
<label for="quantity_wanted">{l s='Quantity'}</label>
|
||||
|
||||
<input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}{/if}" />
|
||||
<a href="#" data-field-qty="qty" class="btn btn-default button-minus product_quantity_down">
|
||||
<span>-</span>
|
||||
</a>
|
||||
|
||||
<a href="#" data-field-qty="qty" class="btn btn-default button-plus product_quantity_up">
|
||||
<span>+</span>
|
||||
</a>
|
||||
<a href="#" data-field-qty="qty" class="btn btn-default button-minus product_quantity_down">
|
||||
<span>-</span>
|
||||
</a>
|
||||
<span class="clearfix"></span>
|
||||
</p>
|
||||
{/if}
|
||||
@ -302,7 +349,7 @@
|
||||
</button>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="avail">
|
||||
<p class="availlability" id="availability_statut"{if !$PS_STOCK_MANAGEMENT || ($product->quantity <= 0 && !$product->available_later && $allow_oosp) || ($product->quantity > 0 && !$product->available_now) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}>
|
||||
{*<span id="availability_label">{l s='Availability:'}</span>*}
|
||||
<span id="availability_value">{if $product->quantity <= 0}
|
||||
@ -312,11 +359,12 @@
|
||||
{l s='This product is no longer in stock'}
|
||||
{/if}
|
||||
{elseif $PS_STOCK_MANAGEMENT}
|
||||
{l s='En stock'}
|
||||
<i class="icon-logistics3"></i><span class="name">{l s='En stock : '}</span><span>{l s='Expédition sous 48h'}</span>
|
||||
{/if}
|
||||
</span>
|
||||
</p>
|
||||
<p class="availlability">
|
||||
|
||||
{if $product->quantity <= 0}
|
||||
{if $PS_STOCK_MANAGEMENT && $allow_oosp}
|
||||
{$product->available_later}
|
||||
@ -325,82 +373,46 @@
|
||||
{/if}
|
||||
{/if}
|
||||
</p>
|
||||
</div>
|
||||
</div> <!-- end box-cart-bottom -->
|
||||
<div class="shipmentCost">
|
||||
|
||||
<i class="icon-wallet2"></i><span class="name">{l s='Frais de port : '}</span><span>{l s='seulement '} {$calculShipping} €</span>
|
||||
|
||||
</div>
|
||||
</div> <!-- end box-info-product -->
|
||||
</form>
|
||||
|
||||
<div class="payment_logo">
|
||||
<img src="{$img_dir}paiement.png" alt="">
|
||||
</div>
|
||||
</div> <!-- end box-cart-bottom -->
|
||||
</div> <!-- end box-info-product -->
|
||||
</form>
|
||||
{/if}
|
||||
|
||||
<div class="social_share">
|
||||
<div class="facebook">
|
||||
<div id="fb-root"></div>
|
||||
<script async>(function(d, s, id) {
|
||||
var js, fjs = d.getElementsByTagName(s)[0];
|
||||
if (d.getElementById(id)) return;
|
||||
js = d.createElement(s); js.id = id;
|
||||
js.src = "//connect.facebook.net/fr_FR/sdk.js#xfbml=1&version=v2.4";
|
||||
fjs.parentNode.insertBefore(js, fjs);
|
||||
}(document, 'script', 'facebook-jssdk'));</script>
|
||||
|
||||
<div class="fb-like" data-layout="button_count" data-colorscheme="light"></div>
|
||||
</div>
|
||||
<div class="twitter">
|
||||
<script>window.twttr = (function(d, s, id) {
|
||||
var js, fjs = d.getElementsByTagName(s)[0],
|
||||
t = window.twttr || {};
|
||||
if (d.getElementById(id)) return t;
|
||||
js = d.createElement(s);
|
||||
js.id = id;
|
||||
js.src = "https://platform.twitter.com/widgets.js";
|
||||
fjs.parentNode.insertBefore(js, fjs);
|
||||
|
||||
t._e = [];
|
||||
t.ready = function(f) {
|
||||
t._e.push(f);
|
||||
};
|
||||
|
||||
return t;
|
||||
}(document, "script", "twitter-wjs"));</script>
|
||||
<a id="twitter-wjs" class="twitter-share-button">Tweet</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="links">
|
||||
<span class="print">
|
||||
<a href="javascript:print();">{l s='Imprimer'}</a>
|
||||
</span>
|
||||
<span class="send_to_a_friend">
|
||||
{hook h='productSend'}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div id="reassurance_home_product">
|
||||
<div class="row">
|
||||
<div class="col-sm-3 col-xs-6 bloc bloc1">
|
||||
<span class="icon icon-wallet2"></span>
|
||||
<span class="blue">{l s='Frais de port gratuit'}</span>
|
||||
{l s='à partir de 60€'}
|
||||
</div>
|
||||
<div class="col-sm-3 col-xs-6 bloc bloc2">
|
||||
<span class="icon icon-logistics3"></span>
|
||||
<span class="blue">{l s='Livraison express'}</span>
|
||||
{l s='en 24h via Chronopost'}
|
||||
</div>
|
||||
<div class="col-sm-3 col-xs-6 bloc bloc3">
|
||||
<span class="icon icon-lock39"></span>
|
||||
<span class="blue">{l s='Paiement sécurisé'}</span>
|
||||
{l s='via CB et Paypal'}
|
||||
</div>
|
||||
<div class="col-sm-3 col-xs-6 bloc bloc4">
|
||||
<span class="icon icon-coins30"></span>
|
||||
<span class="blue">{l s='Satisfait ou remboursé'}</span>
|
||||
{l s='via CB et Paypal'}
|
||||
</div>
|
||||
</div>
|
||||
<div id="reassurance" >
|
||||
{hook h="displayReassurance"}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Infos -->
|
||||
{if !$content_only}
|
||||
<section class="container">
|
||||
|
@ -4,8 +4,8 @@
|
||||
<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{$product.name|escape:'html':'UTF-8'}" />
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-3 product-infos">
|
||||
<strong>{l s='Product'} : </strong>
|
||||
<div class="col-md-4 product-infos">
|
||||
{*<strong>{l s='Product'} : </strong>*}
|
||||
<a class="product-name" href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category, null, null, $product.id_shop, $product.id_product_attribute)|escape:'html':'UTF-8'}">
|
||||
{$product.name|escape:'html':'UTF-8'}
|
||||
</a>
|
||||
@ -24,8 +24,8 @@
|
||||
<!-- {/if} -->
|
||||
</div>
|
||||
|
||||
<div id="product_price_{$product.id_product}_{$product.id_product_attribute}{if $quantityDisplayed > 0}_nocustom{/if}_{$product.id_address_delivery|intval}{if !empty($product.gift)}_gift{/if}" class="col-md-2">
|
||||
<strong>{l s='Unit price'} : </strong>
|
||||
<div id="product_price_{$product.id_product}_{$product.id_product_attribute}{if $quantityDisplayed > 0}_nocustom{/if}_{$product.id_address_delivery|intval}{if !empty($product.gift)}_gift{/if}" class="col-md-2 hidden-sm hidden-xs hidden-xxs">
|
||||
{*<strong>{l s='Unit price'} : </strong>*}
|
||||
{if !$priceDisplay}
|
||||
<span class="price">{convertPrice price=$product.price_wt}</span>
|
||||
{else}
|
||||
@ -45,7 +45,7 @@
|
||||
{/if}
|
||||
</div>
|
||||
<div class="col-md-2 form-group qty">
|
||||
<strong>{l s='Quantity'} : </strong>
|
||||
{*<strong>{l s='Quantity'} : </strong>*}
|
||||
{if isset($cannotModify) AND $cannotModify == 1}
|
||||
<span>
|
||||
{if $quantityDisplayed == 0 AND isset($customizedDatas.$productId.$productAttributeId)}
|
||||
@ -83,7 +83,7 @@
|
||||
</div>
|
||||
|
||||
<div id="total_product_price_{$product.id_product}_{$product.id_product_attribute}{if $quantityDisplayed > 0}_nocustom{/if}_{$product.id_address_delivery|intval}{if !empty($product.gift)}_gift{/if}" class="col-md-2 total">
|
||||
<strong>{l s='Price'} : </strong>
|
||||
{*<strong>{l s='Price'} : </strong>*}
|
||||
{if !empty($product.gift)}
|
||||
<span class="gift-icon">{l s='Gift!'}</span>
|
||||
{else}
|
||||
@ -109,7 +109,7 @@
|
||||
<span>{$product.name|strip}</span>
|
||||
</div>
|
||||
<div id="total_product_price_{$product.id_product}_{$product.id_product_attribute}{if $quantityDisplayed > 0}_nocustom{/if}_{$product.id_address_delivery|intval}{if !empty($product.gift)}_gift{/if}" class="col-md-2 total">
|
||||
<strong>{l s='Price'} : </strong>
|
||||
{*<strong>{l s='Price'} : </strong>*}
|
||||
{if $quantityDisplayed == 0 AND isset($customizedDatas.$productId.$productAttributeId)}
|
||||
{if !$priceDisplay}{displayPrice price=$product.total_customization_wt}{else}{displayPrice price=$product.total_customization}{/if}
|
||||
{else}
|
||||
|
@ -10,12 +10,25 @@
|
||||
</div>
|
||||
{include file="$tpl_dir./order-steps.tpl" current_step="summary"}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{include file="$tpl_dir./errors.tpl"}
|
||||
|
||||
<div id="shopping-cart" class="container">
|
||||
<div class="header">
|
||||
<p class="cart_navigation">
|
||||
<a href="{$link->getPageLink('homestore')}" class="continue btn btn-cancel" title="{l s='Continue shopping'}">
|
||||
{l s='Continue shopping'}
|
||||
</a>
|
||||
{if !$opc}
|
||||
<a href="{if $back}{$link->getPageLink('order', true, NULL, 'step=1&back={$back}')|escape:'html':'UTF-8'}{else}{$link->getPageLink('order', true, NULL, 'step=1')|escape:'html':'UTF-8'}{/if}" class="btn btn-cart standard-checkout button-medium" title="{l s='Proceed to checkout'}">
|
||||
<i class="icon icon-shopping-cart"></i><span>{l s='Proceed to checkout'}</span>
|
||||
</a>
|
||||
{/if}
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<!-- Panier vide -->
|
||||
{if isset($empty)}
|
||||
<p class="alert alert-warning">{l s='Your shopping cart is empty.'}</p>
|
||||
@ -33,11 +46,11 @@
|
||||
<div id="shopping-cart-products" class="table-div cart">
|
||||
|
||||
<div class="table-head clearfix">
|
||||
<div class="col-md-5 hidden-sm hidden-xs">{l s='Product'}</div>
|
||||
<div class="col-md-6 hidden-sm hidden-xs">{l s='Product'}</div>
|
||||
<div class="col-md-2 hidden-sm hidden-xs">{l s='Unit price'}</div>
|
||||
<div class="col-md-2 hidden-sm hidden-xs">{l s='Qty'}</div>
|
||||
<div class="col-md-2 hidden-sm hidden-xs text-right">{l s='Total'}</div>
|
||||
<div class="col-sm-12 col-xs-12 hidden-lg hidden-md">{l s='Orders details'}</div>
|
||||
<div class="col-sm-12 col-xs-12 hidden-lg hidden-md">{l s='Produits'}</div>
|
||||
</div>
|
||||
|
||||
<p style="display:none" id="emptyCartWarning" class="alert alert-warning">{l s='Your shopping cart is empty.'}</p>
|
||||
@ -86,52 +99,14 @@
|
||||
</div>
|
||||
|
||||
<div id="calcul" class="table-row row">
|
||||
{if $use_taxes}
|
||||
{if $voucherAllowed}
|
||||
{if !sizeof($discounts)}
|
||||
<div class="col-md-4 discount_form">
|
||||
<div class="border ">
|
||||
{if isset($errors_discount) && $errors_discount}
|
||||
<div class="col-lg-12">
|
||||
<ul class="alert alert-danger">
|
||||
{foreach $errors_discount as $k=>$error}
|
||||
<li>{$error|escape:'html':'UTF-8'}</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
<form action="{$link->getPageLink('order', true)}" method="post" id="voucher" class="form-inline">
|
||||
<div class="form-group">
|
||||
<label>{l s='You have a voucher ?'}</label>
|
||||
<div class="inner">
|
||||
<input type="text" class="discount_name form-control" id="discount_name" name="discount_name" value="{if isset($discount_name) && $discount_name}{$discount_name}{/if}" placeholder="{l s='Enter your code'}" />
|
||||
<input type="hidden" name="submitDiscount" />
|
||||
<button type="submit" name="submitAddDiscount" class="btn">{l s='OK'}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{if $displayVouchers}
|
||||
<div class="col-lg-12 col-md-12 discount_form">
|
||||
<p id="title" class="col-lg-12 col-md-12 title-offers"><u>{l s='Take advantage of our exclusive offers:'}</u></p>
|
||||
<div id="display_cart_vouchers" class="col-lg-12 col-md-12 ">
|
||||
{foreach $displayVouchers as $voucher}
|
||||
{if $voucher.code != ''}<span class="voucher_name" data-code="{$voucher.code|escape:'html':'UTF-8'}">{$voucher.code|escape:'html':'UTF-8'}</span> - {/if}{$voucher.name}<br />
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
{/if}
|
||||
<div class="{if sizeof($discounts)}col-md-offset-5{else}col-md-offset-1{/if} col-md-7 prices">
|
||||
|
||||
<div class="col-lg-offset-1 col-md-offset-0 col-lg-7 col-md-7 col-md-push-5 col-lg-push-4 prices">
|
||||
{if sizeof($discounts)}
|
||||
<strong>{l s='Applied discount'} : </strong>
|
||||
<div class="table-row row0 code-promo">
|
||||
|
||||
<div class="table-row row0 code-promo line">
|
||||
{foreach $discounts as $discount}
|
||||
<div class="col-lg-8 col-md-8 pl0">{$discount.name}</div>
|
||||
<div class="col-lg-2 col-md-2 pr0">
|
||||
<div class="col-md-6 col-sm-6 col-xs-6 pl0"> {l s='Applied discount'} : {$discount.name}</div>
|
||||
<div class="col-md-6 col-sm-6 col-xs-6 pr0">
|
||||
<p style="text-align:right" class="price-discount price">{if !$priceDisplay}{displayPrice price=$discount.value_real*-1}{else}{displayPrice price=$discount.value_tax_exc*-1}{/if}
|
||||
<a style="color:#ccc" href="{if $opc}{$link->getPageLink('order-opc', true)}{else}{$link->getPageLink('order', true)}{/if}?deleteDiscount={$discount.id_discount}" class="price_discount_delete" title="{l s='Delete'}">
|
||||
<i class="awesome fa fa-trash-o"></i>
|
||||
@ -163,13 +138,13 @@
|
||||
{if $use_taxes && $total_shipping_tax_exc != $total_shipping}
|
||||
{if $priceDisplay}
|
||||
<div class="line"{if $total_shipping_tax_exc <= 0} style="display:none;"{/if}>
|
||||
<div class="col-md-6 col-sm-6 col-xs-6">{if $display_tax_label}{l s='Total shipping (tax excl.)'}{else}{l s='Total shipping'}{/if}</div>
|
||||
<div class="col-offset-md-1 col-md-5 col-offset-sm-0 col-sm-6 ">{if $display_tax_label}{l s='Total shipping (tax excl.)'}{else}{l s='Total shipping'}{/if}</div>
|
||||
<div class="col-md-6 col-sm-6 col-xs-6">{displayPrice price=$total_shipping_tax_exc}</div>
|
||||
|
||||
</div>
|
||||
{else}
|
||||
<div class="line"{if $total_shipping <= 0} style="display:none;"{/if}>
|
||||
<div class="col-md-6 col-sm-6 col-xs-6">{if $display_tax_label}{l s='Total shipping (tax incl.)'}{else}{l s='Total shipping'}{/if}
|
||||
<div class="col-offset-md-1 col-md-5 col-offset-sm-0 col-sm-6 ">{if $display_tax_label}{l s='Total shipping (tax incl.)'}{else}{l s='Total shipping'}{/if}
|
||||
|
||||
</div>
|
||||
<div class="col-md-6 col-sm-6 col-xs-6">{displayPrice price=$total_shipping}</div>
|
||||
@ -178,18 +153,69 @@
|
||||
|
||||
{else}
|
||||
<div{if $total_shipping_tax_exc <= 0} style="display:none;"{/if}>
|
||||
<div class="col-md-6 col-sm-6 col-xs-6">{l s='Total shipping'}</div>
|
||||
<div class="col-offset-md-1 col-md-5 col-offset-sm-0 col-sm-6 ">{l s='Total shipping'}</div>
|
||||
<div class="col-md-6 col-sm-6 col-xs-6">{displayPrice price=$total_shipping_tax_exc}</div>
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
{if $total_products_wt < 50}
|
||||
<span class="reminderFreeShipping">{l s='Plus que '} {displayPrice price=(50 - $total_products_wt)}{l s='pour bénéficier de la livraison gratuite'} !</span>
|
||||
<span class="reminderFreeShipping clearfix">
|
||||
<i class="icon-gift"></i>
|
||||
<span>
|
||||
{l s='Plus que '}<span class="price"> {displayPrice price=(50 - $total_products_wt)} </span>{l s='pour bénéficier de la livraison gratuite'} !</span>
|
||||
</span>
|
||||
{/if}
|
||||
<div class="line shipping-politic">
|
||||
|
||||
|
||||
<div class="line last-line">
|
||||
<div class="label-total-price col-md-6 col-sm-6 col-xs-6">{if $display_tax_label}{l s='Total products (tax incl.)'}{else}{l s='Total products'}{/if}</div>
|
||||
<div id="total_price" class="col-md-6 col-sm-6 col-xs-6">{displayPrice price=$total_price}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4 col-md-5 col-lg-pull-8 col-md-pull-7 blocPromo">
|
||||
{if $use_taxes}
|
||||
{if $voucherAllowed}
|
||||
{if !sizeof($discounts)}
|
||||
<div class="discount_form">
|
||||
<div class="border ">
|
||||
{if isset($errors_discount) && $errors_discount}
|
||||
<div class="col-lg-12">
|
||||
<ul class="alert alert-danger">
|
||||
{foreach $errors_discount as $k=>$error}
|
||||
<li>{$error|escape:'html':'UTF-8'}</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
<form action="{$link->getPageLink('order', true)}" method="post" id="voucher" class="form-inline">
|
||||
<div class="form-group">
|
||||
<label>{l s='You have a voucher ?'}</label>
|
||||
<div class="inner">
|
||||
<input type="text" class="discount_name form-control" id="discount_name" name="discount_name" value="{if isset($discount_name) && $discount_name}{$discount_name}{/if}" placeholder="{l s='Enter your code'}" />
|
||||
<input type="hidden" name="submitDiscount" />
|
||||
<button type="submit" name="submitAddDiscount" class="btn">{l s='Valider'}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{if $displayVouchers}
|
||||
<div class="col-lg-12 col-md-12 discount_display">
|
||||
<p id="title" class="col-lg-12 col-md-12 title-offers"><u>{l s='Take advantage of our exclusive offers:'}</u></p>
|
||||
<div id="display_cart_vouchers" class="col-lg-12 col-md-12 ">
|
||||
{foreach $displayVouchers as $voucher}
|
||||
{if $voucher.code != ''}<span class="voucher_name" data-code="{$voucher.code|escape:'html':'UTF-8'}">{$voucher.code|escape:'html':'UTF-8'}</span> - {/if}{$voucher.name}<br />
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
{/if}
|
||||
<div class="shipping-politic">
|
||||
<div>
|
||||
<span class="bold">{l s='Notre politique transport :'}</span>
|
||||
<span class="titre">{l s='Notre politique transport :'}</span>
|
||||
<p>
|
||||
{l s='Frais de port : 6 € en Colissimo'}<br />
|
||||
{l s='Pour les petits colis de moins de 500 grammes ne payez que 3 € de frais de port'}<br />
|
||||
@ -199,11 +225,6 @@
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="label-total-price col-md-6 col-sm-6 col-xs-6">{if $display_tax_label}{l s='Total products (tax incl.)'}{else}{l s='Total products'}{/if}</div>
|
||||
<div id="total_price" class="col-md-6 col-sm-6 col-xs-6">{displayPrice price=$total_price}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -215,16 +236,32 @@
|
||||
{/if}
|
||||
|
||||
<div class="clearfix"></div>
|
||||
<p class="cart_navigation">
|
||||
<div class="footer row">
|
||||
<div class="cart_navigation">
|
||||
{if !$opc}
|
||||
<a href="{if $back}{$link->getPageLink('order', true, NULL, 'step=1&back={$back}')|escape:'html':'UTF-8'}{else}{$link->getPageLink('order', true, NULL, 'step=1')|escape:'html':'UTF-8'}{/if}" class="btn btn-cart standard-checkout button-medium" title="{l s='Proceed to checkout'}">
|
||||
<i class="icon icon-shopping-cart"></i><span>{l s='Proceed to checkout'}</span>
|
||||
</a>
|
||||
{/if}
|
||||
<div class="col-md-8">
|
||||
<div class="inner">
|
||||
<div class="row">
|
||||
<div class="col-sm-7"><p>{l s='N’hésitez pas à retourner sur notre boutique et à compléter votre panier au besoin. '}</p></div>
|
||||
<div class="col-sm-5">
|
||||
<a href="{$link->getPageLink('homestore')}" class="continue btn btn-cancel" title="{l s='Continue shopping'}">
|
||||
{l s='Continue shopping'}
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="col-md-4">
|
||||
<div class="inner clearfix">
|
||||
|
||||
<a href="{if $back}{$link->getPageLink('order', true, NULL, 'step=1&back={$back}')|escape:'html':'UTF-8'}{else}{$link->getPageLink('order', true, NULL, 'step=1')|escape:'html':'UTF-8'}{/if}" class="btn btn-cart standard-checkout button-medium" title="{l s='Proceed to checkout'}">
|
||||
<i class="icon icon-shopping-cart"></i><span>{l s='Proceed to checkout'}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{strip}
|
||||
{addJsDef currencySign=$currencySign|html_entity_decode:2:"UTF-8"}
|
||||
|
Loading…
x
Reference in New Issue
Block a user