[-] MO : Add ModuleController in ProductComments
// refacto ProductComments
This commit is contained in:
@@ -41,7 +41,6 @@ class ProductComment extends ObjectModel
|
|||||||
/** @var integer Guest's id */
|
/** @var integer Guest's id */
|
||||||
public $id_guest;
|
public $id_guest;
|
||||||
|
|
||||||
|
|
||||||
/** @var integer Customer name */
|
/** @var integer Customer name */
|
||||||
public $customer_name;
|
public $customer_name;
|
||||||
|
|
||||||
@@ -118,22 +117,19 @@ class ProductComment extends ObjectModel
|
|||||||
*
|
*
|
||||||
* @return arrayComments
|
* @return arrayComments
|
||||||
*/
|
*/
|
||||||
public static function getByCustomer($id_product, $id_customer, $last = false, $id_guest = false)
|
public static function getByCustomer($id_product, $id_customer, $get_last = false, $id_guest = false)
|
||||||
{
|
{
|
||||||
$results = Db::getInstance()->executeS('
|
$results = Db::getInstance()->executeS('
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM `'._DB_PREFIX_.'product_comment` pc
|
FROM `'._DB_PREFIX_.'product_comment` pc
|
||||||
WHERE pc.`id_product` = '.(int)$id_product.'
|
WHERE pc.`id_product` = '.(int)$id_product.'
|
||||||
AND '.(!$id_guest ? 'pc.`id_customer` = '.(int)$id_customer : 'pc.`id_guest` = '.(int)$id_guest).'
|
AND '.(!$id_guest ? 'pc.`id_customer` = '.(int)$id_customer : 'pc.`id_guest` = '.(int)$id_guest).'
|
||||||
ORDER BY pc.`date_add` DESC '
|
ORDER BY pc.`date_add` DESC '
|
||||||
.($last ? 'LIMIT 1' : '')
|
.($get_last ? 'LIMIT 1' : '')
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!$results)
|
if ($get_last)
|
||||||
return false;
|
$results = array_shift($results);
|
||||||
elseif ($last)
|
|
||||||
return array_shift($results);
|
|
||||||
else
|
|
||||||
return $results;
|
return $results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ class ProductCommentCriterion extends ObjectModel
|
|||||||
'fields' => array(
|
'fields' => array(
|
||||||
'id_product_comment_criterion_type' => array('type' => self::TYPE_INT),
|
'id_product_comment_criterion_type' => array('type' => self::TYPE_INT),
|
||||||
'active' => array('type' => self::TYPE_BOOL),
|
'active' => array('type' => self::TYPE_BOOL),
|
||||||
|
|
||||||
// Lang fields
|
// Lang fields
|
||||||
'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 128),
|
'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 128),
|
||||||
)
|
)
|
||||||
@@ -54,16 +53,23 @@ class ProductCommentCriterion extends ObjectModel
|
|||||||
if (!parent::delete())
|
if (!parent::delete())
|
||||||
return false;
|
return false;
|
||||||
if ($this->id_product_comment_criterion_type == 2)
|
if ($this->id_product_comment_criterion_type == 2)
|
||||||
if (!Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'product_comment_criterion_category
|
{
|
||||||
WHERE id_product_comment_criterion='.(int)$this->id))
|
if (!Db::getInstance()->execute('
|
||||||
|
DELETE FROM '._DB_PREFIX_.'product_comment_criterion_category
|
||||||
|
WHERE id_product_comment_criterion='.(int)$this->id))
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
elseif ($this->id_product_comment_criterion_type == 3)
|
elseif ($this->id_product_comment_criterion_type == 3)
|
||||||
if (!Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'product_comment_criterion_product
|
{
|
||||||
WHERE id_product_comment_criterion='.(int)$this->id))
|
if (!Db::getInstance()->execute('
|
||||||
|
DELETE FROM '._DB_PREFIX_.'product_comment_criterion_product
|
||||||
|
WHERE id_product_comment_criterion='.(int)$this->id))
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'product_comment_grade`
|
return Db::getInstance()->execute('
|
||||||
WHERE `id_product_comment_criterion` = '.(int)$this->id);
|
DELETE FROM `'._DB_PREFIX_.'product_comment_grade`
|
||||||
|
WHERE `id_product_comment_criterion` = '.(int)$this->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update($nullValues = false)
|
public function update($nullValues = false)
|
||||||
@@ -74,11 +80,13 @@ class ProductCommentCriterion extends ObjectModel
|
|||||||
if ($previousUpdate->id_product_comment_criterion_type != $this->id_product_comment_criterion_type)
|
if ($previousUpdate->id_product_comment_criterion_type != $this->id_product_comment_criterion_type)
|
||||||
{
|
{
|
||||||
if ($previousUpdate->id_product_comment_criterion_type == 2)
|
if ($previousUpdate->id_product_comment_criterion_type == 2)
|
||||||
return Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'product_comment_criterion_category
|
return Db::getInstance()->execute('
|
||||||
WHERE id_product_comment_criterion='.(int)$previousUpdate->id);
|
DELETE FROM '._DB_PREFIX_.'product_comment_criterion_category
|
||||||
|
WHERE id_product_comment_criterion = '.(int)$previousUpdate->id);
|
||||||
elseif ($previousUpdate->id_product_comment_criterion_type == 3)
|
elseif ($previousUpdate->id_product_comment_criterion_type == 3)
|
||||||
return Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'product_comment_criterion_product
|
return Db::getInstance()->execute('
|
||||||
WHERE id_product_comment_criterion='.(int)$previousUpdate->id);
|
DELETE FROM '._DB_PREFIX_.'product_comment_criterion_product
|
||||||
|
WHERE id_product_comment_criterion = '.(int)$previousUpdate->id);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -92,8 +100,10 @@ class ProductCommentCriterion extends ObjectModel
|
|||||||
{
|
{
|
||||||
if (!Validate::isUnsignedId($id_product))
|
if (!Validate::isUnsignedId($id_product))
|
||||||
die(Tools::displayError());
|
die(Tools::displayError());
|
||||||
return (Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'product_comment_criterion_product` (`id_product_comment_criterion`, `id_product`)
|
return Db::getInstance()->execute('
|
||||||
VALUES('.(int)$this->id.','.(int)$id_product.')'));
|
INSERT INTO `'._DB_PREFIX_.'product_comment_criterion_product` (`id_product_comment_criterion`, `id_product`)
|
||||||
|
VALUES('.(int)$this->id.','.(int)$id_product.')
|
||||||
|
');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -105,8 +115,10 @@ class ProductCommentCriterion extends ObjectModel
|
|||||||
{
|
{
|
||||||
if (!Validate::isUnsignedId($id_category))
|
if (!Validate::isUnsignedId($id_category))
|
||||||
die(Tools::displayError());
|
die(Tools::displayError());
|
||||||
return (Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'product_comment_criterion_category` (`id_product_comment_criterion`, `id_category`)
|
return Db::getInstance()->execute('
|
||||||
VALUES('.(int)$this->id.','.(int)$id_category.')'));
|
INSERT INTO `'._DB_PREFIX_.'product_comment_criterion_category` (`id_product_comment_criterion`, `id_category`)
|
||||||
|
VALUES('.(int)$this->id.','.(int)$id_category.')
|
||||||
|
');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -120,7 +132,7 @@ class ProductCommentCriterion extends ObjectModel
|
|||||||
die(Tools::displayError());
|
die(Tools::displayError());
|
||||||
if ($grade < 0)
|
if ($grade < 0)
|
||||||
$grade = 0;
|
$grade = 0;
|
||||||
else if ($grade > 10)
|
elseif ($grade > 10)
|
||||||
$grade = 10;
|
$grade = 10;
|
||||||
return (Db::getInstance()->execute('
|
return (Db::getInstance()->execute('
|
||||||
INSERT INTO `'._DB_PREFIX_.'product_comment_grade`
|
INSERT INTO `'._DB_PREFIX_.'product_comment_grade`
|
||||||
@@ -149,14 +161,25 @@ class ProductCommentCriterion extends ObjectModel
|
|||||||
$alias = 'ps';
|
$alias = 'ps';
|
||||||
}
|
}
|
||||||
return Db::getInstance()->executeS('
|
return Db::getInstance()->executeS('
|
||||||
SELECT pcc.`id_product_comment_criterion`, pccl.`name`
|
SELECT pcc.`id_product_comment_criterion`, pccl.`name`
|
||||||
FROM `'._DB_PREFIX_.'product_comment_criterion` pcc
|
FROM `'._DB_PREFIX_.'product_comment_criterion` pcc
|
||||||
LEFT JOIN `'._DB_PREFIX_.'product_comment_criterion_lang` pccl ON (pcc.id_product_comment_criterion = pccl.id_product_comment_criterion)
|
LEFT JOIN `'._DB_PREFIX_.'product_comment_criterion_lang` pccl
|
||||||
LEFT JOIN `'._DB_PREFIX_.'product_comment_criterion_product` pccp ON (pcc.`id_product_comment_criterion` = pccp.`id_product_comment_criterion` AND pccp.`id_product` = '.(int)$id_product.')
|
ON (pcc.id_product_comment_criterion = pccl.id_product_comment_criterion)
|
||||||
LEFT JOIN `'._DB_PREFIX_.'product_comment_criterion_category` pccc ON (pcc.`id_product_comment_criterion` = pccc.`id_product_comment_criterion`)
|
LEFT JOIN `'._DB_PREFIX_.'product_comment_criterion_product` pccp
|
||||||
LEFT JOIN `'._DB_PREFIX_.'product'.$table.'` '.$alias.' ON ('.$alias.'.id_category_default = pccc.id_category AND '.$alias.'.id_product = '.(int)$id_product.')
|
ON (pcc.`id_product_comment_criterion` = pccp.`id_product_comment_criterion` AND pccp.`id_product` = '.(int)$id_product.')
|
||||||
WHERE pccl.`id_lang` = '.(int)($id_lang).' AND (pccp.id_product IS NOT NULL OR ps.id_product IS NOT NULL OR pcc.id_product_comment_criterion_type = 1) AND pcc.active = 1
|
LEFT JOIN `'._DB_PREFIX_.'product_comment_criterion_category` pccc
|
||||||
GROUP BY pcc.id_product_comment_criterion');
|
ON (pcc.`id_product_comment_criterion` = pccc.`id_product_comment_criterion`)
|
||||||
|
LEFT JOIN `'._DB_PREFIX_.'product'.$table.'` '.$alias.'
|
||||||
|
ON ('.$alias.'.id_category_default = pccc.id_category AND '.$alias.'.id_product = '.(int)$id_product.')
|
||||||
|
WHERE pccl.`id_lang` = '.(int)($id_lang).'
|
||||||
|
AND (
|
||||||
|
pccp.id_product IS NOT NULL
|
||||||
|
OR ps.id_product IS NOT NULL
|
||||||
|
OR pcc.id_product_comment_criterion_type = 1
|
||||||
|
)
|
||||||
|
AND pcc.active = 1
|
||||||
|
GROUP BY pcc.id_product_comment_criterion
|
||||||
|
');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -168,20 +191,21 @@ class ProductCommentCriterion extends ObjectModel
|
|||||||
{
|
{
|
||||||
if (!Validate::isUnsignedId($id_lang))
|
if (!Validate::isUnsignedId($id_lang))
|
||||||
die(Tools::displayError());
|
die(Tools::displayError());
|
||||||
return (Db::getInstance()->executeS('
|
return Db::getInstance()->executeS('
|
||||||
SELECT pcc.`id_product_comment_criterion`, pcc.id_product_comment_criterion_type, pccl.`name`, pcc.active
|
SELECT pcc.`id_product_comment_criterion`, pcc.id_product_comment_criterion_type, pccl.`name`, pcc.active
|
||||||
FROM `'._DB_PREFIX_.'product_comment_criterion` pcc
|
FROM `'._DB_PREFIX_.'product_comment_criterion` pcc
|
||||||
JOIN `'._DB_PREFIX_.'product_comment_criterion_lang` pccl ON (pcc.id_product_comment_criterion = pccl.id_product_comment_criterion)
|
JOIN `'._DB_PREFIX_.'product_comment_criterion_lang` pccl ON (pcc.id_product_comment_criterion = pccl.id_product_comment_criterion)
|
||||||
WHERE pccl.`id_lang` = '.(int)$id_lang.($active ? ' AND active = 1' : '').($type ? ' AND id_product_comment_criterion_type = '.(int)$type : '').'
|
WHERE pccl.`id_lang` = '.(int)$id_lang.($active ? ' AND active = 1' : '').($type ? ' AND id_product_comment_criterion_type = '.(int)$type : '').'
|
||||||
ORDER BY pccl.`name` ASC'));
|
ORDER BY pccl.`name` ASC
|
||||||
|
');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getProducts()
|
public function getProducts()
|
||||||
{
|
{
|
||||||
$res = Db::getInstance()->executeS('
|
$res = Db::getInstance()->executeS('
|
||||||
SELECT pccp.id_product, pccp.id_product_comment_criterion
|
SELECT pccp.id_product, pccp.id_product_comment_criterion
|
||||||
FROM `'._DB_PREFIX_.'product_comment_criterion_product` pccp
|
FROM `'._DB_PREFIX_.'product_comment_criterion_product` pccp
|
||||||
WHERE pccp.id_product_comment_criterion = '.(int)$this->id);
|
WHERE pccp.id_product_comment_criterion = '.(int)$this->id);
|
||||||
$products = array();
|
$products = array();
|
||||||
if ($res)
|
if ($res)
|
||||||
foreach ($res AS $row)
|
foreach ($res AS $row)
|
||||||
@@ -192,9 +216,9 @@ class ProductCommentCriterion extends ObjectModel
|
|||||||
public function getCategories()
|
public function getCategories()
|
||||||
{
|
{
|
||||||
$res = Db::getInstance()->executeS('
|
$res = Db::getInstance()->executeS('
|
||||||
SELECT pccc.id_category, pccc.id_product_comment_criterion
|
SELECT pccc.id_category, pccc.id_product_comment_criterion
|
||||||
FROM `'._DB_PREFIX_.'product_comment_criterion_category` pccc
|
FROM `'._DB_PREFIX_.'product_comment_criterion_category` pccc
|
||||||
WHERE pccc.id_product_comment_criterion = '.(int)$this->id);
|
WHERE pccc.id_product_comment_criterion = '.(int)$this->id);
|
||||||
$criterions = array();
|
$criterions = array();
|
||||||
if ($res)
|
if ($res)
|
||||||
foreach ($res AS $row)
|
foreach ($res AS $row)
|
||||||
@@ -204,19 +228,27 @@ class ProductCommentCriterion extends ObjectModel
|
|||||||
|
|
||||||
public function deleteCategories()
|
public function deleteCategories()
|
||||||
{
|
{
|
||||||
return Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'product_comment_criterion_category` WHERE `id_product_comment_criterion` = '.(int)$this->id);
|
return Db::getInstance()->execute('
|
||||||
|
DELETE FROM `'._DB_PREFIX_.'product_comment_criterion_category`
|
||||||
|
WHERE `id_product_comment_criterion` = '.(int)$this->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function deleteProducts()
|
public function deleteProducts()
|
||||||
{
|
{
|
||||||
return Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'product_comment_criterion_product` WHERE `id_product_comment_criterion` = '.(int)$this->id);
|
return Db::getInstance()->execute('
|
||||||
|
DELETE FROM `'._DB_PREFIX_.'product_comment_criterion_product`
|
||||||
|
WHERE `id_product_comment_criterion` = '.(int)$this->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getTypes()
|
public static function getTypes()
|
||||||
{
|
{
|
||||||
// Instance of module class for translations
|
// Instance of module class for translations
|
||||||
$module = new MailAlerts();
|
$module = new ProductComments();
|
||||||
|
|
||||||
return array(1 => $module->l('Valid for the entire catalog', 'ProductCommentCriterion'), 2 => $module->l('Restricted to some categories', 'ProductCommentCriterion'), 3 => $module->l('Restricted to some products', 'ProductCommentCriterion'));
|
return array(
|
||||||
|
1 => $module->l('Valid for the entire catalog', 'ProductCommentCriterion'),
|
||||||
|
2 => $module->l('Restricted to some categories', 'ProductCommentCriterion'),
|
||||||
|
3 => $module->l('Restricted to some products', 'ProductCommentCriterion')
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,171 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* 2007-2012 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-2012 PrestaShop SA
|
||||||
|
* @version Release: $Revision: 15094 $
|
||||||
|
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||||
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Include Module
|
||||||
|
include_once(dirname(__FILE__).'/../../productcomments.php');
|
||||||
|
// Include Models
|
||||||
|
include_once(dirname(__FILE__).'/../../ProductComment.php');
|
||||||
|
include_once(dirname(__FILE__).'/../../ProductCommentCriterion.php');
|
||||||
|
|
||||||
|
class ProductCommentsDefaultModuleFrontController extends ModuleFrontController
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
|
||||||
|
$this->context = Context::getContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function initContent()
|
||||||
|
{
|
||||||
|
parent::initContent();
|
||||||
|
|
||||||
|
if (Tools::isSubmit('action'))
|
||||||
|
{
|
||||||
|
switch(Tools::getValue('action'))
|
||||||
|
{
|
||||||
|
case 'add_comment':
|
||||||
|
$this->ajaxProcessAddComment();
|
||||||
|
break;
|
||||||
|
case 'report_abuse':
|
||||||
|
$this->ajaxProcessReportAbuse();
|
||||||
|
break;
|
||||||
|
case 'comment_is_usefull':
|
||||||
|
$this->ajaxProcessCommentIsUsefull();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function ajaxProcessAddComment()
|
||||||
|
{
|
||||||
|
$module_instance = new ProductComments();
|
||||||
|
|
||||||
|
$result = true;
|
||||||
|
$id_guest = 0;
|
||||||
|
$id_customer = $this->context->customer->id;
|
||||||
|
if ($id_customer)
|
||||||
|
$id_guest = $this->context->cookie->id_guest;
|
||||||
|
|
||||||
|
$errors = array();
|
||||||
|
// Validation
|
||||||
|
if (!Validate::isInt(Tools::getValue('id_product')))
|
||||||
|
$errors[] = $module_instance->l('ID product is incorrect');
|
||||||
|
if (!Tools::getValue('title') || !Validate::isGenericName(Tools::getValue('title')))
|
||||||
|
$errors[] = $module_instance->l('Title is incorrect');
|
||||||
|
if (!Tools::getValue('content') || !Validate::isMessage(Tools::getValue('content')))
|
||||||
|
$errors[] = $module_instance->l('Comment is incorrect');
|
||||||
|
if (!$id_customer && (!Tools::isSubmit('customer_name') || !Tools::getValue('customer_name') || !Validate::isGenericName(Tools::getValue('customer_name'))))
|
||||||
|
$errors[] = $module_instance->l('Customer name is incorrect');
|
||||||
|
if (!$this->context->customer->id && !Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS'))
|
||||||
|
$errors[] = $module_instance->l('You must be logged in order to send a comment');
|
||||||
|
if (!count(Tools::getValue('criterion')))
|
||||||
|
$errors[] = $module_instance->l('You must give a rating');
|
||||||
|
|
||||||
|
$product = new Product(Tools::getValue('id_product'));
|
||||||
|
if (!$product->id)
|
||||||
|
$errors[] = $module_instance->l('Product not found');
|
||||||
|
|
||||||
|
if (!count($errors))
|
||||||
|
{
|
||||||
|
$customer_comment = ProductComment::getByCustomer(Tools::getValue('id_product'), $id_customer, true, $id_guest);
|
||||||
|
if (!$customer_comment || ($customer_comment && (strtotime($customer_comment['date_add']) + Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME')) < time()))
|
||||||
|
{
|
||||||
|
|
||||||
|
$comment = new ProductComment();
|
||||||
|
$comment->content = strip_tags(Tools::getValue('content'));
|
||||||
|
$comment->id_product = (int)Tools::getValue('id_product');
|
||||||
|
$comment->id_customer = $id_customer;
|
||||||
|
$comment->id_guest = $id_guest;
|
||||||
|
$comment->customer_name = Tools::getValue('customer_name');
|
||||||
|
if (!$comment->id_customer)
|
||||||
|
$comment->customer_name = pSQL($this->context->customer->firstname.' '.$this->context->customer->lastname);
|
||||||
|
$comment->title = Tools::getValue('title');
|
||||||
|
$comment->grade = 0;
|
||||||
|
$comment->validate = 0;
|
||||||
|
$comment->save();
|
||||||
|
|
||||||
|
$grade_sum = 0;
|
||||||
|
foreach(Tools::getValue('criterion') as $id_product_comment_criterion => $grade)
|
||||||
|
{
|
||||||
|
$grade_sum += $grade;
|
||||||
|
$product_comment_criterion = new ProductCommentCriterion($id_product_comment_criterion);
|
||||||
|
if ($product_comment_criterion->id)
|
||||||
|
$product_comment_criterion->addGrade($comment->id, $grade);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count(Tools::getValue('criterion')) > 1)
|
||||||
|
{
|
||||||
|
$comment->grade = $grade_sum / count(Tools::getValue('criterion'));
|
||||||
|
// Update Grade average of comment
|
||||||
|
$comment->save();
|
||||||
|
}
|
||||||
|
$result = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$result = false;
|
||||||
|
$errors[] = $module_instance->l('You should wait').' '.Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME').' '.$module_instance->l('seconds before posting a new comment');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$result = false;
|
||||||
|
|
||||||
|
die(Tools::jsonEncode(array(
|
||||||
|
'result' => $result,
|
||||||
|
'errors' => $errors
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function ajaxProcessReportAbuse()
|
||||||
|
{
|
||||||
|
if (!Tools::isSubmit('id_product_comment'))
|
||||||
|
die('0');
|
||||||
|
|
||||||
|
if (ProductComment::isAlreadyReport(Tools::getValue('id_product_comment'), $this->context->cookie->id_customer))
|
||||||
|
die('0');
|
||||||
|
|
||||||
|
if (ProductComment::reportComment((int)Tools::getValue('id_product_comment'), $this->context->cookie->id_customer))
|
||||||
|
die('1');
|
||||||
|
|
||||||
|
die('0');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function ajaxProcessCommentIsUsefull()
|
||||||
|
{
|
||||||
|
if (!Tools::isSubmit('id_product_comment') || !Tools::isSubmit('value'))
|
||||||
|
die('0');
|
||||||
|
|
||||||
|
if (ProductComment::isAlreadyUsefulness(Tools::getValue('id_product_comment'), $this->context->cookie->id_customer))
|
||||||
|
die('0');
|
||||||
|
|
||||||
|
if (ProductComment::setCommentUsefulness((int)Tools::getValue('id_product_comment'), (bool)Tools::getValue('value'), $this->context->cookie->id_customer))
|
||||||
|
die('1');
|
||||||
|
|
||||||
|
die('0');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
$(function() {
|
||||||
|
$('input[@type=radio].star').rating();
|
||||||
|
$('.auto-submit-star').rating();
|
||||||
|
|
||||||
|
$('.open-comment-form').fancybox({
|
||||||
|
'hideOnContentClick': false
|
||||||
|
});
|
||||||
|
|
||||||
|
$('button.usefulness_btn').click(function() {
|
||||||
|
var id_product_comment = $(this).data('id-product-comment');
|
||||||
|
var is_usefull = $(this).data('is-usefull');
|
||||||
|
var parent = $(this).parent();
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: productcomments_controller_url,
|
||||||
|
data: {
|
||||||
|
id_product_comment: id_product_comment,
|
||||||
|
action: 'comment_is_usefull',
|
||||||
|
value: is_usefull
|
||||||
|
},
|
||||||
|
type: 'POST',
|
||||||
|
success: function(result){
|
||||||
|
parent.fadeOut('slow', function() {
|
||||||
|
parent.remove();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$('span.report_btn').click(function() {
|
||||||
|
if (confirm(confirm_report_message))
|
||||||
|
{
|
||||||
|
var idProductComment = $(this).data('id-product-comment');
|
||||||
|
var parent = $(this).parent();
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: productcomments_controller_url,
|
||||||
|
data: {
|
||||||
|
id_product_comment: idProductComment,
|
||||||
|
action: 'report_abuse'
|
||||||
|
},
|
||||||
|
type: 'POST',
|
||||||
|
success: function(result){
|
||||||
|
parent.fadeOut('slow', function() {
|
||||||
|
parent.remove();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#submitNewMessage').click(function(e) {
|
||||||
|
// Kill default behaviour
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
// Form element
|
||||||
|
$.ajax({
|
||||||
|
url: productcomments_controller_url+'&action=add_comment&secure_key='+secure_key,
|
||||||
|
data: $('#fancybox-content form').serialize(),
|
||||||
|
type: 'POST',
|
||||||
|
dataType: "json",
|
||||||
|
success: function(data){
|
||||||
|
if (data.result)
|
||||||
|
{
|
||||||
|
$.fancybox.close();
|
||||||
|
document.location.href = document.location.href;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$('#new_comment_form_error ul').html('');
|
||||||
|
$.each(data.errors, function(index, value) {
|
||||||
|
$('#new_comment_form_error ul').append('<li>'+value+'</li>');
|
||||||
|
});
|
||||||
|
$('#new_comment_form_error').slideDown('slow');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -25,6 +25,7 @@
|
|||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// The usage of this file is deprecated !!!
|
||||||
require_once(dirname(__FILE__).'/../../config/config.inc.php');
|
require_once(dirname(__FILE__).'/../../config/config.inc.php');
|
||||||
require_once(dirname(__FILE__).'/../../init.php');
|
require_once(dirname(__FILE__).'/../../init.php');
|
||||||
require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
||||||
|
|||||||
@@ -23,105 +23,17 @@
|
|||||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*}
|
*}
|
||||||
{literal}
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
/*$(function(){ $('input[@type=radio].star').rating(); });
|
$(function(){
|
||||||
$(function(){
|
$('a[href=#idTab5]').click(function(){
|
||||||
$('.auto-submit-star').rating({
|
$('*[id^="idTab"]').addClass('block_hidden_only_for_screen');
|
||||||
callback: function(value, link){
|
$('div#idTab5').removeClass('block_hidden_only_for_screen');
|
||||||
}
|
|
||||||
});
|
|
||||||
});*/
|
|
||||||
|
|
||||||
$(function(){
|
$('ul#more_info_tabs a[href^="#idTab"]').removeClass('selected');
|
||||||
$('input[@type=radio].star').rating();
|
$('a[href="#idTab5"]').addClass('selected');
|
||||||
$('.auto-submit-star').rating({
|
|
||||||
callback: function(value, link) {}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
//close comment form
|
|
||||||
function closeCommentForm(){
|
|
||||||
$('#sendComment').slideUp('fast');
|
|
||||||
$('input#addCommentButton').fadeIn('slow');
|
|
||||||
}
|
|
||||||
|
|
||||||
$('document').ready(function(){
|
|
||||||
|
|
||||||
var limitInputText = {
|
|
||||||
'maxCharacterSize': 200,
|
|
||||||
'originalStyle': 'originalDisplayInfo',
|
|
||||||
'warningStyle': 'warningDisplayInfo',
|
|
||||||
'warningNumber': 40,
|
|
||||||
'displayFormat': '#left'
|
|
||||||
};
|
|
||||||
|
|
||||||
$('#commentContent').textareaCount(limitInputText);
|
|
||||||
|
|
||||||
$('#new_comment_btn').fancybox({
|
|
||||||
'hideOnContentClick': false,
|
|
||||||
'onClosed': function(){
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
$('a[href=#idTab5]').click(function(){
|
|
||||||
$('*[id^="idTab"]').addClass('block_hidden_only_for_screen');
|
|
||||||
$('div#idTab5').removeClass('block_hidden_only_for_screen');
|
|
||||||
|
|
||||||
$('ul#more_info_tabs a[href^="#idTab"]').removeClass('selected');
|
|
||||||
$('a[href="#idTab5"]').addClass('selected');
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#submitMessage').click(function(){
|
|
||||||
var datas = [];
|
|
||||||
$('#fancybox-content').find('input, textarea, select').each(function(index){
|
|
||||||
var o = {}
|
|
||||||
o.key = $(this).attr('name');
|
|
||||||
o.value = $(this).val();
|
|
||||||
datas.push(o);
|
|
||||||
});
|
|
||||||
$.ajax({
|
|
||||||
url: "{/literal}{$module_dir}{literal}productcomments-ajax.php",
|
|
||||||
post: "POST",
|
|
||||||
data: {action: 'sendComment', secure_key: '{/literal}{$secure_key}{literal}', review: JSON.stringify(datas)},
|
|
||||||
dataType: "json",
|
|
||||||
success: function(result){
|
|
||||||
if (result == 0) {
|
|
||||||
alert('{/literal}{l s='Your comment can not be posted. Please fill in all required fields.' mod='productcomments'}{literal}');
|
|
||||||
} else {
|
|
||||||
location.reload( true );
|
|
||||||
$.fancybox.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#submitNewMessage').click(function(){
|
|
||||||
var datas = [];
|
|
||||||
$('#fancybox-content').find('input, textarea, select').each(function(index){
|
|
||||||
var o = {}
|
|
||||||
o.key = $(this).attr('name');
|
|
||||||
o.value = $(this).val();
|
|
||||||
datas.push(o);
|
|
||||||
});
|
|
||||||
$.ajax({
|
|
||||||
url: "{/literal}{$module_dir}{literal}productcomments-ajax.php",
|
|
||||||
post: "POST",
|
|
||||||
data: {action: 'sendComment', secure_key: '{/literal}{$secure_key}{literal}', review: JSON.stringify(datas)},
|
|
||||||
dataType: "json",
|
|
||||||
success: function(result){
|
|
||||||
if (result == 0) {
|
|
||||||
alert('{/literal}{l s='Your comment can not be posted. Please fill in all required fields.' mod='productcomments'}{literal}');
|
|
||||||
} else {
|
|
||||||
location.reload( true );
|
|
||||||
$.fancybox.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
{/literal}
|
|
||||||
|
|
||||||
<div id="product_comments_block_extra">
|
<div id="product_comments_block_extra">
|
||||||
{if $nbComments != 0}
|
{if $nbComments != 0}
|
||||||
@@ -144,65 +56,8 @@
|
|||||||
<a href="#idTab5">{l s='Read user reviews' mod='productcomments'} ({$nbComments})</a><br/>
|
<a href="#idTab5">{l s='Read user reviews' mod='productcomments'} ({$nbComments})</a><br/>
|
||||||
{/if}
|
{/if}
|
||||||
{if ($too_early == false AND ($logged OR $allow_guests))}
|
{if ($too_early == false AND ($logged OR $allow_guests))}
|
||||||
<a id="new_comment_btn" href="#new_comment_form">{l s='Write your review' mod='productcomments'}</a>
|
<a class="open-comment-form" href="#new_comment_form">{l s='Write your review' mod='productcomments'}</a>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
<div style="display: none;">
|
|
||||||
<div id="new_comment_form">
|
|
||||||
<h2 class="title">{l s='Write your review' mod='productcomments'}</h2>
|
|
||||||
<div class="product clearfix">
|
|
||||||
<img src="{$link->getImageLink($product->link_rewrite, $productcomment_cover, 'home')}" height="{$homeSize.height}" width="{$homeSize.width}" alt="{$product->name|escape:html:'UTF-8'}" />
|
|
||||||
<div class="product_desc">
|
|
||||||
<p class="product_name"><strong>{$product->name}</strong></p>
|
|
||||||
{$product->description_short}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="new_comment_form_content">
|
|
||||||
<p class="intro_form">{l s='Write your review' mod='productcomments'}</p>
|
|
||||||
{if $criterions|@count > 0}
|
|
||||||
<ul class="grade_content clearfix">
|
|
||||||
{section loop=$criterions name=i start=0 step=1}
|
|
||||||
<li class="clearfix">
|
|
||||||
<span>
|
|
||||||
<input type="hidden" name="id_product_comment_criterion_{$smarty.section.i.iteration}" value="{$criterions[i].id_product_comment_criterion|intval}" />
|
|
||||||
{$criterions[i].name|escape:'html':'UTF-8'}:
|
|
||||||
</span>
|
|
||||||
<div class="star_content">
|
|
||||||
<input class="star" type="radio" name="{$smarty.section.i.iteration}_grade" id="{$smarty.section.i.iteration}_grade" value="1" />
|
|
||||||
<input class="star" type="radio" name="{$smarty.section.i.iteration}_grade" value="2" />
|
|
||||||
<input class="star" type="radio" name="{$smarty.section.i.iteration}_grade" value="3" checked="checked" />
|
|
||||||
<input class="star" type="radio" name="{$smarty.section.i.iteration}_grade" value="4" />
|
|
||||||
<input class="star" type="radio" name="{$smarty.section.i.iteration}_grade" value="5" />
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{/section}
|
|
||||||
</ul>
|
|
||||||
{/if}
|
|
||||||
<div class="form_contenair">
|
|
||||||
<p class="text">
|
|
||||||
<label for="comment_title">{l s='Title' mod='productcomments'} <sup>*</sup>:</label>
|
|
||||||
<input id="commentTitle" name="title" type="text" value=""/>
|
|
||||||
</p>
|
|
||||||
<p class="textarea">
|
|
||||||
<label for="content">{l s='Comment' mod='productcomments'} <sup>*</sup>:</label>
|
|
||||||
<textarea id="commentContent" name="content"></textarea>
|
|
||||||
</p>
|
|
||||||
{if $allow_guests == true && $logged == 0}
|
|
||||||
<p class="text">
|
|
||||||
<label>{l s='Your name' mod='productcomments'} <sup>*</sup>:</label>
|
|
||||||
<input id="commentCustomerName" name="customer_name" type="text" value=""/>
|
|
||||||
</p>
|
|
||||||
{/if}
|
|
||||||
<p class="submit">
|
|
||||||
<input id="id_product_comment_send" name="id_product" type="hidden" value='{$id_product_comment_form}'></input>
|
|
||||||
<a href="#" onclick="$.fancybox.close();">{l s='Cancel' mod='productcomments'}</a>
|
|
||||||
{l s='or' mod='productcomments'} <button id="submitMessage" name="submitMessage" type="submit">{l s='Send' mod='productcomments'}</button>
|
|
||||||
</p>
|
|
||||||
<p class="txt_required">* {l s='Required fields' mod='productcomments'}</p>
|
|
||||||
</div>
|
|
||||||
</div><!-- /end new_comment_form_content -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- /Module ProductComments -->
|
<!-- /Module ProductComments -->
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
#product_comments_block_extra .comments_advices {clear:both;}
|
#product_comments_block_extra .comments_advices {clear:both;}
|
||||||
|
|
||||||
/* pop-in add grade/advice ********************************************************************* */
|
/* pop-in add grade/advice ********************************************************************* */
|
||||||
#fancybox-wrap {width:585px !important}
|
#fancybox-wrap { width:585px !important }
|
||||||
#fancybox-content {
|
#fancybox-content {
|
||||||
width:585px !important;
|
width:585px !important;
|
||||||
border-width:0 !important
|
border-width:0 !important
|
||||||
@@ -68,7 +68,6 @@
|
|||||||
|
|
||||||
#new_comment_form .grade_content {margin:0 0 20px 0}
|
#new_comment_form .grade_content {margin:0 0 20px 0}
|
||||||
#new_comment_form .grade_content span,
|
#new_comment_form .grade_content span,
|
||||||
#new_comment_form .grade_content .star_content {float:left}
|
|
||||||
#new_comment_form .grade_content span {
|
#new_comment_form .grade_content span {
|
||||||
display:inline-block;
|
display:inline-block;
|
||||||
padding:0 10px;
|
padding:0 10px;
|
||||||
@@ -83,39 +82,29 @@
|
|||||||
}
|
}
|
||||||
.new_comment_form_content .intro_form {
|
.new_comment_form_content .intro_form {
|
||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 12px
|
font-size: 12px
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#new_comment_form label {
|
||||||
#new_comment_form .form_contenair {
|
display: block;
|
||||||
clear:both;
|
|
||||||
margin-top:20px
|
|
||||||
}
|
|
||||||
#new_comment_form p.text
|
|
||||||
#new_comment_form p.textarea {
|
|
||||||
margin-bottom:0;
|
|
||||||
padding-bottom:0
|
|
||||||
}
|
|
||||||
#new_comment_form p.text label, #new_comment_form p.textarea label {
|
|
||||||
display: block;
|
|
||||||
margin:12px 0 4px 0;
|
margin:12px 0 4px 0;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
#new_comment_form p.text input {
|
#new_comment_form input {
|
||||||
padding: 0 5px;
|
|
||||||
height: 28px;
|
|
||||||
width: 540px;
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
background: #fff;
|
|
||||||
}
|
|
||||||
#new_comment_form p.textarea textarea {
|
|
||||||
padding: 0 5px;
|
padding: 0 5px;
|
||||||
height: 80px;
|
height: 28px;
|
||||||
width: 540px;
|
width: 540px;
|
||||||
border: 1px solid #ccc;
|
border: 1px solid #ccc;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
|
}
|
||||||
|
#new_comment_form textarea {
|
||||||
|
padding: 0 5px;
|
||||||
|
height: 80px;
|
||||||
|
width: 540px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
background: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#new_comment_form .submit {
|
#new_comment_form .submit {
|
||||||
@@ -126,20 +115,40 @@
|
|||||||
}
|
}
|
||||||
#new_comment_form button {
|
#new_comment_form button {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 4px 7px 3px 7px;
|
padding: 4px 7px 3px 7px;
|
||||||
border: 1px solid #CC9900;
|
border: 1px solid #CC9900;
|
||||||
border-radius: 3px 3px 3px 3px;
|
border-radius: 3px 3px 3px 3px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: #000;
|
color: #000;
|
||||||
background: url(img/bg_bt.gif) repeat-x scroll 0 0 #F4B61B
|
background: url(img/bg_bt.gif) repeat-x scroll 0 0 #F4B61B
|
||||||
}
|
}
|
||||||
#new_comment_form .submit .txt_required {
|
|
||||||
float:left;
|
#new_comment_form #criterions_list {
|
||||||
font-size:12px;
|
border-bottom: 1px solid #CCC;
|
||||||
font-style:italic;
|
padding-bottom: 15px;
|
||||||
color:#666
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#new_comment_form #criterions_list li {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#new_comment_form #criterions_list label {
|
||||||
|
display: inline;
|
||||||
|
float: left;
|
||||||
|
margin: 0 0 0 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#new_comment_form #criterions_list .star_content {
|
||||||
|
float: right;
|
||||||
|
margin-right: 180px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#new_comment_form #new_comment_form_footer {
|
||||||
|
margin-top: 20px;
|
||||||
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TAB COMMENTS ******************************************************************************** */
|
/* TAB COMMENTS ******************************************************************************** */
|
||||||
@@ -195,18 +204,21 @@
|
|||||||
#product_comments_block_tab a:hover {text-decoration: underline}
|
#product_comments_block_tab a:hover {text-decoration: underline}
|
||||||
|
|
||||||
#product_comments_block_tab button.usefulness_btn {
|
#product_comments_block_tab button.usefulness_btn {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin:0 0 0 5px;
|
margin:0 0 0 5px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 0 2px;
|
padding: 0 2px;
|
||||||
border: 1px solid #CC9900;
|
border: 1px solid #CC9900;
|
||||||
border-radius: 3px 3px 3px 3px;
|
border-radius: 3px 3px 3px 3px;
|
||||||
color: #000;
|
color: #000;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
background: url("img/bg_bt.gif") repeat-x scroll 0 0 #F4B61B
|
background: url("img/bg_bt.gif") repeat-x scroll 0 0 #F4B61B
|
||||||
}
|
}
|
||||||
#product_comments_block_tab button.usefulness_btn:hover {background-position: left -50px}
|
#product_comments_block_tab button.usefulness_btn:hover {background-position: left -50px}
|
||||||
#product_comments_block_tab button.usefulness_btn:active {background-position: left -100px}
|
#product_comments_block_tab button.usefulness_btn:active {background-position: left -100px}
|
||||||
|
|
||||||
#product_comments_block_tab span.report_btn {cursor: pointer}
|
#product_comments_block_tab span.report_btn {cursor: pointer}
|
||||||
#product_comments_block_tab span.report_btn:hover {text-decoration:underline}
|
#product_comments_block_tab span.report_btn:hover {text-decoration:underline}
|
||||||
|
|
||||||
|
.fl { float: left; }
|
||||||
|
.fr { float: right; }
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class ProductComments extends Module
|
|||||||
{
|
{
|
||||||
$this->name = 'productcomments';
|
$this->name = 'productcomments';
|
||||||
$this->tab = 'front_office_features';
|
$this->tab = 'front_office_features';
|
||||||
$this->version = '2.2';
|
$this->version = '2.3';
|
||||||
$this->author = 'PrestaShop';
|
$this->author = 'PrestaShop';
|
||||||
$this->need_instance = 0;
|
$this->need_instance = 0;
|
||||||
$this->secure_key = Tools::encrypt($this->name);
|
$this->secure_key = Tools::encrypt($this->name);
|
||||||
@@ -496,7 +496,7 @@ class ProductComments extends Module
|
|||||||
</div>
|
</div>
|
||||||
</form>';
|
</form>';
|
||||||
require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
||||||
$criterions = ProductCommentCriterion::getCriterions(Context::getContext()->language->id);
|
$criterions = ProductCommentCriterion::getCriterions($this->context->language->id);
|
||||||
if (count($criterions))
|
if (count($criterions))
|
||||||
{
|
{
|
||||||
$this->_html .= '<br />
|
$this->_html .= '<br />
|
||||||
@@ -529,7 +529,7 @@ class ProductComments extends Module
|
|||||||
{
|
{
|
||||||
include_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
include_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
||||||
|
|
||||||
$criterions = ProductCommentCriterion::getCriterions(Context::getContext()->language->id, false, true);
|
$criterions = ProductCommentCriterion::getCriterions($this->context->language->id, false, true);
|
||||||
$id_criterion = (int)Tools::getValue('updateCriterion');
|
$id_criterion = (int)Tools::getValue('updateCriterion');
|
||||||
|
|
||||||
if ($id_criterion)
|
if ($id_criterion)
|
||||||
@@ -537,13 +537,13 @@ class ProductComments extends Module
|
|||||||
$criterion = new ProductCommentCriterion((int)$id_criterion);
|
$criterion = new ProductCommentCriterion((int)$id_criterion);
|
||||||
if ($criterion->id_product_comment_criterion_type == 2)
|
if ($criterion->id_product_comment_criterion_type == 2)
|
||||||
{
|
{
|
||||||
$categories = Category::getSimpleCategories(Context::getContext()->language->id);
|
$categories = Category::getSimpleCategories($this->context->language->id);
|
||||||
$criterion_categories = $criterion->getCategories();
|
$criterion_categories = $criterion->getCategories();
|
||||||
}
|
}
|
||||||
else if ($criterion->id_product_comment_criterion_type == 3)
|
else if ($criterion->id_product_comment_criterion_type == 3)
|
||||||
{
|
{
|
||||||
$criterion_products = $criterion->getProducts();
|
$criterion_products = $criterion->getProducts();
|
||||||
$products = Product::getSimpleProducts(Context::getContext()->language->id);
|
$products = Product::getSimpleProducts($this->context->language->id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -682,11 +682,12 @@ class ProductComments extends Module
|
|||||||
require_once(dirname(__FILE__).'/ProductComment.php');
|
require_once(dirname(__FILE__).'/ProductComment.php');
|
||||||
require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
||||||
|
|
||||||
Context::getContext()->smarty->assign(array(
|
$this->context->smarty->assign(array(
|
||||||
'allow_guests' => (int)Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS'),
|
'allow_guests' => (int)Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS'),
|
||||||
'comments' => ProductComment::getByProduct((int)(Tools::getValue('id_product'))),
|
'comments' => ProductComment::getByProduct((int)(Tools::getValue('id_product'))),
|
||||||
'criterions' => ProductCommentCriterion::getByProduct((int)(Tools::getValue('id_product')), Context::getContext()->language->id),
|
'criterions' => ProductCommentCriterion::getByProduct((int)(Tools::getValue('id_product')), $this->context->language->id),
|
||||||
'nbComments' => (int)(ProductComment::getCommentNumber((int)(Tools::getValue('id_product'))))));
|
'nbComments' => (int)(ProductComment::getCommentNumber((int)(Tools::getValue('id_product'))))
|
||||||
|
));
|
||||||
|
|
||||||
return ($this->display(__FILE__, '/tab.tpl'));
|
return ($this->display(__FILE__, '/tab.tpl'));
|
||||||
}
|
}
|
||||||
@@ -696,22 +697,22 @@ class ProductComments extends Module
|
|||||||
require_once(dirname(__FILE__).'/ProductComment.php');
|
require_once(dirname(__FILE__).'/ProductComment.php');
|
||||||
require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
||||||
|
|
||||||
$id_guest = (!$id_customer = (int)Context::getContext()->cookie->id_customer) ? (int)Context::getContext()->cookie->id_guest : false;
|
$id_guest = (!$id_customer = (int)$this->context->cookie->id_customer) ? (int)$this->context->cookie->id_guest : false;
|
||||||
$customerComment = ProductComment::getByCustomer((int)(Tools::getValue('id_product')), (int)Context::getContext()->cookie->id_customer, true, (int)$id_guest);
|
$customerComment = ProductComment::getByCustomer((int)(Tools::getValue('id_product')), (int)$this->context->cookie->id_customer, true, (int)$id_guest);
|
||||||
|
|
||||||
$average = ProductComment::getAverageGrade((int)Tools::getValue('id_product'));
|
$average = ProductComment::getAverageGrade((int)Tools::getValue('id_product'));
|
||||||
|
|
||||||
$image = Product::getCover((int)Tools::getValue('id_product'));
|
$image = Product::getCover((int)Tools::getValue('id_product'));
|
||||||
|
|
||||||
Context::getContext()->smarty->assign(array(
|
$this->context->smarty->assign(array(
|
||||||
'id_product_comment_form' => (int)Tools::getValue('id_product'),
|
'id_product_comment_form' => (int)Tools::getValue('id_product'),
|
||||||
'product' => new Product((int)Tools::getValue('id_product'), false, Context::getContext()->language->id),
|
'product' => new Product((int)Tools::getValue('id_product'), false, $this->context->language->id),
|
||||||
'secure_key' => $this->secure_key,
|
'secure_key' => $this->secure_key,
|
||||||
'logged' => (int)Context::getContext()->customer->isLogged(true),
|
'logged' => (int)$this->context->customer->isLogged(true),
|
||||||
'allow_guests' => (int)Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS'),
|
'allow_guests' => (int)Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS'),
|
||||||
'productcomment_cover' => (int)Tools::getValue('id_product').'-'.(int)$image['id_image'],
|
'productcomment_cover' => (int)Tools::getValue('id_product').'-'.(int)$image['id_image'],
|
||||||
'mediumSize' => Image::getSize('medium'),
|
'mediumSize' => Image::getSize('medium'),
|
||||||
'criterions' => ProductCommentCriterion::getByProduct((int)Tools::getValue('id_product'), Context::getContext()->language->id),
|
'criterions' => ProductCommentCriterion::getByProduct((int)Tools::getValue('id_product'), $this->context->language->id),
|
||||||
'action_url' => '',
|
'action_url' => '',
|
||||||
'averageTotal' => (int)$average['grade'],
|
'averageTotal' => (int)$average['grade'],
|
||||||
'too_early' => ($customerComment && (strtotime($customerComment['date_add']) + Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME')) > time()),
|
'too_early' => ($customerComment && (strtotime($customerComment['date_add']) + Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME')) > time()),
|
||||||
@@ -721,55 +722,50 @@ class ProductComments extends Module
|
|||||||
return ($this->display(__FILE__, '/productcomments-extra.tpl'));
|
return ($this->display(__FILE__, '/productcomments-extra.tpl'));
|
||||||
}
|
}
|
||||||
|
|
||||||
private function _frontOfficePostProcess()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public function hookProductTabContent($params)
|
public function hookProductTabContent($params)
|
||||||
{
|
{
|
||||||
$id_guest = (!$id_customer = (int)Context::getContext()->cookie->id_customer) ? (int)Context::getContext()->cookie->id_guest : false;
|
$this->context->controller->addJS($this->_path.'js/jquery.rating.pack.js');
|
||||||
$customerComment = ProductComment::getByCustomer((int)(Tools::getValue('id_product')), (int)Context::getContext()->cookie->id_customer, true, (int)$id_guest);
|
$this->context->controller->addJS($this->_path.'js/jquery.textareaCounter.plugin.js');
|
||||||
|
$this->context->controller->addJS($this->_path.'js/productcomments.js');
|
||||||
|
|
||||||
$averages = ProductComment::getAveragesByProduct((int)Tools::getValue('id_product'), Context::getContext()->language->id);
|
$id_guest = (!$id_customer = (int)$this->context->cookie->id_customer) ? (int)$this->context->cookie->id_guest : false;
|
||||||
|
$customerComment = ProductComment::getByCustomer((int)(Tools::getValue('id_product')), (int)$this->context->cookie->id_customer, true, (int)$id_guest);
|
||||||
|
|
||||||
|
$averages = ProductComment::getAveragesByProduct((int)Tools::getValue('id_product'), $this->context->language->id);
|
||||||
$averageTotal = 0;
|
$averageTotal = 0;
|
||||||
foreach ($averages as $average)
|
foreach ($averages as $average)
|
||||||
$averageTotal += (float)($average);
|
$averageTotal += (float)($average);
|
||||||
$averageTotal = count($averages) ? ($averageTotal / count($averages)) : 0;
|
$averageTotal = count($averages) ? ($averageTotal / count($averages)) : 0;
|
||||||
|
|
||||||
Context::getContext()->smarty->assign(array(
|
|
||||||
'logged' => (int)Context::getContext()->customer->isLogged(true),
|
|
||||||
'action_url' => '',
|
|
||||||
'comments' => ProductComment::getByProduct((int)Tools::getValue('id_product'), 1, null, Context::getContext()->cookie->id_customer),
|
|
||||||
'criterions' => ProductCommentCriterion::getByProduct((int)Tools::getValue('id_product'), Context::getContext()->language->id),
|
|
||||||
'averages' => $averages,
|
|
||||||
'product_comment_path' => $this->_path,
|
|
||||||
'averageTotal' => $averageTotal,
|
|
||||||
'allow_guests' => (int)Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS'),
|
|
||||||
'too_early' => ($customerComment && (strtotime($customerComment['date_add']) + Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME')) > time()),
|
|
||||||
'delay' => Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME')));
|
|
||||||
|
|
||||||
$this->context->controller->pagination((int)ProductComment::getCommentNumber((int)Tools::getValue('id_product')));
|
|
||||||
|
|
||||||
$image = Product::getCover((int)Tools::getValue('id_product'));
|
$image = Product::getCover((int)Tools::getValue('id_product'));
|
||||||
|
|
||||||
Context::getContext()->smarty->assign(array(
|
$this->context->smarty->assign(array(
|
||||||
|
'logged' => (int)$this->context->customer->isLogged(true),
|
||||||
|
'action_url' => '',
|
||||||
|
'comments' => ProductComment::getByProduct((int)Tools::getValue('id_product'), 1, null, $this->context->cookie->id_customer),
|
||||||
|
'criterions' => ProductCommentCriterion::getByProduct((int)Tools::getValue('id_product'), $this->context->language->id),
|
||||||
|
'averages' => $averages,
|
||||||
|
'product_comment_path' => $this->_path,
|
||||||
|
'averageTotal' => $averageTotal,
|
||||||
|
'allow_guests' => (int)Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS'),
|
||||||
|
'too_early' => ($customerComment && (strtotime($customerComment['date_add']) + Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME')) > time()),
|
||||||
|
'delay' => Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME'),
|
||||||
'id_product_comment_form' => (int)Tools::getValue('id_product'),
|
'id_product_comment_form' => (int)Tools::getValue('id_product'),
|
||||||
'secure_key' => $this->secure_key,
|
'secure_key' => $this->secure_key,
|
||||||
'productcomment_cover' => (int)Tools::getValue('id_product').'-'.(int)$image['id_image'],
|
'productcomment_cover' => (int)Tools::getValue('id_product').'-'.(int)$image['id_image'],
|
||||||
'mediumSize' => Image::getSize('medium'),
|
'mediumSize' => Image::getSize('medium'),
|
||||||
'nbComments' => (int)ProductComment::getCommentNumber((int)Tools::getValue('id_product'))
|
'nbComments' => (int)ProductComment::getCommentNumber((int)Tools::getValue('id_product')),
|
||||||
|
'productcomments_controller_url' => $this->context->link->getModuleLink('productcomments')
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->context->controller->pagination((int)ProductComment::getCommentNumber((int)Tools::getValue('id_product')));
|
||||||
|
|
||||||
return ($this->display(__FILE__, '/productcomments.tpl'));
|
return ($this->display(__FILE__, '/productcomments.tpl'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function hookHeader()
|
public function hookHeader()
|
||||||
{
|
{
|
||||||
$this->context->controller->addCSS($this->_path.'productcomments.css', 'all');
|
$this->context->controller->addCSS($this->_path.'productcomments.css', 'all');
|
||||||
$this->context->controller->addJS($this->_path.'js/jquery.rating.pack.js');
|
|
||||||
$this->context->controller->addJS($this->_path.'js/jquery.textareaCounter.plugin.js');
|
|
||||||
$this->_frontOfficePostProcess();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function hookExtraProductComparison($params)
|
public function hookExtraProductComparison($params)
|
||||||
@@ -784,8 +780,8 @@ class ProductComments extends Module
|
|||||||
|
|
||||||
foreach ($params['list_ids_product'] as $id_product)
|
foreach ($params['list_ids_product'] as $id_product)
|
||||||
{
|
{
|
||||||
$grades = ProductComment::getAveragesByProduct($id_product, Context::getContext()->language->id);
|
$grades = ProductComment::getAveragesByProduct($id_product, $this->context->language->id);
|
||||||
$criterions = ProductCommentCriterion::getByProduct($id_product, Context::getContext()->language->id);
|
$criterions = ProductCommentCriterion::getByProduct($id_product, $this->context->language->id);
|
||||||
$grade_total = 0;
|
$grade_total = 0;
|
||||||
if (count($grades) > 0)
|
if (count($grades) > 0)
|
||||||
{
|
{
|
||||||
@@ -811,9 +807,9 @@ class ProductComments extends Module
|
|||||||
if (count($list_grades) < 1)
|
if (count($list_grades) < 1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
Context::getContext()->smarty->assign(array('grades' => $list_grades, 'product_grades' => $list_product_grades, 'list_ids_product' => $params['list_ids_product'],
|
$this->context->smarty->assign(array('grades' => $list_grades, 'product_grades' => $list_product_grades, 'list_ids_product' => $params['list_ids_product'],
|
||||||
'list_product_average' => $list_product_average, 'product_comments' => $list_product_comment));
|
'list_product_average' => $list_product_average, 'product_comments' => $list_product_comment));
|
||||||
|
|
||||||
return $this->display(__FILE__, '/products-comparison.tpl');
|
return $this->display(__FILE__, '/products-comparison.tpl');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,98 +23,10 @@
|
|||||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*}
|
*}
|
||||||
<script type="text/javascript" src="{$module_dir}js/jquery.rating.pack.js"></script>
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(function(){literal}{{/literal} $('input[@type=radio].star').rating(); {literal}}{/literal});
|
var productcomments_controller_url = '{$productcomments_controller_url}';
|
||||||
$(function(){literal}{{/literal}
|
var confirm_report_message = "{l s='Are you sure you want report this comment?' mod='productcomments'}";
|
||||||
$('.auto-submit-star').rating({literal}{{/literal}
|
var secure_key = "{$secure_key}";
|
||||||
callback: function(value, link){literal}{{/literal}
|
|
||||||
{literal}}{/literal}
|
|
||||||
{literal}}{/literal});
|
|
||||||
{literal}}{/literal});
|
|
||||||
|
|
||||||
{literal}
|
|
||||||
$('document').ready(function(){
|
|
||||||
|
|
||||||
$('#new_comment_tab_btn').fancybox({
|
|
||||||
'hideOnContentClick': false,
|
|
||||||
'onClosed': function(){
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
$('button[id^=comment_useful_yes_]').click(function(){
|
|
||||||
|
|
||||||
var idProductComment = $(this).attr('id').replace('comment_useful_yes_', '');
|
|
||||||
var parent = $(this).parent();
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
{/literal}url: "{$module_dir}productcomments-ajax.php",{literal}
|
|
||||||
post: "POST",
|
|
||||||
data: "id_product_comment=" + idProductComment + "&action=usefulness&value=1",
|
|
||||||
success: function(result){
|
|
||||||
parent.fadeOut("normal", function() {
|
|
||||||
parent.remove();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$('button[id^=comment_useful_no_]').click(function(){
|
|
||||||
|
|
||||||
var idProductComment = $(this).attr('id').replace('comment_useful_no_', '');
|
|
||||||
var parent = $(this).parent();
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
{/literal}url: "{$module_dir}productcomments-ajax.php",{literal}
|
|
||||||
post: "POST",
|
|
||||||
data: "id_product_comment=" + idProductComment + "&action=usefulness&value=0",
|
|
||||||
success: function(result){
|
|
||||||
parent.fadeOut("normal", function() {
|
|
||||||
parent.remove();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$('span[id^=comment_report_]').click(function(){
|
|
||||||
|
|
||||||
{/literal}if (confirm('{l s='Are you sure you want report this comment?' mod='productcomments'}')){literal}
|
|
||||||
{
|
|
||||||
var idProductComment = $(this).attr('id').replace('comment_report_', '');
|
|
||||||
var parent = $(this).parent();
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
{/literal}url: "{$module_dir}productcomments-ajax.php",{literal}
|
|
||||||
post: "POST",
|
|
||||||
data: "id_product_comment=" + idProductComment + "&action=report",
|
|
||||||
success: function(result){
|
|
||||||
parent.fadeOut("normal", function() {
|
|
||||||
parent.remove();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$('#submitNewMessage').click(function(){
|
|
||||||
var datas = [];
|
|
||||||
$('#fancybox-content').find('input, textarea, select').each(function(index){
|
|
||||||
var o = {}
|
|
||||||
o.key = $(this).attr('name');
|
|
||||||
o.value = $(this).val();
|
|
||||||
datas.push(o);
|
|
||||||
});
|
|
||||||
$.ajax({
|
|
||||||
{/literal}url: "{$module_dir}productcomments-ajax.php",{literal}
|
|
||||||
post: "POST",
|
|
||||||
data: {action: 'sendComment', secure_key: '{/literal}{$secure_key}{literal}', review: JSON.stringify(datas)},
|
|
||||||
dataType: "json",
|
|
||||||
success: function(result){
|
|
||||||
$.fancybox.close();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
{/literal}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div id="idTab5">
|
<div id="idTab5">
|
||||||
@@ -148,10 +60,10 @@
|
|||||||
{/if}
|
{/if}
|
||||||
{if $logged == 1}
|
{if $logged == 1}
|
||||||
{if !$comment.customer_advice}
|
{if !$comment.customer_advice}
|
||||||
<li>{l s='Was this comment useful to you?' mod='productcomments'}<button class="usefulness_btn" id="comment_useful_yes_{$comment.id_product_comment}">{l s='yes' mod='productcomments'}</button><button class="usefulness_btn" id="comment_useful_no_{$comment.id_product_comment}">{l s='no' mod='productcomments'}</button></li>
|
<li>{l s='Was this comment useful to you?' mod='productcomments'}<button class="usefulness_btn" data-is-usefull="1" data-id-product-comment="{$comment.id_product_comment}">{l s='yes' mod='productcomments'}</button><button class="usefulness_btn" data-is-usefull="0" data-id-product-comment="{$comment.id_product_comment}">{l s='no' mod='productcomments'}</button></li>
|
||||||
{/if}
|
{/if}
|
||||||
{if !$comment.customer_report}
|
{if !$comment.customer_report}
|
||||||
<li><span class="report_btn" id="comment_report_{$comment.id_product_comment}">{l s='Report abuse' mod='productcomments'}</span></li>
|
<li><span class="report_btn" data-id-product-comment="{$comment.id_product_comment}">{l s='Report abuse' mod='productcomments'}</span></li>
|
||||||
{/if}
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
</ul>
|
</ul>
|
||||||
@@ -161,69 +73,74 @@
|
|||||||
{/foreach}
|
{/foreach}
|
||||||
{else}
|
{else}
|
||||||
{if ($too_early == false AND ($logged OR $allow_guests))}
|
{if ($too_early == false AND ($logged OR $allow_guests))}
|
||||||
|
|
||||||
<div style="display: none;">
|
<div style="display: none;">
|
||||||
<div id="new_comment_form">
|
<div id="new_comment_form">
|
||||||
<h2 class="title">{l s='Write your review' mod='productcomments'}</h2>
|
<form action="#">
|
||||||
<div class="product clearfix">
|
<h2 class="title">{l s='Write your review' mod='productcomments'}</h2>
|
||||||
<img src="{$link->getImageLink($product->link_rewrite, $productcomment_cover, 'home')}" height="{$homeSize.height}" width="{$homeSize.width}" alt="{$product->name|escape:html:'UTF-8'}" />
|
<div class="product clearfix">
|
||||||
<div class="product_desc">
|
<img src="{$link->getImageLink($product->link_rewrite, $productcomment_cover, 'home')}" height="{$homeSize.height}" width="{$homeSize.width}" alt="{$product->name|escape:html:'UTF-8'}" />
|
||||||
<p class="product_name"><strong>{$product->name}</strong></p>
|
<div class="product_desc">
|
||||||
{$product->description_short}
|
<p class="product_name"><strong>{$product->name}</strong></p>
|
||||||
</div>
|
{$product->description_short}
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="new_comment_form_content">
|
|
||||||
<p class="intro_form">{l s='Write your review' mod='productcomments'}</p>
|
|
||||||
{if $criterions|@count > 0}
|
|
||||||
<div class="grade_content clearfix">
|
|
||||||
{section loop=$criterions name=i start=0 step=1}
|
|
||||||
<span>
|
|
||||||
<input type="hidden" name="id_product_comment_criterion_{$smarty.section.i.iteration}" value="{$criterions[i].id_product_comment_criterion|intval}" />
|
|
||||||
{$criterions[i].name|escape:'html':'UTF-8'}:
|
|
||||||
</span>
|
|
||||||
<div class="star_content">
|
|
||||||
<input class="star" type="radio" name="{$smarty.section.i.iteration}_grade" id="{$smarty.section.i.iteration}_grade" value="1" />
|
|
||||||
<input class="star" type="radio" name="{$smarty.section.i.iteration}_grade" value="2" />
|
|
||||||
<input class="star" type="radio" name="{$smarty.section.i.iteration}_grade" value="3" checked="checked" />
|
|
||||||
<input class="star" type="radio" name="{$smarty.section.i.iteration}_grade" value="4" />
|
|
||||||
<input class="star" type="radio" name="{$smarty.section.i.iteration}_grade" value="5" />
|
|
||||||
</div>
|
</div>
|
||||||
{/section}
|
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
|
||||||
<div class="form_contenair">
|
<div class="new_comment_form_content">
|
||||||
<p class="text">
|
<h2>{l s='Write your review' mod='productcomments'}</h2>
|
||||||
<label for="comment_title">{l s='Title' mod='productcomments'} <sup>*</sup>:</label>
|
|
||||||
<input id="commentTitle" name="title" type="text" value=""/>
|
<div id="new_comment_form_error" class="error" style="display: none;">
|
||||||
</p>
|
<ul></ul>
|
||||||
<p class="textarea">
|
</div>
|
||||||
<label for="content">{l s='Comment' mod='productcomments'} <sup>*</sup>:</label>
|
|
||||||
<textarea id="commentContent" name="content"></textarea>
|
{if $criterions|@count > 0}
|
||||||
</p>
|
<ul id="criterions_list">
|
||||||
{if $allow_guests == true && $logged == 0}
|
{foreach from=$criterions item='criterion'}
|
||||||
<p class="text">
|
<li>
|
||||||
<label>{l s='Your name' mod='productcomments'} <sup>*</sup>:</label>
|
<label>{$criterion.name|escape:'html':'UTF-8'}:</label>
|
||||||
<input id="commentCustomerName" name="customer_name" type="text" value=""/>
|
<div class="star_content">
|
||||||
</p>
|
<input class="star" type="radio" name="criterion[{$criterion.id_product_comment_criterion|intval}]" value="1" />
|
||||||
|
<input class="star" type="radio" name="criterion[{$criterion.id_product_comment_criterion|intval}]" value="2" />
|
||||||
|
<input class="star" type="radio" name="criterion[{$criterion.id_product_comment_criterion|intval}]" value="3" checked="checked" />
|
||||||
|
<input class="star" type="radio" name="criterion[{$criterion.id_product_comment_criterion|intval}]" value="4" />
|
||||||
|
<input class="star" type="radio" name="criterion[{$criterion.id_product_comment_criterion|intval}]" value="5" />
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
</li>
|
||||||
|
{/foreach}
|
||||||
|
</ul>
|
||||||
{/if}
|
{/if}
|
||||||
<p class="submit">
|
|
||||||
<span class="txt_required">* {l s='Required fields' mod='productcomments'}</span>
|
<label for="comment_title">{l s='Title' mod='productcomments'}: <sup class="required">*</sup></label>
|
||||||
|
<input id="comment_title" name="title" type="text" value=""/>
|
||||||
|
|
||||||
|
<label for="content">{l s='Comment' mod='productcomments'}: <sup class="required">*</sup></label>
|
||||||
|
<textarea id="content" name="content"></textarea>
|
||||||
|
|
||||||
|
{if $allow_guests == true && $logged == 0}
|
||||||
|
<label>{l s='Your name' mod='productcomments'}: <sup class="required">*</sup></label>
|
||||||
|
<input id="commentCustomerName" name="customer_name" type="text" value=""/>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<div id="new_comment_form_footer">
|
||||||
<input id="id_product_comment_send" name="id_product" type="hidden" value='{$id_product_comment_form}'></input>
|
<input id="id_product_comment_send" name="id_product" type="hidden" value='{$id_product_comment_form}'></input>
|
||||||
<button id="submitNewMessage" name="submitMessage" type="submit">{l s='Send' mod='productcomments'}</button>
|
<p class="fl required"><sup>*</sup> {l s='Required fields' mod='productcomments'}</p>
|
||||||
{l s='or' mod='productcomments'} <a href="#" onclick="$.fancybox.close();">{l s='Cancel' mod='productcomments'}</a>
|
<p class="fr">
|
||||||
</p>
|
<button id="submitNewMessage" name="submitMessage" type="submit">{l s='Send' mod='productcomments'}</button>
|
||||||
|
{l s='or' mod='productcomments'} <a href="#" onclick="$.fancybox.close();">{l s='Cancel' mod='productcomments'}</a>
|
||||||
|
</p>
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- /end new_comment_form_content -->
|
</form><!-- /end new_comment_form_content -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="align_center">
|
<p class="align_center">
|
||||||
<a id="new_comment_tab_btn" href="#new_comment_form">{l s='Be the first to write your review' mod='productcomments'} !</a>
|
<a id="new_comment_tab_btn" class="open-comment-form" href="#new_comment_form">{l s='Be the first to write your review' mod='productcomments'} !</a>
|
||||||
</p>
|
</p>
|
||||||
{else}
|
{else}
|
||||||
<p class="align_center">{l s='No customer comments for the moment.' mod='productcomments'}</p>
|
<p class="align_center">{l s='No customer comments for the moment.' mod='productcomments'}</p>
|
||||||
{/if}
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,23 +2,18 @@
|
|||||||
|
|
||||||
global $_MODULE;
|
global $_MODULE;
|
||||||
$_MODULE = array();
|
$_MODULE = array();
|
||||||
|
$_MODULE['<{productcomments}prestashop>productcommentcriterion_a09ed6c60eb3213939cecb4c580813cd'] = 'Disponible pour le catalogue entier';
|
||||||
|
$_MODULE['<{productcomments}prestashop>productcommentcriterion_467366059d7d7c743a4d0971363a8d66'] = 'Restreint à certaines catégories';
|
||||||
|
$_MODULE['<{productcomments}prestashop>productcommentcriterion_772911becd336c843ab09a1d4b4f66c0'] = 'Restreint à certains produits';
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_fd4b5401d4d3c7d32d158bfc1e552f3b'] = 'Veuillez donner votre nom';
|
$_MODULE['<{productcomments}prestashop>productcomments-ajax_fd4b5401d4d3c7d32d158bfc1e552f3b'] = 'Veuillez donner votre nom';
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f88dc17737f7fdd4464b2eb922a8f133'] = 'Une erreur s\'est produite lors de l\'enregistrement de votre commentaire.';
|
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f88dc17737f7fdd4464b2eb922a8f133'] = 'Une erreur s\'est produite lors de l\'enregistrement de votre commentaire.';
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_7fa4a3510dafd0eac6435c19861b2bb7'] = 'Commentaire publié.';
|
$_MODULE['<{productcomments}prestashop>productcomments-ajax_7fa4a3510dafd0eac6435c19861b2bb7'] = 'Commentaire publié.';
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f8694a9aae2eb045920f613cfa7f1235'] = 'En attente de la validation de la modération.';
|
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f8694a9aae2eb045920f613cfa7f1235'] = 'En attente de la validation de la modération.';
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_6bf852d9850445291f5e9d4740ac7b50'] = 'Un texte de commentaire est nécessaire.';
|
$_MODULE['<{productcomments}prestashop>productcomments-ajax_6bf852d9850445291f5e9d4740ac7b50'] = 'Un texte de commentaire est nécessaire.';
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_8aafe254c3e8dceb6425591b322044f2'] = 'Vous devriez attendre %d secondes avant de publier un nouveau commentaire.';
|
$_MODULE['<{productcomments}prestashop>productcomments-ajax_8aafe254c3e8dceb6425591b322044f2'] = 'Vous devriez attendre %d secondes avant de publier un nouveau commentaire.';
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_3f3c57ad486f74745aef0a3bb5f3ad6c'] = 'Votre commentaire ne peut pas être publié. Veuillez remplir tous les champs requis.';
|
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7c3b0e9898b88deee7ea75aafd2e37e2'] = 'Note moyenne';
|
$_MODULE['<{productcomments}prestashop>productcomments-extra_7c3b0e9898b88deee7ea75aafd2e37e2'] = 'Note moyenne';
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_a71a0229e164fecdcde3c4e0f40473fa'] = 'Lire les avis utilisateurs';
|
$_MODULE['<{productcomments}prestashop>productcomments-extra_a71a0229e164fecdcde3c4e0f40473fa'] = 'Lire les avis utilisateurs';
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7966126831926ad29c528b239d69f855'] = 'Donnez votre avis';
|
$_MODULE['<{productcomments}prestashop>productcomments-extra_7966126831926ad29c528b239d69f855'] = 'Donnez votre avis';
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_b78a3223503896721cca1303f776159b'] = 'Titre';
|
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_0be8406951cdfda82f00f79328cf4efc'] = 'Commentaire';
|
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_221e705c06e231636fdbccfdd14f4d5c'] = 'Votre nom';
|
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_ea4788705e6873b424c65e91c2846b19'] = 'Annuler';
|
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'ou';
|
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_94966d90747b97d1f0f206c98a8b1ac3'] = 'Envoyer';
|
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_70397c4b252a5168c5ec003931cea215'] = 'Champs requis';
|
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments_b91c4e8b229a399a3bc911d352524a9b'] = 'Commentaires produits';
|
$_MODULE['<{productcomments}prestashop>productcomments_b91c4e8b229a399a3bc911d352524a9b'] = 'Commentaires produits';
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments_9918811c511f3481c085e46c07ab5da8'] = 'Permet aux client de commenter les produits.';
|
$_MODULE['<{productcomments}prestashop>productcomments_9918811c511f3481c085e46c07ab5da8'] = 'Permet aux client de commenter les produits.';
|
||||||
$_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'Configuration mise à jour';
|
$_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'Configuration mise à jour';
|
||||||
@@ -88,3 +83,12 @@ $_MODULE['<{productcomments}prestashop>products-comparison_8413c683b4b27cc3f4dbd
|
|||||||
$_MODULE['<{productcomments}prestashop>products-comparison_b1897515d548a960afe49ecf66a29021'] = 'Moyenne';
|
$_MODULE['<{productcomments}prestashop>products-comparison_b1897515d548a960afe49ecf66a29021'] = 'Moyenne';
|
||||||
$_MODULE['<{productcomments}prestashop>products-comparison_bc976f6c3405523cde61f63a7cbe224b'] = 'Voir les avis';
|
$_MODULE['<{productcomments}prestashop>products-comparison_bc976f6c3405523cde61f63a7cbe224b'] = 'Voir les avis';
|
||||||
$_MODULE['<{productcomments}prestashop>tab_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Commentaires';
|
$_MODULE['<{productcomments}prestashop>tab_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Commentaires';
|
||||||
|
$_MODULE['<{productcomments}prestashop>default_607d7adc590bb9a615b6fa5bc8a4f2f6'] = 'ID produit est incorrect';
|
||||||
|
$_MODULE['<{productcomments}prestashop>default_7b0bf23ae4079e07a3a4cb4d07e2caef'] = 'Le titre est incorrect';
|
||||||
|
$_MODULE['<{productcomments}prestashop>default_ddbd56de5feb78ef1aaf60401f8c472b'] = 'Le commentaire est incorrect';
|
||||||
|
$_MODULE['<{productcomments}prestashop>default_1b1030b6294e9096a7d7c40d83d61872'] = 'Le nom est incorrect';
|
||||||
|
$_MODULE['<{productcomments}prestashop>default_a95dff703b20b1e705210c39b3865bf0'] = 'Vous devez être connecter afin de poster un commentaire';
|
||||||
|
$_MODULE['<{productcomments}prestashop>default_a201fbadca94d310a1b62407cdc775d5'] = 'Vous devez donner une note';
|
||||||
|
$_MODULE['<{productcomments}prestashop>default_dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'Le produit n\'a pas été trouvé';
|
||||||
|
$_MODULE['<{productcomments}prestashop>default_6d28f2900adb9e500868166f6d04da92'] = 'Vous devez patienter';
|
||||||
|
$_MODULE['<{productcomments}prestashop>default_ba8d7ae5dcadfba739f28a777378f208'] = 'secondes avant de poster un nouveau commentaire';
|
||||||
|
|||||||
Reference in New Issue
Block a user