Replace module productcomments with qlohotelreview
@@ -54,7 +54,7 @@
|
||||
<module action="enable" name="qloblockcontact"/>
|
||||
<module action="enable" name="blocklanguages"/>
|
||||
<module action="enable" name="blockcurrencies"/>
|
||||
<module action="enable" name="productcomments"/>
|
||||
<module action="enable" name="qlohotelreview"/>
|
||||
<module action="enable" name="dashactivity"/>
|
||||
<module action="enable" name="dashtrends"/>
|
||||
<module action="enable" name="dashgoals"/>
|
||||
@@ -133,12 +133,14 @@
|
||||
<hook module="blockmyaccount" hook="Header" position="8"/>
|
||||
<hook module="blockmyaccount" hook="actionModuleRegisterHookAfter" position="1"/>
|
||||
<hook module="blockmyaccount" hook="actionModuleUnRegisterHookAfter" position="1"/>
|
||||
<hook module="productcomments" hook="Header" position="11"/>
|
||||
<hook module="productcomments" hook="displayRightColumnProduct" position="2"/>
|
||||
<hook module="productcomments" hook="displayProductTab" position="1"/>
|
||||
<hook module="productcomments" hook="displayProductTabContent" position="1"/>
|
||||
<hook module="productcomments" hook="displayProductComparison" position="1"/>
|
||||
<hook module="productcomments" hook="displayProductListReviews" position="1"/>
|
||||
<hook module="qlohotelreview" hook="actionFrontControllerSetMedia" position="2"/>
|
||||
<hook module="qlohotelreview" hook="displayProductTab" position="1"/>
|
||||
<hook module="qlohotelreview" hook="displayProductTabContent" position="1"/>
|
||||
<hook module="qlohotelreview" hook="displayFooterBefore" position="1"/>
|
||||
<hook module="qlohotelreview" hook="actionRoomBookingStatusUpdateAfter" position="1"/>
|
||||
<hook module="qlohotelreview" hook="displayBookingAction" position="1"/>
|
||||
<hook module="qlohotelreview" hook="displayBackOfficeHeader" position="2"/>
|
||||
<hook module="qlohotelreview" hook="displayAdminAfterHeader" position="1"/>
|
||||
<hook module="dashactivity" hook="actionAdminControllerSetMedia" position="2"/>
|
||||
<hook module="dashactivity" hook="dashboardZoneOne" position="1"/>
|
||||
<hook module="dashactivity" hook="dashboardData" position="1"/>
|
||||
|
||||
@@ -2111,7 +2111,7 @@ class AdminThemesControllerCore extends AdminController
|
||||
'mailalerts',
|
||||
'newsletter',
|
||||
'pagesnotfound',
|
||||
'productcomments',
|
||||
'qlohotelreview',
|
||||
'referralprogram',
|
||||
'sekeywords',
|
||||
'statsbestcategories',
|
||||
|
||||
@@ -233,7 +233,6 @@ class CategoryControllerCore extends FrontController
|
||||
|
||||
$adult = 0;
|
||||
$child = 0;
|
||||
$ratting = -1;
|
||||
$amenities = 0;
|
||||
$price = 0;
|
||||
|
||||
@@ -243,8 +242,6 @@ class CategoryControllerCore extends FrontController
|
||||
$adult = min($value);
|
||||
} elseif ($key == 'children') {
|
||||
$child = min($value);
|
||||
} elseif ($key == 'ratting') {
|
||||
$ratting = min($value);
|
||||
} elseif ($key == 'amenities') {
|
||||
$amenities = array();
|
||||
foreach ($value as $a_k => $a_v) {
|
||||
@@ -267,7 +264,7 @@ class CategoryControllerCore extends FrontController
|
||||
$id_guest = $this->context->cookie->id_guest;
|
||||
|
||||
$obj_booking_dtl = new HotelBookingDetail();
|
||||
$booking_data = $obj_booking_dtl->DataForFrontSearch($date_from, $date_to, $id_hotel, 0, 0, $adult, $child, $ratting, $amenities, $price, $id_cart, $id_guest);
|
||||
$booking_data = $obj_booking_dtl->DataForFrontSearch($date_from, $date_to, $id_hotel, 0, 0, $adult, $child, -1, $amenities, $price, $id_cart, $id_guest);
|
||||
// reset array keys from 0
|
||||
$booking_data['rm_data'] = array_values($booking_data['rm_data']);
|
||||
if ($sort_by && $sort_value) {
|
||||
@@ -279,11 +276,7 @@ class CategoryControllerCore extends FrontController
|
||||
$direction = SORT_DESC;
|
||||
}
|
||||
foreach ($booking_data['rm_data'] as $s_k => $s_v) {
|
||||
if ($sort_by == 1) {
|
||||
$indi_arr[$s_k] = $s_v['ratting'];
|
||||
} elseif ($sort_by == 2) {
|
||||
$indi_arr[$s_k] = $s_v['price'];
|
||||
}
|
||||
$indi_arr[$s_k] = $s_v['price'];
|
||||
}
|
||||
|
||||
array_multisort($indi_arr, $direction, $booking_data['rm_data']);
|
||||
|
||||
@@ -327,11 +327,11 @@ class ProductControllerCore extends FrontController
|
||||
if (Tools::getValue('error')) {
|
||||
$this->context->smarty->assign('error', Tools::getValue('error'));
|
||||
}
|
||||
if (Module::isInstalled('productcomments')) {
|
||||
if (Module::isEnabled('qlohotelreview')) {
|
||||
$this->context->smarty->assign(
|
||||
array(
|
||||
'num_reviews' => ProductComment::getCommentNumber($this->product->id),
|
||||
'ratting' => ProductComment::getAverageGrade($this->product->id)['grade'],
|
||||
'num_reviews' => QhrHotelReview::getReviewCountByIdHotel($hotel_id),
|
||||
'ratting' => QhrHotelReview::getAverageRatingByIdHotel($hotel_id),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -662,7 +662,7 @@ class InstallModelInstall extends InstallAbstractModel
|
||||
'qloblockcontact',
|
||||
'blockcurrencies',
|
||||
'blocklanguages',
|
||||
'productcomments',
|
||||
'qlohotelreview',
|
||||
'wkfooterlangcurrencyblock',
|
||||
'wkfooterpaymentinfoblockcontainer',
|
||||
'wkfooteraboutblock',
|
||||
|
||||
@@ -126,7 +126,6 @@ class Dashactivity extends Module
|
||||
'abandoned_cart' => round(rand(5, 50)),
|
||||
'products_out_of_stock' => round(rand(1, 10)),
|
||||
'new_messages' => round(rand(1, 10) * $days),
|
||||
'product_reviews' => round(rand(5, 50) * $days),
|
||||
'new_customers' => round(rand(1, 5) * $days),
|
||||
'online_visitor' => round($online_visitor),
|
||||
'active_shopping_cart' => round($online_visitor / 10),
|
||||
@@ -289,19 +288,6 @@ class Dashactivity extends Module
|
||||
);
|
||||
}
|
||||
|
||||
$product_reviews = 0;
|
||||
if (Module::isInstalled('productcomments')) {
|
||||
$product_reviews += Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
|
||||
SELECT COUNT(*)
|
||||
FROM `'._DB_PREFIX_.'product_comment` pc
|
||||
LEFT JOIN `'._DB_PREFIX_.'product` p ON (pc.id_product = p.id_product)
|
||||
'.Shop::addSqlAssociation('product', 'p').'
|
||||
WHERE pc.deleted = 0
|
||||
AND pc.`date_add` BETWEEN "'.pSQL($params['date_from']).'" AND "'.pSQL($params['date_to']).'"
|
||||
'.Shop::addSqlRestriction(Shop::SHARE_ORDER)
|
||||
);
|
||||
}
|
||||
|
||||
return array(
|
||||
'data_value' => array(
|
||||
'pending_orders' => (int)$pending_orders,
|
||||
@@ -309,7 +295,6 @@ class Dashactivity extends Module
|
||||
'abandoned_cart' => (int)$abandoned_cart,
|
||||
'products_out_of_stock' => (int)$products_out_of_stock,
|
||||
'new_messages' => (int)$new_messages,
|
||||
'product_reviews' => (int)$product_reviews,
|
||||
'new_customers' => (int)$new_customers,
|
||||
'online_visitor' => (int)$online_visitor,
|
||||
'active_shopping_cart' => (int)$active_shopping_cart,
|
||||
|
||||
@@ -849,9 +849,9 @@ class HotelBookingDetail extends ObjectModel
|
||||
*/
|
||||
public function DataForFrontSearch($date_from, $date_to, $id_hotel, $id_product = 0, $for_room_type = 0, $adult = 0, $children = 0, $ratting = -1, $amenities = 0, $price = 0, $id_cart = 0, $id_guest = 0)
|
||||
{
|
||||
if (Module::isInstalled('productcomments')) {
|
||||
require_once _PS_MODULE_DIR_.'productcomments/ProductComment.php';
|
||||
}
|
||||
// if (Module::isInstalled('productcomments')) {
|
||||
// require_once _PS_MODULE_DIR_.'productcomments/ProductComment.php';
|
||||
// }
|
||||
|
||||
$this->context = Context::getContext();
|
||||
|
||||
@@ -881,84 +881,86 @@ class HotelBookingDetail extends ObjectModel
|
||||
if (empty($value['data']['available'])) {
|
||||
unset($booking_data['rm_data'][$key]);
|
||||
} else {
|
||||
if (Module::isInstalled('productcomments')) {
|
||||
$prod_ratting = ProductComment::getAverageGrade($value['id_product'])['grade'];
|
||||
}
|
||||
if (empty($prod_ratting)) {
|
||||
$prod_ratting = 0;
|
||||
}
|
||||
$prod_ratting = 0;
|
||||
// if (Module::isInstalled('productcomments')) {
|
||||
// $prod_ratting = ProductComment::getAverageGrade($value['id_product'])['grade'];
|
||||
// }
|
||||
// if (empty($prod_ratting)) {
|
||||
// $prod_ratting = 0;
|
||||
// }
|
||||
|
||||
if ($prod_ratting < $ratting && $ratting != -1) {
|
||||
unset($booking_data['rm_data'][$key]);
|
||||
} else {
|
||||
$product = new Product($value['id_product'], false, $this->context->language->id);
|
||||
// if ($prod_ratting < $ratting && $ratting != -1) {
|
||||
// unset($booking_data['rm_data'][$key]);
|
||||
// } else
|
||||
// {
|
||||
$product = new Product($value['id_product'], false, $this->context->language->id);
|
||||
|
||||
$product_feature = $product->getFrontFeaturesStatic($this->context->language->id, $value['id_product']);
|
||||
$product_feature = $product->getFrontFeaturesStatic($this->context->language->id, $value['id_product']);
|
||||
|
||||
$prod_amen = array();
|
||||
if (!empty($amenities) && $amenities) {
|
||||
$prod_amen = $amenities;
|
||||
foreach ($product_feature as $a_key => $a_val) {
|
||||
if (($pa_key = array_search($a_val['id_feature'], $prod_amen)) !== false) {
|
||||
unset($prod_amen[$pa_key]);
|
||||
if (empty($prod_amen)) {
|
||||
break;
|
||||
}
|
||||
$prod_amen = array();
|
||||
if (!empty($amenities) && $amenities) {
|
||||
$prod_amen = $amenities;
|
||||
foreach ($product_feature as $a_key => $a_val) {
|
||||
if (($pa_key = array_search($a_val['id_feature'], $prod_amen)) !== false) {
|
||||
unset($prod_amen[$pa_key]);
|
||||
if (empty($prod_amen)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!empty($prod_amen)) {
|
||||
unset($booking_data['rm_data'][$key]);
|
||||
}
|
||||
}
|
||||
if (!empty($prod_amen)) {
|
||||
unset($booking_data['rm_data'][$key]);
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($prod_amen)) {
|
||||
$prod_price = Product::getPriceStatic($value['id_product'], self::useTax());
|
||||
$productPriceWithoutReduction = $product->getPriceWithoutReduct(!self::useTax());
|
||||
$productFeaturePrice = HotelRoomTypeFeaturePricing::getRoomTypeFeaturePricesPerDay($value['id_product'], $date_from, $date_to, self::useTax());
|
||||
if (empty($prod_amen)) {
|
||||
$prod_price = Product::getPriceStatic($value['id_product'], self::useTax());
|
||||
$productPriceWithoutReduction = $product->getPriceWithoutReduct(!self::useTax());
|
||||
$productFeaturePrice = HotelRoomTypeFeaturePricing::getRoomTypeFeaturePricesPerDay($value['id_product'], $date_from, $date_to, self::useTax());
|
||||
|
||||
if (empty($price) || ($price['from'] <= $prod_price && $price['to'] >= $prod_price)) {
|
||||
$cover_image_arr = $product->getCover($value['id_product']);
|
||||
if (empty($price) || ($price['from'] <= $prod_price && $price['to'] >= $prod_price)) {
|
||||
$cover_image_arr = $product->getCover($value['id_product']);
|
||||
|
||||
if (!empty($cover_image_arr)) {
|
||||
$cover_img = $this->context->link->getImageLink($product->link_rewrite, $product->id.'-'.$cover_image_arr['id_image'], 'home_default');
|
||||
} else {
|
||||
$cover_img = $this->context->link->getImageLink($product->link_rewrite, $this->context->language->iso_code.'-default', 'home_default');
|
||||
}
|
||||
|
||||
$room_left = count($booking_data['rm_data'][$key]['data']['available']);
|
||||
|
||||
$rm_dtl = $obj_rm_type->getRoomTypeInfoByIdProduct($value['id_product']);
|
||||
|
||||
$booking_data['rm_data'][$key]['name'] = $product->name;
|
||||
$booking_data['rm_data'][$key]['image'] = $cover_img;
|
||||
$booking_data['rm_data'][$key]['description'] = $product->description_short;
|
||||
$booking_data['rm_data'][$key]['feature'] = $product_feature;
|
||||
$booking_data['rm_data'][$key]['price'] = $prod_price;
|
||||
$booking_data['rm_data'][$key]['price_without_reduction'] = $productPriceWithoutReduction;
|
||||
$booking_data['rm_data'][$key]['feature_price'] = $productFeaturePrice;
|
||||
$booking_data['rm_data'][$key]['feature_price_diff'] = $productPriceWithoutReduction - $productFeaturePrice;
|
||||
|
||||
// if ($room_left <= (int)Configuration::get('WK_ROOM_LEFT_WARNING_NUMBER'))
|
||||
$booking_data['rm_data'][$key]['room_left'] = $room_left;
|
||||
|
||||
$booking_data['rm_data'][$key]['adult'] = $rm_dtl['adult'];
|
||||
$booking_data['rm_data'][$key]['children'] = $rm_dtl['children'];
|
||||
|
||||
$booking_data['rm_data'][$key]['ratting'] = $prod_ratting;
|
||||
if (Module::isInstalled('productcomments')) {
|
||||
$booking_data['rm_data'][$key]['num_review'] = ProductComment::getCommentNumber($value['id_product']);
|
||||
}
|
||||
|
||||
if (Configuration::get('PS_REWRITING_SETTINGS')) {
|
||||
$booking_data['rm_data'][$key]['product_link'] = $this->context->link->getProductLink($product).'?date_from='.$date_from.'&date_to='.$date_to;
|
||||
} else {
|
||||
$booking_data['rm_data'][$key]['product_link'] = $this->context->link->getProductLink($product).'&date_from='.$date_from.'&date_to='.$date_to;
|
||||
}
|
||||
if (!empty($cover_image_arr)) {
|
||||
$cover_img = $this->context->link->getImageLink($product->link_rewrite, $product->id.'-'.$cover_image_arr['id_image'], 'home_default');
|
||||
} else {
|
||||
unset($booking_data['rm_data'][$key]);
|
||||
$cover_img = $this->context->link->getImageLink($product->link_rewrite, $this->context->language->iso_code.'-default', 'home_default');
|
||||
}
|
||||
|
||||
$room_left = count($booking_data['rm_data'][$key]['data']['available']);
|
||||
|
||||
$rm_dtl = $obj_rm_type->getRoomTypeInfoByIdProduct($value['id_product']);
|
||||
|
||||
$booking_data['rm_data'][$key]['name'] = $product->name;
|
||||
$booking_data['rm_data'][$key]['image'] = $cover_img;
|
||||
$booking_data['rm_data'][$key]['description'] = $product->description_short;
|
||||
$booking_data['rm_data'][$key]['feature'] = $product_feature;
|
||||
$booking_data['rm_data'][$key]['price'] = $prod_price;
|
||||
$booking_data['rm_data'][$key]['price_without_reduction'] = $productPriceWithoutReduction;
|
||||
$booking_data['rm_data'][$key]['feature_price'] = $productFeaturePrice;
|
||||
$booking_data['rm_data'][$key]['feature_price_diff'] = $productPriceWithoutReduction - $productFeaturePrice;
|
||||
|
||||
// if ($room_left <= (int)Configuration::get('WK_ROOM_LEFT_WARNING_NUMBER'))
|
||||
$booking_data['rm_data'][$key]['room_left'] = $room_left;
|
||||
|
||||
$booking_data['rm_data'][$key]['adult'] = $rm_dtl['adult'];
|
||||
$booking_data['rm_data'][$key]['children'] = $rm_dtl['children'];
|
||||
|
||||
$booking_data['rm_data'][$key]['ratting'] = $prod_ratting;
|
||||
// if (Module::isInstalled('productcomments')) {
|
||||
// $booking_data['rm_data'][$key]['num_review'] = ProductComment::getCommentNumber($value['id_product']);
|
||||
// }
|
||||
|
||||
if (Configuration::get('PS_REWRITING_SETTINGS')) {
|
||||
$booking_data['rm_data'][$key]['product_link'] = $this->context->link->getProductLink($product).'?date_from='.$date_from.'&date_to='.$date_to;
|
||||
} else {
|
||||
$booking_data['rm_data'][$key]['product_link'] = $this->context->link->getProductLink($product).'&date_from='.$date_from.'&date_to='.$date_to;
|
||||
}
|
||||
} else {
|
||||
unset($booking_data['rm_data'][$key]);
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
-------------------------
|
||||
# V3.6.0 to V3.6.1
|
||||
-------------------------
|
||||
|
||||
## Improved/changed features:
|
||||
|
||||
* [CO] : [#244] Changed Tools::jsonEncode to json_encode
|
||||
|
||||
|
||||
-------------------------
|
||||
# V3.5.3 to V3.6.0
|
||||
-------------------------
|
||||
|
||||
## Improved/changed features:
|
||||
|
||||
[*] FO : [#185] Replaced star rating plugin with jquery Raty in Product Comments module
|
||||
|
||||
[*] CO : [#178] Text Changes
|
||||
|
||||
-------------------------
|
||||
# V3.5.2 to V3.5.3
|
||||
-------------------------
|
||||
|
||||
## Improved/changed features:
|
||||
|
||||
[+] CO : renderModerateLists(), renderCommentsList() are updated in productcomments.php for managing hotel wise permission management.
|
||||
|
||||
## Update Policy
|
||||
|
||||
- Mobule need only file update, can be updated only by UPLOADING new version on module
|
||||
|
||||
_____________________________________________________________________________________________
|
||||
u2014-04-17 11:40:33 +0200 Bug fix (PS 1.5): ps_version_compliancy removed
|
||||
2014-04-15 18:54:08 +0200 [*] hookDisplayLeftColumnProduct() added
|
||||
2014-04-09 18:28:59 +0200 Fix #PSCSX-1684, display correct date format
|
||||
2014-03-21 10:55:15 +0100 Initial commit
|
||||
@@ -1,454 +0,0 @@
|
||||
<?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
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
class ProductComment extends ObjectModel
|
||||
{
|
||||
public $id;
|
||||
|
||||
/** @var integer Product's id */
|
||||
public $id_product;
|
||||
|
||||
/** @var integer Customer's id */
|
||||
public $id_customer;
|
||||
|
||||
/** @var integer Guest's id */
|
||||
public $id_guest;
|
||||
|
||||
/** @var integer Customer name */
|
||||
public $customer_name;
|
||||
|
||||
/** @var string Title */
|
||||
public $title;
|
||||
|
||||
/** @var string Content */
|
||||
public $content;
|
||||
|
||||
/** @var integer Grade */
|
||||
public $grade;
|
||||
|
||||
/** @var boolean Validate */
|
||||
public $validate = 0;
|
||||
|
||||
public $deleted = 0;
|
||||
|
||||
/** @var string Object creation date */
|
||||
public $date_add;
|
||||
|
||||
/**
|
||||
* @see ObjectModel::$definition
|
||||
*/
|
||||
public static $definition = array(
|
||||
'table' => 'product_comment',
|
||||
'primary' => 'id_product_comment',
|
||||
'fields' => array(
|
||||
'id_product' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
|
||||
'id_customer' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
|
||||
'id_guest' => array('type' => self::TYPE_INT),
|
||||
'customer_name' => array('type' => self::TYPE_STRING),
|
||||
'title' => array('type' => self::TYPE_STRING),
|
||||
'content' => array('type' => self::TYPE_STRING, 'validate' => 'isMessage', 'size' => 65535, 'required' => true),
|
||||
'grade' => array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat'),
|
||||
'validate' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
|
||||
'deleted' => array('type' => self::TYPE_BOOL),
|
||||
'date_add' => array('type' => self::TYPE_DATE),
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Get comments by IdProduct
|
||||
*
|
||||
* @return array Comments
|
||||
*/
|
||||
public static function getByProduct($id_product, $p = 1, $n = null, $id_customer = null)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product)) {
|
||||
return false;
|
||||
}
|
||||
$validate = Configuration::get('PRODUCT_COMMENTS_MODERATE');
|
||||
$p = (int)$p;
|
||||
$n = (int)$n;
|
||||
if ($p <= 1) {
|
||||
$p = 1;
|
||||
}
|
||||
if ($n != null && $n <= 0) {
|
||||
$n = 5;
|
||||
}
|
||||
|
||||
$cache_id = 'ProductComment::getByProduct_'.(int)$id_product.'-'.(int)$p.'-'.(int)$n.'-'.(int)$id_customer.'-'.(bool)$validate;
|
||||
if (!Cache::isStored($cache_id)) {
|
||||
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
|
||||
SELECT pc.`id_product_comment`,
|
||||
(SELECT count(*) FROM `'._DB_PREFIX_.'product_comment_usefulness` pcu WHERE pcu.`id_product_comment` = pc.`id_product_comment` AND pcu.`usefulness` = 1) as total_useful,
|
||||
(SELECT count(*) FROM `'._DB_PREFIX_.'product_comment_usefulness` pcu WHERE pcu.`id_product_comment` = pc.`id_product_comment`) as total_advice, '.
|
||||
((int)$id_customer ? '(SELECT count(*) FROM `'._DB_PREFIX_.'product_comment_usefulness` pcuc WHERE pcuc.`id_product_comment` = pc.`id_product_comment` AND pcuc.id_customer = '.(int)$id_customer.') as customer_advice, ' : '').
|
||||
((int)$id_customer ? '(SELECT count(*) FROM `'._DB_PREFIX_.'product_comment_report` pcrc WHERE pcrc.`id_product_comment` = pc.`id_product_comment` AND pcrc.id_customer = '.(int)$id_customer.') as customer_report, ' : '').'
|
||||
IF(c.id_customer, CONCAT(c.`firstname`, \' \', LEFT(c.`lastname`, 1)), pc.customer_name) customer_name, pc.`content`, pc.`grade`, pc.`date_add`, pc.title
|
||||
FROM `'._DB_PREFIX_.'product_comment` pc
|
||||
LEFT JOIN `'._DB_PREFIX_.'customer` c ON c.`id_customer` = pc.`id_customer`
|
||||
WHERE pc.`id_product` = '.(int)($id_product).($validate == '1' ? ' AND pc.`validate` = 1' : '').'
|
||||
ORDER BY pc.`date_add` DESC
|
||||
'.($n ? 'LIMIT '.(int)(($p - 1) * $n).', '.(int)($n) : ''));
|
||||
Cache::store($cache_id, $result);
|
||||
}
|
||||
return Cache::retrieve($cache_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return customer's comment
|
||||
*
|
||||
* @return arrayComments
|
||||
*/
|
||||
public static function getByCustomer($id_product, $id_customer, $get_last = false, $id_guest = false)
|
||||
{
|
||||
$cache_id = 'ProductComment::getByCustomer_'.(int)$id_product.'-'.(int)$id_customer.'-'.(bool)$get_last.'-'.(int)$id_guest;
|
||||
if (!Cache::isStored($cache_id)) {
|
||||
$results = Db::getInstance()->executeS('
|
||||
SELECT *
|
||||
FROM `'._DB_PREFIX_.'product_comment` pc
|
||||
WHERE pc.`id_product` = '.(int)$id_product.'
|
||||
AND '.(!$id_guest ? 'pc.`id_customer` = '.(int)$id_customer : 'pc.`id_guest` = '.(int)$id_guest).'
|
||||
ORDER BY pc.`date_add` DESC '
|
||||
.($get_last ? 'LIMIT 1' : '')
|
||||
);
|
||||
|
||||
if ($get_last && count($results)) {
|
||||
$results = array_shift($results);
|
||||
}
|
||||
|
||||
Cache::store($cache_id, $results);
|
||||
}
|
||||
return Cache::retrieve($cache_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Grade By product
|
||||
*
|
||||
* @return array Grades
|
||||
*/
|
||||
public static function getGradeByProduct($id_product, $id_lang)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product) ||
|
||||
!Validate::isUnsignedId($id_lang)) {
|
||||
return false;
|
||||
}
|
||||
$validate = Configuration::get('PRODUCT_COMMENTS_MODERATE');
|
||||
|
||||
|
||||
return (Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
|
||||
SELECT pc.`id_product_comment`, pcg.`grade`, pccl.`name`, pcc.`id_product_comment_criterion`
|
||||
FROM `'._DB_PREFIX_.'product_comment` pc
|
||||
LEFT JOIN `'._DB_PREFIX_.'product_comment_grade` pcg ON (pcg.`id_product_comment` = pc.`id_product_comment`)
|
||||
LEFT JOIN `'._DB_PREFIX_.'product_comment_criterion` pcc ON (pcc.`id_product_comment_criterion` = pcg.`id_product_comment_criterion`)
|
||||
LEFT JOIN `'._DB_PREFIX_.'product_comment_criterion_lang` pccl ON (pccl.`id_product_comment_criterion` = pcg.`id_product_comment_criterion`)
|
||||
WHERE pc.`id_product` = '.(int)$id_product.'
|
||||
AND pccl.`id_lang` = '.(int)$id_lang.
|
||||
($validate == '1' ? ' AND pc.`validate` = 1' : '')));
|
||||
}
|
||||
|
||||
public static function getRatings($id_product)
|
||||
{
|
||||
$validate = Configuration::get('PRODUCT_COMMENTS_MODERATE');
|
||||
|
||||
$sql = 'SELECT (SUM(pc.`grade`) / COUNT(pc.`grade`)) AS avg,
|
||||
MIN(pc.`grade`) AS min,
|
||||
MAX(pc.`grade`) AS max
|
||||
FROM `'._DB_PREFIX_.'product_comment` pc
|
||||
WHERE pc.`id_product` = '.(int)$id_product.'
|
||||
AND pc.`deleted` = 0'.
|
||||
($validate == '1' ? ' AND pc.`validate` = 1' : '');
|
||||
|
||||
|
||||
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql);
|
||||
}
|
||||
|
||||
public static function getAverageGrade($id_product)
|
||||
{
|
||||
$validate = Configuration::get('PRODUCT_COMMENTS_MODERATE');
|
||||
|
||||
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
|
||||
SELECT (SUM(pc.`grade`) / COUNT(pc.`grade`)) AS grade
|
||||
FROM `'._DB_PREFIX_.'product_comment` pc
|
||||
WHERE pc.`id_product` = '.(int)$id_product.'
|
||||
AND pc.`deleted` = 0'.
|
||||
($validate == '1' ? ' AND pc.`validate` = 1' : ''));
|
||||
}
|
||||
|
||||
public static function getAveragesByProduct($id_product, $id_lang)
|
||||
{
|
||||
/* Get all grades */
|
||||
$grades = ProductComment::getGradeByProduct((int)$id_product, (int)$id_lang);
|
||||
$total = ProductComment::getGradedCommentNumber((int)$id_product);
|
||||
if (!count($grades) || (!$total)) {
|
||||
return array();
|
||||
}
|
||||
|
||||
/* Addition grades for each criterion */
|
||||
$criterionsGradeTotal = array();
|
||||
$count_grades = count($grades);
|
||||
for ($i = 0; $i < $count_grades; ++$i) {
|
||||
if (array_key_exists($grades[$i]['id_product_comment_criterion'], $criterionsGradeTotal) === false) {
|
||||
$criterionsGradeTotal[$grades[$i]['id_product_comment_criterion']] = (int)($grades[$i]['grade']);
|
||||
} else {
|
||||
$criterionsGradeTotal[$grades[$i]['id_product_comment_criterion']] += (int)($grades[$i]['grade']);
|
||||
}
|
||||
}
|
||||
|
||||
/* Finally compute the averages */
|
||||
$averages = array();
|
||||
foreach ($criterionsGradeTotal as $key => $criterionGradeTotal) {
|
||||
$averages[(int)($key)] = (int)($total) ? ((int)($criterionGradeTotal) / (int)($total)) : 0;
|
||||
}
|
||||
return $averages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return number of comments and average grade by products
|
||||
*
|
||||
* @return array Info
|
||||
*/
|
||||
public static function getCommentNumber($id_product)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product)) {
|
||||
return false;
|
||||
}
|
||||
$validate = (int)Configuration::get('PRODUCT_COMMENTS_MODERATE');
|
||||
$cache_id = 'ProductComment::getCommentNumber_'.(int)$id_product.'-'.$validate;
|
||||
if (!Cache::isStored($cache_id)) {
|
||||
$result = (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
|
||||
SELECT COUNT(`id_product_comment`) AS "nbr"
|
||||
FROM `'._DB_PREFIX_.'product_comment` pc
|
||||
WHERE `id_product` = '.(int)($id_product).($validate == '1' ? ' AND `validate` = 1' : ''));
|
||||
Cache::store($cache_id, $result);
|
||||
}
|
||||
return Cache::retrieve($cache_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return number of comments and average grade by products
|
||||
*
|
||||
* @return array Info
|
||||
*/
|
||||
public static function getGradedCommentNumber($id_product)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product)) {
|
||||
return false;
|
||||
}
|
||||
$validate = (int)Configuration::get('PRODUCT_COMMENTS_MODERATE');
|
||||
|
||||
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
|
||||
SELECT COUNT(pc.`id_product`) AS nbr
|
||||
FROM `'._DB_PREFIX_.'product_comment` pc
|
||||
WHERE `id_product` = '.(int)($id_product).($validate == '1' ? ' AND `validate` = 1' : '').'
|
||||
AND `grade` > 0');
|
||||
return (int)($result['nbr']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get comments by Validation
|
||||
*
|
||||
* @return array Comments
|
||||
*/
|
||||
public static function getByValidate($validate = '0', $deleted = false)
|
||||
{
|
||||
$sql = '
|
||||
SELECT pc.`id_product_comment`, pc.`id_product`, IF(c.id_customer, CONCAT(c.`firstname`, \' \', c.`lastname`), pc.customer_name) customer_name, pc.`title`, pc.`content`, pc.`grade`, pc.`date_add`, pl.`name`
|
||||
FROM `'._DB_PREFIX_.'product_comment` pc
|
||||
LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = pc.`id_customer`)
|
||||
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (pl.`id_product` = pc.`id_product` AND pl.`id_lang` = '.(int)Context::getContext()->language->id.Shop::addSqlRestrictionOnLang('pl').')
|
||||
WHERE pc.`validate` = '.(int)$validate;
|
||||
|
||||
$sql .= ' ORDER BY pc.`date_add` DESC';
|
||||
|
||||
return (Db::getInstance()->executeS($sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all comments
|
||||
*
|
||||
* @return array Comments
|
||||
*/
|
||||
public static function getAll()
|
||||
{
|
||||
return (Db::getInstance()->executeS('
|
||||
SELECT pc.`id_product_comment`, pc.`id_product`, IF(c.id_customer, CONCAT(c.`firstname`, \' \', c.`lastname`), pc.customer_name) customer_name, pc.`content`, pc.`grade`, pc.`date_add`, pl.`name`
|
||||
FROM `'._DB_PREFIX_.'product_comment` pc
|
||||
LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = pc.`id_customer`)
|
||||
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (pl.`id_product` = pc.`id_product` AND pl.`id_lang` = '.(int)Context::getContext()->language->id.Shop::addSqlRestrictionOnLang('pl').')
|
||||
ORDER BY pc.`date_add` DESC'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate a comment
|
||||
*
|
||||
* @return boolean succeed
|
||||
*/
|
||||
public function validate($validate = '1')
|
||||
{
|
||||
if (!Validate::isUnsignedId($this->id)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$success = (Db::getInstance()->execute('
|
||||
UPDATE `'._DB_PREFIX_.'product_comment` SET
|
||||
`validate` = '.(int)$validate.'
|
||||
WHERE `id_product_comment` = '.(int)$this->id));
|
||||
|
||||
Hook::exec('actionObjectProductCommentValidateAfter', array('object' => $this));
|
||||
return $success;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a comment, grade and report data
|
||||
*
|
||||
* @return boolean succeed
|
||||
*/
|
||||
public function delete()
|
||||
{
|
||||
parent::delete();
|
||||
ProductComment::deleteGrades($this->id);
|
||||
ProductComment::deleteReports($this->id);
|
||||
ProductComment::deleteUsefulness($this->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete Grades
|
||||
*
|
||||
* @return boolean succeed
|
||||
*/
|
||||
public static function deleteGrades($id_product_comment)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product_comment)) {
|
||||
return false;
|
||||
}
|
||||
return (Db::getInstance()->execute('
|
||||
DELETE FROM `'._DB_PREFIX_.'product_comment_grade`
|
||||
WHERE `id_product_comment` = '.(int)$id_product_comment));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete Reports
|
||||
*
|
||||
* @return boolean succeed
|
||||
*/
|
||||
public static function deleteReports($id_product_comment)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product_comment)) {
|
||||
return false;
|
||||
}
|
||||
return (Db::getInstance()->execute('
|
||||
DELETE FROM `'._DB_PREFIX_.'product_comment_report`
|
||||
WHERE `id_product_comment` = '.(int)$id_product_comment));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete usefulness
|
||||
*
|
||||
* @return boolean succeed
|
||||
*/
|
||||
public static function deleteUsefulness($id_product_comment)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product_comment)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (Db::getInstance()->execute('
|
||||
DELETE FROM `'._DB_PREFIX_.'product_comment_usefulness`
|
||||
WHERE `id_product_comment` = '.(int)$id_product_comment));
|
||||
}
|
||||
|
||||
/**
|
||||
* Report comment
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public static function reportComment($id_product_comment, $id_customer)
|
||||
{
|
||||
return (Db::getInstance()->execute('
|
||||
INSERT INTO `'._DB_PREFIX_.'product_comment_report` (`id_product_comment`, `id_customer`)
|
||||
VALUES ('.(int)$id_product_comment.', '.(int)$id_customer.')'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Comment already report
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public static function isAlreadyReport($id_product_comment, $id_customer)
|
||||
{
|
||||
return (bool)Db::getInstance()->getValue('
|
||||
SELECT COUNT(*)
|
||||
FROM `'._DB_PREFIX_.'product_comment_report`
|
||||
WHERE `id_customer` = '.(int)$id_customer.'
|
||||
AND `id_product_comment` = '.(int)$id_product_comment);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set comment usefulness
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public static function setCommentUsefulness($id_product_comment, $usefulness, $id_customer)
|
||||
{
|
||||
return (Db::getInstance()->execute('
|
||||
INSERT INTO `'._DB_PREFIX_.'product_comment_usefulness` (`id_product_comment`, `usefulness`, `id_customer`)
|
||||
VALUES ('.(int)$id_product_comment.', '.(int)$usefulness.', '.(int)$id_customer.')'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Usefulness already set
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public static function isAlreadyUsefulness($id_product_comment, $id_customer)
|
||||
{
|
||||
return (bool)Db::getInstance()->getValue('
|
||||
SELECT COUNT(*)
|
||||
FROM `'._DB_PREFIX_.'product_comment_usefulness`
|
||||
WHERE `id_customer` = '.(int)$id_customer.'
|
||||
AND `id_product_comment` = '.(int)$id_product_comment);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get reported comments
|
||||
*
|
||||
* @return array Comments
|
||||
*/
|
||||
public static function getReportedComments()
|
||||
{
|
||||
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
|
||||
SELECT DISTINCT(pc.`id_product_comment`), pc.`id_product`, IF(c.id_customer, CONCAT(c.`firstname`, \' \', c.`lastname`), pc.customer_name) customer_name, pc.`content`, pc.`grade`, pc.`date_add`, pl.`name`, pc.`title`
|
||||
FROM `'._DB_PREFIX_.'product_comment_report` pcr
|
||||
LEFT JOIN `'._DB_PREFIX_.'product_comment` pc
|
||||
ON pcr.id_product_comment = pc.id_product_comment
|
||||
LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = pc.`id_customer`)
|
||||
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (pl.`id_product` = pc.`id_product` AND pl.`id_lang` = '.(int)Context::getContext()->language->id.' AND pl.`id_lang` = '.(int)Context::getContext()->language->id.Shop::addSqlRestrictionOnLang('pl').')
|
||||
ORDER BY pc.`date_add` DESC');
|
||||
}
|
||||
};
|
||||
@@ -1,266 +0,0 @@
|
||||
<?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
|
||||
*/
|
||||
|
||||
class ProductCommentCriterion extends ObjectModel
|
||||
{
|
||||
public $id;
|
||||
public $id_product_comment_criterion_type;
|
||||
public $name;
|
||||
public $active = true;
|
||||
|
||||
/**
|
||||
* @see ObjectModel::$definition
|
||||
*/
|
||||
public static $definition = array(
|
||||
'table' => 'product_comment_criterion',
|
||||
'primary' => 'id_product_comment_criterion',
|
||||
'multilang' => true,
|
||||
'fields' => array(
|
||||
'id_product_comment_criterion_type' => array('type' => self::TYPE_INT),
|
||||
'active' => array('type' => self::TYPE_BOOL),
|
||||
// Lang fields
|
||||
'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 128),
|
||||
)
|
||||
);
|
||||
|
||||
public function delete()
|
||||
{
|
||||
if (!parent::delete())
|
||||
return false;
|
||||
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))
|
||||
return false;
|
||||
}
|
||||
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))
|
||||
return false;
|
||||
}
|
||||
|
||||
return Db::getInstance()->execute('
|
||||
DELETE FROM `'._DB_PREFIX_.'product_comment_grade`
|
||||
WHERE `id_product_comment_criterion` = '.(int)$this->id);
|
||||
}
|
||||
|
||||
public function update($nullValues = false)
|
||||
{
|
||||
$previousUpdate = new self((int)$this->id);
|
||||
if (!parent::update($nullValues))
|
||||
return false;
|
||||
if ($previousUpdate->id_product_comment_criterion_type != $this->id_product_comment_criterion_type)
|
||||
{
|
||||
if ($previousUpdate->id_product_comment_criterion_type == 2)
|
||||
return Db::getInstance()->execute('
|
||||
DELETE FROM '._DB_PREFIX_.'product_comment_criterion_category
|
||||
WHERE id_product_comment_criterion = '.(int)$previousUpdate->id);
|
||||
elseif ($previousUpdate->id_product_comment_criterion_type == 3)
|
||||
return Db::getInstance()->execute('
|
||||
DELETE FROM '._DB_PREFIX_.'product_comment_criterion_product
|
||||
WHERE id_product_comment_criterion = '.(int)$previousUpdate->id);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Link a Comment Criterion to a product
|
||||
*
|
||||
* @return boolean succeed
|
||||
*/
|
||||
public function addProduct($id_product)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product))
|
||||
die(Tools::displayError());
|
||||
return Db::getInstance()->execute('
|
||||
INSERT INTO `'._DB_PREFIX_.'product_comment_criterion_product` (`id_product_comment_criterion`, `id_product`)
|
||||
VALUES('.(int)$this->id.','.(int)$id_product.')
|
||||
');
|
||||
}
|
||||
|
||||
/**
|
||||
* Link a Comment Criterion to a category
|
||||
*
|
||||
* @return boolean succeed
|
||||
*/
|
||||
public function addCategory($id_category)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_category))
|
||||
die(Tools::displayError());
|
||||
return Db::getInstance()->execute('
|
||||
INSERT INTO `'._DB_PREFIX_.'product_comment_criterion_category` (`id_product_comment_criterion`, `id_category`)
|
||||
VALUES('.(int)$this->id.','.(int)$id_category.')
|
||||
');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add grade to a criterion
|
||||
*
|
||||
* @return boolean succeed
|
||||
*/
|
||||
public function addGrade($id_product_comment, $grade)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product_comment))
|
||||
die(Tools::displayError());
|
||||
if ($grade < 0)
|
||||
$grade = 0;
|
||||
elseif ($grade > 10)
|
||||
$grade = 10;
|
||||
return (Db::getInstance()->execute('
|
||||
INSERT INTO `'._DB_PREFIX_.'product_comment_grade`
|
||||
(`id_product_comment`, `id_product_comment_criterion`, `grade`) VALUES(
|
||||
'.(int)($id_product_comment).',
|
||||
'.(int)$this->id.',
|
||||
'.(int)($grade).')'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get criterion by Product
|
||||
*
|
||||
* @return array Criterion
|
||||
*/
|
||||
public static function getByProduct($id_product, $id_lang)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product) ||
|
||||
!Validate::isUnsignedId($id_lang))
|
||||
die(Tools::displayError());
|
||||
$alias = 'p';
|
||||
$table = '';
|
||||
// check if version > 1.5 to add shop association
|
||||
if (version_compare(_PS_VERSION_, '1.5', '>'))
|
||||
{
|
||||
$table = '_shop';
|
||||
$alias = 'ps';
|
||||
}
|
||||
|
||||
$cache_id = 'ProductCommentCriterion::getByProduct_'.(int)$id_product.'-'.(int)$id_lang;
|
||||
if (!Cache::isStored($cache_id))
|
||||
{
|
||||
$result = Db::getInstance()->executeS('
|
||||
SELECT pcc.`id_product_comment_criterion`, pccl.`name`
|
||||
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_product` pccp
|
||||
ON (pcc.`id_product_comment_criterion` = pccp.`id_product_comment_criterion` AND pccp.`id_product` = '.(int)$id_product.')
|
||||
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'.$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
|
||||
');
|
||||
Cache::store($cache_id, $result);
|
||||
}
|
||||
return Cache::retrieve($cache_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Criterions
|
||||
*
|
||||
* @return array Criterions
|
||||
*/
|
||||
public static function getCriterions($id_lang, $type = false, $active = false)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_lang))
|
||||
die(Tools::displayError());
|
||||
|
||||
$sql = '
|
||||
SELECT pcc.`id_product_comment_criterion`, pcc.id_product_comment_criterion_type, pccl.`name`, pcc.active
|
||||
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)
|
||||
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';
|
||||
$criterions = Db::getInstance()->executeS($sql);
|
||||
|
||||
$types = self::getTypes();
|
||||
foreach ($criterions as $key => $data)
|
||||
$criterions[$key]['type_name'] = $types[$data['id_product_comment_criterion_type']];
|
||||
|
||||
return $criterions;
|
||||
}
|
||||
|
||||
public function getProducts()
|
||||
{
|
||||
$res = Db::getInstance()->executeS('
|
||||
SELECT pccp.id_product, pccp.id_product_comment_criterion
|
||||
FROM `'._DB_PREFIX_.'product_comment_criterion_product` pccp
|
||||
WHERE pccp.id_product_comment_criterion = '.(int)$this->id);
|
||||
$products = array();
|
||||
if ($res)
|
||||
foreach ($res AS $row)
|
||||
$products[] = (int)$row['id_product'];
|
||||
return $products;
|
||||
}
|
||||
|
||||
public function getCategories()
|
||||
{
|
||||
$res = Db::getInstance()->executeS('
|
||||
SELECT pccc.id_category, pccc.id_product_comment_criterion
|
||||
FROM `'._DB_PREFIX_.'product_comment_criterion_category` pccc
|
||||
WHERE pccc.id_product_comment_criterion = '.(int)$this->id);
|
||||
$criterions = array();
|
||||
if ($res)
|
||||
foreach ($res AS $row)
|
||||
$criterions[] = (int)$row['id_category'];
|
||||
return $criterions;
|
||||
}
|
||||
|
||||
public function deleteCategories()
|
||||
{
|
||||
return Db::getInstance()->execute('
|
||||
DELETE FROM `'._DB_PREFIX_.'product_comment_criterion_category`
|
||||
WHERE `id_product_comment_criterion` = '.(int)$this->id);
|
||||
}
|
||||
|
||||
public function deleteProducts()
|
||||
{
|
||||
return Db::getInstance()->execute('
|
||||
DELETE FROM `'._DB_PREFIX_.'product_comment_criterion_product`
|
||||
WHERE `id_product_comment_criterion` = '.(int)$this->id);
|
||||
}
|
||||
|
||||
public static function getTypes()
|
||||
{
|
||||
// Instance of module class for translations
|
||||
$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')
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,174 +0,0 @@
|
||||
<?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
|
||||
*/
|
||||
|
||||
class ProductCommentCriterion
|
||||
{
|
||||
/**
|
||||
* Add a Comment Criterion
|
||||
*
|
||||
* @return boolean succeed
|
||||
*/
|
||||
public static function add($id_lang, $name)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_lang) ||
|
||||
!Validate::isMessage($name))
|
||||
die(Tools::displayError());
|
||||
return (Db::getInstance()->execute('
|
||||
INSERT INTO `'._DB_PREFIX_.'product_comment_criterion`
|
||||
(`id_lang`, `name`) VALUES(
|
||||
'.(int)($id_lang).',
|
||||
\''.pSQL($name).'\')'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Link a Comment Criterion to a product
|
||||
*
|
||||
* @return boolean succeed
|
||||
*/
|
||||
public static function addToProduct($id_product_comment_criterion, $id_product)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product_comment_criterion) ||
|
||||
!Validate::isUnsignedId($id_product))
|
||||
die(Tools::displayError());
|
||||
return (Db::getInstance()->execute('
|
||||
INSERT INTO `'._DB_PREFIX_.'product_comment_criterion_product`
|
||||
(`id_product_comment_criterion`, `id_product`) VALUES(
|
||||
'.(int)($id_product_comment_criterion).',
|
||||
'.(int)($id_product).')'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Add grade to a criterion
|
||||
*
|
||||
* @return boolean succeed
|
||||
*/
|
||||
public static function addGrade($id_product_comment, $id_product_comment_criterion, $grade)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product_comment) ||
|
||||
!Validate::isUnsignedId($id_product_comment_criterion))
|
||||
die(Tools::displayError());
|
||||
if ($grade < 0)
|
||||
$grade = 0;
|
||||
else if ($grade > 10)
|
||||
$grade = 10;
|
||||
return (Db::getInstance()->execute('
|
||||
INSERT INTO `'._DB_PREFIX_.'product_comment_grade`
|
||||
(`id_product_comment`, `id_product_comment_criterion`, `grade`) VALUES(
|
||||
'.(int)($id_product_comment).',
|
||||
'.(int)($id_product_comment_criterion).',
|
||||
'.(int)($grade).')'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update criterion
|
||||
*
|
||||
* @return boolean succeed
|
||||
*/
|
||||
public static function update($id_product_comment_criterion, $id_lang, $name)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product_comment_criterion) ||
|
||||
!Validate::isUnsignedId($id_lang) ||
|
||||
!Validate::isMessage($name))
|
||||
die(Tools::displayError());
|
||||
return (Db::getInstance()->execute('
|
||||
UPDATE `'._DB_PREFIX_.'product_comment_criterion` SET
|
||||
`name` = \''.pSQL($name).'\'
|
||||
WHERE `id_product_comment_criterion` = '.(int)($id_product_comment_criterion).' AND
|
||||
`id_lang` = '.(int)($id_lang)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get criterion by Product
|
||||
*
|
||||
* @return array Criterion
|
||||
*/
|
||||
public static function getByProduct($id_product, $id_lang)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product) ||
|
||||
!Validate::isUnsignedId($id_lang))
|
||||
die(Tools::displayError());
|
||||
return (Db::getInstance()->executeS('
|
||||
SELECT pcc.`id_product_comment_criterion`, pcc.`name`
|
||||
FROM `'._DB_PREFIX_.'product_comment_criterion` pcc
|
||||
INNER JOIN `'._DB_PREFIX_.'product_comment_criterion_product` pccp ON pcc.`id_product_comment_criterion` = pccp.`id_product_comment_criterion`
|
||||
WHERE pccp.`id_product` = '.(int)($id_product).' AND
|
||||
pcc.`id_lang` = '.(int)($id_lang)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Criterions
|
||||
*
|
||||
* @return array Criterions
|
||||
*/
|
||||
public static function get($id_lang)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_lang))
|
||||
die(Tools::displayError());
|
||||
return (Db::getInstance()->executeS('
|
||||
SELECT pcc.`id_product_comment_criterion`, pcc.`name`
|
||||
FROM `'._DB_PREFIX_.'product_comment_criterion` pcc
|
||||
WHERE pcc.`id_lang` = '.(int)($id_lang).'
|
||||
ORDER BY pcc.`name` ASC'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete product criterion by product
|
||||
*
|
||||
* @return boolean succeed
|
||||
*/
|
||||
public static function deleteByProduct($id_product)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product))
|
||||
die(Tools::displayError());
|
||||
return (Db::getInstance()->execute('
|
||||
DELETE FROM `'._DB_PREFIX_.'product_comment_criterion_product`
|
||||
WHERE `id_product` = '.(int)($id_product)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete all reference of a criterion
|
||||
*
|
||||
* @return boolean succeed
|
||||
*/
|
||||
public static function delete($id_product_comment_criterion)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_product_comment_criterion))
|
||||
die(Tools::displayError());
|
||||
$result = Db::getInstance()->execute('
|
||||
DELETE FROM `'._DB_PREFIX_.'product_comment_grade`
|
||||
WHERE `id_product_comment_criterion` = '.(int)($id_product_comment_criterion));
|
||||
if ($result === false)
|
||||
return ($result);
|
||||
$result = Db::getInstance()->execute('
|
||||
DELETE FROM `'._DB_PREFIX_.'product_comment_criterion_product`
|
||||
WHERE `id_product_comment_criterion` = '.(int)($id_product_comment_criterion));
|
||||
if ($result === false)
|
||||
return ($result);
|
||||
return (Db::getInstance()->execute('
|
||||
DELETE FROM `'._DB_PREFIX_.'product_comment_criterion`
|
||||
WHERE `id_product_comment_criterion` = '.(int)($id_product_comment_criterion)));
|
||||
}
|
||||
};
|
||||
@@ -1,37 +0,0 @@
|
||||
# Product Comments
|
||||
|
||||
## About
|
||||
|
||||
Allows users to post reviews and rate products on specific criteria.
|
||||
|
||||
## Contributing
|
||||
|
||||
PrestaShop modules are open-source extensions to the PrestaShop e-commerce solution. Everyone is welcome and even encouraged to contribute with their own improvements.
|
||||
|
||||
### Requirements
|
||||
|
||||
Contributors **must** follow the following rules:
|
||||
|
||||
* **Make your Pull Request on the "dev" branch**, NOT the "master" branch.
|
||||
* Do not update the module's version number.
|
||||
* Follow [the coding standards][1].
|
||||
|
||||
### Process in details
|
||||
|
||||
Contributors wishing to edit a module's files should follow the following process:
|
||||
|
||||
1. Create your GitHub account, if you do not have one already.
|
||||
2. Fork the productcomments project to your GitHub account.
|
||||
3. Clone your fork to your local machine in the ```/modules``` directory of your PrestaShop installation.
|
||||
4. Create a branch in your local clone of the module for your changes.
|
||||
5. Change the files in your branch. Be sure to follow [the coding standards][1]!
|
||||
6. Push your changed branch to your fork in your GitHub account.
|
||||
7. Create a pull request for your changes **on the _'dev'_ branch** of the module's project. Be sure to follow [the commit message norm][2] in your pull request. If you need help to make a pull request, read the [Github help page about creating pull requests][3].
|
||||
8. Wait for one of the core developers either to include your change in the codebase, or to comment on possible improvements you should make to your code.
|
||||
|
||||
That's it: you have contributed to this open-source project! Congratulations!
|
||||
|
||||
[1]: http://doc.prestashop.com/display/PS16/Coding+Standards
|
||||
[2]: http://doc.prestashop.com/display/PS16/How+to+write+a+commit+message
|
||||
[3]: https://help.github.com/articles/using-pull-requests
|
||||
|
||||
@@ -1,131 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
class ProductCommentsDb
|
||||
{
|
||||
public function getModuleSql()
|
||||
{
|
||||
return array(
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."product_comment` (
|
||||
`id_product_comment` int(10) unsigned NOT NULL auto_increment,
|
||||
`id_product` int(10) unsigned NOT NULL,
|
||||
`id_customer` int(10) unsigned NOT NULL,
|
||||
`id_guest` int(10) unsigned NULL,
|
||||
`title` varchar(64) NULL,
|
||||
`content` text NOT NULL,
|
||||
`customer_name` varchar(64) NULL,
|
||||
`grade` float unsigned NOT NULL,
|
||||
`validate` tinyint(1) NOT NULL,
|
||||
`deleted` tinyint(1) NOT NULL,
|
||||
`date_add` datetime NOT NULL,
|
||||
PRIMARY KEY (`id_product_comment`),
|
||||
KEY `id_product` (`id_product`),
|
||||
KEY `id_customer` (`id_customer`),
|
||||
KEY `id_guest` (`id_guest`)
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8;",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."product_comment_criterion` (
|
||||
`id_product_comment_criterion` int(10) unsigned NOT NULL auto_increment,
|
||||
`id_product_comment_criterion_type` tinyint(1) NOT NULL,
|
||||
`active` tinyint(1) NOT NULL,
|
||||
PRIMARY KEY (`id_product_comment_criterion`)
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8;",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."product_comment_criterion_product` (
|
||||
`id_product` int(10) unsigned NOT NULL,
|
||||
`id_product_comment_criterion` int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY(`id_product`, `id_product_comment_criterion`),
|
||||
KEY `id_product_comment_criterion` (`id_product_comment_criterion`)
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8;",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."product_comment_criterion_lang` (
|
||||
`id_product_comment_criterion` INT(11) UNSIGNED NOT NULL ,
|
||||
`id_lang` INT(11) UNSIGNED NOT NULL ,
|
||||
`name` VARCHAR(64) NOT NULL ,
|
||||
PRIMARY KEY ( `id_product_comment_criterion` , `id_lang` )
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8;",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."product_comment_criterion_category` (
|
||||
`id_product_comment_criterion` int(10) unsigned NOT NULL,
|
||||
`id_category` int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY(`id_product_comment_criterion`, `id_category`),
|
||||
KEY `id_category` (`id_category`)
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8;",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."product_comment_grade` (
|
||||
`id_product_comment` int(10) unsigned NOT NULL,
|
||||
`id_product_comment_criterion` int(10) unsigned NOT NULL,
|
||||
`grade` int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id_product_comment`, `id_product_comment_criterion`),
|
||||
KEY `id_product_comment_criterion` (`id_product_comment_criterion`)
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8;",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."product_comment_usefulness` (
|
||||
`id_product_comment` int(10) unsigned NOT NULL,
|
||||
`id_customer` int(10) unsigned NOT NULL,
|
||||
`usefulness` tinyint(1) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id_product_comment`, `id_customer`)
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8;",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."product_comment_report` (
|
||||
`id_product_comment` int(10) unsigned NOT NULL,
|
||||
`id_customer` int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id_product_comment`, `id_customer`)
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8;",
|
||||
|
||||
"INSERT IGNORE INTO `"._DB_PREFIX_."product_comment_criterion` VALUES ('1', '1', '1');",
|
||||
|
||||
"INSERT IGNORE INTO `"._DB_PREFIX_."product_comment_criterion_lang` (`id_product_comment_criterion`, `id_lang`, `name`)
|
||||
(
|
||||
SELECT '1', l.`id_lang`, 'Quality'
|
||||
FROM `"._DB_PREFIX_."lang` l
|
||||
);",
|
||||
);
|
||||
}
|
||||
|
||||
public function createTables()
|
||||
{
|
||||
if ($sql = $this->getModuleSql()) {
|
||||
foreach ($sql as $query) {
|
||||
if ($query) {
|
||||
if (!Db::getInstance()->execute(trim($query))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function dropTables()
|
||||
{
|
||||
return Db::getInstance()->execute(
|
||||
'DROP TABLE IF EXISTS
|
||||
`'._DB_PREFIX_.'product_comment`,
|
||||
`'._DB_PREFIX_.'product_comment_criterion`,
|
||||
`'._DB_PREFIX_.'product_comment_criterion_product`,
|
||||
`'._DB_PREFIX_.'product_comment_criterion_lang`,
|
||||
`'._DB_PREFIX_.'product_comment_criterion_category`,
|
||||
`'._DB_PREFIX_.'product_comment_grade`,
|
||||
`'._DB_PREFIX_.'product_comment_usefulness`,
|
||||
`'._DB_PREFIX_.'product_comment_report`'
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"name": "prestashop/productcomments",
|
||||
"description": "PrestaShop module productcomments",
|
||||
"homepage": "https://github.com/PrestaShop/productcomments",
|
||||
"license": "AFL - Academic Free License (AFL 3.0)",
|
||||
"authors": [
|
||||
{
|
||||
"name": "PrestaShop SA",
|
||||
"email": "contact@prestashop.com"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.2"
|
||||
},
|
||||
"config": {
|
||||
"preferred-install": "dist"
|
||||
},
|
||||
"type": "prestashop-module"
|
||||
}
|
||||
@@ -1,180 +0,0 @@
|
||||
<?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
|
||||
*/
|
||||
|
||||
// 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('Product ID is incorrect', 'default');
|
||||
if (!Tools::getValue('title')) {
|
||||
$errors[] = $module_instance->l('Please provide your review title', 'default');
|
||||
} elseif(!Validate::isGenericName(Tools::getValue('title'))) {
|
||||
$errors[] = $module_instance->l('Review title is incorrect', 'default');
|
||||
}
|
||||
if (!Tools::getValue('content')) {
|
||||
$errors[] = $module_instance->l('Please provide the description', 'default');
|
||||
} elseif(!Validate::isMessage(Tools::getValue('content'))) {
|
||||
$errors[] = $module_instance->l('Review description is invalid', 'default');
|
||||
}
|
||||
if (!$id_customer && (!Tools::isSubmit('customer_name') || !Tools::getValue('customer_name'))) {
|
||||
$errors[] = $module_instance->l('Customer name is required', 'default');
|
||||
} elseif(!Validate::isGenericName(Tools::getValue('customer_name'))) {
|
||||
$errors[] = $module_instance->l('Customer name is invalid', 'default');
|
||||
}
|
||||
if (!$this->context->customer->id && !Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS'))
|
||||
$errors[] = $module_instance->l('You must be connected in order to send a comment', 'default');
|
||||
if (!count(Tools::getValue('criterion')))
|
||||
$errors[] = $module_instance->l('You must give a rating', 'default');
|
||||
|
||||
$product = new Product(Tools::getValue('id_product'));
|
||||
if (!$product->id)
|
||||
$errors[] = $module_instance->l('Product not found', 'default');
|
||||
|
||||
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']) + (int)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 = (int)$id_customer;
|
||||
$comment->id_guest = $id_guest;
|
||||
$comment->customer_name = Tools::getValue('customer_name');
|
||||
if (!$comment->customer_name)
|
||||
$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;
|
||||
Tools::clearCache(Context::getContext()->smarty, $this->getTemplatePath('productcomments-reviews.tpl'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = false;
|
||||
$errors[] = $module_instance->l('Please wait before posting another comment', 'default').' '.Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME').' '.$module_instance->l('seconds before posting a new comment', 'default');
|
||||
}
|
||||
}
|
||||
else
|
||||
$result = false;
|
||||
|
||||
die(json_encode(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');
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
<?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,35 +0,0 @@
|
||||
<?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;
|
||||
|
Before Width: | Height: | Size: 744 B |
|
Before Width: | Height: | Size: 314 B |
|
Before Width: | Height: | Size: 90 B |
|
Before Width: | Height: | Size: 376 B |
|
Before Width: | Height: | Size: 633 B |
|
Before Width: | Height: | Size: 752 B |
|
Before Width: | Height: | Size: 678 B |
@@ -1,35 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2017 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-2017 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;
|
||||
|
Before Width: | Height: | Size: 463 B |
|
Before Width: | Height: | Size: 624 B |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 322 B |
|
Before Width: | Height: | Size: 398 B |
@@ -1,35 +0,0 @@
|
||||
<?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,35 +0,0 @@
|
||||
<?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,163 +0,0 @@
|
||||
/*
|
||||
* jQuery Textarea Characters Counter Plugin v 2.0
|
||||
* Examples and documentation at: http://roy-jin.appspot.com/jsp/textareaCounter.jsp
|
||||
* Copyright (c) 2010 Roy Jin
|
||||
* Version: 2.0 (11-JUN-2010)
|
||||
* Dual licensed under the MIT and GPL licenses:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
* Requires: jQuery v1.4.2 or later
|
||||
*/
|
||||
(function($){
|
||||
$.fn.textareaCount = function(options, fn) {
|
||||
var defaults = {
|
||||
maxCharacterSize: -1,
|
||||
originalStyle: 'originalTextareaInfo',
|
||||
warningStyle: 'warningTextareaInfo',
|
||||
warningNumber: 20,
|
||||
displayFormat: '#input characters | #words words'
|
||||
};
|
||||
var options = $.extend(defaults, options);
|
||||
|
||||
var container = $(this);
|
||||
|
||||
$("<div class='charleft'> </div>").insertAfter(container);
|
||||
|
||||
//create charleft css
|
||||
var charLeftCss = {
|
||||
'width' : container.width()
|
||||
};
|
||||
|
||||
var charLeftInfo = getNextCharLeftInformation(container);
|
||||
charLeftInfo.addClass(options.originalStyle);
|
||||
charLeftInfo.css(charLeftCss);
|
||||
|
||||
var numInput = 0;
|
||||
var maxCharacters = options.maxCharacterSize;
|
||||
var numLeft = 0;
|
||||
var numWords = 0;
|
||||
|
||||
container.bind('keyup', function(event){limitTextAreaByCharacterCount();})
|
||||
.bind('mouseover', function(event){setTimeout(function(){limitTextAreaByCharacterCount();}, 10);})
|
||||
.bind('paste', function(event){setTimeout(function(){limitTextAreaByCharacterCount();}, 10);});
|
||||
|
||||
|
||||
function limitTextAreaByCharacterCount(){
|
||||
charLeftInfo.html(countByCharacters());
|
||||
//function call back
|
||||
if(typeof fn != 'undefined'){
|
||||
fn.call(this, getInfo());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function countByCharacters(){
|
||||
var content = container.val();
|
||||
var contentLength = content.length;
|
||||
|
||||
//Start Cut
|
||||
if(options.maxCharacterSize > 0){
|
||||
//If copied content is already more than maxCharacterSize, chop it to maxCharacterSize.
|
||||
if(contentLength >= options.maxCharacterSize) {
|
||||
content = content.substring(0, options.maxCharacterSize);
|
||||
}
|
||||
|
||||
var newlineCount = getNewlineCount(content);
|
||||
|
||||
// newlineCount new line character. For windows, it occupies 2 characters
|
||||
var systemmaxCharacterSize = options.maxCharacterSize - newlineCount;
|
||||
if (!isWin()){
|
||||
systemmaxCharacterSize = options.maxCharacterSize
|
||||
}
|
||||
if(contentLength > systemmaxCharacterSize){
|
||||
//avoid scroll bar moving
|
||||
var originalScrollTopPosition = this.scrollTop;
|
||||
container.val(content.substring(0, systemmaxCharacterSize));
|
||||
this.scrollTop = originalScrollTopPosition;
|
||||
}
|
||||
charLeftInfo.removeClass(options.warningStyle);
|
||||
if(systemmaxCharacterSize - contentLength <= options.warningNumber){
|
||||
charLeftInfo.addClass(options.warningStyle);
|
||||
}
|
||||
|
||||
numInput = container.val().length + newlineCount;
|
||||
if(!isWin()){
|
||||
numInput = container.val().length;
|
||||
}
|
||||
|
||||
numWords = countWord(getCleanedWordString(container.val()));
|
||||
|
||||
numLeft = maxCharacters - numInput;
|
||||
} else {
|
||||
//normal count, no cut
|
||||
var newlineCount = getNewlineCount(content);
|
||||
numInput = container.val().length + newlineCount;
|
||||
if(!isWin()){
|
||||
numInput = container.val().length;
|
||||
}
|
||||
numWords = countWord(getCleanedWordString(container.val()));
|
||||
}
|
||||
|
||||
return formatDisplayInfo();
|
||||
}
|
||||
|
||||
function formatDisplayInfo(){
|
||||
var format = options.displayFormat;
|
||||
format = format.replace('#input', numInput);
|
||||
format = format.replace('#words', numWords);
|
||||
//When maxCharacters <= 0, #max, #left cannot be substituted.
|
||||
if(maxCharacters > 0){
|
||||
format = format.replace('#max', maxCharacters);
|
||||
format = format.replace('#left', numLeft);
|
||||
}
|
||||
return format;
|
||||
}
|
||||
|
||||
function getInfo(){
|
||||
var info = {
|
||||
input: numInput,
|
||||
max: maxCharacters,
|
||||
left: numLeft,
|
||||
words: numWords
|
||||
};
|
||||
return info;
|
||||
}
|
||||
|
||||
function getNextCharLeftInformation(container){
|
||||
return container.next('.charleft');
|
||||
}
|
||||
|
||||
function isWin(){
|
||||
var strOS = navigator.appVersion;
|
||||
if (strOS.toLowerCase().indexOf('win') != -1){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function getNewlineCount(content){
|
||||
var newlineCount = 0;
|
||||
for(var i=0; i<content.length;i++){
|
||||
if(content.charAt(i) == '\n'){
|
||||
newlineCount++;
|
||||
}
|
||||
}
|
||||
return newlineCount;
|
||||
}
|
||||
|
||||
function getCleanedWordString(content){
|
||||
var fullStr = content + " ";
|
||||
var initial_whitespace_rExp = /^[^A-Za-z0-9]+/gi;
|
||||
var left_trimmedStr = fullStr.replace(initial_whitespace_rExp, "");
|
||||
var non_alphanumerics_rExp = rExp = /[^A-Za-z0-9]+/gi;
|
||||
var cleanedStr = left_trimmedStr.replace(non_alphanumerics_rExp, " ");
|
||||
var splitString = cleanedStr.split(" ");
|
||||
return splitString;
|
||||
}
|
||||
|
||||
function countWord(cleanedWordString){
|
||||
var word_count = cleanedWordString.length-1;
|
||||
return word_count;
|
||||
}
|
||||
};
|
||||
})(jQuery);
|
||||
@@ -1,127 +0,0 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
function getCommentForm()
|
||||
{
|
||||
if (document.forms)
|
||||
return (document.forms['comment_form']);
|
||||
else
|
||||
return (document.comment_form);
|
||||
}
|
||||
|
||||
function getCommentDeleteForm()
|
||||
{
|
||||
if (document.forms)
|
||||
return (document.forms['delete_comment_form']);
|
||||
else
|
||||
return (document.delete_comment_form);
|
||||
}
|
||||
|
||||
function acceptComment(id)
|
||||
{
|
||||
var form = getCommentForm();
|
||||
if (id)
|
||||
form.elements['id_product_comment'].value = id;
|
||||
form.elements['action'].value = 'accept';
|
||||
form.submit();
|
||||
}
|
||||
|
||||
|
||||
function deleteComment(id)
|
||||
{
|
||||
var form = getCommentForm();
|
||||
if (id)
|
||||
form.elements['id_product_comment'].value = id;
|
||||
form.elements['action'].value = 'delete';
|
||||
form.submit();
|
||||
}
|
||||
|
||||
function delComment(id, confirmation)
|
||||
{
|
||||
var answer = confirm(confirmation);
|
||||
if (answer)
|
||||
{
|
||||
var form = getCommentDeleteForm();
|
||||
if (id)
|
||||
form.elements['delete_id_product_comment'].value = id;
|
||||
form.elements['delete_action'].value = 'delete';
|
||||
form.submit();
|
||||
}
|
||||
}
|
||||
|
||||
function getCriterionForm()
|
||||
{
|
||||
if (document.forms)
|
||||
return (document.forms['criterion_form']);
|
||||
else
|
||||
return (document.criterion_form);
|
||||
}
|
||||
|
||||
function editCriterion(id)
|
||||
{
|
||||
var form = getCriterionForm();
|
||||
form.elements['id_product_comment_criterion'].value = id;
|
||||
form.elements['criterion_name'].value = document.getElementById('criterion_name_' + id).value;
|
||||
form.elements['criterion_action'].value = 'edit';
|
||||
form.submit();
|
||||
}
|
||||
|
||||
function deleteCriterion(id)
|
||||
{
|
||||
var form = getCriterionForm();
|
||||
form.elements['id_product_comment_criterion'].value = id;
|
||||
form.elements['criterion_action'].value = 'delete';
|
||||
form.submit();
|
||||
}
|
||||
|
||||
$( document ).ready(function() {
|
||||
$('select#id_product_comment_criterion_type').change(function() {
|
||||
// PS 1.6
|
||||
$('#categoryBox').closest('div.form-group').hide();
|
||||
$('#ids_product').closest('div.form-group').hide();
|
||||
// PS 1.5
|
||||
$('#categories-treeview').closest('div.margin-form').hide();
|
||||
$('#categories-treeview').closest('div.margin-form').prev().hide();
|
||||
$('#ids_product').closest('div.margin-form').hide();
|
||||
$('#ids_product').closest('div.margin-form').prev().hide();
|
||||
|
||||
if (this.value == 2)
|
||||
{
|
||||
$('#categoryBox').closest('div.form-group').show();
|
||||
// PS 1.5
|
||||
$('#categories-treeview').closest('div.margin-form').show();
|
||||
$('#categories-treeview').closest('div.margin-form').prev().show();
|
||||
}
|
||||
else if (this.value == 3)
|
||||
{
|
||||
$('#ids_product').closest('div.form-group').show();
|
||||
// PS 1.5
|
||||
$('#ids_product').closest('div.margin-form').show();
|
||||
$('#ids_product').closest('div.margin-form').prev().show();
|
||||
}
|
||||
});
|
||||
|
||||
$('select#id_product_comment_criterion_type').trigger( "change" );
|
||||
});
|
||||
@@ -1,40 +0,0 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
function getProductCriterionForm()
|
||||
{
|
||||
if (document.forms)
|
||||
return (document.forms['product_criterion_form']);
|
||||
else
|
||||
return (document.product_criterion_form);
|
||||
}
|
||||
|
||||
function getProductCriterion(path, id_product, id_lang)
|
||||
{
|
||||
$.get(path + 'productcommentscriterion.php', { id_product: id_product, id_lang: id_lang },
|
||||
function(data){
|
||||
document.getElementById('product_criterions').innerHTML = data;
|
||||
});
|
||||
}
|
||||
@@ -1,155 +0,0 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
$(document).ready(function(){
|
||||
$('.raty_star').raty({
|
||||
starType : 'i',
|
||||
starOff: 'icon-star-o',
|
||||
starOn: 'icon-star',
|
||||
halfShow: false,
|
||||
score: 3,
|
||||
hints: null,
|
||||
readOnly: function() {
|
||||
return $(this).hasClass('readonly');
|
||||
}
|
||||
});
|
||||
$('#new_comment_tab_btn').on('click', function(e){
|
||||
e.preventDefault();
|
||||
$('.new_comment_form_outer').show();
|
||||
$('.open-comment-block').hide();
|
||||
});
|
||||
|
||||
$('#cancelreview').on('click', function(e){
|
||||
e.preventDefault();
|
||||
$('.new_comment_form_outer').hide();
|
||||
$('.open-comment-block').show();
|
||||
});
|
||||
|
||||
/*if (!!$.prototype.fancybox)
|
||||
$('.open-comment-form').fancybox({
|
||||
'autoSize' : false,
|
||||
'width' : 600,
|
||||
'height' : 'auto',
|
||||
'hideOnContentClick': false
|
||||
});*/
|
||||
|
||||
$(document).on('click', '#id_new_comment_form .closefb', function(e){
|
||||
e.preventDefault();
|
||||
$.fancybox.close();
|
||||
});
|
||||
|
||||
$(document).on('click', 'a[href=#idTab5]', function(e){
|
||||
$('*[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');
|
||||
});
|
||||
|
||||
$(document).on('click', 'button.usefulness_btn', function(e){
|
||||
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 + '?rand=' + new Date().getTime(),
|
||||
data: {
|
||||
id_product_comment: id_product_comment,
|
||||
action: 'comment_is_usefull',
|
||||
value: is_usefull
|
||||
},
|
||||
type: 'POST',
|
||||
headers: { "cache-control": "no-cache" },
|
||||
success: function(result){
|
||||
parent.fadeOut('slow', function() {
|
||||
parent.remove();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('click', 'span.report_btn', function(e){
|
||||
if (confirm(confirm_report_message))
|
||||
{
|
||||
var idProductComment = $(this).data('id-product-comment');
|
||||
var parent = $(this).parent();
|
||||
|
||||
$.ajax({
|
||||
url: productcomments_controller_url + '?rand=' + new Date().getTime(),
|
||||
data: {
|
||||
id_product_comment: idProductComment,
|
||||
action: 'report_abuse'
|
||||
},
|
||||
type: 'POST',
|
||||
headers: { "cache-control": "no-cache" },
|
||||
success: function(result){
|
||||
parent.fadeOut('slow', function() {
|
||||
parent.remove();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on('click', '#submitNewMessage', function(e){
|
||||
// Kill default behaviour
|
||||
e.preventDefault();
|
||||
|
||||
// Form element
|
||||
|
||||
url_options = '?';
|
||||
if (!productcomments_url_rewrite)
|
||||
url_options = '&';
|
||||
|
||||
$.ajax({
|
||||
url: productcomments_controller_url + url_options + 'action=add_comment&secure_key=' + secure_key + '&rand=' + new Date().getTime(),
|
||||
data: $('#id_new_comment_form').serialize(),
|
||||
type: 'POST',
|
||||
headers: { "cache-control": "no-cache" },
|
||||
dataType: "json",
|
||||
success: function(data){
|
||||
if (data.result)
|
||||
{
|
||||
$.fancybox.close();
|
||||
var buttons = {};
|
||||
buttons[productcomment_ok] = "productcommentRefreshPage";
|
||||
fancyChooseBox(moderation_active ? productcomment_added_moderation : productcomment_added, productcomment_title, buttons);
|
||||
}
|
||||
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');
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function productcommentRefreshPage()
|
||||
{
|
||||
window.location.reload();
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
/*
|
||||
* 2007-2017 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-2017 PrestaShop SA
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
$(document).ready(function()
|
||||
{
|
||||
$('input.star').rating();
|
||||
$('.auto-submit-star').rating();
|
||||
$('a.cluetip').cluetip({
|
||||
local:true,
|
||||
cursor: 'pointer',
|
||||
cluetipClass: 'comparison_comments',
|
||||
dropShadow: false,
|
||||
dropShadowSteps: 0,
|
||||
showTitle: false,
|
||||
tracking: true,
|
||||
sticky: false,
|
||||
mouseOutClose: true,
|
||||
width: 450,
|
||||
fx: {
|
||||
open: 'fadeIn',
|
||||
openSpeed: 'fast'
|
||||
}
|
||||
}).css('opacity', 0.8);
|
||||
|
||||
$('.comparison_infos a').each(function(){
|
||||
var id_product_comment = parseInt($(this).data('id-product-comment'));
|
||||
if (id_product_comment)
|
||||
{
|
||||
$(this).click(function(e){
|
||||
e.preventDefault();
|
||||
});
|
||||
var htmlContent = $('#comments_' + id_product_comment).html();
|
||||
$(this).popover({
|
||||
placement : 'bottom', //placement of the popover. also can use top, bottom, left or right
|
||||
title : false, //this is the top title bar of the popover. add some basic css
|
||||
html: 'true', //needed to show html of course
|
||||
content : htmlContent //this is the content of the html box. add the image here or anything you want really.
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function closeCommentForm()
|
||||
{
|
||||
$('#sendComment').slideUp('fast');
|
||||
$('input#addCommentButton').fadeIn('slow');
|
||||
}
|
||||
|
Before Width: | Height: | Size: 557 B |
|
Before Width: | Height: | Size: 1.7 KiB |
@@ -1,138 +0,0 @@
|
||||
<?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
|
||||
*/
|
||||
|
||||
// The usage of this file is deprecated !!!
|
||||
require_once(dirname(__FILE__).'/../../config/config.inc.php');
|
||||
require_once(dirname(__FILE__).'/../../init.php');
|
||||
require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
||||
include_once(dirname(__FILE__).'/ProductComment.php');
|
||||
include_once(dirname(__FILE__).'/productcomments.php');
|
||||
|
||||
$productCom = new productcomments();
|
||||
|
||||
if (Tools::getValue('action') && Tools::getValue('id_product_comment') && Context::getContext()->cookie->id_customer)
|
||||
{
|
||||
if (Tools::getValue('action') == 'report')
|
||||
{
|
||||
if (!ProductComment::isAlreadyReport(Tools::getValue('id_product_comment'), Context::getContext()->cookie->id_customer) &&
|
||||
ProductComment::reportComment((int)Tools::getValue('id_product_comment'), (int)Context::getContext()->cookie->id_customer))
|
||||
die('0');
|
||||
}
|
||||
else if (Tools::getValue('action') == 'usefulness' && Tools::getValue('value') && Tools::getValue('value'))
|
||||
{
|
||||
if (!ProductComment::isAlreadyUsefulness(Tools::getValue('id_product_comment'), Context::getContext()->cookie->id_customer) &&
|
||||
ProductComment::setCommentUsefulness((int)Tools::getValue('id_product_comment'),
|
||||
(bool)Tools::getValue('value'),
|
||||
Context::getContext()->cookie->id_customer))
|
||||
die('0');
|
||||
}
|
||||
}
|
||||
else if (Tools::getValue('action') && Tools::getValue('secure_key') == $productCom->secure_key)
|
||||
{
|
||||
$review = json_decode(Tools::getValue('review'));
|
||||
$id_product = 0;
|
||||
$content = null;
|
||||
$title = null;
|
||||
$name = null;
|
||||
$grades = array();
|
||||
foreach ($review as $entry)
|
||||
{
|
||||
if ($entry->key == 'id_product')
|
||||
$id_product = $entry->value;
|
||||
else if ($entry->key == 'title')
|
||||
$title = $entry->value;
|
||||
else if ($entry->key == 'content')
|
||||
$content = $entry->value;
|
||||
else if ($entry->key == 'customer_name')
|
||||
$name = $entry->value;
|
||||
else if (strstr($entry->key, 'grade'))
|
||||
{
|
||||
$id = array(explode('_', $entry->key));
|
||||
$grades[] = array('id' => $id['0']['0'], 'grade' => $entry->value);
|
||||
}
|
||||
}
|
||||
|
||||
if ($title == '' || $content == '' || !$id_product || count($grades) == 0)
|
||||
die('0');
|
||||
|
||||
$allow_guests = (int)Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS');
|
||||
|
||||
if (Context::getContext()->customer->id || (!Context::getContext()->customer->id && $allow_guests))
|
||||
{
|
||||
$id_guest = (!$id_customer = (int)Context::getContext()->cookie->id_customer) ? (int)Context::getContext()->cookie->id_guest : false;
|
||||
$customerComment = ProductComment::getByCustomer((int)($id_product), Context::getContext()->cookie->id_customer, true, (int)$id_guest);
|
||||
|
||||
if (!$customerComment || ($customerComment && (strtotime($customerComment['date_add']) + Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME')) < time()))
|
||||
{
|
||||
$errors = array();
|
||||
$customer_name = false;
|
||||
if ($id_guest && (!$customer_name = Context::getContext()->customer->firstname.' '.Context::getContext()->customer->lastname))
|
||||
$errors[] = $productCom->l('Please fill your name');
|
||||
|
||||
if (!count($errors) && $content)
|
||||
{
|
||||
$comment = new ProductComment();
|
||||
$comment->content = strip_tags($content);
|
||||
$comment->id_product = (int)$id_product;
|
||||
$comment->id_customer = (int)Context::getContext()->cookie->id_customer;
|
||||
$comment->id_guest = (int)$id_guest;
|
||||
$comment->customer_name = pSQL($customer_name);
|
||||
if (!$comment->id_customer)
|
||||
$comment->customer_name = pSQL($name);
|
||||
$comment->title = pSQL($title);
|
||||
$comment->grade = 0;
|
||||
$comment->validate = 0;
|
||||
|
||||
|
||||
$tgrade = 0;
|
||||
$comment->save();
|
||||
foreach ($grades as $grade)
|
||||
{
|
||||
$tgrade += $grade['grade'];
|
||||
$productCommentCriterion = new ProductCommentCriterion((int)Tools::getValue('id_product_comment_criterion_'.$grade['id']));
|
||||
if ($productCommentCriterion->id)
|
||||
$productCommentCriterion->addGrade($comment->id, $grade['grade']);
|
||||
}
|
||||
|
||||
if ((count($grades) - 1) >= 0)
|
||||
$comment->grade = (int)($tgrade / ((int)count($grades)));
|
||||
|
||||
if (!$comment->save())
|
||||
$errors[] = $productCom->l('An error occurred while saving your comment.');
|
||||
else
|
||||
Context::getContext()->smarty->assign('confirmation', $productCom->l('Comment posted.').((int)(Configuration::get('PRODUCT_COMMENTS_MODERATE')) ? ' '.$productCom->l('Awaiting moderator validation.') : ''));
|
||||
|
||||
}
|
||||
else
|
||||
$errors[] = $productCom->l('Comment text is required.');
|
||||
}
|
||||
else
|
||||
$errors[] = sprintf($productCom->l('You should wait %d seconds before posting a new comment.'), Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME'));
|
||||
}
|
||||
}
|
||||
|
||||
die('1');
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
{*
|
||||
* 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
|
||||
* @version Release: $Revision$
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
{if (!$content_only && (($nbComments == 0 && $too_early == false && ($is_logged || $allow_guests)) || ($nbComments != 0)))}
|
||||
<div id="product_comments_block_extra" class="no-print" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
|
||||
{if $nbComments != 0}
|
||||
<div class="comments_note clearfix">
|
||||
<span>{l s='Rating' mod='productcomments'} </span>
|
||||
<div class="star_content clearfix">
|
||||
{section name="i" start=0 loop=5 step=1}
|
||||
{if $averageTotal le $smarty.section.i.index}
|
||||
<div class="star"></div>
|
||||
{else}
|
||||
<div class="star star_on"></div>
|
||||
{/if}
|
||||
{/section}
|
||||
<meta itemprop="worstRating" content = "0" />
|
||||
<meta itemprop="ratingValue" content = "{if isset($ratings.avg)}{$ratings.avg|round:1|escape:'html':'UTF-8'}{else}{$averageTotal|round:1|escape:'html':'UTF-8'}{/if}" />
|
||||
<meta itemprop="bestRating" content = "5" />
|
||||
</div>
|
||||
</div> <!-- .comments_note -->
|
||||
{/if}
|
||||
|
||||
<ul class="comments_advices">
|
||||
{if $nbComments != 0}
|
||||
<li>
|
||||
<a href="#idTab5" class="reviews">
|
||||
{l s='Read reviews' mod='productcomments'} (<span itemprop="reviewCount">{$nbComments}</span>)
|
||||
</a>
|
||||
</li>
|
||||
{/if}
|
||||
{if ($too_early == false AND ($is_logged OR $allow_guests))}
|
||||
<li>
|
||||
<a class="open-comment-form" href="#new_comment_form">
|
||||
{l s='Write a review' mod='productcomments'}
|
||||
</a>
|
||||
</li>
|
||||
{/if}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
<!-- /Module ProductComments -->
|
||||
@@ -1,216 +0,0 @@
|
||||
#product_comments_block_extra {
|
||||
padding: 8px 10px 10px;
|
||||
font-weight: bold;
|
||||
line-height: 18px;
|
||||
border: 1px solid #d6d4d4;
|
||||
background: #fbfbfb;
|
||||
margin: 39px 0 22px; }
|
||||
#product_comments_block_extra .comments_note {
|
||||
margin-bottom: 5px; }
|
||||
#product_comments_block_extra .comments_note span{
|
||||
float: left;
|
||||
color: #333; }
|
||||
.raty_star i[class^="icon-"] {
|
||||
font-size: 22px;
|
||||
color: #e9ce18;
|
||||
} .raty_star i.icon-star-o {
|
||||
color: #777777;
|
||||
}
|
||||
#product_comments_block_extra .comments_advices {
|
||||
clear: both; }
|
||||
|
||||
.comments_advices {
|
||||
padding-top: 2px; }
|
||||
.comments_advices li {
|
||||
display: inline-block;
|
||||
line-height: 30px; }
|
||||
@media (min-width: 768px) and (max-width: 991px) {
|
||||
.comments_advices li {
|
||||
display: block;
|
||||
line-height: 20px; } }
|
||||
.comments_advices a {
|
||||
text-decoration: none;
|
||||
color: #777;
|
||||
position: relative;
|
||||
margin-right: 8px;
|
||||
line-height: 30px;
|
||||
padding: 0;
|
||||
display: inline-block; }
|
||||
@media (min-width: 768px) and (max-width: 1199px) {
|
||||
.comments_advices a {
|
||||
float: none;
|
||||
line-height: 20px; } }
|
||||
.comments_advices a:before {
|
||||
background: #929292;
|
||||
-moz-border-radius: 50px;
|
||||
-webkit-border-radius: 50px;
|
||||
border-radius: 50px;
|
||||
color: white;
|
||||
display: inline-block;
|
||||
font-family: "FontAwesome";
|
||||
font-size: 15px;
|
||||
font-weight: normal;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
margin-right: 6px;
|
||||
text-align: center;
|
||||
width: 30px;
|
||||
/*max 1199px*/ }
|
||||
@media (max-width: 1199px) {
|
||||
.comments_advices a:before {
|
||||
display: none; } }
|
||||
.comments_advices a.reviews:before {
|
||||
content: "\f0e5"; }
|
||||
.comments_advices a.open-comment-form:before {
|
||||
content: "\f040"; }
|
||||
.comments_advices a:hover {
|
||||
color: #333; }
|
||||
.comments_advices a.reviews {
|
||||
border-right: 1px solid #d6d4d4;
|
||||
padding-right: 30px;
|
||||
margin-right: 9px; }
|
||||
@media (min-width: 768px) and (max-width: 991px) {
|
||||
.comments_advices a.reviews {
|
||||
margin-right: 0;
|
||||
padding: 0;
|
||||
border: none; } }
|
||||
|
||||
/* pop-in add grade/advice ********************************************************************* */
|
||||
#fancybox-wrap {
|
||||
width: 585px; }
|
||||
|
||||
#fancybox-content {
|
||||
width: 585px;
|
||||
border-width: 0; }
|
||||
|
||||
#new_comment_form {
|
||||
overflow: hidden;
|
||||
color: #333;
|
||||
text-align: left; }
|
||||
#new_comment_form h2 {
|
||||
margin-bottom: 10px; }
|
||||
#new_comment_form .title {
|
||||
padding: 10px;
|
||||
font-size: 13px;
|
||||
color: #fff;
|
||||
text-transform: uppercase;
|
||||
background: #333; }
|
||||
#new_comment_form ul.grade_content {
|
||||
list-style-type: none;
|
||||
margin: 0 0 20px 0; }
|
||||
#new_comment_form ul.grade_content li {
|
||||
width: 50%; }
|
||||
#new_comment_form ul.grade_content span {
|
||||
display: inline-block;
|
||||
padding: 0 10px;
|
||||
width: 150px;
|
||||
font-weight: bold; }
|
||||
#new_comment_form ul.grade_content .cancel {
|
||||
margin-right: 5px; }
|
||||
#new_comment_form .product {
|
||||
padding: 15px; }
|
||||
#new_comment_form .product img {
|
||||
border: 1px solid #d6d4d4; }
|
||||
#new_comment_form .product .product_desc {
|
||||
line-height: 18px;
|
||||
color: #666; }
|
||||
#new_comment_form .product .product_desc .product_name {
|
||||
padding: 10px 0 5px;
|
||||
font-size: 13px;
|
||||
color: #000; }
|
||||
#new_comment_form .new_comment_form_content {
|
||||
padding: 15px 25px 15px 15px;}
|
||||
@media (max-width: 767px) {
|
||||
#new_comment_form .new_comment_form_content {
|
||||
padding-left: 25px; } }
|
||||
#new_comment_form .new_comment_form_content .intro_form {
|
||||
padding-bottom: 10px;
|
||||
font-weight: bold;
|
||||
font-size: 12px; }
|
||||
#new_comment_form label {
|
||||
display: block;}
|
||||
#new_comment_form input {
|
||||
width: 100%;}
|
||||
#new_comment_form textarea {
|
||||
width: 100%;
|
||||
height: 200px; }
|
||||
#new_comment_form #criterions_list {
|
||||
padding-top: 15px;
|
||||
list-style-type: none; }
|
||||
#new_comment_form #criterions_list li {
|
||||
margin-bottom: 10px; }
|
||||
#new_comment_form #criterions_list label {
|
||||
margin: 0 10px 0 0; }
|
||||
#new_comment_form #criterions_list .star_content {
|
||||
float: left; }
|
||||
#new_comment_form #new_comment_form_footer {
|
||||
margin-top: 20px;
|
||||
font-size: 12px; }
|
||||
|
||||
/* TAB COMMENTS ******************************************************************************** */
|
||||
#product_comments_block_tab div.comment {
|
||||
margin: 0 0 14px;
|
||||
padding-top: 14px;
|
||||
border-top: 1px solid #d6d4d4; }
|
||||
#product_comments_block_tab div.comment:first-child {
|
||||
padding: 0;
|
||||
border: none; }
|
||||
#product_comments_block_tab div.comment .comment_author {
|
||||
padding: 0 20px;
|
||||
line-height: 18px; }
|
||||
#product_comments_block_tab div.comment .comment_author span {
|
||||
font-weight: bold;
|
||||
float: left; }
|
||||
#product_comments_block_tab div.comment .comment_author .star_content {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin: 0 0 0 5px; }
|
||||
#product_comments_block_tab div.comment .comment_details {
|
||||
overflow: hidden;
|
||||
border-left: 1px solid #d6d4d4; }
|
||||
@media (max-width: 991px) {
|
||||
#product_comments_block_tab div.comment .comment_details {
|
||||
border-left: none; }
|
||||
#product_comments_block_tab div.comment .comment_details ul {
|
||||
list-style-type: none;
|
||||
margin: 0; }
|
||||
#product_comments_block_tab div.comment .comment_details ul li {
|
||||
padding: 2px 0 2px; }
|
||||
#product_comments_block_tab div.comment .comment_details ul li:before {
|
||||
font-family: "FontAwesome";
|
||||
content: "\f0da";
|
||||
color: #333;
|
||||
margin-right: 8px; } }
|
||||
#product_comments_block_tab div.star:after {
|
||||
content: "\f006";
|
||||
font-family: "FontAwesome";
|
||||
display: inline-block;
|
||||
color: #777676; }
|
||||
#product_comments_block_tab div.star_on:after {
|
||||
content: "\f005";
|
||||
font-family: "FontAwesome";
|
||||
display: inline-block;
|
||||
color: #e9ce18; }
|
||||
#product_comments_block_tab .comment_author_infos {
|
||||
clear: both;
|
||||
padding-top: 9px; }
|
||||
#product_comments_block_tab .comment_author_infos strong {
|
||||
display: block;
|
||||
color: #333; }
|
||||
#product_comments_block_tab .comment_author_infos em {
|
||||
color: #adadad; }
|
||||
#product_comments_block_tab a {
|
||||
text-decoration: none;
|
||||
font-weight: bold; }
|
||||
#product_comments_block_tab span.report_btn {
|
||||
cursor: pointer; }
|
||||
#product_comments_block_tab span.report_btn:hover {
|
||||
text-decoration: underline; }
|
||||
|
||||
.fl {
|
||||
float: left; }
|
||||
|
||||
.fr {
|
||||
float: right; }
|
||||
|
||||
/*# sourceMappingURL=productcomments.css.map */
|
||||
@@ -1,946 +0,0 @@
|
||||
<?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
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
include_once (dirname(__FILE__).'/classes/ProductCommentsDb.php');
|
||||
|
||||
class ProductComments extends Module
|
||||
{
|
||||
private $_html = '';
|
||||
private $_postErrors = array();
|
||||
private $_filters = array();
|
||||
|
||||
private $_productCommentsCriterionTypes = array();
|
||||
private $_baseUrl;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->name = 'productcomments';
|
||||
$this->tab = 'front_office_features';
|
||||
$this->version = '3.6.1';
|
||||
$this->author = 'PrestaShop';
|
||||
$this->need_instance = 0;
|
||||
$this->bootstrap = true;
|
||||
|
||||
$this->_setFilters();
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$this->secure_key = Tools::encrypt($this->name);
|
||||
|
||||
$this->displayName = $this->l('Product Comments');
|
||||
$this->description = $this->l('Allows users to post reviews and rate products on specific criteria.');
|
||||
}
|
||||
|
||||
public function install()
|
||||
{
|
||||
$objProductCommentsDb = new ProductCommentsDb();
|
||||
if (parent::install() == false ||
|
||||
!$objProductCommentsDb->createTables() ||
|
||||
!$this->registerHook('productTab') ||
|
||||
!$this->registerHook('extraProductComparison') ||
|
||||
!$this->registerHook('productTabContent') ||
|
||||
!$this->registerHook('header') ||
|
||||
!$this->registerHook('displayRightColumnProduct') ||
|
||||
!$this->registerHook('displayProductListReviews') ||
|
||||
!Configuration::updateValue('PRODUCT_COMMENTS_MINIMAL_TIME', 30) ||
|
||||
!Configuration::updateValue('PRODUCT_COMMENTS_ALLOW_GUESTS', 0) ||
|
||||
!Configuration::updateValue('PRODUCT_COMMENTS_MODERATE', 1)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function uninstall($delete_data = true)
|
||||
{
|
||||
$objProductCommentsDb = new ProductCommentsDb();
|
||||
if (!parent::uninstall() || ($delete_data && !$objProductCommentsDb->dropTables()) ||
|
||||
!Configuration::deleteByName('PRODUCT_COMMENTS_MODERATE') ||
|
||||
!Configuration::deleteByName('PRODUCT_COMMENTS_ALLOW_GUESTS') ||
|
||||
!Configuration::deleteByName('PRODUCT_COMMENTS_MINIMAL_TIME') ||
|
||||
!$this->unregisterHook('extraProductComparison') ||
|
||||
!$this->unregisterHook('displayRightColumnProduct') ||
|
||||
!$this->unregisterHook('productTabContent') ||
|
||||
!$this->unregisterHook('header') ||
|
||||
!$this->unregisterHook('productTab') ||
|
||||
!$this->unregisterHook('top') ||
|
||||
!$this->unregisterHook('displayProductListReviews')
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function reset()
|
||||
{
|
||||
if (!$this->uninstall(false)) {
|
||||
return false;
|
||||
}
|
||||
if (!$this->install()) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getCacheId($id_product = null)
|
||||
{
|
||||
return parent::getCacheId().'|'.(int)$id_product;
|
||||
}
|
||||
|
||||
protected function _postProcess()
|
||||
{
|
||||
$this->_setFilters();
|
||||
|
||||
if (Tools::isSubmit('submitModerate'))
|
||||
{
|
||||
Configuration::updateValue('PRODUCT_COMMENTS_MODERATE', (int)Tools::getValue('PRODUCT_COMMENTS_MODERATE'));
|
||||
Configuration::updateValue('PRODUCT_COMMENTS_ALLOW_GUESTS', (int)Tools::getValue('PRODUCT_COMMENTS_ALLOW_GUESTS'));
|
||||
Configuration::updateValue('PRODUCT_COMMENTS_MINIMAL_TIME', (int)Tools::getValue('PRODUCT_COMMENTS_MINIMAL_TIME'));
|
||||
$this->_html .= '<div class="conf confirm alert alert-success">'.$this->l('Settings updated').'</div>';
|
||||
}
|
||||
elseif (Tools::isSubmit('productcomments'))
|
||||
{
|
||||
$id_product_comment = (int)Tools::getValue('id_product_comment');
|
||||
$comment = new ProductComment($id_product_comment);
|
||||
$comment->validate();
|
||||
ProductComment::deleteReports($id_product_comment);
|
||||
}
|
||||
elseif (Tools::isSubmit('deleteproductcomments'))
|
||||
{
|
||||
$id_product_comment = (int)Tools::getValue('id_product_comment');
|
||||
$comment = new ProductComment($id_product_comment);
|
||||
$comment->delete();
|
||||
$this->_html .= '<div class="conf confirm alert alert-success">'.$this->l('Comment deleted').'</div>';
|
||||
}
|
||||
elseif (Tools::isSubmit('submitEditCriterion'))
|
||||
{
|
||||
$criterion = new ProductCommentCriterion((int)Tools::getValue('id_product_comment_criterion'));
|
||||
$criterion->id_product_comment_criterion_type = Tools::getValue('id_product_comment_criterion_type');
|
||||
$criterion->active = Tools::getValue('active');
|
||||
|
||||
$languages = Language::getLanguages();
|
||||
$name = array();
|
||||
foreach ($languages as $key => $value) {
|
||||
$name[$value['id_lang']] = Tools::getValue('name_'.$value['id_lang']);
|
||||
}
|
||||
$criterion->name = $name;
|
||||
|
||||
$criterion->save();
|
||||
|
||||
// Clear before reinserting data
|
||||
$criterion->deleteCategories();
|
||||
$criterion->deleteProducts();
|
||||
if ($criterion->id_product_comment_criterion_type == 2)
|
||||
{
|
||||
if ($categories = Tools::getValue('categoryBox'))
|
||||
if (count($categories))
|
||||
foreach ($categories as $id_category)
|
||||
$criterion->addCategory((int)$id_category);
|
||||
}
|
||||
else if ($criterion->id_product_comment_criterion_type == 3)
|
||||
{
|
||||
if ($products = Tools::getValue('ids_product'))
|
||||
if (count($products))
|
||||
foreach ($products as $product)
|
||||
$criterion->addProduct((int)$product);
|
||||
}
|
||||
if ($criterion->save())
|
||||
Tools::redirectAdmin(Context::getContext()->link->getAdminLink('AdminModules').'&configure='.$this->name.'&conf=4');
|
||||
else
|
||||
$this->_html .= '<div class="conf confirm alert alert-danger">'.$this->l('The criterion could not be saved').'</div>';
|
||||
}
|
||||
elseif (Tools::isSubmit('deleteproductcommentscriterion'))
|
||||
{
|
||||
$productCommentCriterion = new ProductCommentCriterion((int)Tools::getValue('id_product_comment_criterion'));
|
||||
if ($productCommentCriterion->id)
|
||||
if ($productCommentCriterion->delete())
|
||||
$this->_html .= '<div class="conf confirm alert alert-success">'.$this->l('Criterion deleted').'</div>';
|
||||
}
|
||||
elseif (Tools::isSubmit('statusproductcommentscriterion'))
|
||||
{
|
||||
$criterion = new ProductCommentCriterion((int)Tools::getValue('id_product_comment_criterion'));
|
||||
if ($criterion->id)
|
||||
{
|
||||
$criterion->active = (int)(!$criterion->active);
|
||||
$criterion->save();
|
||||
}
|
||||
Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules').'&configure='.$this->name.'&tab_module='.$this->tab.'&conf=4&module_name='.$this->name);
|
||||
}
|
||||
elseif ($id_product_comment = (int)Tools::getValue('approveComment'))
|
||||
{
|
||||
$comment = new ProductComment($id_product_comment);
|
||||
if($comment->validate())
|
||||
$this->_html .= '<div class="conf confirm alert alert-success">'.$this->l('Comment approved').'</div>';
|
||||
}
|
||||
elseif ($id_product_comment = (int)Tools::getValue('noabuseComment'))
|
||||
{
|
||||
ProductComment::deleteReports($id_product_comment);
|
||||
}
|
||||
|
||||
$this->_clearcache('productcomments_reviews.tpl');
|
||||
}
|
||||
|
||||
public function getContent()
|
||||
{
|
||||
include_once(dirname(__FILE__).'/ProductComment.php');
|
||||
include_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
||||
|
||||
$this->_html = '';
|
||||
if (Tools::isSubmit('updateproductcommentscriterion'))
|
||||
$this->_html .= $this->renderCriterionForm((int)Tools::getValue('id_product_comment_criterion'));
|
||||
else
|
||||
{
|
||||
$this->_postProcess();
|
||||
$this->_html .= $this->renderConfigForm();
|
||||
$this->_html .= $this->renderModerateLists();
|
||||
$this->_html .= $this->renderCriterionList();
|
||||
$this->_html .= $this->renderCommentsList();
|
||||
}
|
||||
|
||||
$this->_setBaseUrl();
|
||||
$this->_productCommentsCriterionTypes = ProductCommentCriterion::getTypes();
|
||||
|
||||
$this->context->controller->addJs($this->_path.'js/moderate.js');
|
||||
|
||||
return $this->_html;
|
||||
}
|
||||
|
||||
private function _setBaseUrl()
|
||||
{
|
||||
$this->_baseUrl = 'index.php?';
|
||||
foreach ($_GET as $k => $value)
|
||||
if (!in_array($k, array('deleteCriterion', 'editCriterion')))
|
||||
$this->_baseUrl .= $k.'='.$value.'&';
|
||||
$this->_baseUrl = rtrim($this->_baseUrl, '&');
|
||||
}
|
||||
|
||||
public function renderConfigForm()
|
||||
{
|
||||
$fields_form_1 = array(
|
||||
'form' => array(
|
||||
'legend' => array(
|
||||
'title' => $this->l('Configuration'),
|
||||
'icon' => 'icon-cogs'
|
||||
),
|
||||
'input' => array(
|
||||
array(
|
||||
'type' => 'switch',
|
||||
'is_bool' => true, //retro compat 1.5
|
||||
'label' => $this->l('All reviews must be validated by an employee'),
|
||||
'name' => 'PRODUCT_COMMENTS_MODERATE',
|
||||
'values' => array(
|
||||
array(
|
||||
'id' => 'active_on',
|
||||
'value' => 1,
|
||||
'label' => $this->l('Enabled')
|
||||
),
|
||||
array(
|
||||
'id' => 'active_off',
|
||||
'value' => 0,
|
||||
'label' => $this->l('Disabled')
|
||||
)
|
||||
),
|
||||
),
|
||||
array(
|
||||
'type' => 'switch',
|
||||
'is_bool' => true, //retro compat 1.5
|
||||
'label' => $this->l('Allow guest reviews'),
|
||||
'name' => 'PRODUCT_COMMENTS_ALLOW_GUESTS',
|
||||
'values' => array(
|
||||
array(
|
||||
'id' => 'active_on',
|
||||
'value' => 1,
|
||||
'label' => $this->l('Enabled')
|
||||
),
|
||||
array(
|
||||
'id' => 'active_off',
|
||||
'value' => 0,
|
||||
'label' => $this->l('Disabled')
|
||||
)
|
||||
),
|
||||
),
|
||||
array(
|
||||
'type' => 'text',
|
||||
'label' => $this->l('Minimum time between 2 reviews from the same user'),
|
||||
'name' => 'PRODUCT_COMMENTS_MINIMAL_TIME',
|
||||
'class' => 'fixed-width-xs',
|
||||
'suffix' => 'seconds',
|
||||
),
|
||||
),
|
||||
'submit' => array(
|
||||
'title' => $this->l('Save'),
|
||||
'class' => 'btn btn-default pull-right',
|
||||
'name' => 'submitModerate',
|
||||
)
|
||||
),
|
||||
);
|
||||
|
||||
$helper = new HelperForm();
|
||||
$helper->show_toolbar = false;
|
||||
$helper->table = $this->name;
|
||||
$lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
|
||||
$helper->default_form_language = $lang->id;
|
||||
$helper->module = $this;
|
||||
$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
|
||||
$helper->identifier = $this->identifier;
|
||||
$helper->submit_action = 'submitProducCommentsConfiguration';
|
||||
$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
|
||||
$helper->token = Tools::getAdminTokenLite('AdminModules');
|
||||
$helper->tpl_vars = array(
|
||||
'fields_value' => $this->getConfigFieldsValues(),
|
||||
'languages' => $this->context->controller->getLanguages(),
|
||||
'id_language' => $this->context->language->id
|
||||
);
|
||||
|
||||
return $helper->generateForm(array($fields_form_1));
|
||||
}
|
||||
|
||||
public function renderModerateLists()
|
||||
{
|
||||
require_once(dirname(__FILE__).'/ProductComment.php');
|
||||
$return = null;
|
||||
|
||||
if (Configuration::get('PRODUCT_COMMENTS_MODERATE'))
|
||||
{
|
||||
$comments = ProductComment::getByValidate(0, false);
|
||||
// filter room types as per accessed hotels
|
||||
$comments = HotelBranchInformation::filterDataByHotelAccess(
|
||||
$comments,
|
||||
$this->context->employee->id_profile
|
||||
);
|
||||
|
||||
$fields_list = $this->getStandardFieldList();
|
||||
|
||||
if (version_compare(_PS_VERSION_, '1.6', '<'))
|
||||
{
|
||||
$return .= "<h1>".$this->l('Reviews waiting for approval')."</h1>";
|
||||
$actions = array('enable', 'delete');
|
||||
}
|
||||
else
|
||||
$actions = array('approve', 'delete');
|
||||
|
||||
$helper = new HelperList();
|
||||
$helper->shopLinkType = '';
|
||||
$helper->simple_header = true;
|
||||
$helper->actions = $actions;
|
||||
$helper->show_toolbar = false;
|
||||
$helper->module = $this;
|
||||
$helper->listTotal = count($comments);
|
||||
$helper->identifier = 'id_product_comment';
|
||||
$helper->title = $this->l('Reviews waiting for approval');
|
||||
$helper->table = $this->name;
|
||||
$helper->token = Tools::getAdminTokenLite('AdminModules');
|
||||
$helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;
|
||||
//$helper->tpl_vars = array('priority' => array($this->l('High'), $this->l('Medium'), $this->l('Low')));
|
||||
|
||||
$return .= $helper->generateList($comments, $fields_list);
|
||||
}
|
||||
|
||||
$comments = ProductComment::getReportedComments();
|
||||
// filter room types as per accessed hotels
|
||||
$comments = HotelBranchInformation::filterDataByHotelAccess(
|
||||
$comments,
|
||||
$this->context->employee->id_profile
|
||||
);
|
||||
|
||||
$fields_list = $this->getStandardFieldList();
|
||||
|
||||
if (version_compare(_PS_VERSION_, '1.6', '<'))
|
||||
{
|
||||
$return .= "<h1>".$this->l('Reported Reviews')."</h1>";
|
||||
$actions = array('enable', 'delete');
|
||||
}
|
||||
else
|
||||
$actions = array('delete', 'noabuse');
|
||||
|
||||
$helper = new HelperList();
|
||||
$helper->shopLinkType = '';
|
||||
$helper->simple_header = true;
|
||||
$helper->actions = $actions;
|
||||
$helper->show_toolbar = false;
|
||||
$helper->module = $this;
|
||||
$helper->listTotal = count($comments);
|
||||
$helper->identifier = 'id_product_comment';
|
||||
$helper->title = $this->l('Reported Reviews');
|
||||
$helper->table = $this->name;
|
||||
$helper->token = Tools::getAdminTokenLite('AdminModules');
|
||||
$helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;
|
||||
//$helper->tpl_vars = array('priority' => array($this->l('High'), $this->l('Medium'), $this->l('Low')));
|
||||
|
||||
$return .= $helper->generateList($comments, $fields_list);
|
||||
|
||||
return $return;
|
||||
|
||||
}
|
||||
|
||||
public function renderCriterionList()
|
||||
{
|
||||
|
||||
include_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
||||
|
||||
$criterions = ProductCommentCriterion::getCriterions($this->context->language->id, false, false);
|
||||
|
||||
$fields_list = array(
|
||||
'id_product_comment_criterion' => array(
|
||||
'title' => $this->l('ID'),
|
||||
'type' => 'text',
|
||||
),
|
||||
'name' => array(
|
||||
'title' => $this->l('Name'),
|
||||
'type' => 'text',
|
||||
),
|
||||
'type_name' => array(
|
||||
'title' => $this->l('Type'),
|
||||
'type' => 'text',
|
||||
),
|
||||
'active' => array(
|
||||
'title' => $this->l('Status'),
|
||||
'active' => 'status',
|
||||
'type' => 'bool',
|
||||
),
|
||||
);
|
||||
|
||||
$helper = new HelperList();
|
||||
$helper->shopLinkType = '';
|
||||
$helper->simple_header = false;
|
||||
$helper->actions = array('edit', 'delete');
|
||||
$helper->show_toolbar = true;
|
||||
$helper->toolbar_btn['new'] = array(
|
||||
'href' => $this->context->link->getAdminLink('AdminModules').'&configure='.$this->name.'&module_name='.$this->name.'&updateproductcommentscriterion',
|
||||
'desc' => $this->l('Add New Criterion', null, null, false)
|
||||
);
|
||||
$helper->module = $this;
|
||||
$helper->identifier = 'id_product_comment_criterion';
|
||||
$helper->title = $this->l('Rating Criteria');
|
||||
$helper->table = $this->name.'criterion';
|
||||
$helper->token = Tools::getAdminTokenLite('AdminModules');
|
||||
$helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;
|
||||
//$helper->tpl_vars = array('priority' => array($this->l('High'), $this->l('Medium'), $this->l('Low')));
|
||||
|
||||
return $helper->generateList($criterions, $fields_list);
|
||||
}
|
||||
|
||||
public function renderCommentsList()
|
||||
{
|
||||
require_once(dirname(__FILE__).'/ProductComment.php');
|
||||
|
||||
$comments = ProductComment::getByValidate(1, false);
|
||||
// filter room types as per accessed hotels
|
||||
$comments = HotelBranchInformation::filterDataByHotelAccess(
|
||||
$comments,
|
||||
$this->context->employee->id_profile
|
||||
);
|
||||
|
||||
$fields_list = $this->getStandardFieldList();
|
||||
|
||||
$helper = new HelperList();
|
||||
$helper->shopLinkType = '';
|
||||
$helper->simple_header = true;
|
||||
$helper->actions = array('delete');
|
||||
$helper->show_toolbar = false;
|
||||
$helper->module = $this;
|
||||
$helper->listTotal = count($comments);
|
||||
$helper->identifier = 'id_product_comment';
|
||||
$helper->title = $this->l('Approved Reviews');
|
||||
$helper->table = $this->name;
|
||||
$helper->token = Tools::getAdminTokenLite('AdminModules');
|
||||
$helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;
|
||||
//$helper->tpl_vars = array('priority' => array($this->l('High'), $this->l('Medium'), $this->l('Low')));
|
||||
|
||||
return $helper->generateList($comments, $fields_list);
|
||||
}
|
||||
|
||||
public function getConfigFieldsValues()
|
||||
{
|
||||
return array(
|
||||
'PRODUCT_COMMENTS_MODERATE' => Tools::getValue('PRODUCT_COMMENTS_MODERATE', Configuration::get('PRODUCT_COMMENTS_MODERATE')),
|
||||
'PRODUCT_COMMENTS_ALLOW_GUESTS' => Tools::getValue('PRODUCT_COMMENTS_ALLOW_GUESTS', Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS')),
|
||||
'PRODUCT_COMMENTS_MINIMAL_TIME' => Tools::getValue('PRODUCT_COMMENTS_MINIMAL_TIME', Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME')),
|
||||
);
|
||||
}
|
||||
|
||||
public function getCriterionFieldsValues($id = 0)
|
||||
{
|
||||
$criterion = new ProductCommentCriterion($id);
|
||||
|
||||
return array(
|
||||
'name' => $criterion->name,
|
||||
'id_product_comment_criterion_type' => $criterion->id_product_comment_criterion_type,
|
||||
'active' => $criterion->active,
|
||||
'id_product_comment_criterion' => $criterion->id,
|
||||
);
|
||||
}
|
||||
|
||||
public function getStandardFieldList()
|
||||
{
|
||||
return array(
|
||||
'id_product_comment' => array(
|
||||
'title' => $this->l('ID'),
|
||||
'type' => 'text',
|
||||
),
|
||||
'title' => array(
|
||||
'title' => $this->l('Review title'),
|
||||
'type' => 'text',
|
||||
),
|
||||
'content' => array(
|
||||
'title' => $this->l('Review'),
|
||||
'type' => 'text',
|
||||
),
|
||||
'grade' => array(
|
||||
'title' => $this->l('Rating'),
|
||||
'type' => 'text',
|
||||
'suffix' => '/5',
|
||||
),
|
||||
'customer_name' => array(
|
||||
'title' => $this->l('Author'),
|
||||
'type' => 'text',
|
||||
),
|
||||
'name' => array(
|
||||
'title' => $this->l('Product'),
|
||||
'type' => 'text',
|
||||
),
|
||||
'date_add' => array(
|
||||
'title' => $this->l('Time of publication'),
|
||||
'type' => 'date',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
function renderCriterionForm($id_criterion = 0)
|
||||
{
|
||||
$types = ProductCommentCriterion::getTypes();
|
||||
$query =array();
|
||||
foreach ($types as $key => $value)
|
||||
{
|
||||
$query[] = array(
|
||||
'id' => $key,
|
||||
'label' => $value,
|
||||
);
|
||||
}
|
||||
|
||||
$criterion = new ProductCommentCriterion((int)$id_criterion);
|
||||
$selected_categories = $criterion->getCategories();
|
||||
|
||||
$product_table_values = Product::getSimpleProducts($this->context->language->id);
|
||||
$selected_products = $criterion->getProducts();
|
||||
foreach ($product_table_values as $key => $product) {
|
||||
if(false !== array_search($product['id_product'], $selected_products))
|
||||
$product_table_values[$key]['selected'] = 1;
|
||||
}
|
||||
|
||||
if (version_compare(_PS_VERSION_, '1.6', '<'))
|
||||
$field_category_tree = array(
|
||||
'type' => 'categories_select',
|
||||
'name' => 'categoryBox',
|
||||
'label' => $this->l('Criterion will be restricted to the following categories'),
|
||||
'category_tree' => $this->initCategoriesAssociation(null, $id_criterion),
|
||||
);
|
||||
else
|
||||
$field_category_tree = array(
|
||||
'type' => 'categories',
|
||||
'label' => $this->l('Criterion will be restricted to the following categories'),
|
||||
'name' => 'categoryBox',
|
||||
'desc' => $this->l('Mark the boxes of categories to which this criterion applies.'),
|
||||
'tree' => array(
|
||||
'use_search' => false,
|
||||
'id' => 'categoryBox',
|
||||
'use_checkbox' => true,
|
||||
'selected_categories' => $selected_categories,
|
||||
),
|
||||
//retro compat 1.5 for category tree
|
||||
'values' => array(
|
||||
'trads' => array(
|
||||
'Root' => Category::getTopCategory(),
|
||||
'selected' => $this->l('Selected'),
|
||||
'Collapse All' => $this->l('Collapse All'),
|
||||
'Expand All' => $this->l('Expand All'),
|
||||
'Check All' => $this->l('Check All'),
|
||||
'Uncheck All' => $this->l('Uncheck All')
|
||||
),
|
||||
'selected_cat' => $selected_categories,
|
||||
'input_name' => 'categoryBox[]',
|
||||
'use_radio' => false,
|
||||
'use_search' => false,
|
||||
'disabled_categories' => array(),
|
||||
'top_category' => Category::getTopCategory(),
|
||||
'use_context' => true,
|
||||
)
|
||||
);
|
||||
|
||||
$fields_form_1 = array(
|
||||
'form' => array(
|
||||
'legend' => array(
|
||||
'title' => $this->l('Add new criterion'),
|
||||
'icon' => 'icon-cogs'
|
||||
),
|
||||
'input' => array(
|
||||
array(
|
||||
'type' => 'hidden',
|
||||
'name' => 'id_product_comment_criterion',
|
||||
),
|
||||
array(
|
||||
'type' => 'text',
|
||||
'lang' => true,
|
||||
'label' => $this->l('Criterion name'),
|
||||
'name' => 'name',
|
||||
),
|
||||
array(
|
||||
'type' => 'select',
|
||||
'name' => 'id_product_comment_criterion_type',
|
||||
'label' => $this->l('Application scope of the criterion'),
|
||||
'options' => array(
|
||||
'query' => $query,
|
||||
'id' => 'id',
|
||||
'name' => 'label'
|
||||
),
|
||||
),
|
||||
$field_category_tree,
|
||||
array(
|
||||
'type' => 'products',
|
||||
'label' => $this->l('The criterion will be restricted to the following products'),
|
||||
'name' => 'ids_product',
|
||||
'values' => $product_table_values,
|
||||
),
|
||||
array(
|
||||
'type' => 'switch',
|
||||
'is_bool' => true, //retro compat 1.5
|
||||
'label' => $this->l('Active'),
|
||||
'name' => 'active',
|
||||
'values' => array(
|
||||
array(
|
||||
'id' => 'active_on',
|
||||
'value' => 1,
|
||||
'label' => $this->l('Enabled')
|
||||
),
|
||||
array(
|
||||
'id' => 'active_off',
|
||||
'value' => 0,
|
||||
'label' => $this->l('Disabled')
|
||||
)
|
||||
),
|
||||
),
|
||||
),
|
||||
'submit' => array(
|
||||
'title' => $this->l('Save'),
|
||||
'class' => 'btn btn-default pull-right',
|
||||
'name' => 'submitEditCriterion',
|
||||
)
|
||||
),
|
||||
);
|
||||
|
||||
$helper = new HelperForm();
|
||||
$helper->show_toolbar = false;
|
||||
$helper->table = $this->name;
|
||||
$lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
|
||||
$helper->default_form_language = $lang->id;
|
||||
$helper->module = $this;
|
||||
$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
|
||||
$helper->identifier = $this->identifier;
|
||||
$helper->submit_action = 'submitEditCriterion';
|
||||
$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
|
||||
$helper->token = Tools::getAdminTokenLite('AdminModules');
|
||||
$helper->tpl_vars = array(
|
||||
'fields_value' => $this->getCriterionFieldsValues($id_criterion),
|
||||
'languages' => $this->context->controller->getLanguages(),
|
||||
'id_language' => $this->context->language->id
|
||||
);
|
||||
|
||||
return $helper->generateForm(array($fields_form_1));
|
||||
}
|
||||
|
||||
private function _checkDeleteComment()
|
||||
{
|
||||
$action = Tools::getValue('delete_action');
|
||||
if (empty($action) === false)
|
||||
{
|
||||
$product_comments = Tools::getValue('delete_id_product_comment');
|
||||
|
||||
if (count($product_comments))
|
||||
{
|
||||
require_once(dirname(__FILE__).'/ProductComment.php');
|
||||
if ($action == 'delete')
|
||||
{
|
||||
foreach ($product_comments as $id_product_comment)
|
||||
{
|
||||
if (!$id_product_comment)
|
||||
continue;
|
||||
$comment = new ProductComment((int)$id_product_comment);
|
||||
$comment->delete();
|
||||
ProductComment::deleteGrades((int)$id_product_comment);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function _setFilters()
|
||||
{
|
||||
$this->_filters = array(
|
||||
'page' => (string)Tools::getValue('submitFilter'.$this->name),
|
||||
'pagination' => (string)Tools::getValue($this->name.'_pagination'),
|
||||
'filter_id' => (string)Tools::getValue($this->name.'Filter_id_product_comment'),
|
||||
'filter_content' => (string)Tools::getValue($this->name.'Filter_content'),
|
||||
'filter_customer_name' => (string)Tools::getValue($this->name.'Filter_customer_name'),
|
||||
'filter_grade' => (string)Tools::getValue($this->name.'Filter_grade'),
|
||||
'filter_name' => (string)Tools::getValue($this->name.'Filter_name'),
|
||||
'filter_date_add' => (string)Tools::getValue($this->name.'Filter_date_add'),
|
||||
);
|
||||
}
|
||||
|
||||
public function displayApproveLink($token = null, $id, $name = null)
|
||||
{
|
||||
$this->smarty->assign(array(
|
||||
'href' => $this->context->link->getAdminLink('AdminModules').'&configure='.$this->name.'&module_name='.$this->name.'&approveComment='.$id,
|
||||
'action' => $this->l('Approve'),
|
||||
));
|
||||
|
||||
return $this->display(__FILE__, 'views/templates/admin/list_action_approve.tpl');
|
||||
}
|
||||
|
||||
public function displayNoabuseLink($token = null, $id, $name = null)
|
||||
{
|
||||
$this->smarty->assign(array(
|
||||
'href' => $this->context->link->getAdminLink('AdminModules').'&configure='.$this->name.'&module_name='.$this->name.'&noabuseComment='.$id,
|
||||
'action' => $this->l('Not abusive'),
|
||||
));
|
||||
|
||||
return $this->display(__FILE__, 'views/templates/admin/list_action_noabuse.tpl');
|
||||
}
|
||||
|
||||
public function hookProductTab($params)
|
||||
{
|
||||
require_once(dirname(__FILE__).'/ProductComment.php');
|
||||
require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
||||
|
||||
$average = ProductComment::getAverageGrade((int)Tools::getValue('id_product'));
|
||||
|
||||
$this->context->smarty->assign(array(
|
||||
'allow_guests' => (int)Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS'),
|
||||
'comments' => ProductComment::getByProduct((int)(Tools::getValue('id_product'))),
|
||||
'criterions' => ProductCommentCriterion::getByProduct((int)(Tools::getValue('id_product')), $this->context->language->id),
|
||||
'averageTotal' => round($average['grade']),
|
||||
'nbComments' => (int)(ProductComment::getCommentNumber((int)(Tools::getValue('id_product'))))
|
||||
));
|
||||
|
||||
return ($this->display(__FILE__, '/tab.tpl'));
|
||||
}
|
||||
|
||||
public function hookDisplayProductListReviews($params)
|
||||
{
|
||||
$id_product = (int)$params['product']['id_product'];
|
||||
if (!$this->isCached('productcomments_reviews.tpl', $this->getCacheId($id_product)))
|
||||
{
|
||||
require_once(dirname(__FILE__).'/ProductComment.php');
|
||||
$average = ProductComment::getAverageGrade($id_product);
|
||||
$this->smarty->assign(array(
|
||||
'product' => $params['product'],
|
||||
'averageTotal' => round($average['grade']),
|
||||
'ratings' => ProductComment::getRatings($id_product),
|
||||
'nbComments' => (int)ProductComment::getCommentNumber($id_product)
|
||||
));
|
||||
}
|
||||
return $this->display(__FILE__, 'productcomments_reviews.tpl', $this->getCacheId($id_product));
|
||||
}
|
||||
|
||||
public function hookDisplayRightColumnProduct($params)
|
||||
{
|
||||
require_once(dirname(__FILE__).'/ProductComment.php');
|
||||
require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
||||
|
||||
$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);
|
||||
|
||||
$average = ProductComment::getAverageGrade((int)Tools::getValue('id_product'));
|
||||
$product = $this->context->controller->getProduct();
|
||||
$image = Product::getCover((int)Tools::getValue('id_product'));
|
||||
$cover_image = $this->context->link->getImageLink($product->link_rewrite, $image['id_image'], 'medium_default');
|
||||
|
||||
$this->context->smarty->assign(array(
|
||||
'id_product_comment_form' => (int)Tools::getValue('id_product'),
|
||||
'product' => $product,
|
||||
'secure_key' => $this->secure_key,
|
||||
'logged' => $this->context->customer->isLogged(true),
|
||||
'allow_guests' => (int)Configuration::get('PRODUCT_COMMENTS_ALLOW_GUESTS'),
|
||||
'productcomment_cover' => (int)Tools::getValue('id_product').'-'.(int)$image['id_image'], // retro compat
|
||||
'productcomment_cover_image' => $cover_image,
|
||||
'mediumSize' => Image::getSize(ImageType::getFormatedName('medium')),
|
||||
'criterions' => ProductCommentCriterion::getByProduct((int)Tools::getValue('id_product'), $this->context->language->id),
|
||||
'action_url' => '',
|
||||
'averageTotal' => round($average['grade']),
|
||||
'ratings' => ProductComment::getRatings((int)Tools::getValue('id_product')),
|
||||
'too_early' => ($customerComment && (strtotime($customerComment['date_add']) + Configuration::get('PRODUCT_COMMENTS_MINIMAL_TIME')) > time()),
|
||||
'nbComments' => (int)(ProductComment::getCommentNumber((int)Tools::getValue('id_product')))
|
||||
));
|
||||
|
||||
return ($this->display(__FILE__, '/productcomments-extra.tpl'));
|
||||
}
|
||||
|
||||
public function hookDisplayLeftColumnProduct($params)
|
||||
{
|
||||
return $this->hookDisplayRightColumnProduct($params);
|
||||
}
|
||||
|
||||
public function hookProductTabContent($params)
|
||||
{
|
||||
$this->context->controller->addJS($this->_path.'js/jquery.textareaCounter.plugin.js');
|
||||
$this->context->controller->addJS($this->_path.'js/productcomments.js');
|
||||
|
||||
$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;
|
||||
foreach ($averages as $average)
|
||||
$averageTotal += (float)($average);
|
||||
$averageTotal = count($averages) ? ($averageTotal / count($averages)) : 0;
|
||||
|
||||
$product = $this->context->controller->getProduct();
|
||||
$image = Product::getCover((int)Tools::getValue('id_product'));
|
||||
$cover_image = $this->context->link->getImageLink($product->link_rewrite, $image['id_image'], 'medium_default');
|
||||
|
||||
$this->context->smarty->assign(array(
|
||||
'logged' => $this->context->customer->isLogged(true),
|
||||
'action_url' => '',
|
||||
'product' => $product,
|
||||
'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'),
|
||||
'secure_key' => $this->secure_key,
|
||||
'productcomment_cover' => (int)Tools::getValue('id_product').'-'.(int)$image['id_image'],
|
||||
'productcomment_cover_image' => $cover_image,
|
||||
'mediumSize' => Image::getSize(ImageType::getFormatedName('medium')),
|
||||
'nbComments' => (int)ProductComment::getCommentNumber((int)Tools::getValue('id_product')),
|
||||
'productcomments_controller_url' => $this->context->link->getModuleLink('productcomments'),
|
||||
'productcomments_url_rewriting_activated' => Configuration::get('PS_REWRITING_SETTINGS', 0),
|
||||
'moderation_active' => (int)Configuration::get('PRODUCT_COMMENTS_MODERATE')
|
||||
));
|
||||
|
||||
$this->context->controller->pagination((int)ProductComment::getCommentNumber((int)Tools::getValue('id_product')));
|
||||
|
||||
return ($this->display(__FILE__, '/productcomments.tpl'));
|
||||
}
|
||||
|
||||
public function hookHeader()
|
||||
{
|
||||
$this->context->controller->addCSS($this->_path.'productcomments.css', 'all');
|
||||
|
||||
$this->page_name = Dispatcher::getInstance()->getController();
|
||||
if (in_array($this->page_name, array('product', 'productscomparison')))
|
||||
{
|
||||
$this->context->controller->addJS($this->_path.'lib/jquery.raty.js');
|
||||
if (in_array($this->page_name, array('productscomparison')))
|
||||
{
|
||||
$this->context->controller->addjqueryPlugin('cluetip');
|
||||
$this->context->controller->addJS($this->_path.'js/products-comparison.js');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function hookExtraProductComparison($params)
|
||||
{
|
||||
require_once(dirname(__FILE__).'/ProductComment.php');
|
||||
require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
||||
|
||||
$list_grades = array();
|
||||
$list_product_grades = array();
|
||||
$list_product_average = array();
|
||||
$list_product_comment = array();
|
||||
|
||||
foreach ($params['list_ids_product'] as $id_product)
|
||||
{
|
||||
$id_product = (int)$id_product;
|
||||
$grades = ProductComment::getAveragesByProduct($id_product, $this->context->language->id);
|
||||
$criterions = ProductCommentCriterion::getByProduct($id_product, $this->context->language->id);
|
||||
$grade_total = 0;
|
||||
if (count($grades) > 0)
|
||||
{
|
||||
foreach ($criterions as $criterion)
|
||||
{
|
||||
if (isset($grades[$criterion['id_product_comment_criterion']]))
|
||||
{
|
||||
$list_product_grades[$criterion['id_product_comment_criterion']][$id_product] = $grades[$criterion['id_product_comment_criterion']];
|
||||
$grade_total += (float)($grades[$criterion['id_product_comment_criterion']]);
|
||||
}
|
||||
else
|
||||
$list_product_grades[$criterion['id_product_comment_criterion']][$id_product] = 0;
|
||||
|
||||
if (!array_key_exists($criterion['id_product_comment_criterion'], $list_grades))
|
||||
$list_grades[$criterion['id_product_comment_criterion']] = $criterion['name'];
|
||||
}
|
||||
|
||||
$list_product_average[$id_product] = $grade_total / count($criterions);
|
||||
$list_product_comment[$id_product] = ProductComment::getByProduct($id_product, 0, 3);
|
||||
}
|
||||
}
|
||||
|
||||
if (count($list_grades) < 1)
|
||||
return false;
|
||||
|
||||
$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
|
||||
));
|
||||
|
||||
return $this->display(__FILE__, '/products-comparison.tpl');
|
||||
}
|
||||
|
||||
public function initCategoriesAssociation($id_root = null, $id_criterion = 0)
|
||||
{
|
||||
if (is_null($id_root))
|
||||
$id_root = Configuration::get('PS_ROOT_CATEGORY');
|
||||
$id_shop = (int)Tools::getValue('id_shop');
|
||||
$shop = new Shop($id_shop);
|
||||
if ($id_criterion == 0)
|
||||
$selected_cat = array();
|
||||
else
|
||||
{
|
||||
$pdc_object = new ProductCommentCriterion($id_criterion);
|
||||
$selected_cat = $pdc_object->getCategories();
|
||||
}
|
||||
|
||||
if (Shop::getContext() == Shop::CONTEXT_SHOP && Tools::isSubmit('id_shop'))
|
||||
$root_category = new Category($shop->id_category);
|
||||
else
|
||||
$root_category = new Category($id_root);
|
||||
$root_category = array('id_category' => $root_category->id, 'name' => $root_category->name[$this->context->language->id]);
|
||||
|
||||
$helper = new Helper();
|
||||
return $helper->renderCategoryTree($root_category, $selected_cat, 'categoryBox', false, true);
|
||||
}
|
||||
}
|
||||
@@ -1,266 +0,0 @@
|
||||
{*
|
||||
* 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 newersend_friend_form_content
|
||||
* 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
|
||||
*}
|
||||
<div id="idTab5" class="tab-pane card">
|
||||
<div id="product_comments_block_tab">
|
||||
{if (!$too_early AND ($is_logged OR $allow_guests))}
|
||||
<p class="open-comment-block">
|
||||
<a id="new_comment_tab_btn" class="btn button button-medium" href="#new_comment_form">
|
||||
<span>
|
||||
{if $comments}
|
||||
{l s='Make a review' mod='productcomments'}
|
||||
{else}
|
||||
{l s='Be the first to write your review' mod='productcomments'}
|
||||
{/if}
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<div class="new_comment_form_outer" style="display: none;">
|
||||
<div id="new_comment_form">
|
||||
<form id="id_new_comment_form" action="#">
|
||||
<!-- <h2 class="page-subheading">
|
||||
{l s='Write a review' mod='productcomments'}
|
||||
</h2> -->
|
||||
<div class="row">
|
||||
<!-- {if isset($product) && $product}
|
||||
<div class="product clearfix col-xs-12 col-sm-6">
|
||||
<img src="{$productcomment_cover_image}" height="{$mediumSize.height}" width="{$mediumSize.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>
|
||||
{/if} -->
|
||||
<div class="new_comment_form_content col-xs-12 col-sm-12">
|
||||
<div id="new_comment_form_error" class="error" style="display: none;background-color: #cd5d5d;color: #ffffff;font-size: 13px;padding-left: 10px;font-weight:400;">
|
||||
<ul></ul>
|
||||
</div>
|
||||
<label for="comment_title">
|
||||
{l s='Title:' mod='productcomments'} <sup class="required">*</sup>
|
||||
</label>
|
||||
<input id="comment_title" name="title" type="text" value=""/>
|
||||
{if $criterions|@count > 0}
|
||||
<ul id="criterions_list">
|
||||
{foreach from=$criterions item='criterion'}
|
||||
<li>
|
||||
<label>{$criterion.name|escape:'html':'UTF-8'}:</label>
|
||||
<div class="raty_star" data-score-name="criterion[{$criterion.id_product_comment_criterion|round}]"></div>
|
||||
<div class="clearfix"></div>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
<label for="content">
|
||||
{l s='Description:' mod='productcomments'} <sup class="required">*</sup>
|
||||
</label>
|
||||
<textarea id="content" name="content"></textarea>
|
||||
{if $allow_guests == true && !$is_logged}
|
||||
<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}' />
|
||||
<!-- <p class="fl required"><sup>*</sup> {l s='Required fields' mod='productcomments'}</p> -->
|
||||
<p class="fr review_submit_div">
|
||||
<button id="submitNewMessage" name="submitMessage" type="submit" class="btn button button-medium">
|
||||
<span>{l s='Make Review' mod='productcomments'}</span>
|
||||
</button>
|
||||
<!-- {l s='or' mod='productcomments'} -->
|
||||
<button id="cancelreview" name="cancelreview" type="submit" class="btn button button-medium">
|
||||
<span>{l s='Cancel' mod='productcomments'}</span>
|
||||
</button>
|
||||
</p>
|
||||
<div class="clearfix"></div>
|
||||
</div> <!-- #new_comment_form_footer -->
|
||||
</div>
|
||||
</div>
|
||||
</form><!-- /end new_comment_form_content -->
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
{/if}
|
||||
{if $comments}
|
||||
{foreach from=$comments item=comment}
|
||||
{if $comment.content}
|
||||
<div class="reviews_blogs">
|
||||
<div class="name_person">
|
||||
<span>{$comment.customer_name|escape:'html':'UTF-8'}</span>
|
||||
<span class="comment_date"><em>{dateFormat date=$comment.date_add|escape:'html':'UTF-8' full=0}</em></span>
|
||||
</div>
|
||||
<div class="review_container">
|
||||
<div class="review_title">
|
||||
<p>{$comment.title}</p>
|
||||
</div>
|
||||
<div class="star_content clearfix" itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
|
||||
<div class="raty_star readonly" data-score="{$comment.grade}"></div>
|
||||
<meta itemprop="worstRating" content = "0" />
|
||||
<meta itemprop="ratingValue" content = "{$comment.grade|escape:'html':'UTF-8'}" />
|
||||
<meta itemprop="bestRating" content = "5" />
|
||||
</div>
|
||||
<div class="review_content">
|
||||
<p itemprop="reviewBody">{$comment.content|escape:'html':'UTF-8'|nl2br}</p>
|
||||
<ul>
|
||||
{if $comment.total_advice > 0}
|
||||
<li>
|
||||
{l s='%1$d out of %2$d people found this review useful.' sprintf=[$comment.total_useful,$comment.total_advice] mod='productcomments'}
|
||||
</li>
|
||||
{/if}
|
||||
{if $is_logged}
|
||||
{if !$comment.customer_advice}
|
||||
<li>
|
||||
{l s='Was this comment useful to you?' mod='productcomments'}
|
||||
<button class="usefulness_btn btn btn-default button button-small" data-is-usefull="1" data-id-product-comment="{$comment.id_product_comment}">
|
||||
<span>{l s='Yes' mod='productcomments'}</span>
|
||||
</button>
|
||||
<button class="usefulness_btn btn btn-default button button-small" data-is-usefull="0" data-id-product-comment="{$comment.id_product_comment}">
|
||||
<span>{l s='No' mod='productcomments'}</span>
|
||||
</button>
|
||||
</li>
|
||||
{/if}
|
||||
{if !$comment.customer_report}
|
||||
<li>
|
||||
<span class="report_btn" data-id-product-comment="{$comment.id_product_comment}">
|
||||
{l s='Report abuse' mod='productcomments'}
|
||||
</span>
|
||||
</li>
|
||||
{/if}
|
||||
{/if}
|
||||
</ul>
|
||||
</p><!-- .comment_details -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{/foreach}
|
||||
{else}
|
||||
<p class="align_center no_reviews_cond_block">{l s='No customer reviews for the moment.' mod='productcomments'}</p>
|
||||
{/if}
|
||||
</div> <!-- #product_comments_block_tab -->
|
||||
</div>
|
||||
{strip}
|
||||
{addJsDef productcomments_controller_url=$productcomments_controller_url|@addcslashes:'\''}
|
||||
{addJsDef moderation_active=$moderation_active|boolval}
|
||||
{addJsDef productcomments_url_rewrite=$productcomments_url_rewriting_activated|boolval}
|
||||
{addJsDef secure_key=$secure_key}
|
||||
|
||||
{addJsDefL name=confirm_report_message}{l s='Are you sure that you want to report this review?' mod='productcomments' js=1}{/addJsDefL}
|
||||
{addJsDefL name=productcomment_added}{l s='Your review has been added!' mod='productcomments' js=1}{/addJsDefL}
|
||||
{addJsDefL name=productcomment_added_moderation}{l s='Your review has been added and will be available once approved by a moderator.' mod='productcomments' js=1}{/addJsDefL}
|
||||
{addJsDefL name=productcomment_title}{l s='New Review' mod='productcomments' js=1}{/addJsDefL}
|
||||
{addJsDefL name=productcomment_ok}{l s='OK' mod='productcomments' js=1}{/addJsDefL}
|
||||
{/strip}
|
||||
<style type="text/css">
|
||||
|
||||
.no_reviews_cond_block
|
||||
{
|
||||
color: #404040;
|
||||
font-size:15px;
|
||||
font-weight:400;
|
||||
}
|
||||
.name_person
|
||||
{
|
||||
padding: 10px;
|
||||
color: #404040;
|
||||
font-size:15px;
|
||||
font-weight:700;
|
||||
}
|
||||
.review_title
|
||||
{
|
||||
color: #404040;
|
||||
font-size:15px;
|
||||
font-weight:700;
|
||||
}
|
||||
.review_content
|
||||
{
|
||||
color: #404040;
|
||||
font-size:15px;
|
||||
font-weight:400;
|
||||
line-height: 23px;
|
||||
padding-top: 10px;
|
||||
}
|
||||
.review_container
|
||||
{
|
||||
padding:20px;
|
||||
border: 1px solid #cccccc;
|
||||
}
|
||||
.reviews_blogs
|
||||
{
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
.comment_date
|
||||
{
|
||||
font-size:15px;
|
||||
|
||||
font-weight:400;
|
||||
color: #9A9A9A;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.review_submit_div
|
||||
{
|
||||
float: left!important;
|
||||
}
|
||||
.cancel, .star
|
||||
{
|
||||
width: 25px;
|
||||
font-size: 21px;
|
||||
height: 21px;
|
||||
|
||||
}
|
||||
|
||||
.review_container
|
||||
{
|
||||
border: 1px solid #cccccc;
|
||||
padding: 20px;
|
||||
position: relative;
|
||||
}
|
||||
.review_container:after, .review_container:before
|
||||
{
|
||||
border: medium solid transparent;
|
||||
bottom: 100%;
|
||||
content: " ";
|
||||
height: 0;
|
||||
left: 7%;
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
.review_container:after
|
||||
{
|
||||
border-color: rgba(136, 183, 213, 0) rgba(136, 183, 213, 0) #ffffff;
|
||||
border-width: 9px;
|
||||
margin-left: -22px;
|
||||
}
|
||||
.review_container:before
|
||||
{
|
||||
border-color: rgba(245, 233, 171, 0) rgba(245, 233, 171, 0) #cccccc;
|
||||
border-width: 11px;
|
||||
margin-left: -24px;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -1,42 +0,0 @@
|
||||
{*
|
||||
* 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
|
||||
* @version Release: $Revision$
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
{if isset($nbComments) && $nbComments > 0}
|
||||
<div class="comments_note" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
|
||||
<div class="star_content clearfix">
|
||||
{section name="i" start=0 loop=5 step=1}
|
||||
{if $averageTotal le $smarty.section.i.index}
|
||||
<div class="star"></div>
|
||||
{else}
|
||||
<div class="star star_on"></div>
|
||||
{/if}
|
||||
{/section}
|
||||
<meta itemprop="worstRating" content = "0" />
|
||||
<meta itemprop="ratingValue" content = "{if isset($ratings.avg)}{$ratings.avg|round:1|escape:'html':'UTF-8'}{else}{$averageTotal|round:1|escape:'html':'UTF-8'}{/if}" />
|
||||
<meta itemprop="bestRating" content = "5" />
|
||||
</div>
|
||||
<span class="nb-comments"><span itemprop="reviewCount">{$nbComments}</span> {l s='Review(s)' mod='productcomments'}</span>
|
||||
</div>
|
||||
{/if}
|
||||
@@ -1,49 +0,0 @@
|
||||
<?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
|
||||
*/
|
||||
|
||||
require_once(dirname(__FILE__).'/../../config/config.inc.php');
|
||||
require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
|
||||
|
||||
if (empty($_GET['id_lang']) === false &&
|
||||
isset($_GET['id_product']) === true)
|
||||
{
|
||||
$criterions = ProductCommentCriterion::get($_GET['id_lang']);
|
||||
if ((int)($_GET['id_product']))
|
||||
$selects = ProductCommentCriterion::getByProduct($_GET['id_product'], $_GET['id_lang']);
|
||||
echo '<select name="id_product_comment_criterion[]" id="id_product_comment_criterion" multiple="true" style="height:100px;width:360px;">';
|
||||
foreach ($criterions as $criterion)
|
||||
{
|
||||
echo '<option value="'.(int)($criterion['id_product_comment_criterion']).'"';
|
||||
if (isset($selects) === true && sizeof($selects))
|
||||
{
|
||||
foreach ($selects as $select)
|
||||
if ($select['id_product_comment_criterion'] == $criterion['id_product_comment_criterion'])
|
||||
echo ' selected="selected"';
|
||||
}
|
||||
echo '>'.htmlspecialchars($criterion['name'], ENT_COMPAT, 'UTF-8').'</option>';
|
||||
}
|
||||
echo '</select>';
|
||||
}
|
||||
@@ -1,103 +0,0 @@
|
||||
{*
|
||||
* 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
|
||||
*}
|
||||
|
||||
<tr class="comparison_header">
|
||||
<td class="feature-name td_empty">
|
||||
<span>{l s='Comments' mod='productcomments'}</span>
|
||||
</td>
|
||||
{foreach from=$list_ids_product item=id_product}
|
||||
<td class="product-{$id_product}"></td>
|
||||
{/foreach}
|
||||
</tr>
|
||||
|
||||
{foreach from=$grades item=grade key=grade_id}
|
||||
<tr>
|
||||
{cycle values='comparison_feature_odd,comparison_feature_even' assign='classname'}
|
||||
<td class="{$classname} feature-name">
|
||||
<strong>{$grade}</strong>
|
||||
</td>
|
||||
{foreach from=$list_ids_product item=id_product}
|
||||
{assign var='tab_grade' value=$product_grades[$grade_id]}
|
||||
<td class="{$classname} comparison_infos ajax_block_product product-{$id_product}" align="center">
|
||||
{if isset($tab_grade[$id_product]) AND $tab_grade[$id_product]}
|
||||
<div class="product-rating">
|
||||
{section loop=6 step=1 start=1 name=average}
|
||||
<input class="auto-submit-star" disabled="disabled" type="radio" name="{$grade_id}_{$id_product}_{$smarty.section.average.index}" {if isset($tab_grade[$id_product]) AND $tab_grade[$id_product]|round neq 0 and $smarty.section.average.index eq $tab_grade[$id_product]|round}checked="checked"{/if} />
|
||||
{/section}
|
||||
</div>
|
||||
{else}
|
||||
-
|
||||
{/if}
|
||||
</td>
|
||||
{/foreach}
|
||||
</tr>
|
||||
{/foreach}
|
||||
|
||||
{cycle values='comparison_feature_odd,comparison_feature_even' assign='classname'}
|
||||
<tr>
|
||||
<td class="{$classname} feature-name">
|
||||
<strong>{l s='Average' mod='productcomments'}</strong>
|
||||
</td>
|
||||
{foreach from=$list_ids_product item=id_product}
|
||||
<td class="{$classname} comparison_infos product-{$id_product}" align="center" >
|
||||
{if isset($list_product_average[$id_product]) AND $list_product_average[$id_product]}
|
||||
<div class="product-rating">
|
||||
{section loop=6 step=1 start=1 name=average}
|
||||
<input class="auto-submit-star" disabled="disabled" type="radio" name="average_{$id_product}" {if $list_product_average[$id_product]|round neq 0 and $smarty.section.average.index eq $list_product_average[$id_product]|round}checked="checked"{/if} />
|
||||
{/section}
|
||||
</div>
|
||||
{else}
|
||||
-
|
||||
{/if}
|
||||
</td>
|
||||
{/foreach}
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="{$classname} comparison_infos feature-name"> </td>
|
||||
{foreach from=$list_ids_product item=id_product}
|
||||
<td class="{$classname} comparison_infos product-{$id_product}" align="center" >
|
||||
{if isset($product_comments[$id_product]) AND $product_comments[$id_product]}
|
||||
<a class="btn btn-default button button-small" href="#" data-id-product-comment="{$id_product|intval}" rel="#comments_{$id_product|intval}">
|
||||
<span>
|
||||
{l s='View comments' mod='productcomments'}<i class="icon-chevron-right right"></i>
|
||||
</span>
|
||||
</a>
|
||||
<div style="display:none" id="comments_{$id_product}">
|
||||
{foreach from=$product_comments[$id_product] item=comment}
|
||||
<div class="well well-sm">
|
||||
<strong>{$comment.customer_name|escape:'html':'UTF-8'} </strong>
|
||||
<small class="date"> {dateFormat date=$comment.date_add|escape:'html':'UTF-8' full=0}</small>
|
||||
<div class="comment_title">{$comment.title|escape:'html':'UTF-8'|nl2br}</div>
|
||||
<div class="comment_content">{$comment.content|escape:'html':'UTF-8'|nl2br}</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
{else}
|
||||
-
|
||||
{/if}
|
||||
</td>
|
||||
{/foreach}
|
||||
</tr>
|
||||
@@ -1,28 +0,0 @@
|
||||
{*
|
||||
* 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
|
||||
*}
|
||||
|
||||
<!-- <h3 id="#idTab5" class="idTabHrefShort page-product-heading">{l s='Reviews' mod='productcomments'}</h3>
|
||||
<h3 id="#idTab6" class="idTabHrefShort page-product-heading">{l s='Comments' mod='productcomments'}</h3> -->
|
||||
<li><a href="#idTab5" class="idTabHrefShort" data-toggle="tab">{l s='Reviews' mod='productcomments'}</a></li>
|
||||
@@ -1,116 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
|
||||
$_MODULE['<{productcomments}prestashop>default_da3e413ae5dde1a6b986203857fb1a59'] = 'El ID del producto es incorrecto';
|
||||
$_MODULE['<{productcomments}prestashop>default_7b0bf23ae4079e07a3a4cb4d07e2caef'] = 'El título es incorrecto';
|
||||
$_MODULE['<{productcomments}prestashop>default_ddbd56de5feb78ef1aaf60401f8c472b'] = 'Comentario es incorrecto';
|
||||
$_MODULE['<{productcomments}prestashop>default_1b1030b6294e9096a7d7c40d83d61872'] = 'Nombre del cliente no es correcto';
|
||||
$_MODULE['<{productcomments}prestashop>default_26510b8eb6e6053f5e91d51171967ca9'] = 'Debe de estar conectado para poder enviar un comentario';
|
||||
$_MODULE['<{productcomments}prestashop>default_a201fbadca94d310a1b62407cdc775d5'] = 'Debe dar una calificación';
|
||||
$_MODULE['<{productcomments}prestashop>default_dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'Producto no encontrado';
|
||||
$_MODULE['<{productcomments}prestashop>default_6d10b2f471e8894d59ae18e01537ece5'] = 'Por favor, espere antes de enviar otro comentario';
|
||||
$_MODULE['<{productcomments}prestashop>default_ba8d7ae5dcadfba739f28a777378f208'] = 'segundos antes de postear un nuevo comentario';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_a09ed6c60eb3213939cecb4c580813cd'] = 'Válido para la totalidad del catálogo';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_467366059d7d7c743a4d0971363a8d66'] = 'Limitado a ciertas catagorías';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_772911becd336c843ab09a1d4b4f66c0'] = 'Limitado a ciertos productos';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_fd4b5401d4d3c7d32d158bfc1e552f3b'] = 'Por favor, escriba su nombre';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f88dc17737f7fdd4464b2eb922a8f133'] = 'Se ha producido un error al guardar su comentario.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_7fa4a3510dafd0eac6435c19861b2bb7'] = 'Comentario publicado.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f8694a9aae2eb045920f613cfa7f1235'] = 'En espera de validación del moderador.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_6bf852d9850445291f5e9d4740ac7b50'] = 'Se necesita el texto del comentario.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_8aafe254c3e8dceb6425591b322044f2'] = 'Debe esperar %d segundos antes de escribir un comentario nuevo.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b91c4e8b229a399a3bc911d352524a9b'] = 'Comentario sobre el producto';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a8cd99c74a32936a90127454a02d7500'] = 'Permite a los usuarios publicar comentarios y valorar productos con criterios específicos.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'Configuración Actualizada';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8a4c4c1ccc2b1c3b89e828e24ef591a8'] = 'El criterio no se pudo guardar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_1bb54e382f7dbdb260f0aa6b42bb624b'] = 'Criterio suprimido';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_254f642527b45bc260048e30704edb39'] = 'Configuración';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_cf2fcb22e6342dea54b0cc34bb521752'] = 'Todos los comentarios deben ser validados por un empleado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e26bb46aa3f40913ee95cfb1d6c82f9'] = 'Permitir comentarios de invitados';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9dc1140983196141368ceda7565128a8'] = 'Tiempo mínimo entre 2 comentarios del mismo usuario';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2ec265696a51530949d345239069f0d4'] = 'Comentarios esperando aprobación';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_655d20c1ca69519ca647684edbb2db35'] = 'Alta';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_87f8a6ab85c9ced3702b4ea641ad4bb5'] = 'Media';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28d0edd045e05cf5af64e35ae0c4c6ef'] = 'Baja';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_eb7d6baeb8bbf339547da7e0d6c5e416'] = 'Comentarios enviados';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b718adec73e04ce3ec720dd11a06a308'] = 'ID';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_49ee3087348e8d44e1feda1917443987'] = 'Nombre';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a1fa27779242b4902f7ae3bdd5c6d508'] = 'Tipo';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ec53a8c4f07baed5d8825072c89799be'] = 'Estado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8726894930330c61dd2c24ba8265364b'] = 'Añadir nuevo criterio';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_57826496f2bb2a191458e4893e96e52e'] = 'Criterios de comentarios';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2608831883bb20ab520b70b4350aa23a'] = 'Comentarios aprobados';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f8a0aa69f5ce41287f02c2d182306f52'] = 'Título del comentario';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_457dd55184faedb7885afd4009d70163'] = 'Comentar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_dda9c06f33071c9b6fc237ee164109d8'] = 'Valoración';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a517747c3d12f99244ae598910d979c5'] = 'Autor';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_deb10517653c255364175796ace3553f'] = 'producto';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_0f46dacf1a6ecab8ce1cb97250bb8113'] = 'Fecha de la publicación';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f3d8e91894baa7ee67e0649abcc092ff'] = 'Se restringirá los criterios a las siguientes categorías';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_d3dc571a8be516766c8124a636290fd9'] = 'Marca las casillas de las categorías a las que quieras aplicar este criterio.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_91b442d385b54e1418d81adc34871053'] = 'seleccionadas';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b56c3bda503a8dc4be356edb0cc31793'] = 'Contraer todas';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5ffd7a335dd836b3373f5ec570a58bdc'] = 'Desplegar todas';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5e9df908eafa83cb51c0a3720e8348c7'] = 'Seleccionar todas';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9747d23c8cc358c5ef78c51e59cd6817'] = 'Deseleccionar todas';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_38fc05fb7f02497ea56b77fe085ffc78'] = 'Añadir nuevo criterio';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_92a497b6a43b59cce82c604a4c834bb0'] = 'Nombre del criterio';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bbda28827cde1064b0320cbf6b1890a2'] = 'Ámbito de aplicación del criterio';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_20089c27bf83463fe32e7d30ed9d8f81'] = 'Se restringirá los criterios a los siguientes productos';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Activo';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_6f7351657f795bc1357a53142b1184cc'] = 'Aprobar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ecf74aa77715220b378ec668e75655a8'] = 'No abusivo';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7c3b0e9898b88deee7ea75aafd2e37e2'] = 'Nota media';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_a71a0229e164fecdcde3c4e0f40473fa'] = 'Leer los comentarios de los usuarios';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7966126831926ad29c528b239d69f855'] = 'Escriba su comentario';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_e32b7983d3bf98a65e3e96c393867dfa'] = '%s Comentario(s)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ab51a81c76d95ddc762194d58ec5db63'] = '¿Seguro que quieres denunciar este comentario?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9a2ccd41653469a8bd94fbb84b271a14'] = '¡Tu comentario ha sido añadido!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b20968d9aecd2d075519992e9e2f1ffe'] = 'Tu comentario ha sido añadido y estará disponible una vez lo apruebe un moderador.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_186c30cab59f6b64a453778330d4bbf0'] = 'Nuevo comentario';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e0aa021e21dddbd6d8cecec71e9cf564'] = 'Ok';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4b3b9db8c9784468094acde0f8bf7071'] = 'grado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b5c82723bd85856358f9a376bc613998'] = '%1$d de %2$d personas encontraron esta crítica útil.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_39630ad6ee79b8653ea89194cdb45bec'] = 'Fue este comentario útil para usted?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a6105c0a611b41b08f1209506350279e'] = 'si';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7fa3b767c460b54a2be4d49030b349c7'] = 'no';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28b3b1e564a00f572c5d4e21da986d49'] = 'Reportar Abuso';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7966126831926ad29c528b239d69f855'] = 'Escriba su comentario';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_fbe2625bf3673be380d043a4bf873f28'] = 'Sea el primero en escribir su opinión';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_08c7d6f84301ee7d0aab0a5f67edc419'] = 'No hay reseñas de clientes en este momento.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_45dacce3e2bc0f7bebde95098b9326a8'] = 'Título de su comentario';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_3421ad00975533fbbd5f17d2cb568125'] = 'Su comentario';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_221e705c06e231636fdbccfdd14f4d5c'] = 'Su nombre';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_70397c4b252a5168c5ec003931cea215'] = 'Archivos requeridos';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_94966d90747b97d1f0f206c98a8b1ac3'] = 'Enviar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'o';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ea4788705e6873b424c65e91c2846b19'] = 'Cancelar';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Comentarios';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_b1897515d548a960afe49ecf66a29021'] = 'Promedio';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_bc976f6c3405523cde61f63a7cbe224b'] = 'ver los comentarios';
|
||||
$_MODULE['<{productcomments}prestashop>tab_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Comentarios';
|
||||
$_MODULE['<{productcomments}prestashop>form_b9aefa40a54680bb258f9f9569290fae'] = 'Nombre del producto';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_dda9c06f33071c9b6fc237ee164109d8'] = 'Valoración';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_899139b5174d8d7a6e38a0360008a695'] = 'Leer los comentarios de los usuarios';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_c31732fda0c6f01c446db7163b214de4'] = 'Escribe tu opinión';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_d844ad9202d0de8442498775ba6ef819'] = 'Comentario(s)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_93cba07454f06a4a960172bbd6e2a435'] = 'Sí';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bafd7322c6e97d25b6299b5d6fe8920b'] = 'no';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c565011debb8e2812ef12853eb6a38a9'] = '¡Escriba su opinión!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f444678e4f3575d59b32a858630741fd'] = '¡Sea el primero en escribir su opinión!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c31732fda0c6f01c446db7163b214de4'] = 'Escribe tu opinión';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_51ec9bf4aaeab1b25bb57f9f8d4de557'] = 'Título:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_240f3031f25601fa128bd4e15f0a37de'] = 'Comentario:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a2ed44743411cf8b80e397448fce104c'] = 'Su nombre:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a4d3b161ce1309df1c4e25df28694b7b'] = 'Enviar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e3ee0f5bd8f527715fb0776741b9754'] = 'Su comentario ha sido añadido y estará disponible una vez lo apruebe un moderador.';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_5d9acecbb0b55a71dea7403896356001'] = 'Ver comentarios';
|
||||
$_MODULE['<{productcomments}prestashop>tab_34e80a799d144cfe4af46815e103f017'] = 'Reseñas';
|
||||
|
||||
|
||||
return $_MODULE;
|
||||
@@ -1,115 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
|
||||
$_MODULE['<{productcomments}prestashop>default_da3e413ae5dde1a6b986203857fb1a59'] = 'رقم تعريف المنتج غير صحيح';
|
||||
$_MODULE['<{productcomments}prestashop>default_7b0bf23ae4079e07a3a4cb4d07e2caef'] = 'العنوان غير صحيح';
|
||||
$_MODULE['<{productcomments}prestashop>default_ddbd56de5feb78ef1aaf60401f8c472b'] = 'التعليق غير صحيح';
|
||||
$_MODULE['<{productcomments}prestashop>default_1b1030b6294e9096a7d7c40d83d61872'] = 'اسم العميل غير صحيح';
|
||||
$_MODULE['<{productcomments}prestashop>default_26510b8eb6e6053f5e91d51171967ca9'] = 'يجب عليك ان تكون متصلاً لكي ترسل تعليق';
|
||||
$_MODULE['<{productcomments}prestashop>default_a201fbadca94d310a1b62407cdc775d5'] = 'يجب عليك اعطاء تقييم';
|
||||
$_MODULE['<{productcomments}prestashop>default_dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'المنتج غير موجود';
|
||||
$_MODULE['<{productcomments}prestashop>default_6d10b2f471e8894d59ae18e01537ece5'] = 'الرجاء الإنتظار قبل كتابة تعليق آخر';
|
||||
$_MODULE['<{productcomments}prestashop>default_ba8d7ae5dcadfba739f28a777378f208'] = 'ثواني قبل كتابة تعليق جديد';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_a09ed6c60eb3213939cecb4c580813cd'] = 'صالحة لكل الكتالوج';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_467366059d7d7c743a4d0971363a8d66'] = 'مقيدة الى بعض التصنيفات';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_772911becd336c843ab09a1d4b4f66c0'] = 'مقيدة الى بعض المنتجات';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_fd4b5401d4d3c7d32d158bfc1e552f3b'] = 'الرجاء تعبئة إسمك';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f88dc17737f7fdd4464b2eb922a8f133'] = 'حدث خطأ اثناء حفظ تعليقك.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_7fa4a3510dafd0eac6435c19861b2bb7'] = 'تم ارسال التعليق.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f8694a9aae2eb045920f613cfa7f1235'] = 'بإنتظار التدقيق الإداري.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_6bf852d9850445291f5e9d4740ac7b50'] = 'نص التعليق مطلوب.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_8aafe254c3e8dceb6425591b322044f2'] = 'يجب عليك الإنتظار %d ثواني قبل كتابة تعليق جديد.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b91c4e8b229a399a3bc911d352524a9b'] = 'تعليقات المنتج';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a8cd99c74a32936a90127454a02d7500'] = 'يسمح للمستخدمين بالتعليق وتقييم المنتجات على معايير محددة.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'تم تحديث الإعدادات بنجاح';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8a4c4c1ccc2b1c3b89e828e24ef591a8'] = 'المعيار غير قابل للحفظ';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_1bb54e382f7dbdb260f0aa6b42bb624b'] = 'تم حذف المعيار';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_254f642527b45bc260048e30704edb39'] = 'الإعدادات';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_cf2fcb22e6342dea54b0cc34bb521752'] = 'كل التعليقات يجب ان تُدقق بواسطة موظف';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'مفعل';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b9f5c797ebbf55adccdd8539a65a0241'] = 'غير مفعل';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e26bb46aa3f40913ee95cfb1d6c82f9'] = 'اسمح بتعليقات الضيوف';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9dc1140983196141368ceda7565128a8'] = 'الحد الأدنى للزمن بين تعليقين من نفس المستخدم';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c9cc8cce247e49bae79f15173ce97354'] = 'حفظ';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2ec265696a51530949d345239069f0d4'] = 'تعليقات بإنتظار الموافقة';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_655d20c1ca69519ca647684edbb2db35'] = 'مرتفع';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_87f8a6ab85c9ced3702b4ea641ad4bb5'] = 'وسط';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28d0edd045e05cf5af64e35ae0c4c6ef'] = 'منخفض';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_eb7d6baeb8bbf339547da7e0d6c5e416'] = 'التعليقات المُبلغ عنها';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b718adec73e04ce3ec720dd11a06a308'] = 'الرقم التعريفي';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_49ee3087348e8d44e1feda1917443987'] = 'الاسم';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a1fa27779242b4902f7ae3bdd5c6d508'] = 'النوع';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ec53a8c4f07baed5d8825072c89799be'] = 'الحالة';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8726894930330c61dd2c24ba8265364b'] = 'اضف معيار جديد';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_57826496f2bb2a191458e4893e96e52e'] = 'راجع المعيار';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2608831883bb20ab520b70b4350aa23a'] = 'التعليقات المقبولة';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f8a0aa69f5ce41287f02c2d182306f52'] = 'عنوان التعليق';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_457dd55184faedb7885afd4009d70163'] = 'التعليق';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_dda9c06f33071c9b6fc237ee164109d8'] = 'التقييم';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a517747c3d12f99244ae598910d979c5'] = 'الناشر';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_deb10517653c255364175796ace3553f'] = 'منتج';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_0f46dacf1a6ecab8ce1cb97250bb8113'] = 'تاريخ النشر';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f3d8e91894baa7ee67e0649abcc092ff'] = 'المعيار سوف يُقيّد بالتصنيفات التاليه';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_d3dc571a8be516766c8124a636290fd9'] = 'حدد مربعات التصنيفات التي ينطبق عليها هذا المعيار';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_91b442d385b54e1418d81adc34871053'] = 'محدد';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b56c3bda503a8dc4be356edb0cc31793'] = 'فتح الكل';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5ffd7a335dd836b3373f5ec570a58bdc'] = 'إغلاق الكل';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5e9df908eafa83cb51c0a3720e8348c7'] = 'تحديد الكل';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9747d23c8cc358c5ef78c51e59cd6817'] = 'إلغاء التحديد';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_38fc05fb7f02497ea56b77fe085ffc78'] = 'اضف معيار جديد';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_92a497b6a43b59cce82c604a4c834bb0'] = 'إسم المعيار';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_20089c27bf83463fe32e7d30ed9d8f81'] = 'المعيار سوف يُقيّد بالمنتجات التاليه';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4d3d769b812b6faa6b76e1a8abaece2d'] = 'نشط';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_6f7351657f795bc1357a53142b1184cc'] = 'مصادقة';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ecf74aa77715220b378ec668e75655a8'] = 'غير مؤذي';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7c3b0e9898b88deee7ea75aafd2e37e2'] = 'متوسط الدرجة';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_a71a0229e164fecdcde3c4e0f40473fa'] = 'إقرأ تعليقات المستخدمين';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7966126831926ad29c528b239d69f855'] = 'اكتب تعليقك';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_e32b7983d3bf98a65e3e96c393867dfa'] = '%s تعليق(تعليقات)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ab51a81c76d95ddc762194d58ec5db63'] = 'هل انت متأكد انك تريد الإبلاغ عن هذا التعليق؟';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9a2ccd41653469a8bd94fbb84b271a14'] = 'تم إضافة تعليقك!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b20968d9aecd2d075519992e9e2f1ffe'] = 'تم إضافة تعليقك وسيكون متوفراً عندما يوافق عليه المسؤول.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_186c30cab59f6b64a453778330d4bbf0'] = 'تعليق جديد';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e0aa021e21dddbd6d8cecec71e9cf564'] = 'اعتماد التخفيض';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4b3b9db8c9784468094acde0f8bf7071'] = 'الدرجة';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b5c82723bd85856358f9a376bc613998'] = '%1$d من %2$d اشخاص وجد هذا التعليق مفيداً.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_39630ad6ee79b8653ea89194cdb45bec'] = 'هل كان التعليق مفيدا؟';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a6105c0a611b41b08f1209506350279e'] = 'نعم';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7fa3b767c460b54a2be4d49030b349c7'] = 'لا';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28b3b1e564a00f572c5d4e21da986d49'] = 'الإبلاغ عن إساءة';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7966126831926ad29c528b239d69f855'] = 'اكتب تعليقك';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_fbe2625bf3673be380d043a4bf873f28'] = 'كل أول من يكتب تعليقاً';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_08c7d6f84301ee7d0aab0a5f67edc419'] = 'لا يوجد تعليقات عملاء هذه اللحظه.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_45dacce3e2bc0f7bebde95098b9326a8'] = 'عنوان تعليقك';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_3421ad00975533fbbd5f17d2cb568125'] = 'تعليقك';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_221e705c06e231636fdbccfdd14f4d5c'] = 'إسمك';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_70397c4b252a5168c5ec003931cea215'] = 'حقول مطلوبة';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_94966d90747b97d1f0f206c98a8b1ac3'] = 'ارسل';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'أو';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ea4788705e6873b424c65e91c2846b19'] = 'إلغاء';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'التعليقات';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_b1897515d548a960afe49ecf66a29021'] = 'متوسط';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_bc976f6c3405523cde61f63a7cbe224b'] = 'اعرض التعليقات';
|
||||
$_MODULE['<{productcomments}prestashop>tab_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'التعليقات';
|
||||
$_MODULE['<{productcomments}prestashop>form_b9aefa40a54680bb258f9f9569290fae'] = 'اسم المنتج';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_dda9c06f33071c9b6fc237ee164109d8'] = 'التقييم';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_899139b5174d8d7a6e38a0360008a695'] = 'اقرأ التعليقات';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_c31732fda0c6f01c446db7163b214de4'] = 'اكتب تعليق';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_d844ad9202d0de8442498775ba6ef819'] = 'التعليقات';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_93cba07454f06a4a960172bbd6e2a435'] = 'نعم';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bafd7322c6e97d25b6299b5d6fe8920b'] = 'لا';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c565011debb8e2812ef12853eb6a38a9'] = 'اكتب تعليقك!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f444678e4f3575d59b32a858630741fd'] = 'كل أول من يكتب تعليقاً!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c31732fda0c6f01c446db7163b214de4'] = 'اكتب تعليق';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_51ec9bf4aaeab1b25bb57f9f8d4de557'] = 'العنوان:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_240f3031f25601fa128bd4e15f0a37de'] = 'التعليق:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a2ed44743411cf8b80e397448fce104c'] = 'إسمك:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a4d3b161ce1309df1c4e25df28694b7b'] = 'إعتماد';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e3ee0f5bd8f527715fb0776741b9754'] = 'تم إضافة تعليقك وسيكون متوفراً عندما يوافق عليه المسؤول.';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_5d9acecbb0b55a71dea7403896356001'] = 'اعرض التعليقات';
|
||||
$_MODULE['<{productcomments}prestashop>tab_34e80a799d144cfe4af46815e103f017'] = 'تعليقات';
|
||||
|
||||
|
||||
return $_MODULE;
|
||||
@@ -1,116 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
|
||||
$_MODULE['<{productcomments}prestashop>default_da3e413ae5dde1a6b986203857fb1a59'] = 'Неправилно ИД на продукт';
|
||||
$_MODULE['<{productcomments}prestashop>default_7b0bf23ae4079e07a3a4cb4d07e2caef'] = 'Заглавието е невалидно';
|
||||
$_MODULE['<{productcomments}prestashop>default_ddbd56de5feb78ef1aaf60401f8c472b'] = 'Коментарът е неваллиден';
|
||||
$_MODULE['<{productcomments}prestashop>default_1b1030b6294e9096a7d7c40d83d61872'] = 'Потребителското име е грешно';
|
||||
$_MODULE['<{productcomments}prestashop>default_26510b8eb6e6053f5e91d51171967ca9'] = 'Трябва да сте свързан(а), за да изпратите коментар';
|
||||
$_MODULE['<{productcomments}prestashop>default_a201fbadca94d310a1b62407cdc775d5'] = 'Трябва да дадете оценка';
|
||||
$_MODULE['<{productcomments}prestashop>default_dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'Не е открит продукт';
|
||||
$_MODULE['<{productcomments}prestashop>default_6d10b2f471e8894d59ae18e01537ece5'] = 'Моля, изчакайте преди да публикувате нов коментар';
|
||||
$_MODULE['<{productcomments}prestashop>default_ba8d7ae5dcadfba739f28a777378f208'] = 'секунди преди публикуване на нов коментар';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_a09ed6c60eb3213939cecb4c580813cd'] = 'Валидно за целия каталог';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_467366059d7d7c743a4d0971363a8d66'] = 'Ограничено до някои категории';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_772911becd336c843ab09a1d4b4f66c0'] = 'Ограничено до някои продукти';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_fd4b5401d4d3c7d32d158bfc1e552f3b'] = 'Моля, попълнете името си';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f88dc17737f7fdd4464b2eb922a8f133'] = 'Грешка при запис на коментар.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_7fa4a3510dafd0eac6435c19861b2bb7'] = 'Коментарът е публикуван.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f8694a9aae2eb045920f613cfa7f1235'] = 'Изчаква потвърждение от модератора.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_6bf852d9850445291f5e9d4740ac7b50'] = 'Трябва да има въведен текст на коментара.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_8aafe254c3e8dceb6425591b322044f2'] = 'Трябва да изчакате %d секунди преди да публикувате нов коментар.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b91c4e8b229a399a3bc911d352524a9b'] = 'Коментари за продуктите';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a8cd99c74a32936a90127454a02d7500'] = 'Позволява на потребители да публикуват отзиви и да оценяват продукти по специфични критерии.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'Настройките са обновени';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8a4c4c1ccc2b1c3b89e828e24ef591a8'] = 'Критерият не може да бъде записан';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_1bb54e382f7dbdb260f0aa6b42bb624b'] = 'Критерият е изтрит';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_254f642527b45bc260048e30704edb39'] = 'Конфигурация';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_cf2fcb22e6342dea54b0cc34bb521752'] = 'Всички отзиви трябва да бъдат потвърдени от служител';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Активен';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b9f5c797ebbf55adccdd8539a65a0241'] = 'Забранено';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e26bb46aa3f40913ee95cfb1d6c82f9'] = 'Разрешаване на отзиви от гости';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9dc1140983196141368ceda7565128a8'] = 'Минимално време между 2 отзива от един и същ потребител';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c9cc8cce247e49bae79f15173ce97354'] = 'Запазване';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2ec265696a51530949d345239069f0d4'] = 'Отзиви, чакащи одобрение';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_655d20c1ca69519ca647684edbb2db35'] = 'Висока';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_87f8a6ab85c9ced3702b4ea641ad4bb5'] = 'Средна';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28d0edd045e05cf5af64e35ae0c4c6ef'] = 'Нисък';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_eb7d6baeb8bbf339547da7e0d6c5e416'] = 'Докладвани отзиви';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b718adec73e04ce3ec720dd11a06a308'] = 'ИД';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_49ee3087348e8d44e1feda1917443987'] = 'Име';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a1fa27779242b4902f7ae3bdd5c6d508'] = 'Вид';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ec53a8c4f07baed5d8825072c89799be'] = 'Статус';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8726894930330c61dd2c24ba8265364b'] = 'Добавяне на нов критерий';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_57826496f2bb2a191458e4893e96e52e'] = 'Критерий за преглед';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2608831883bb20ab520b70b4350aa23a'] = 'Одобрени отзиви';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f8a0aa69f5ce41287f02c2d182306f52'] = 'Заглавие на отзив';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_457dd55184faedb7885afd4009d70163'] = 'Отзив';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_dda9c06f33071c9b6fc237ee164109d8'] = 'Рейтинг';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a517747c3d12f99244ae598910d979c5'] = 'Автор';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_deb10517653c255364175796ace3553f'] = 'Продукт';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_0f46dacf1a6ecab8ce1cb97250bb8113'] = 'Време на публикуване';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f3d8e91894baa7ee67e0649abcc092ff'] = 'Критерият ще бъде ограничен за следните категории';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_d3dc571a8be516766c8124a636290fd9'] = 'Маркирайте каретата на категориите, към които се прилага критерият.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_91b442d385b54e1418d81adc34871053'] = 'Избрани';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b56c3bda503a8dc4be356edb0cc31793'] = 'Свиване на всички';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5ffd7a335dd836b3373f5ec570a58bdc'] = 'Разгъване на всички';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5e9df908eafa83cb51c0a3720e8348c7'] = 'Маркиране на всички';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9747d23c8cc358c5ef78c51e59cd6817'] = 'Отмаркиране на всички';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_38fc05fb7f02497ea56b77fe085ffc78'] = 'Добавяне на нов критерий';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_92a497b6a43b59cce82c604a4c834bb0'] = 'Наименование на критерий';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bbda28827cde1064b0320cbf6b1890a2'] = 'Обхват на прилагане на критерият';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_20089c27bf83463fe32e7d30ed9d8f81'] = 'Критерият ще бъде ограничен до следните продукти';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Активен';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_6f7351657f795bc1357a53142b1184cc'] = 'Одобряване';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ecf74aa77715220b378ec668e75655a8'] = 'Няма злоупотреба';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7c3b0e9898b88deee7ea75aafd2e37e2'] = 'Средна оценка';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_a71a0229e164fecdcde3c4e0f40473fa'] = 'Прочети потребителски мнения';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7966126831926ad29c528b239d69f855'] = 'Напишете свой отзив';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_e32b7983d3bf98a65e3e96c393867dfa'] = '%s отзив(а)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ab51a81c76d95ddc762194d58ec5db63'] = 'Сигурни ли сте, че искате да докладвате този коментар?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9a2ccd41653469a8bd94fbb84b271a14'] = 'Коментарът Ви беше добавен!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b20968d9aecd2d075519992e9e2f1ffe'] = 'Коментарът Ви беше изпратен и ще се вижда след одобрение от модератор.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_186c30cab59f6b64a453778330d4bbf0'] = 'Нов коментар';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e0aa021e21dddbd6d8cecec71e9cf564'] = 'Добре';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4b3b9db8c9784468094acde0f8bf7071'] = 'Оценка';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b5c82723bd85856358f9a376bc613998'] = '%1$d от %2$d човека смятат, че този отзив е полезен.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_39630ad6ee79b8653ea89194cdb45bec'] = 'Беше ли полезен този коментар за Вас?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a6105c0a611b41b08f1209506350279e'] = 'да';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7fa3b767c460b54a2be4d49030b349c7'] = 'не';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28b3b1e564a00f572c5d4e21da986d49'] = 'Докладвайте нарушение';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7966126831926ad29c528b239d69f855'] = 'Напишете свой отзив';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_fbe2625bf3673be380d043a4bf873f28'] = 'Напишете първи Ваш отзив';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_08c7d6f84301ee7d0aab0a5f67edc419'] = 'Все още няма отзиви от клиенти.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_45dacce3e2bc0f7bebde95098b9326a8'] = 'Заглавие на вашият отзив';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_3421ad00975533fbbd5f17d2cb568125'] = 'Ваш отзив';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_221e705c06e231636fdbccfdd14f4d5c'] = 'Вашето име';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_70397c4b252a5168c5ec003931cea215'] = 'Задължителни полета';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_94966d90747b97d1f0f206c98a8b1ac3'] = 'Изпращане';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'или';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ea4788705e6873b424c65e91c2846b19'] = 'Отказ';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Коментари';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_b1897515d548a960afe49ecf66a29021'] = 'Среден';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_bc976f6c3405523cde61f63a7cbe224b'] = 'преглед на коментарите';
|
||||
$_MODULE['<{productcomments}prestashop>tab_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Коментари';
|
||||
$_MODULE['<{productcomments}prestashop>form_b9aefa40a54680bb258f9f9569290fae'] = 'Име на продукта';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_dda9c06f33071c9b6fc237ee164109d8'] = 'Рейтинг';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_899139b5174d8d7a6e38a0360008a695'] = 'Прочетете отзивите';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_c31732fda0c6f01c446db7163b214de4'] = 'Напишете отзив';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_d844ad9202d0de8442498775ba6ef819'] = 'Отзив(и)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_93cba07454f06a4a960172bbd6e2a435'] = 'Да';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bafd7322c6e97d25b6299b5d6fe8920b'] = 'Не';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c565011debb8e2812ef12853eb6a38a9'] = 'Напишете свой отзив!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f444678e4f3575d59b32a858630741fd'] = 'Напишете първи Ваш отзив!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c31732fda0c6f01c446db7163b214de4'] = 'Напишете отзив';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_51ec9bf4aaeab1b25bb57f9f8d4de557'] = 'Заглавие:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_240f3031f25601fa128bd4e15f0a37de'] = 'Коментар:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a2ed44743411cf8b80e397448fce104c'] = 'Вашето име:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a4d3b161ce1309df1c4e25df28694b7b'] = 'Изпращане';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e3ee0f5bd8f527715fb0776741b9754'] = 'Коментарът Ви беше добавен и ще се вижда след одобрение от модератор.';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_5d9acecbb0b55a71dea7403896356001'] = 'Преглед на коментарите';
|
||||
$_MODULE['<{productcomments}prestashop>tab_34e80a799d144cfe4af46815e103f017'] = 'Отзиви';
|
||||
|
||||
|
||||
return $_MODULE;
|
||||
@@ -1,64 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
|
||||
$_MODULE['<{productcomments}prestashop>default_dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'Produto não encontrado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'Configurações atualizadas';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_254f642527b45bc260048e30704edb39'] = 'Configuração';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Ativado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desativado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c9cc8cce247e49bae79f15173ce97354'] = 'Salvar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_655d20c1ca69519ca647684edbb2db35'] = 'Alta';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_87f8a6ab85c9ced3702b4ea641ad4bb5'] = 'Médio';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28d0edd045e05cf5af64e35ae0c4c6ef'] = 'Baixa';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b718adec73e04ce3ec720dd11a06a308'] = 'ID';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_49ee3087348e8d44e1feda1917443987'] = 'Nome';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a1fa27779242b4902f7ae3bdd5c6d508'] = 'Tipo';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ec53a8c4f07baed5d8825072c89799be'] = 'Estado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_dda9c06f33071c9b6fc237ee164109d8'] = 'Avaliação';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a517747c3d12f99244ae598910d979c5'] = 'Autor';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_deb10517653c255364175796ace3553f'] = 'Produto';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_91b442d385b54e1418d81adc34871053'] = 'Selecionado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b56c3bda503a8dc4be356edb0cc31793'] = 'Recolher todos ';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5ffd7a335dd836b3373f5ec570a58bdc'] = 'Expandir todos';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5e9df908eafa83cb51c0a3720e8348c7'] = 'Marcar todos';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9747d23c8cc358c5ef78c51e59cd6817'] = 'Desmarcar todos';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Ativo';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ab51a81c76d95ddc762194d58ec5db63'] = 'Você tem certeza de que deseja reportar este comentário?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9a2ccd41653469a8bd94fbb84b271a14'] = 'Seu comentário foi adicionado com sucesso!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_186c30cab59f6b64a453778330d4bbf0'] = 'Novo comentário';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e0aa021e21dddbd6d8cecec71e9cf564'] = 'OK';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4b3b9db8c9784468094acde0f8bf7071'] = 'Nível';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b5c82723bd85856358f9a376bc613998'] = '%1$d de %2$d pessoas acharam esse avaliação útil.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_39630ad6ee79b8653ea89194cdb45bec'] = 'Este comentário foi útil para você?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a6105c0a611b41b08f1209506350279e'] = 'sim';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7fa3b767c460b54a2be4d49030b349c7'] = 'não';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28b3b1e564a00f572c5d4e21da986d49'] = 'Reportar Abuso';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_08c7d6f84301ee7d0aab0a5f67edc419'] = 'Nenhuma avaliação de cliente no momento.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_70397c4b252a5168c5ec003931cea215'] = 'Campos Obrigatórios';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_94966d90747b97d1f0f206c98a8b1ac3'] = 'Enviar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'ou';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ea4788705e6873b424c65e91c2846b19'] = 'Cancelar';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Comentários';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_b1897515d548a960afe49ecf66a29021'] = 'Média';
|
||||
$_MODULE['<{productcomments}prestashop>tab_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Comentários';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_dda9c06f33071c9b6fc237ee164109d8'] = 'Avaliação';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_899139b5174d8d7a6e38a0360008a695'] = 'Leia os comentários do usuário';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_c31732fda0c6f01c446db7163b214de4'] = 'Escrever uma avaliação';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_d844ad9202d0de8442498775ba6ef819'] = 'Avaliação(ões)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_93cba07454f06a4a960172bbd6e2a435'] = 'Sim';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bafd7322c6e97d25b6299b5d6fe8920b'] = 'Não';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c565011debb8e2812ef12853eb6a38a9'] = 'Faça uma avaliação!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f444678e4f3575d59b32a858630741fd'] = 'Seja o primeiro a avaliar!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c31732fda0c6f01c446db7163b214de4'] = 'Escrever uma avaliação';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_51ec9bf4aaeab1b25bb57f9f8d4de557'] = 'Título:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_240f3031f25601fa128bd4e15f0a37de'] = 'Comentário:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a2ed44743411cf8b80e397448fce104c'] = 'Seu nome:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a4d3b161ce1309df1c4e25df28694b7b'] = 'Enviar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e3ee0f5bd8f527715fb0776741b9754'] = 'Seu comentário foi adicionado e ficará disponível assim que for aprovado por um moderador.';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_5d9acecbb0b55a71dea7403896356001'] = 'Ver comentários';
|
||||
$_MODULE['<{productcomments}prestashop>tab_34e80a799d144cfe4af46815e103f017'] = 'Comentários';
|
||||
|
||||
|
||||
return $_MODULE;
|
||||
@@ -1,64 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
|
||||
$_MODULE['<{productcomments}prestashop>default_dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'Producte no trobat';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'Configuració modificada';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_254f642527b45bc260048e30704edb39'] = 'Configuració';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activat';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivat';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c9cc8cce247e49bae79f15173ce97354'] = 'Desar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_655d20c1ca69519ca647684edbb2db35'] = 'Alt';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_87f8a6ab85c9ced3702b4ea641ad4bb5'] = 'Mig';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28d0edd045e05cf5af64e35ae0c4c6ef'] = 'Baix';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b718adec73e04ce3ec720dd11a06a308'] = 'Identificació';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_49ee3087348e8d44e1feda1917443987'] = 'Nom';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a1fa27779242b4902f7ae3bdd5c6d508'] = 'Tipus';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ec53a8c4f07baed5d8825072c89799be'] = 'Estat';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_dda9c06f33071c9b6fc237ee164109d8'] = 'Valoració';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a517747c3d12f99244ae598910d979c5'] = 'Autor';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_deb10517653c255364175796ace3553f'] = 'Producte';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_91b442d385b54e1418d81adc34871053'] = 'seleccionat';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b56c3bda503a8dc4be356edb0cc31793'] = 'Tancar tot';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5ffd7a335dd836b3373f5ec570a58bdc'] = 'Expendeix tot';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5e9df908eafa83cb51c0a3720e8348c7'] = 'Comproveu totes les';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9747d23c8cc358c5ef78c51e59cd6817'] = 'Desactiveu l\'opció Tots els';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Actiu';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ab51a81c76d95ddc762194d58ec5db63'] = 'N\'esteu segurs que voleu informar d\'aquest comentari?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9a2ccd41653469a8bd94fbb84b271a14'] = 'El vostre comentari s\'ha afegit!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_186c30cab59f6b64a453778330d4bbf0'] = 'Nou comentari';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e0aa021e21dddbd6d8cecec71e9cf564'] = 'Acceptar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4b3b9db8c9784468094acde0f8bf7071'] = 'Grau';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b5c82723bd85856358f9a376bc613998'] = '%1$d de %2$d persones han trobat útil aquesta opinió.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_39630ad6ee79b8653ea89194cdb45bec'] = 'Aquest comentari us sembla útil?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a6105c0a611b41b08f1209506350279e'] = 'sí';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7fa3b767c460b54a2be4d49030b349c7'] = 'no';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28b3b1e564a00f572c5d4e21da986d49'] = 'Informeu d\'un abús';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_08c7d6f84301ee7d0aab0a5f67edc419'] = 'Actualment no hi ha ressenyes de clients.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_70397c4b252a5168c5ec003931cea215'] = 'Camps exigits';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_94966d90747b97d1f0f206c98a8b1ac3'] = 'Enviar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'o';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ea4788705e6873b424c65e91c2846b19'] = 'Cancel·lar';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Comentaris';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_b1897515d548a960afe49ecf66a29021'] = 'Mitjana';
|
||||
$_MODULE['<{productcomments}prestashop>tab_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Comentaris';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_dda9c06f33071c9b6fc237ee164109d8'] = 'Valoració';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_899139b5174d8d7a6e38a0360008a695'] = 'Llegir les opinions de clients';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_c31732fda0c6f01c446db7163b214de4'] = 'Escriviu una valoració';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_d844ad9202d0de8442498775ba6ef819'] = 'Ressenyes';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_93cba07454f06a4a960172bbd6e2a435'] = 'Sí';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bafd7322c6e97d25b6299b5d6fe8920b'] = 'No';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c565011debb8e2812ef12853eb6a38a9'] = 'Escriviu la vostra opinió!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f444678e4f3575d59b32a858630741fd'] = 'Sigueu el primer en escriure la vostra opinió!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c31732fda0c6f01c446db7163b214de4'] = 'Escriviu una valoració';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_51ec9bf4aaeab1b25bb57f9f8d4de557'] = 'Títol:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_240f3031f25601fa128bd4e15f0a37de'] = 'Comentari:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a2ed44743411cf8b80e397448fce104c'] = 'El vostre nom:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a4d3b161ce1309df1c4e25df28694b7b'] = 'Enviar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e3ee0f5bd8f527715fb0776741b9754'] = 'El vostre comentari s\'ha afegit correctament i estarà disponible quan l\'hagi aprovat el moderador.';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_5d9acecbb0b55a71dea7403896356001'] = 'Veure comentaris';
|
||||
$_MODULE['<{productcomments}prestashop>tab_34e80a799d144cfe4af46815e103f017'] = 'Opinions';
|
||||
|
||||
|
||||
return $_MODULE;
|
||||
@@ -1,116 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
|
||||
$_MODULE['<{productcomments}prestashop>default_da3e413ae5dde1a6b986203857fb1a59'] = 'Artikel-ID falsch';
|
||||
$_MODULE['<{productcomments}prestashop>default_7b0bf23ae4079e07a3a4cb4d07e2caef'] = 'Artikel-Bezeichnung falsch';
|
||||
$_MODULE['<{productcomments}prestashop>default_ddbd56de5feb78ef1aaf60401f8c472b'] = 'Kommentar falsch';
|
||||
$_MODULE['<{productcomments}prestashop>default_1b1030b6294e9096a7d7c40d83d61872'] = 'Kundenname falsch';
|
||||
$_MODULE['<{productcomments}prestashop>default_26510b8eb6e6053f5e91d51171967ca9'] = 'Sie müssen angemeldet sein, um einen Kommentar abzugeben';
|
||||
$_MODULE['<{productcomments}prestashop>default_a201fbadca94d310a1b62407cdc775d5'] = 'Sie müssen eine Bewertung vergeben';
|
||||
$_MODULE['<{productcomments}prestashop>default_dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'Artikel nicht gefunden';
|
||||
$_MODULE['<{productcomments}prestashop>default_6d10b2f471e8894d59ae18e01537ece5'] = 'Bitte warten. Sie können noch keinen neuen Kommentar absenden';
|
||||
$_MODULE['<{productcomments}prestashop>default_ba8d7ae5dcadfba739f28a777378f208'] = 'Sekunden warten, bevor Sie einen neuen Kommentar posten';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_a09ed6c60eb3213939cecb4c580813cd'] = 'Gültig für den gesamten Katalog';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_467366059d7d7c743a4d0971363a8d66'] = 'Auf bestimmte Kategorien beschränkt';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_772911becd336c843ab09a1d4b4f66c0'] = 'Auf bestimmte Artikel beschränkt';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_fd4b5401d4d3c7d32d158bfc1e552f3b'] = 'Bitte tragen Sie Ihren Namen ein';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f88dc17737f7fdd4464b2eb922a8f133'] = 'Beim Speichern Ihres Kommentars ist ein Fehler aufgetreten.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_7fa4a3510dafd0eac6435c19861b2bb7'] = 'Kommentar veröffentlicht.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f8694a9aae2eb045920f613cfa7f1235'] = 'Noch nicht vom Moderator freigegeben.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_6bf852d9850445291f5e9d4740ac7b50'] = 'Kommentartext ist erforderlich.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_8aafe254c3e8dceb6425591b322044f2'] = 'Bitte %d Sekunden bis zum Verfassen neuer Kommentare warten.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b91c4e8b229a399a3bc911d352524a9b'] = 'Artikel-Kommentare';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a8cd99c74a32936a90127454a02d7500'] = 'Erlaubt Benutzern, Besprechungen und Bewertungen von Artikeln nach bestimmten Kriterien vorzunehmen.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'Einstellungen aktualisiert';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8a4c4c1ccc2b1c3b89e828e24ef591a8'] = 'Bewertungskriterium konnte nicht gespeichern werden';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_1bb54e382f7dbdb260f0aa6b42bb624b'] = 'Kriterium gelöscht';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_254f642527b45bc260048e30704edb39'] = 'Einstellungen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_cf2fcb22e6342dea54b0cc34bb521752'] = 'Kommentare müssen von einem Mitarbeiter freigegeben werden';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Aktiviert';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b9f5c797ebbf55adccdd8539a65a0241'] = 'Deaktiviert';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e26bb46aa3f40913ee95cfb1d6c82f9'] = 'Gastkommentare erlauben';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9dc1140983196141368ceda7565128a8'] = 'Mindestzeit zwischen zwei Kommentare eines Kunden';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c9cc8cce247e49bae79f15173ce97354'] = 'Speichern';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2ec265696a51530949d345239069f0d4'] = 'Kommentare noch nicht freigegeben';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_655d20c1ca69519ca647684edbb2db35'] = 'Hoch';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_87f8a6ab85c9ced3702b4ea641ad4bb5'] = 'Mittel';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28d0edd045e05cf5af64e35ae0c4c6ef'] = 'Niedrig';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_eb7d6baeb8bbf339547da7e0d6c5e416'] = 'Gemeldete Kommentare';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b718adec73e04ce3ec720dd11a06a308'] = 'ID';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_49ee3087348e8d44e1feda1917443987'] = 'Name';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a1fa27779242b4902f7ae3bdd5c6d508'] = 'Typ';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ec53a8c4f07baed5d8825072c89799be'] = 'Status';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8726894930330c61dd2c24ba8265364b'] = 'Neues Kriterium';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_57826496f2bb2a191458e4893e96e52e'] = 'Prüfkriterien';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2608831883bb20ab520b70b4350aa23a'] = 'Freigegebene Kommentare';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f8a0aa69f5ce41287f02c2d182306f52'] = 'Überschrift';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_457dd55184faedb7885afd4009d70163'] = 'Kommentar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_dda9c06f33071c9b6fc237ee164109d8'] = 'Bewertung';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a517747c3d12f99244ae598910d979c5'] = 'Autor';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_deb10517653c255364175796ace3553f'] = 'Artikel';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_0f46dacf1a6ecab8ce1cb97250bb8113'] = 'gepostet';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f3d8e91894baa7ee67e0649abcc092ff'] = 'Bewertung ist beschränkt auf folgende Kategorien';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_d3dc571a8be516766c8124a636290fd9'] = 'Kategorien anklicken, für die dieses Kriterium zutrifft.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_91b442d385b54e1418d81adc34871053'] = 'ausgewählt';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b56c3bda503a8dc4be356edb0cc31793'] = 'Alle schließen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5ffd7a335dd836b3373f5ec570a58bdc'] = 'Alle anzeigen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5e9df908eafa83cb51c0a3720e8348c7'] = 'Alle aktivieren';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9747d23c8cc358c5ef78c51e59cd6817'] = 'Alle deaktivieren';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_38fc05fb7f02497ea56b77fe085ffc78'] = 'Neues Kriterium';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_92a497b6a43b59cce82c604a4c834bb0'] = 'Kriterium';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bbda28827cde1064b0320cbf6b1890a2'] = 'Geltungsbereich des Kriteriums';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_20089c27bf83463fe32e7d30ed9d8f81'] = 'Kriterium gilt nur für folgende Artikel';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Aktiv';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_6f7351657f795bc1357a53142b1184cc'] = 'Bestätigen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ecf74aa77715220b378ec668e75655a8'] = 'Nicht missbräuchlich';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7c3b0e9898b88deee7ea75aafd2e37e2'] = 'Durchschnittlich';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_a71a0229e164fecdcde3c4e0f40473fa'] = 'Kundenbewertungen lesen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7966126831926ad29c528b239d69f855'] = 'Eigenen Kommentar verfassen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_e32b7983d3bf98a65e3e96c393867dfa'] = '%s Bewertung(en)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ab51a81c76d95ddc762194d58ec5db63'] = 'Möchten Sie diesen Kommentar wirklich melden?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9a2ccd41653469a8bd94fbb84b271a14'] = 'Ihr Kommentar wurde hinzugefügt.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b20968d9aecd2d075519992e9e2f1ffe'] = 'Ihr Kommentar wurde gespeichert und wird sofort nach Freigabe durch einen Moderator angezeigt.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_186c30cab59f6b64a453778330d4bbf0'] = 'Neuer Kommentar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e0aa021e21dddbd6d8cecec71e9cf564'] = 'OK';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4b3b9db8c9784468094acde0f8bf7071'] = 'Rang';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b5c82723bd85856358f9a376bc613998'] = '%1$d von %2$d Kunden fanden diese Bewertung hilfreich.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_39630ad6ee79b8653ea89194cdb45bec'] = 'Ist dieser Kommentar für Sie nützlich?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a6105c0a611b41b08f1209506350279e'] = 'ja';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7fa3b767c460b54a2be4d49030b349c7'] = 'nein';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28b3b1e564a00f572c5d4e21da986d49'] = 'Mißbrauch melden';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7966126831926ad29c528b239d69f855'] = 'Eigenen Kommentar verfassen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_fbe2625bf3673be380d043a4bf873f28'] = 'Schreiben Sie den ersten Kundenkommentar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_08c7d6f84301ee7d0aab0a5f67edc419'] = 'Aktuell keine Kunden-Kommentare';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_45dacce3e2bc0f7bebde95098b9326a8'] = 'Überschrift Ihres Kommentars';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_3421ad00975533fbbd5f17d2cb568125'] = 'Ihr Kommentar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_221e705c06e231636fdbccfdd14f4d5c'] = 'Ihr Name';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_70397c4b252a5168c5ec003931cea215'] = 'Pflichtfelder';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_94966d90747b97d1f0f206c98a8b1ac3'] = 'Senden';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'oder';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ea4788705e6873b424c65e91c2846b19'] = 'Abbrechen';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Kommentare';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_b1897515d548a960afe49ecf66a29021'] = 'Durchschnitt';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_bc976f6c3405523cde61f63a7cbe224b'] = 'Kommentare ansehen';
|
||||
$_MODULE['<{productcomments}prestashop>tab_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Kommentare';
|
||||
$_MODULE['<{productcomments}prestashop>form_b9aefa40a54680bb258f9f9569290fae'] = 'Artikelname';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_dda9c06f33071c9b6fc237ee164109d8'] = 'Bewertung';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_899139b5174d8d7a6e38a0360008a695'] = 'Kundenbewertungen lesen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_c31732fda0c6f01c446db7163b214de4'] = 'Eigene Bewertung verfassen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_d844ad9202d0de8442498775ba6ef819'] = 'Bewertungen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_93cba07454f06a4a960172bbd6e2a435'] = 'Ja';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bafd7322c6e97d25b6299b5d6fe8920b'] = 'Nein';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c565011debb8e2812ef12853eb6a38a9'] = 'Eigenen Kommentar verfassen!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f444678e4f3575d59b32a858630741fd'] = 'Schreiben Sie den ersten Kundenkommentar!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c31732fda0c6f01c446db7163b214de4'] = 'Eigene Bewertung verfassen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_51ec9bf4aaeab1b25bb57f9f8d4de557'] = 'Überschrift:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_240f3031f25601fa128bd4e15f0a37de'] = 'Kommentar:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a2ed44743411cf8b80e397448fce104c'] = 'Ihr Name:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a4d3b161ce1309df1c4e25df28694b7b'] = 'Abschicken';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e3ee0f5bd8f527715fb0776741b9754'] = 'Ihr Kommentar wurde hinzugefügt und wird nach Prüfung durch einen Moderator angezeigt.';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_5d9acecbb0b55a71dea7403896356001'] = 'Kommentare ansehen';
|
||||
$_MODULE['<{productcomments}prestashop>tab_34e80a799d144cfe4af46815e103f017'] = 'Bewertungen';
|
||||
|
||||
|
||||
return $_MODULE;
|
||||
@@ -1,116 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
|
||||
$_MODULE['<{productcomments}prestashop>default_da3e413ae5dde1a6b986203857fb1a59'] = 'Product ID is incorrect';
|
||||
$_MODULE['<{productcomments}prestashop>default_7b0bf23ae4079e07a3a4cb4d07e2caef'] = 'Title is incorrect';
|
||||
$_MODULE['<{productcomments}prestashop>default_ddbd56de5feb78ef1aaf60401f8c472b'] = 'Comment is incorrect';
|
||||
$_MODULE['<{productcomments}prestashop>default_1b1030b6294e9096a7d7c40d83d61872'] = 'Customer name is incorrect';
|
||||
$_MODULE['<{productcomments}prestashop>default_26510b8eb6e6053f5e91d51171967ca9'] = 'You must be connected in order to send a comment';
|
||||
$_MODULE['<{productcomments}prestashop>default_a201fbadca94d310a1b62407cdc775d5'] = 'You must give a rating';
|
||||
$_MODULE['<{productcomments}prestashop>default_dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'Product not found';
|
||||
$_MODULE['<{productcomments}prestashop>default_6d10b2f471e8894d59ae18e01537ece5'] = 'Please wait before posting another comment';
|
||||
$_MODULE['<{productcomments}prestashop>default_ba8d7ae5dcadfba739f28a777378f208'] = 'seconds before posting a new comment';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_a09ed6c60eb3213939cecb4c580813cd'] = 'Valid for the entire catalog';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_467366059d7d7c743a4d0971363a8d66'] = 'Restricted to some categories';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_772911becd336c843ab09a1d4b4f66c0'] = 'Restricted to some products';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_fd4b5401d4d3c7d32d158bfc1e552f3b'] = 'Please fill your name';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f88dc17737f7fdd4464b2eb922a8f133'] = 'An error occurred while saving your comment.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_7fa4a3510dafd0eac6435c19861b2bb7'] = 'Comment posted.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f8694a9aae2eb045920f613cfa7f1235'] = 'Awaiting moderator validation.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_6bf852d9850445291f5e9d4740ac7b50'] = 'Comment text is required.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_8aafe254c3e8dceb6425591b322044f2'] = 'You should wait %d seconds before posting a new comment.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b91c4e8b229a399a3bc911d352524a9b'] = 'Product Comments';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a8cd99c74a32936a90127454a02d7500'] = 'Allows users to post reviews and rate products on specific criteria.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'Settings updated';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8a4c4c1ccc2b1c3b89e828e24ef591a8'] = 'The criterion could not be saved';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_1bb54e382f7dbdb260f0aa6b42bb624b'] = 'Criterion deleted';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_254f642527b45bc260048e30704edb39'] = 'Configuration';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_cf2fcb22e6342dea54b0cc34bb521752'] = 'All reviews must be validated by an employee';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Enabled';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b9f5c797ebbf55adccdd8539a65a0241'] = 'Disabled';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e26bb46aa3f40913ee95cfb1d6c82f9'] = 'Allow guest reviews';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9dc1140983196141368ceda7565128a8'] = 'Minimum time between 2 reviews from the same user';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c9cc8cce247e49bae79f15173ce97354'] = 'Save';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2ec265696a51530949d345239069f0d4'] = 'Reviews waiting for approval';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_655d20c1ca69519ca647684edbb2db35'] = 'High';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_87f8a6ab85c9ced3702b4ea641ad4bb5'] = 'Medium';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28d0edd045e05cf5af64e35ae0c4c6ef'] = 'Low';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_eb7d6baeb8bbf339547da7e0d6c5e416'] = 'Reported Reviews';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b718adec73e04ce3ec720dd11a06a308'] = 'ID';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_49ee3087348e8d44e1feda1917443987'] = 'Name';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a1fa27779242b4902f7ae3bdd5c6d508'] = 'Type';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ec53a8c4f07baed5d8825072c89799be'] = 'Status';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8726894930330c61dd2c24ba8265364b'] = 'Add New Criterion';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_57826496f2bb2a191458e4893e96e52e'] = 'Review Criteria';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2608831883bb20ab520b70b4350aa23a'] = 'Approved Reviews';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f8a0aa69f5ce41287f02c2d182306f52'] = 'Review title';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_457dd55184faedb7885afd4009d70163'] = 'Review';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_dda9c06f33071c9b6fc237ee164109d8'] = 'Rating';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a517747c3d12f99244ae598910d979c5'] = 'Author';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_deb10517653c255364175796ace3553f'] = 'Product';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_0f46dacf1a6ecab8ce1cb97250bb8113'] = 'Time of publication';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f3d8e91894baa7ee67e0649abcc092ff'] = 'Criterion will be restricted to the following categories';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_d3dc571a8be516766c8124a636290fd9'] = 'Mark the boxes of categories to which this criterion applies.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_91b442d385b54e1418d81adc34871053'] = 'Selected';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b56c3bda503a8dc4be356edb0cc31793'] = 'Collapse All';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5ffd7a335dd836b3373f5ec570a58bdc'] = 'Expand All';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5e9df908eafa83cb51c0a3720e8348c7'] = 'Check All';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9747d23c8cc358c5ef78c51e59cd6817'] = 'Uncheck All';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_38fc05fb7f02497ea56b77fe085ffc78'] = 'Add new criterion';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_92a497b6a43b59cce82c604a4c834bb0'] = 'Criterion name';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bbda28827cde1064b0320cbf6b1890a2'] = 'Application scope of the criterion';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_20089c27bf83463fe32e7d30ed9d8f81'] = 'The criterion will be restricted to the following products';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Active';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_6f7351657f795bc1357a53142b1184cc'] = 'Approve';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ecf74aa77715220b378ec668e75655a8'] = 'Not abusive';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7c3b0e9898b88deee7ea75aafd2e37e2'] = 'Average grade';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_a71a0229e164fecdcde3c4e0f40473fa'] = 'Read user reviews';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7966126831926ad29c528b239d69f855'] = 'Write your review';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_e32b7983d3bf98a65e3e96c393867dfa'] = '%s Review(s)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ab51a81c76d95ddc762194d58ec5db63'] = 'Are you sure that you want to report this comment?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9a2ccd41653469a8bd94fbb84b271a14'] = 'Your comment has been added!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b20968d9aecd2d075519992e9e2f1ffe'] = 'Your comment has been submitted and will be available once approved by a moderator.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_186c30cab59f6b64a453778330d4bbf0'] = 'New comment';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e0aa021e21dddbd6d8cecec71e9cf564'] = 'OK';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4b3b9db8c9784468094acde0f8bf7071'] = 'Grade';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b5c82723bd85856358f9a376bc613998'] = '%1$d out of %2$d people found this review useful.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_39630ad6ee79b8653ea89194cdb45bec'] = 'Was this comment useful to you?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a6105c0a611b41b08f1209506350279e'] = 'yes';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7fa3b767c460b54a2be4d49030b349c7'] = 'no';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28b3b1e564a00f572c5d4e21da986d49'] = 'Report abuse';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7966126831926ad29c528b239d69f855'] = 'Write your review';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_fbe2625bf3673be380d043a4bf873f28'] = 'Be the first to write your review';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_08c7d6f84301ee7d0aab0a5f67edc419'] = 'No customer reviews for the moment.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_45dacce3e2bc0f7bebde95098b9326a8'] = 'Title for your review';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_3421ad00975533fbbd5f17d2cb568125'] = 'Your review';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_221e705c06e231636fdbccfdd14f4d5c'] = 'Your name';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_70397c4b252a5168c5ec003931cea215'] = 'Required fields';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_94966d90747b97d1f0f206c98a8b1ac3'] = 'Send';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'or';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ea4788705e6873b424c65e91c2846b19'] = 'Cancel';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Comments';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_b1897515d548a960afe49ecf66a29021'] = 'Average';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_bc976f6c3405523cde61f63a7cbe224b'] = 'view comments';
|
||||
$_MODULE['<{productcomments}prestashop>tab_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Comments';
|
||||
$_MODULE['<{productcomments}prestashop>form_b9aefa40a54680bb258f9f9569290fae'] = 'Product Name';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_dda9c06f33071c9b6fc237ee164109d8'] = 'Rating';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_899139b5174d8d7a6e38a0360008a695'] = 'Read reviews';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_c31732fda0c6f01c446db7163b214de4'] = 'Write a review';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_d844ad9202d0de8442498775ba6ef819'] = 'Review(s)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_93cba07454f06a4a960172bbd6e2a435'] = 'Yes';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bafd7322c6e97d25b6299b5d6fe8920b'] = 'No';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c565011debb8e2812ef12853eb6a38a9'] = 'Write your review!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f444678e4f3575d59b32a858630741fd'] = 'Be the first to write your review!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c31732fda0c6f01c446db7163b214de4'] = 'Write a review';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_51ec9bf4aaeab1b25bb57f9f8d4de557'] = 'Title:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_240f3031f25601fa128bd4e15f0a37de'] = 'Comment:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a2ed44743411cf8b80e397448fce104c'] = 'Your name:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a4d3b161ce1309df1c4e25df28694b7b'] = 'Submit';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e3ee0f5bd8f527715fb0776741b9754'] = 'Your comment has been added and will be available once approved by a moderator.';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_5d9acecbb0b55a71dea7403896356001'] = 'View comments';
|
||||
$_MODULE['<{productcomments}prestashop>tab_34e80a799d144cfe4af46815e103f017'] = 'Reviews';
|
||||
|
||||
|
||||
return $_MODULE;
|
||||
@@ -1,116 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
|
||||
$_MODULE['<{productcomments}prestashop>default_da3e413ae5dde1a6b986203857fb1a59'] = 'El ID del producto es incorrecto';
|
||||
$_MODULE['<{productcomments}prestashop>default_7b0bf23ae4079e07a3a4cb4d07e2caef'] = 'El título es incorrecto';
|
||||
$_MODULE['<{productcomments}prestashop>default_ddbd56de5feb78ef1aaf60401f8c472b'] = 'Comentario es incorrecto';
|
||||
$_MODULE['<{productcomments}prestashop>default_1b1030b6294e9096a7d7c40d83d61872'] = 'Nombre del cliente no es correcto';
|
||||
$_MODULE['<{productcomments}prestashop>default_26510b8eb6e6053f5e91d51171967ca9'] = 'Debe de estar conectado para poder enviar un comentario';
|
||||
$_MODULE['<{productcomments}prestashop>default_a201fbadca94d310a1b62407cdc775d5'] = 'Debe dar una calificación';
|
||||
$_MODULE['<{productcomments}prestashop>default_dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'No encontrado';
|
||||
$_MODULE['<{productcomments}prestashop>default_6d10b2f471e8894d59ae18e01537ece5'] = 'Por favor, espere antes de enviar otro comentario';
|
||||
$_MODULE['<{productcomments}prestashop>default_ba8d7ae5dcadfba739f28a777378f208'] = 'segundos antes de postear un nuevo comentario';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_a09ed6c60eb3213939cecb4c580813cd'] = 'Válido para la totalidad del catálogo';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_467366059d7d7c743a4d0971363a8d66'] = 'Limitado a ciertas catagorías';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_772911becd336c843ab09a1d4b4f66c0'] = 'Limitado a ciertos productos';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_fd4b5401d4d3c7d32d158bfc1e552f3b'] = 'Por favor, escriba su nombre';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f88dc17737f7fdd4464b2eb922a8f133'] = 'Se ha producido un error al guardar su comentario.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_7fa4a3510dafd0eac6435c19861b2bb7'] = 'Comentario publicado.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f8694a9aae2eb045920f613cfa7f1235'] = 'En espera de validación del moderador.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_6bf852d9850445291f5e9d4740ac7b50'] = 'Se necesita el texto del comentario.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_8aafe254c3e8dceb6425591b322044f2'] = 'Debe esperar %d segundos antes de escribir un comentario nuevo.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b91c4e8b229a399a3bc911d352524a9b'] = 'Comentario sobre el producto';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a8cd99c74a32936a90127454a02d7500'] = 'Permite a los usuarios publicar comentarios y valorar productos con criterios específicos.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'Configuración actualizada';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8a4c4c1ccc2b1c3b89e828e24ef591a8'] = 'El criterio no se pudo guardar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_1bb54e382f7dbdb260f0aa6b42bb624b'] = 'Criterio suprimido';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_254f642527b45bc260048e30704edb39'] = 'Configuración';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_cf2fcb22e6342dea54b0cc34bb521752'] = 'Todos los comentarios deben ser validados por un empleado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e26bb46aa3f40913ee95cfb1d6c82f9'] = 'Permitir comentarios de invitados';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9dc1140983196141368ceda7565128a8'] = 'Tiempo mínimo entre 2 comentarios del mismo usuario';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2ec265696a51530949d345239069f0d4'] = 'Comentarios esperando aprobación';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_655d20c1ca69519ca647684edbb2db35'] = 'Alta';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_87f8a6ab85c9ced3702b4ea641ad4bb5'] = 'Media';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28d0edd045e05cf5af64e35ae0c4c6ef'] = 'Baja';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_eb7d6baeb8bbf339547da7e0d6c5e416'] = 'Comentarios enviados';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b718adec73e04ce3ec720dd11a06a308'] = 'ID';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_49ee3087348e8d44e1feda1917443987'] = 'Nombre';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a1fa27779242b4902f7ae3bdd5c6d508'] = 'Tipo';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ec53a8c4f07baed5d8825072c89799be'] = 'Estado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8726894930330c61dd2c24ba8265364b'] = 'Añadir nuevo criterio';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_57826496f2bb2a191458e4893e96e52e'] = 'Criterios de comentarios';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2608831883bb20ab520b70b4350aa23a'] = 'Comentarios aprobados';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f8a0aa69f5ce41287f02c2d182306f52'] = 'Título del comentario';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_457dd55184faedb7885afd4009d70163'] = 'Comentar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_dda9c06f33071c9b6fc237ee164109d8'] = 'Valoración';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a517747c3d12f99244ae598910d979c5'] = 'Autor';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_deb10517653c255364175796ace3553f'] = 'producto';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_0f46dacf1a6ecab8ce1cb97250bb8113'] = 'Fecha de la publicación';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f3d8e91894baa7ee67e0649abcc092ff'] = 'Se restringirá los criterios a las siguientes categorías';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_d3dc571a8be516766c8124a636290fd9'] = 'Marca las casillas de las categorías a las que quieras aplicar este criterio.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_91b442d385b54e1418d81adc34871053'] = 'seleccionadas';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b56c3bda503a8dc4be356edb0cc31793'] = 'Contraer todas';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5ffd7a335dd836b3373f5ec570a58bdc'] = 'Desplegar todas';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5e9df908eafa83cb51c0a3720e8348c7'] = 'Seleccionar todas';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9747d23c8cc358c5ef78c51e59cd6817'] = 'Deseleccionar todas';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_38fc05fb7f02497ea56b77fe085ffc78'] = 'Añadir nuevo criterio';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_92a497b6a43b59cce82c604a4c834bb0'] = 'Nombre del criterio';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bbda28827cde1064b0320cbf6b1890a2'] = 'Ámbito de aplicación del criterio';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_20089c27bf83463fe32e7d30ed9d8f81'] = 'Se restringirá los criterios a los siguientes productos';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Activar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_6f7351657f795bc1357a53142b1184cc'] = 'Aprobar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ecf74aa77715220b378ec668e75655a8'] = 'No abusivo';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7c3b0e9898b88deee7ea75aafd2e37e2'] = 'Nota media';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_a71a0229e164fecdcde3c4e0f40473fa'] = 'Leer los comentarios de los usuarios';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7966126831926ad29c528b239d69f855'] = 'Escriba su comentario';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_e32b7983d3bf98a65e3e96c393867dfa'] = '%s Comentario(s)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ab51a81c76d95ddc762194d58ec5db63'] = '¿Seguro que quieres denunciar este comentario?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9a2ccd41653469a8bd94fbb84b271a14'] = '¡Tu comentario ha sido añadido!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b20968d9aecd2d075519992e9e2f1ffe'] = 'Tu comentario ha sido añadido y estará disponible una vez lo apruebe un moderador.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_186c30cab59f6b64a453778330d4bbf0'] = 'Nuevo comentario';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e0aa021e21dddbd6d8cecec71e9cf564'] = 'ok';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4b3b9db8c9784468094acde0f8bf7071'] = 'grado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b5c82723bd85856358f9a376bc613998'] = '%1$d de %2$d personas encontraron esta crítica útil.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_39630ad6ee79b8653ea89194cdb45bec'] = 'Fue este comentario útil para usted?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a6105c0a611b41b08f1209506350279e'] = 'sí';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7fa3b767c460b54a2be4d49030b349c7'] = 'no';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28b3b1e564a00f572c5d4e21da986d49'] = 'Reportar Abuso';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7966126831926ad29c528b239d69f855'] = 'Escriba su comentario';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_fbe2625bf3673be380d043a4bf873f28'] = 'Sea el primero en escribir su opinión';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_08c7d6f84301ee7d0aab0a5f67edc419'] = 'No hay reseñas de clientes en este momento.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_45dacce3e2bc0f7bebde95098b9326a8'] = 'Título de su comentario';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_3421ad00975533fbbd5f17d2cb568125'] = 'Su comentario';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_221e705c06e231636fdbccfdd14f4d5c'] = 'Su nombre';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_70397c4b252a5168c5ec003931cea215'] = 'Campos obligatorios';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_94966d90747b97d1f0f206c98a8b1ac3'] = 'Enviar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'total';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ea4788705e6873b424c65e91c2846b19'] = 'Cancelar';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Comentarios';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_b1897515d548a960afe49ecf66a29021'] = 'regular';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_bc976f6c3405523cde61f63a7cbe224b'] = 'ver los comentarios';
|
||||
$_MODULE['<{productcomments}prestashop>tab_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Comentarios';
|
||||
$_MODULE['<{productcomments}prestashop>form_b9aefa40a54680bb258f9f9569290fae'] = 'Nombre del producto';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_dda9c06f33071c9b6fc237ee164109d8'] = 'Valoración';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_899139b5174d8d7a6e38a0360008a695'] = 'Leer los comentarios de los usuarios';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_c31732fda0c6f01c446db7163b214de4'] = 'Escribe tu opinión';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_d844ad9202d0de8442498775ba6ef819'] = 'Comentario(s)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_93cba07454f06a4a960172bbd6e2a435'] = 'Sí';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bafd7322c6e97d25b6299b5d6fe8920b'] = 'No';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c565011debb8e2812ef12853eb6a38a9'] = '¡Escriba su opinión!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f444678e4f3575d59b32a858630741fd'] = '¡Sea el primero en escribir su opinión!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c31732fda0c6f01c446db7163b214de4'] = 'Escribe tu opinión';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_51ec9bf4aaeab1b25bb57f9f8d4de557'] = 'Título:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_240f3031f25601fa128bd4e15f0a37de'] = 'Comentario:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a2ed44743411cf8b80e397448fce104c'] = 'Su nombre:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a4d3b161ce1309df1c4e25df28694b7b'] = 'Enviar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e3ee0f5bd8f527715fb0776741b9754'] = 'Su comentario ha sido añadido y estará disponible una vez lo apruebe un moderador.';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_5d9acecbb0b55a71dea7403896356001'] = 'Ver comentarios';
|
||||
$_MODULE['<{productcomments}prestashop>tab_34e80a799d144cfe4af46815e103f017'] = 'Reseñas';
|
||||
|
||||
|
||||
return $_MODULE;
|
||||
@@ -1,116 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
|
||||
$_MODULE['<{productcomments}prestashop>default_da3e413ae5dde1a6b986203857fb1a59'] = 'L\'ID produit n\'est pas correct';
|
||||
$_MODULE['<{productcomments}prestashop>default_7b0bf23ae4079e07a3a4cb4d07e2caef'] = 'Le titre n\'est pas correct';
|
||||
$_MODULE['<{productcomments}prestashop>default_ddbd56de5feb78ef1aaf60401f8c472b'] = 'Le commentaire n\'est pas correct';
|
||||
$_MODULE['<{productcomments}prestashop>default_1b1030b6294e9096a7d7c40d83d61872'] = 'Le nom du client n\'est pas correct';
|
||||
$_MODULE['<{productcomments}prestashop>default_26510b8eb6e6053f5e91d51171967ca9'] = 'Vous devez être identifié afin de laisser 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_6d10b2f471e8894d59ae18e01537ece5'] = 'Veuillez patienter avant de publier un autre commentaire';
|
||||
$_MODULE['<{productcomments}prestashop>default_ba8d7ae5dcadfba739f28a777378f208'] = 'secondes avant de publier un nouveau commentaire';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_a09ed6c60eb3213939cecb4c580813cd'] = 'Disponible pour l\'ensemble du catalogue';
|
||||
$_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_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_f8694a9aae2eb045920f613cfa7f1235'] = 'En attente de validation par le modérateur.';
|
||||
$_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_b91c4e8b229a399a3bc911d352524a9b'] = 'Commentaires produits';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a8cd99c74a32936a90127454a02d7500'] = 'Autoriser les utilisateurs à publier des avis et à noter les produits sur des critères spécifiques.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'Mise à jour réussie';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8a4c4c1ccc2b1c3b89e828e24ef591a8'] = 'Le critère n\'a pas pu être enregistré';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_1bb54e382f7dbdb260f0aa6b42bb624b'] = 'Critère supprimé';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_254f642527b45bc260048e30704edb39'] = 'Paramètres';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_cf2fcb22e6342dea54b0cc34bb521752'] = 'Tous les avis doivent être validés par un employé';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b9f5c797ebbf55adccdd8539a65a0241'] = 'Désactivé';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e26bb46aa3f40913ee95cfb1d6c82f9'] = 'Autoriser les avis de visiteurs qui n\'ont pas de compte client';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9dc1140983196141368ceda7565128a8'] = 'Temps minimum entre 2 avis d\'un même utilisateur';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c9cc8cce247e49bae79f15173ce97354'] = 'Enregistrer';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2ec265696a51530949d345239069f0d4'] = 'Avis en attente de validation';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_655d20c1ca69519ca647684edbb2db35'] = 'Haute';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_87f8a6ab85c9ced3702b4ea641ad4bb5'] = 'Moyenne';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28d0edd045e05cf5af64e35ae0c4c6ef'] = 'Basse';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_eb7d6baeb8bbf339547da7e0d6c5e416'] = 'Avis signalés';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b718adec73e04ce3ec720dd11a06a308'] = 'ID';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_49ee3087348e8d44e1feda1917443987'] = 'Nom';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a1fa27779242b4902f7ae3bdd5c6d508'] = 'Type';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ec53a8c4f07baed5d8825072c89799be'] = 'État';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8726894930330c61dd2c24ba8265364b'] = 'Ajouter un critère';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_57826496f2bb2a191458e4893e96e52e'] = 'Critères d\'évaluation';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2608831883bb20ab520b70b4350aa23a'] = 'Avis validés';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f8a0aa69f5ce41287f02c2d182306f52'] = 'Titre de l\'avis';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_457dd55184faedb7885afd4009d70163'] = 'Avis';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_dda9c06f33071c9b6fc237ee164109d8'] = 'Note';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a517747c3d12f99244ae598910d979c5'] = 'Auteur';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_deb10517653c255364175796ace3553f'] = 'Produit';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_0f46dacf1a6ecab8ce1cb97250bb8113'] = 'Date de publication';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f3d8e91894baa7ee67e0649abcc092ff'] = 'Le critère sera restreint aux catégories suivantes';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_d3dc571a8be516766c8124a636290fd9'] = 'Cochez les cases des catégories auxquelles ce critère s\'applique.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_91b442d385b54e1418d81adc34871053'] = 'Sélectionnés';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b56c3bda503a8dc4be356edb0cc31793'] = 'Réduire tout';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5ffd7a335dd836b3373f5ec570a58bdc'] = 'Ouvrir tout';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5e9df908eafa83cb51c0a3720e8348c7'] = 'Tout cocher';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9747d23c8cc358c5ef78c51e59cd6817'] = 'Tout décocher';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_38fc05fb7f02497ea56b77fe085ffc78'] = 'Ajouter un critère';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_92a497b6a43b59cce82c604a4c834bb0'] = 'Nom du critère';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bbda28827cde1064b0320cbf6b1890a2'] = 'Cadre d\'application du critère';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_20089c27bf83463fe32e7d30ed9d8f81'] = 'Le critère sera restreint aux produits suivants';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Activé';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_6f7351657f795bc1357a53142b1184cc'] = 'Approuver';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ecf74aa77715220b378ec668e75655a8'] = 'Non abusif';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7c3b0e9898b88deee7ea75aafd2e37e2'] = 'Note moyenne';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_a71a0229e164fecdcde3c4e0f40473fa'] = 'Lire les avis utilisateurs';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7966126831926ad29c528b239d69f855'] = 'Donnez votre avis';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_e32b7983d3bf98a65e3e96c393867dfa'] = '%s commentaire(s)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ab51a81c76d95ddc762194d58ec5db63'] = 'Êtes-vous certain de vouloir signaler ce commentaire ?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9a2ccd41653469a8bd94fbb84b271a14'] = 'Votre commentaire a été rajouté!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b20968d9aecd2d075519992e9e2f1ffe'] = 'Votre commentaire a bien été enregistré. Il sera publié dès qu\'un modérateur l\'aura approuvé.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_186c30cab59f6b64a453778330d4bbf0'] = 'Nouveau commentaire';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e0aa021e21dddbd6d8cecec71e9cf564'] = 'ok';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4b3b9db8c9784468094acde0f8bf7071'] = 'Note';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b5c82723bd85856358f9a376bc613998'] = '%1$d personne(s) sur %2$d ont trouvé ce commentaire utile.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_39630ad6ee79b8653ea89194cdb45bec'] = 'Ce commentaire vous a-t-il été utile ?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a6105c0a611b41b08f1209506350279e'] = 'oui';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7fa3b767c460b54a2be4d49030b349c7'] = 'non';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28b3b1e564a00f572c5d4e21da986d49'] = 'Signaler un abus';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7966126831926ad29c528b239d69f855'] = 'Donnez votre avis';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_fbe2625bf3673be380d043a4bf873f28'] = 'Soyez le premier à donner votre avis';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_08c7d6f84301ee7d0aab0a5f67edc419'] = 'Aucun avis n\'a été publié pour le moment.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_45dacce3e2bc0f7bebde95098b9326a8'] = 'Titre de l\'avis';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_3421ad00975533fbbd5f17d2cb568125'] = 'Votre avis';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_221e705c06e231636fdbccfdd14f4d5c'] = 'Votre nom';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_70397c4b252a5168c5ec003931cea215'] = 'Champs requis';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_94966d90747b97d1f0f206c98a8b1ac3'] = 'Envoyer';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'OU';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ea4788705e6873b424c65e91c2846b19'] = 'Annuler';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Commentaires';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_b1897515d548a960afe49ecf66a29021'] = 'Moyenne';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_bc976f6c3405523cde61f63a7cbe224b'] = 'Voir les avis';
|
||||
$_MODULE['<{productcomments}prestashop>tab_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Commentaires';
|
||||
$_MODULE['<{productcomments}prestashop>form_b9aefa40a54680bb258f9f9569290fae'] = 'Nom du produit';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_dda9c06f33071c9b6fc237ee164109d8'] = 'Note';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_899139b5174d8d7a6e38a0360008a695'] = 'Lire les avis';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_c31732fda0c6f01c446db7163b214de4'] = 'Donnez votre avis';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_d844ad9202d0de8442498775ba6ef819'] = 'Commentaire(s)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_93cba07454f06a4a960172bbd6e2a435'] = 'Oui';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bafd7322c6e97d25b6299b5d6fe8920b'] = 'Non';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c565011debb8e2812ef12853eb6a38a9'] = 'Donnez votre avis !';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f444678e4f3575d59b32a858630741fd'] = 'Soyez le premier à donner votre avis !';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c31732fda0c6f01c446db7163b214de4'] = 'Donnez votre avis';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_51ec9bf4aaeab1b25bb57f9f8d4de557'] = 'Titre :';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_240f3031f25601fa128bd4e15f0a37de'] = 'Commentaire :';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a2ed44743411cf8b80e397448fce104c'] = 'Votre nom :';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a4d3b161ce1309df1c4e25df28694b7b'] = 'ENVOYER';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e3ee0f5bd8f527715fb0776741b9754'] = 'Votre commentaire a bien été enregistré. Il sera affiché dès qu\'un modérateur l\'aura approuvé.';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_5d9acecbb0b55a71dea7403896356001'] = 'Afficher les avis';
|
||||
$_MODULE['<{productcomments}prestashop>tab_34e80a799d144cfe4af46815e103f017'] = 'Avis';
|
||||
|
||||
|
||||
return $_MODULE;
|
||||
@@ -1,29 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
|
||||
$_MODULE['<{productcomments}prestashop>default_dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'Produto não encontrado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'configuracion de actualizacion';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_254f642527b45bc260048e30704edb39'] = 'Configuración';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c9cc8cce247e49bae79f15173ce97354'] = 'Gardar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_49ee3087348e8d44e1feda1917443987'] = 'Nome';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a1fa27779242b4902f7ae3bdd5c6d508'] = 'Tipo';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ec53a8c4f07baed5d8825072c89799be'] = 'Estado';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_deb10517653c255364175796ace3553f'] = 'Produto';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b56c3bda503a8dc4be356edb0cc31793'] = 'Contraer todo';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5ffd7a335dd836b3373f5ec570a58bdc'] = 'Expandir todo';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Activo';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a6105c0a611b41b08f1209506350279e'] = 'Si';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7fa3b767c460b54a2be4d49030b349c7'] = 'Non';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_70397c4b252a5168c5ec003931cea215'] = 'Campos obligatorios';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_94966d90747b97d1f0f206c98a8b1ac3'] = 'Enviar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'ou';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ea4788705e6873b424c65e91c2846b19'] = 'Cancelar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_93cba07454f06a4a960172bbd6e2a435'] = 'Sí';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bafd7322c6e97d25b6299b5d6fe8920b'] = 'Non';
|
||||
|
||||
|
||||
return $_MODULE;
|
||||
@@ -1,116 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
|
||||
$_MODULE['<{productcomments}prestashop>default_da3e413ae5dde1a6b986203857fb1a59'] = 'ID produk salah';
|
||||
$_MODULE['<{productcomments}prestashop>default_7b0bf23ae4079e07a3a4cb4d07e2caef'] = 'Judul salah';
|
||||
$_MODULE['<{productcomments}prestashop>default_ddbd56de5feb78ef1aaf60401f8c472b'] = 'Komentar salah';
|
||||
$_MODULE['<{productcomments}prestashop>default_1b1030b6294e9096a7d7c40d83d61872'] = 'Nama pelanggan salah';
|
||||
$_MODULE['<{productcomments}prestashop>default_26510b8eb6e6053f5e91d51171967ca9'] = 'Anda harus login agar dapat membuat komentar';
|
||||
$_MODULE['<{productcomments}prestashop>default_a201fbadca94d310a1b62407cdc775d5'] = 'Rating harus diisi';
|
||||
$_MODULE['<{productcomments}prestashop>default_dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'Produk tidak ditemukan';
|
||||
$_MODULE['<{productcomments}prestashop>default_6d10b2f471e8894d59ae18e01537ece5'] = 'Harap tunggu sebelum membuat komentar lainnya';
|
||||
$_MODULE['<{productcomments}prestashop>default_ba8d7ae5dcadfba739f28a777378f208'] = 'detik sebelum membuat komentar baru';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_a09ed6c60eb3213939cecb4c580813cd'] = 'Berlaku untuk seluruh katalog';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_467366059d7d7c743a4d0971363a8d66'] = 'Terbatas hanya untuk kategori tertentu';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_772911becd336c843ab09a1d4b4f66c0'] = 'Terbatas hanya untuk produk tertentu';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_fd4b5401d4d3c7d32d158bfc1e552f3b'] = 'Silahkan isi nama Anda';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f88dc17737f7fdd4464b2eb922a8f133'] = 'Terjadi galat saat menyimpan komentar Anda.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_7fa4a3510dafd0eac6435c19861b2bb7'] = 'Komentar berhasil dikirim.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f8694a9aae2eb045920f613cfa7f1235'] = 'Menunggu validasi moderator.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_6bf852d9850445291f5e9d4740ac7b50'] = 'Teks komentar diperlukan.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_8aafe254c3e8dceb6425591b322044f2'] = 'Anda harus menunggu %d detik sebelum mengirim komentar baru.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b91c4e8b229a399a3bc911d352524a9b'] = 'Komentar produk';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a8cd99c74a32936a90127454a02d7500'] = 'Ijinkan user untuk membuat review dan menilai produk dengan kriteria tertentu.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'Seting berhasil diperbaharui';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8a4c4c1ccc2b1c3b89e828e24ef591a8'] = 'Kriteria tidak dapat disimpan';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_1bb54e382f7dbdb260f0aa6b42bb624b'] = 'Kriteria dihapus';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_254f642527b45bc260048e30704edb39'] = 'Konfigurasi';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_cf2fcb22e6342dea54b0cc34bb521752'] = 'Semua review harus divalidasi oleh staff';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Aktifkan';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b9f5c797ebbf55adccdd8539a65a0241'] = 'Nonaktifkan';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e26bb46aa3f40913ee95cfb1d6c82f9'] = 'Ijinkan review oleh guest';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9dc1140983196141368ceda7565128a8'] = 'Waktu minimum antara 2 review dari user yang sama';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c9cc8cce247e49bae79f15173ce97354'] = 'Simpan';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2ec265696a51530949d345239069f0d4'] = 'Review menunggu persetujuan';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_655d20c1ca69519ca647684edbb2db35'] = 'Tinggi';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_87f8a6ab85c9ced3702b4ea641ad4bb5'] = 'Menengah';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28d0edd045e05cf5af64e35ae0c4c6ef'] = 'Rendah';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_eb7d6baeb8bbf339547da7e0d6c5e416'] = 'Review yang dilaporkan';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b718adec73e04ce3ec720dd11a06a308'] = 'ID';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_49ee3087348e8d44e1feda1917443987'] = 'Nama';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a1fa27779242b4902f7ae3bdd5c6d508'] = 'Jenis';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ec53a8c4f07baed5d8825072c89799be'] = 'Status:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8726894930330c61dd2c24ba8265364b'] = 'Tambah kriteria baru';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_57826496f2bb2a191458e4893e96e52e'] = 'Pratinjau kriteria';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2608831883bb20ab520b70b4350aa23a'] = 'Review yang disetujui';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f8a0aa69f5ce41287f02c2d182306f52'] = 'Judul review';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_457dd55184faedb7885afd4009d70163'] = 'Ulasan';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_dda9c06f33071c9b6fc237ee164109d8'] = 'Rating';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a517747c3d12f99244ae598910d979c5'] = 'Penulis';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_deb10517653c255364175796ace3553f'] = 'Produk';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_0f46dacf1a6ecab8ce1cb97250bb8113'] = 'Tanggal dimuat';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f3d8e91894baa7ee67e0649abcc092ff'] = 'Kriteria akan dibatasi untuk kategori berikut';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_d3dc571a8be516766c8124a636290fd9'] = 'Tandai kategori yang akan menerapkan kriteria diatas.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_91b442d385b54e1418d81adc34871053'] = 'Terpilih';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b56c3bda503a8dc4be356edb0cc31793'] = 'Tutup Semua';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5ffd7a335dd836b3373f5ec570a58bdc'] = 'Buka Semua';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5e9df908eafa83cb51c0a3720e8348c7'] = 'Pilih semua';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9747d23c8cc358c5ef78c51e59cd6817'] = 'Tidak ada yg dipilih';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_38fc05fb7f02497ea56b77fe085ffc78'] = 'Tambah kriteria baru';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_92a497b6a43b59cce82c604a4c834bb0'] = 'Nama kriteria';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bbda28827cde1064b0320cbf6b1890a2'] = 'Batasan aplikasi untuk kriteria';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_20089c27bf83463fe32e7d30ed9d8f81'] = 'Kriteria akan dibatasi untuk produk berikut ini';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Aktif';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_6f7351657f795bc1357a53142b1184cc'] = 'Setujui';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ecf74aa77715220b378ec668e75655a8'] = 'Tidak kasar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7c3b0e9898b88deee7ea75aafd2e37e2'] = 'Nilai rata-rata';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_a71a0229e164fecdcde3c4e0f40473fa'] = 'Lihat komentar user';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7966126831926ad29c528b239d69f855'] = 'Tulis komentar Anda';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_e32b7983d3bf98a65e3e96c393867dfa'] = '%s Review';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ab51a81c76d95ddc762194d58ec5db63'] = 'Yakin akan melaporkan komentar ini ?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9a2ccd41653469a8bd94fbb84b271a14'] = 'Komentar Anda berhasil ditambahkan!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b20968d9aecd2d075519992e9e2f1ffe'] = 'Komentar Anda telah ditambahkan dan akan tampil setelah disetujui oleh moderator.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_186c30cab59f6b64a453778330d4bbf0'] = 'Komentar baru';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e0aa021e21dddbd6d8cecec71e9cf564'] = 'OK';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4b3b9db8c9784468094acde0f8bf7071'] = 'Peringkat';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b5c82723bd85856358f9a376bc613998'] = '%1$d dari %2$d orang menggangap ulasan ini berguna.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_39630ad6ee79b8653ea89194cdb45bec'] = 'Apakah komentar ini berguna bagi Anda?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a6105c0a611b41b08f1209506350279e'] = 'ya';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7fa3b767c460b54a2be4d49030b349c7'] = 'tidak';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28b3b1e564a00f572c5d4e21da986d49'] = 'Laporkan penyalahgunaan';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7966126831926ad29c528b239d69f855'] = 'Tulis komentar Anda';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_fbe2625bf3673be380d043a4bf873f28'] = 'Jadilah yang pertama untuk menulis komentar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_08c7d6f84301ee7d0aab0a5f67edc419'] = 'Belum ada review dari pelanggan.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_45dacce3e2bc0f7bebde95098b9326a8'] = 'Judul review Anda';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_3421ad00975533fbbd5f17d2cb568125'] = 'Ulasan Anda';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_221e705c06e231636fdbccfdd14f4d5c'] = 'Nama';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_70397c4b252a5168c5ec003931cea215'] = 'Harus diisi';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_94966d90747b97d1f0f206c98a8b1ac3'] = 'Kirim';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'atau';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ea4788705e6873b424c65e91c2846b19'] = 'Batal';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Komentar';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_b1897515d548a960afe49ecf66a29021'] = 'rata-rata';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_bc976f6c3405523cde61f63a7cbe224b'] = 'lihat komentar';
|
||||
$_MODULE['<{productcomments}prestashop>tab_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Komentar';
|
||||
$_MODULE['<{productcomments}prestashop>form_b9aefa40a54680bb258f9f9569290fae'] = 'Nama produk';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_dda9c06f33071c9b6fc237ee164109d8'] = 'Rating';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_899139b5174d8d7a6e38a0360008a695'] = 'Lihat komentar user';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_c31732fda0c6f01c446db7163b214de4'] = 'Tulis komentar Anda';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_d844ad9202d0de8442498775ba6ef819'] = 'Review';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_93cba07454f06a4a960172bbd6e2a435'] = 'Ya';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bafd7322c6e97d25b6299b5d6fe8920b'] = 'Tidak';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c565011debb8e2812ef12853eb6a38a9'] = 'Tulis komentar Anda!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f444678e4f3575d59b32a858630741fd'] = 'Jadilah yang pertama untuk menulis komentar!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c31732fda0c6f01c446db7163b214de4'] = 'Tulis komentar Anda';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_51ec9bf4aaeab1b25bb57f9f8d4de557'] = 'Judul:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_240f3031f25601fa128bd4e15f0a37de'] = 'Komentar:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a2ed44743411cf8b80e397448fce104c'] = 'Nama Anda:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a4d3b161ce1309df1c4e25df28694b7b'] = 'Kirim';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e3ee0f5bd8f527715fb0776741b9754'] = 'Komentar Anda telah ditambahkan dan akan tampil setelah disetujui oleh moderator.';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_5d9acecbb0b55a71dea7403896356001'] = 'Lihat komentar';
|
||||
$_MODULE['<{productcomments}prestashop>tab_34e80a799d144cfe4af46815e103f017'] = 'Review';
|
||||
|
||||
|
||||
return $_MODULE;
|
||||
@@ -1,35 +0,0 @@
|
||||
<?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,116 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
|
||||
$_MODULE['<{productcomments}prestashop>default_da3e413ae5dde1a6b986203857fb1a59'] = 'Product ID is niet correct';
|
||||
$_MODULE['<{productcomments}prestashop>default_7b0bf23ae4079e07a3a4cb4d07e2caef'] = 'Titel is niet correct';
|
||||
$_MODULE['<{productcomments}prestashop>default_ddbd56de5feb78ef1aaf60401f8c472b'] = 'Commentaar is niet correct';
|
||||
$_MODULE['<{productcomments}prestashop>default_1b1030b6294e9096a7d7c40d83d61872'] = 'Klantnaam is niet correct';
|
||||
$_MODULE['<{productcomments}prestashop>default_26510b8eb6e6053f5e91d51171967ca9'] = 'U moet ingelogd zijn om een reactie te kunnen sturen';
|
||||
$_MODULE['<{productcomments}prestashop>default_a201fbadca94d310a1b62407cdc775d5'] = 'U moet een waarde toekennen';
|
||||
$_MODULE['<{productcomments}prestashop>default_dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'Product niet gevonden';
|
||||
$_MODULE['<{productcomments}prestashop>default_6d10b2f471e8894d59ae18e01537ece5'] = 'Gelieve even te wachten voor u een nieuwe beoordeling gaat plaatsen';
|
||||
$_MODULE['<{productcomments}prestashop>default_ba8d7ae5dcadfba739f28a777378f208'] = 'seconden wachten voor het plaatsen van een nieuwe beoordeling';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_a09ed6c60eb3213939cecb4c580813cd'] = 'Geldig voor gehele catalogus';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_467366059d7d7c743a4d0971363a8d66'] = 'Beperkt tot enkele categorieën';
|
||||
$_MODULE['<{productcomments}prestashop>productcommentcriterion_772911becd336c843ab09a1d4b4f66c0'] = 'Beperkt tot enkele producten';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_fd4b5401d4d3c7d32d158bfc1e552f3b'] = 'Vul uw naam in a.u.b.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f88dc17737f7fdd4464b2eb922a8f133'] = 'Er is een fout opgetreden bij het opslaan van uw beoordeling.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_7fa4a3510dafd0eac6435c19861b2bb7'] = 'Beoordeling geplaatst.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_f8694a9aae2eb045920f613cfa7f1235'] = 'Wachten op bevestiging van moderator.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_6bf852d9850445291f5e9d4740ac7b50'] = 'Inhoud is verplicht.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-ajax_8aafe254c3e8dceb6425591b322044f2'] = 'U moet %d seconden wachten voordat u een nieuwe beoordeling kunt plaatsen.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b91c4e8b229a399a3bc911d352524a9b'] = 'Productbeoordelingen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a8cd99c74a32936a90127454a02d7500'] = 'Hiermee kunnen gebruikers recensies plaatsen en producten beoordelen op specifieke criteria.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'Instellingen bijgewerkt';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8a4c4c1ccc2b1c3b89e828e24ef591a8'] = 'Het criterium kan niet worden opgeslagen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_1bb54e382f7dbdb260f0aa6b42bb624b'] = 'Criteria verwijderd';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_254f642527b45bc260048e30704edb39'] = 'Configuratie';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_cf2fcb22e6342dea54b0cc34bb521752'] = 'Alle beoordelingen moeten worden gevalideerd door een personeelslid';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Ingeschakeld';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b9f5c797ebbf55adccdd8539a65a0241'] = 'Uitgeschakeld';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e26bb46aa3f40913ee95cfb1d6c82f9'] = 'Laat beoordelingen door gasten toe';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9dc1140983196141368ceda7565128a8'] = 'Minimale tijd tussen twee beoordelingen van dezelfde gebruiker';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c9cc8cce247e49bae79f15173ce97354'] = 'Opslaan';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2ec265696a51530949d345239069f0d4'] = 'Beoordelingen die wachten op goedkeuring';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_655d20c1ca69519ca647684edbb2db35'] = 'Hoog';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_87f8a6ab85c9ced3702b4ea641ad4bb5'] = 'Gemiddeld';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28d0edd045e05cf5af64e35ae0c4c6ef'] = 'Laag';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_eb7d6baeb8bbf339547da7e0d6c5e416'] = 'Gerapporteerde beoordelingen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b718adec73e04ce3ec720dd11a06a308'] = 'ID';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_49ee3087348e8d44e1feda1917443987'] = 'Naam';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a1fa27779242b4902f7ae3bdd5c6d508'] = 'Type';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ec53a8c4f07baed5d8825072c89799be'] = 'Status';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_8726894930330c61dd2c24ba8265364b'] = 'Voeg nieuw criteria toe';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_57826496f2bb2a191458e4893e96e52e'] = 'Bekijk criteria';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_2608831883bb20ab520b70b4350aa23a'] = 'Goedgekeurde beoordelingen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f8a0aa69f5ce41287f02c2d182306f52'] = 'Titel van de beoordeling';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_457dd55184faedb7885afd4009d70163'] = 'Beoordeling';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_dda9c06f33071c9b6fc237ee164109d8'] = 'Waardering';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a517747c3d12f99244ae598910d979c5'] = 'Auteur';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_deb10517653c255364175796ace3553f'] = 'Product';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_0f46dacf1a6ecab8ce1cb97250bb8113'] = 'Tijd van publicatie';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f3d8e91894baa7ee67e0649abcc092ff'] = 'Criterium zal worden beperkt tot de volgende categorieën';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_d3dc571a8be516766c8124a636290fd9'] = 'Markeer de categorieën waarvoor dit criterium geldt.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_91b442d385b54e1418d81adc34871053'] = 'geselecteerd';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b56c3bda503a8dc4be356edb0cc31793'] = 'Alles inklappen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5ffd7a335dd836b3373f5ec570a58bdc'] = 'Alles uitklappen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_5e9df908eafa83cb51c0a3720e8348c7'] = 'Selecteer alles';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9747d23c8cc358c5ef78c51e59cd6817'] = 'Deselecteer alles';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_38fc05fb7f02497ea56b77fe085ffc78'] = 'Voeg nieuw criterium to';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_92a497b6a43b59cce82c604a4c834bb0'] = 'Naam criterium';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bbda28827cde1064b0320cbf6b1890a2'] = 'Toepassingsgebied van het criterium';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_20089c27bf83463fe32e7d30ed9d8f81'] = 'Criterium zal worden beperkt tot de volgende producten';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Actief';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_6f7351657f795bc1357a53142b1184cc'] = 'Goedkeuren';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ecf74aa77715220b378ec668e75655a8'] = 'Geen spam';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7c3b0e9898b88deee7ea75aafd2e37e2'] = 'Gemiddelde waardering';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_a71a0229e164fecdcde3c4e0f40473fa'] = 'Lees de gebruikersrecensies';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_7966126831926ad29c528b239d69f855'] = 'Schrijf uw recensie';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_e32b7983d3bf98a65e3e96c393867dfa'] = '%s Recensie(s)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ab51a81c76d95ddc762194d58ec5db63'] = 'Bent u zeker dat u deze opmerking wil rapporteren?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_9a2ccd41653469a8bd94fbb84b271a14'] = 'Uw commentaar is toegevoegd!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b20968d9aecd2d075519992e9e2f1ffe'] = 'Uw beoordeling is toegevoegd en wordt beschikbaar zodra deze is goedgekeurd.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_186c30cab59f6b64a453778330d4bbf0'] = 'Nieuw commentaar';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e0aa021e21dddbd6d8cecec71e9cf564'] = 'Oké';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4b3b9db8c9784468094acde0f8bf7071'] = 'Kwaliteit';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_b5c82723bd85856358f9a376bc613998'] = '%1$d van %2$d personen vonden deze recensie bruikbaar.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_39630ad6ee79b8653ea89194cdb45bec'] = 'Was dit commentaar voor u bruikbaar?';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a6105c0a611b41b08f1209506350279e'] = 'ja';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7fa3b767c460b54a2be4d49030b349c7'] = 'nee';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_28b3b1e564a00f572c5d4e21da986d49'] = 'Rapporteer misbruik';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_7966126831926ad29c528b239d69f855'] = 'Schrijf uw recensie';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_fbe2625bf3673be380d043a4bf873f28'] = 'Wees de eerste om een recensie te schrijven';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_08c7d6f84301ee7d0aab0a5f67edc419'] = 'Geen klantenbeoordelingen op het moment.';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_45dacce3e2bc0f7bebde95098b9326a8'] = 'Titel voor uw beoordeling';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_3421ad00975533fbbd5f17d2cb568125'] = 'Uw beoordeling';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_221e705c06e231636fdbccfdd14f4d5c'] = 'Uw naam';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_70397c4b252a5168c5ec003931cea215'] = 'Verplichte velden';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_94966d90747b97d1f0f206c98a8b1ac3'] = 'Verstuur';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'of';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_ea4788705e6873b424c65e91c2846b19'] = 'Annuleer';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Commentaar';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_b1897515d548a960afe49ecf66a29021'] = 'gemiddeld';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_bc976f6c3405523cde61f63a7cbe224b'] = 'beoordelingen bekijken';
|
||||
$_MODULE['<{productcomments}prestashop>tab_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'Commentaar';
|
||||
$_MODULE['<{productcomments}prestashop>form_b9aefa40a54680bb258f9f9569290fae'] = 'Productnaam';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_dda9c06f33071c9b6fc237ee164109d8'] = 'Waardering';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_899139b5174d8d7a6e38a0360008a695'] = 'Lees de gebruikers recensies';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments-extra_c31732fda0c6f01c446db7163b214de4'] = 'Schrijf uw recensie';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_reviews_d844ad9202d0de8442498775ba6ef819'] = 'Beoordeling(en)';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_93cba07454f06a4a960172bbd6e2a435'] = 'Ja';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_bafd7322c6e97d25b6299b5d6fe8920b'] = 'Nee';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c565011debb8e2812ef12853eb6a38a9'] = 'Schrijf uw recensie!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_f444678e4f3575d59b32a858630741fd'] = 'Wees de eerste om een recensie te schrijven!';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_c31732fda0c6f01c446db7163b214de4'] = 'Schrijf uw recensie';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_51ec9bf4aaeab1b25bb57f9f8d4de557'] = 'Titel:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_240f3031f25601fa128bd4e15f0a37de'] = 'Commentaar:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a2ed44743411cf8b80e397448fce104c'] = 'Uw naam:';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_a4d3b161ce1309df1c4e25df28694b7b'] = 'Toevoegen';
|
||||
$_MODULE['<{productcomments}prestashop>productcomments_4e3ee0f5bd8f527715fb0776741b9754'] = 'Uw commentaar is toegevoegd en komt beschikbaar wanneer deze wordt goegekeurd.';
|
||||
$_MODULE['<{productcomments}prestashop>products-comparison_5d9acecbb0b55a71dea7403896356001'] = 'Laat recensies zien';
|
||||
$_MODULE['<{productcomments}prestashop>tab_34e80a799d144cfe4af46815e103f017'] = 'Recensies';
|
||||
|
||||
|
||||
return $_MODULE;
|
||||
@@ -1,35 +0,0 @@
|
||||
<?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,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
if (!defined('_PS_VERSION_'))
|
||||
exit;
|
||||
|
||||
function upgrade_module_2_4($object)
|
||||
{
|
||||
return ($object->registerHook('displayProductListReviews') && $object->registerHook('top'));
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
if (!defined('_PS_VERSION_'))
|
||||
exit;
|
||||
|
||||
function upgrade_module_2_9_7($object)
|
||||
{
|
||||
return ($object->unregisterHook('top'));
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
<?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,70 +0,0 @@
|
||||
{*
|
||||
* 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
|
||||
*}
|
||||
|
||||
{extends file="helpers/form/form.tpl"}
|
||||
|
||||
{block name="input"}
|
||||
{if $input.type == 'products'}
|
||||
<table id="{$input.name}">
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>ID</th>
|
||||
<th width="80%">{l s='Product Name'}</th>
|
||||
</tr>
|
||||
{foreach $input.values as $value}
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" name="{$input.name}[]" value="{$value.id_product}"
|
||||
{if isset($value.selected) && $value.selected == 1} checked {/if} />
|
||||
</td>
|
||||
<td>{$value.id_product}</td>
|
||||
<td width="80%">{$value.name}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</table>
|
||||
{elseif $input.type == 'switch' && $smarty.const._PS_VERSION_|@addcslashes:'\'' < '1.6'}
|
||||
{foreach $input.values as $value}
|
||||
<input type="radio" name="{$input.name}" id="{$value.id}" value="{$value.value|escape:'html':'UTF-8'}"
|
||||
{if $fields_value[$input.name] == $value.value}checked="checked"{/if}
|
||||
{if isset($input.disabled) && $input.disabled}disabled="disabled"{/if} />
|
||||
<label class="t" for="{$value.id}">
|
||||
{if isset($input.is_bool) && $input.is_bool == true}
|
||||
{if $value.value == 1}
|
||||
<img src="../img/admin/enabled.gif" alt="{$value.label}" title="{$value.label}" />
|
||||
{else}
|
||||
<img src="../img/admin/disabled.gif" alt="{$value.label}" title="{$value.label}" />
|
||||
{/if}
|
||||
{else}
|
||||
{$value.label}
|
||||
{/if}
|
||||
</label>
|
||||
{if isset($input.br) && $input.br}<br />{/if}
|
||||
{if isset($value.p) && $value.p}<p>{$value.p}</p>{/if}
|
||||
{/foreach}
|
||||
{else}
|
||||
{$smarty.block.parent}
|
||||
{/if}
|
||||
|
||||
{/block}
|
||||
@@ -1,35 +0,0 @@
|
||||
<?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,27 +0,0 @@
|
||||
{*
|
||||
* 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
|
||||
*}
|
||||
<a href="{$href}" class="btn btn-success" title="{$action}" >
|
||||
<i class="icon-check"></i> {$action}
|
||||
</a>
|
||||
@@ -1,27 +0,0 @@
|
||||
{*
|
||||
* 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
|
||||
*}
|
||||
<a href="{$href}" class="" title="{$action}" >
|
||||
<i class="icon-check"></i> {$action}
|
||||
</a>
|
||||
@@ -1,35 +0,0 @@
|
||||
<?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;
|
||||
4
modules/qlohotelreview/CHANGELOG.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Changelog
|
||||
|
||||
v1.0.0
|
||||
- first release
|
||||
80
modules/qlohotelreview/CustomizationPolicy.txt
Normal file
@@ -0,0 +1,80 @@
|
||||
1. Definitions
|
||||
--------------
|
||||
"Webkul" means Webkul Software Pvt. Ltd.
|
||||
"Customization" means those services by which functionality / features are added to a product that are not included in the base installation of a product, which are aimed to suit the specific needs of the customer.
|
||||
"Module" means the custom add-on module to be developed and provided by Webkul to you in accordance with this policy and the Order Form.
|
||||
"Order Form" means the order form (electronic or hard copy), accepted by Webkul, through which you ordered the Module to be developed and provided by Webkul and which sets out the details, specifications and parameters of the customized Module to be provided.
|
||||
"Software" means the software licensed by Webkul to you pursuant to the terms and conditions of a Webkul Software License Agreement.
|
||||
|
||||
|
||||
2. Module Development
|
||||
---------------------
|
||||
All customization Services and use of the Module are subject to the terms and conditions of Webkul’s Software Licence Agreement, found on Webkul’s website, and are also subject to the terms and conditions set forth in the Order Form, as well as the customization parameters. No other customization services will be provided unless expressly agreed upon by you and Webkul in writing, signed by authorized representatives of you and Webkul.
|
||||
|
||||
|
||||
3. Customization Services
|
||||
-------------------------
|
||||
Customization Services will be provided in accordance with the terms of the Order Form and subject to the conditions set forth on the Order Form including full payment of all fees and adherence to all time limits and scheduling restrictions.
|
||||
If expressly stated on the Order Form, the Customization Services and Module shall be subject to acceptance by you in accordance with the acceptance criteria set forth in the Order Form. Where there is no acceptance criteria set forth on the Order Form, acceptance shall be deemed to occur upon the earliest of:
|
||||
completion of the acceptance criteria,
|
||||
Webkul's completion of the Customization Services and written notification to you of such completion,
|
||||
your use of the Module in other than a test environment.
|
||||
Notwithstanding the foregoing, if acceptance testing, delivery or completion is delayed by thirty (30) days or more for reasons not related to Webkul’s performance, you must pay the value of any milestone that is contingent on acceptance. Such acceptance does not negate any warranty rights that you may have respecting the Module, as set forth herein. You are solely responsible for preparing your facilities and equipment for installation of the Module, where applicable.
|
||||
Webkul will make reasonable efforts to accommodate your time and deadline requirements with respect to the performance of Customization Services; however, meeting such requirements is subject to availability of resources, both human and equipment at the time of your request and is dependent on your availability to provide input and to perform necessary actions. Webkul shall not be liable in any way for any delay or damage arising from Webkul’s failure to meet such of your requirements or any deadlines.
|
||||
Any changes to the Customization Services or Module requirements after execution of the Order Form will be subject to a cost and delivery re-assessment, and a written change order or re-quote that has been mutually agreed upon by you and Webkul in writing. Webkul reserves the right to make changes in the design of its Software without the obligation to make equivalent changes to the Module.
|
||||
If, pursuant to your request, Webkul reviews drawings and documents prepared by others in connection with the Customization Services, including your personnel and other consultants, contractors, and suppliers, Webkul’s review of such drawings and documents shall be only to confirm general compliance with the intent of the design and information given, and shall not constitute acceptance by Webkul of any responsibility for correctness of specifications or details of such drawings and documentation. Webkul shall be entitled to rely on all information provided, and decisions and approvals made, by you in connection with Webkul’s work hereunder. You agree that Webkul and its personnel shall not be subject to any liability or costs relating to the Customization Services to the extent such liability and costs are attributable to any information provided by you that is not complete, accurate or current in all material respects.
|
||||
The Module, and all parts thereof, shall at all times be treated as Software licensed to you under the terms and conditions of the Licence Agreement.
|
||||
|
||||
|
||||
4. Term and Termination
|
||||
-----------------------
|
||||
The term of the Development Services, if any, shall be as set out on the Order Form.
|
||||
Customization Services may be terminated by Webkul immediately upon notice for cause if:
|
||||
you materially breach any agreement entered into between you and Webkul, including Webkul’s Licence Agreement and/or any User / software license agreement relating to Webkul’s products (or you consistently fail to properly perform and observe your obligations under such agreements or any applicable Webkul Software policy), and you fail to rectify the situation within ten (10) calendar days of notice from Webkul; or
|
||||
you become insolvent, or a receiver or receiver-manager is appointed for any part of your property, or you make an assignment, proposal or arrangement for the benefit of your creditors or you file an assignment in bankruptcy, or any proceedings under any bankruptcy or insolvency laws are commenced against you.
|
||||
Webkul shall have the right to terminate Customization Services immediately upon notice to you, without penalty or refund, if any agreement relating to the Software is terminated for any reason.
|
||||
Each party shall have the right to terminate the Development Services for convenience upon ninety (90) days’ notice to the other party.
|
||||
Termination of the Customization Services or any agreement shall not affect your payment obligation for any Customization Services performed by Webkul prior to the date of termination, regardless of whether you have had, as at the date of termination, any use of the Module or part thereof. In the event that the Customization Services are terminated prior to the delivery of the Module to you, Webkul shall not be obligated to deliver any work-in-progress or any portion of the Module to you, unless otherwise expressly agreed by the parties in writing.
|
||||
|
||||
|
||||
5. Fees
|
||||
-------
|
||||
You shall pay fees for the Customization Services and Module license in accordance with the fee schedule set forth in the Order Form. Webkul shall submit invoices to you for all fees and payments due, including applicable expenses, on a monthly basis in arrears. You shall pay to Webkul the full amount of each invoice received from Webkul within seven (7) days of receipt of the invoice. All invoices shall detail the nature of the Customization Services performed, the fees payable, and the basis on which the calculation of the fees has been made.
|
||||
You are responsible for, and shall pay all taxes relating to the Customization Services and the Module. Unless otherwise indicated, all amounts payable by you under an Order Form are exclusive of any tax, duty, levy, or similar government charge that may be assessed by any jurisdiction, whether based on gross revenue, the delivery, possession or use of the Module, other Software or Customization Services, or otherwise.
|
||||
If you fail to pay any amount due within thirty (30) days of such payment becoming due and payable, in addition to any other rights and remedies available to Webkul, Webkul shall be entitled to charge interest on all outstanding amounts at the lesser of 18% per annum or the maximum rate permitted by law, such interest commencing as of the due date for such payment. You shall also be responsible for paying for all reasonable fees and costs incurred by Webkul, including legal fees, in collecting any overdue amounts or enforcing any provision of any agreement entered into between you and Webkul.
|
||||
Pricing is subject to Webkul’s understanding of the project requirements, the terms of this policy and the Order Form. Webkul reserves the right to invoice you for additional Customization Services requested by you, or that are required based on incomplete details or specifications provided by you, that are not specified in the Order Form but are provided by Webkul to you, provided that Webkul provides you with notice that such additional Customization Services are not included in the Order Form and are subject to Webkul’s then current time and materials fee schedule for such Customization Services. Invoices for such additional Customization Services shall be subject to payment in accordance with this Section.
|
||||
|
||||
|
||||
6. Intellectual Property Rights
|
||||
-------------------------------
|
||||
Webkul shall own all intellectual property rights (whether or not patentable or registrable under copyright, trade-mark or similar legislation or subject to analogous protection) in and to the Module, and all work conceived, created, invented, produced, designed or reduced to practice by Webkul and its personnel as a result of or with respect to any and all Customization Services provided to you. Your rights and obligations relating to the use of the Module shall be governed by the terms of the applicable Webkul Software License Agreement regardless of whether you may have contributed to any Module in any way. The foregoing shall not be deemed to transfer ownership to Webkul of any pre-existing intellectual property rights that you may have in the materials that you provide to Webkul in order to permit Webkul to perform the Customization Services; however, to the extent that you have provided such materials to Webkul, you hereby grant Webkul a non-exclusive, non-transferable, royalty-free license to use all such materials for the purposes of performing the Customization Services and providing you with the Module.
|
||||
|
||||
|
||||
7. Limited Warranty and Limitation of Liability
|
||||
-----------------------------------------------
|
||||
Limited Warranty: Webkul warrants that all services provided by Webkul shall be provided in a competent, professional manner by persons who are fully trained and qualified to perform the Customization Services. Webkul does not represent or warrant that the Customization Services or Module provided hereunder will be capable of achieving a particular result for your business, or that the operation of the Module will be error free or uninterrupted, or that all errors in the Module can be found or corrected, although Webkul shall use commercially reasonable efforts to do so. Without limiting the foregoing, this warranty is valid only for the six (6) months following the acceptance date as set forth in Section 3(b). The above warranty shall not apply to defects or non-conformities resulting from:
|
||||
improper or inadequate maintenance or installation of the Module
|
||||
use of the Module in combination with software, interfaces, or other materials that are not supplied or specifically authorized by Webkul,
|
||||
unauthorized or improper use or modification of the Module, including use that is not contemplated in the Order Form or instructions provided by Webkul,
|
||||
abuse, negligence, accident, or other damage from external sources, or
|
||||
improper preparation of your facilities or equipment for installation and use or the Module.
|
||||
Limitation of Liability:
|
||||
save as otherwise provided in a written agreement between you and Webkul, and to the maximum extent permitted by applicable law, Webkul makes no warranty or condition, express or implied, statutory or otherwise, with respect to the module or the Customization services, including, without limitation, the implied warranties or conditions of merchantability and fitness for a particular purpose.
|
||||
in no event shall Webkul be liable to you or any other person for any indirect, special, punitive, exemplary, consequential or incidental damages (including without limitation, damages for loss of revenues or profits, business interruption, loss of business information, and the like) arising out of the use, inability to use or the performance or non-performance of, the module or the provision of the Customization services, even if Webkul has been advised of the possibility of such damage or claim, or it is foreseeable.
|
||||
in no event shall Webkul’s maximum aggregate liability to you for direct damages exceed the total amount paid by you for the Customization services performed by Webkul within the six (6) months preceding the date on which the claim arose.
|
||||
|
||||
|
||||
8. General Terms and Conditions
|
||||
-------------------------------
|
||||
As Webkul is primarily a plugin and app development company and its main focus is on constant plugin development fulfilling various latest requirements and keeping up with the latest trends, Webkul has all the right to release the same customized plugin as a new plugin in future to be available to all its customers. The same may include few or every feature of the customisation. Webkul reserve all the rights to do the same as the customisation done for the client is Intellectual property of Webkul.
|
||||
The customization undertaken by Webkul would be identical to the discussed requirements, and would not include any sort of additional changes or alterations. Any additional changes or alterations would be considered as a separate project and would be charged separately.
|
||||
Webkul would be providing customization support for only one month from the delivery of the project. For any further support extended to you, the same shall be charged separately which includes specifically any further help or bug /error fix.
|
||||
The cost of customization doesn’t include the cost of extension installation or exchange of the extension, if it has not been specifically quoted within the project cost.
|
||||
During the project customization, you ought not to edit or change any of the files and it is also advisable to have a backup every-time a change is made. If you, on your own, are making certain changes, it is advisable to back up the files, folder and database. Before doing anything on your own, you need to inform Webkul if Webkul is working on the project or your support period is subsisting.
|
||||
The customization charge will include a single template. Any time during or after the customization if you change the template, you shall be wholly and solely liable for any loss or damage emanating from the same. Webkul will not be responsible for any loss or damage done due to the same.
|
||||
All the communication will take place through Webkul’s help desk system only. If the need arises, the issues can be discussed via Skype once in week or month. Webkul does not allow screen sharing and remote desktop.
|
||||
Customization cost will not include any free consulting beyond the scope of the project.
|
||||
If while making any changes by yourself or by your team, something gets damaged, then Webkul will not be responsible for it. This includes any issues faced by you for your own fault even during the support period of the module or project.
|
||||
Webkul will not be responsible for any damages during the customization. It is advised that you must have a proper backup management system deployed.
|
||||
The terms and conditions of this Policy shall be governed by Indian Laws, and the courts in Delhi alone shall only have exclusive jurisdiction to resolve/ adjudicate upon any disputes.
|
||||
If any dispute arises between webkul and you/Licensee at any time, in connection with the validity, interpretation, implementation or alleged breach of any provision of this Agreement, the same shall be referred to a sole Arbitrator who shall be an independent and neutral third party appointed exclusively by Webkul. You shall not object to the appointment of the Arbitrator so appointed by Webkul. The place of arbitration shall be Delhi, India. The Arbitration & Conciliation Act, 1996 as amended by The Arbitration & Conciliation (Amendment) Act, 2015, shall govern the arbitration proceedings. The arbitration proceedings shall be held in the English language.
|
||||
223
modules/qlohotelreview/LICENSE.txt
Normal file
@@ -0,0 +1,223 @@
|
||||
SOFTWARE LICENCE AGREEMENT
|
||||
===============================
|
||||
|
||||
This AGREEMENT is made effective on the date of the purchase of the software between Webkul Software Pvt. Ltd.,Company incorporated under the Companies Act, 1956 (hereinafter referred to as “Licensor"), and the purchaser of the software/ product (hereinafter referred to as "Licensee").
|
||||
|
||||
Preamble
|
||||
==================
|
||||
Licensor is a web and mobile product based organization engaged in the business of developing and marketing software for enterprise level e-commerce businesses. It is an ISO and NSR (NASSCOM) certified organization having a team of more than 150 creative engineers which come from different backgrounds. It has developed more than 700 web extensions and apps in the past few years for open source platforms which are used and trusted globally. Licensee now wishes to obtain license, and Licensor wishes to grant a license, to allow use of the software so purchased in developing the e-commerce business website/ mobile app of the Licensee, subject to the terms and conditions set forth herein.
|
||||
|
||||
|
||||
THEREFORE, with the intent to be legally bound, the parties hereby agree as follows:
|
||||
|
||||
|
||||
Agreement
|
||||
================
|
||||
|
||||
1.Definitions :
|
||||
------------------
|
||||
As used in this Agreement, the following capitalized terms shall have the definitions set forth below:
|
||||
|
||||
|
||||
"Derivative Works" are works developed by Licensee, its officers, agents, contractors or employees, which are based upon, in whole or in part, the Source Code and/or the Documentation and may also be based upon and/or incorporate one or more other preexisting works of the Licensor. Derivative Works may be any improvement, revision, modification, translation (including compilation or recapitulation by computer), abridgment, condensation, expansion, or any other form in which such a preexisting work may be recast, transformed, or adapted. For purposes hereof, a Derivative Work shall also include any compilation that incorporates such a preexisting work.
|
||||
|
||||
|
||||
"Documentation" is written, printed or otherwise recorded or stored (digital or paper) material relating to the Software and/or Source Code, including technical specifications and instructions for its use including Software/ Source Code annotations and other descriptions of the principles of its operation and instructions for its use.
|
||||
|
||||
|
||||
"Improvements" shall mean, with respect to the Software, all modifications and changes made, developed, acquired or conceived after the date hereof and during the entire term of this Agreement.
|
||||
|
||||
|
||||
"Source Code" is the computer programming source code form of the Software in the form maintained by the Licensor, and includes all non-third-party executables, libraries, components, and Documentation created or used in the creation, development, maintenance, and support of the Software as well as all updates, error corrections and revisions thereto provided by Licensor, in whole or in part.
|
||||
|
||||
|
||||
2. Software License.
|
||||
-------------------------
|
||||
|
||||
(a)Grant of License. For the consideration set forth below, Licensor hereby grants to Licensee, and Licensee hereby accepts the worldwide, non-exclusive, perpetual, royalty-free rights and licenses set forth below:
|
||||
|
||||
|
||||
(i)The right and license to use and incorporate the software, in whole or in part, to develop its website/ mobile app (including the integration of all or part of the Licensor’s software into Licensee's own software) on one domain ( Except Joomla modules , listed on store are entitled to be used on unlimited domain as per the standard guidelines ) only, solely for the own personal or business use of the Licensee. However, the License does not authorize the Licensee to compile, copy or distribute the said Software or its Derivative Works.
|
||||
|
||||
|
||||
(ii)The right and license does not authorize the Licensee to make any backup or archival copies of the Software and / or the Source Code and Documentation.
|
||||
|
||||
(iii)The right and license does not authorize the Licensee to migrate the domain license to another domain.
|
||||
|
||||
|
||||
(b)Scope; Rights and Responsibilities.
|
||||
|
||||
|
||||
(i)Licensor shall enable the Licensee to download one complete copy of the Software.
|
||||
|
||||
|
||||
(ii)The Software is intended for the sole use of the Licensee in development of its own website/ mobile app.
|
||||
|
||||
|
||||
(iii)Licensee does not have the right to hand over, sell, distribute, sub-license, rent, lease or lend any portion of the Software or Documentation, whether modified or unmodified, to anyone. Licensee should not place the Software on a server so that it becomes accessible via a public network such as the Internet for distribution purposes. In case the Licensee is using any source code management system like github, it can use the code there only when it has paid subscription from such management system.
|
||||
|
||||
|
||||
(iv)Licensee is not authorized to appoint, or work with, third parties to perform any development services using the Source Code, the source code to Derivative Works and/or the Documentation on behalf of, or working with, the Licensee. Release of Source Code, Derivative Work source code and/or Documentation to any third party shall be considered as violation of the Agreement, inter-alia entailing forthwith termination and legal action.
|
||||
|
||||
|
||||
|
||||
(c)Ownership.
|
||||
|
||||
|
||||
(i)Software and Source Code. All right, title, copyright, and interest in the Software, Source Code, Software Modifications and Error corrections will be and remain the property of Licensor.
|
||||
|
||||
|
||||
(ii)Derivative Works. As creation of Derivative Works by the Licensee is prohibited, thus, all right, title, copyright, and interest in any and/or all Derivative Works and Improvements created by, or on behalf of, Licensee will also be deemed to the property of Licensor. Licensor shall be entitled to protect copyright / intellectual property in all such Derivative Works and Improvements also in any country as it may deem fit including without limitation seeking copyright and/or patent protection.
|
||||
|
||||
|
||||
3.Consideration.
|
||||
--------------------
|
||||
|
||||
(a)Licensee shall pay to Licensor the amount as mentioned on the website from where the order is placed, as one-time, upfront fees in consideration for the licenses and rights granted hereunder (hereinafter referred to as the "License Fee"). The License Fee to be paid by Licensee shall be paid upfront at the time of placing the order, and no credit will be allowed under any circumstances.
|
||||
|
||||
|
||||
(b)Once paid, the License Fees shall be non-refundable. The Licensee has fully satisfied itself about the Software and has seen the demonstration, and only thereafter has placed the order. Thus, the License Fees or any part thereof is non-refundable. No claim for refund of the Licence Fees shall be entertained under any circumstances.
|
||||
|
||||
|
||||
|
||||
4.Representations and Warranties.
|
||||
-------------------------------------
|
||||
|
||||
(a)Mutual. Each of the parties represents and warrants to the other as follows.
|
||||
|
||||
|
||||
(i)such party is a legal entity duly organized, validly existing and in good standing;
|
||||
|
||||
|
||||
(ii)such party has the power and authority to conduct its business as presently conducted and to enter into, execute, deliver and perform this Agreement.
|
||||
|
||||
|
||||
(iii)This Agreement has been duly and validly accepted by such party and constitutes the legal, valid and binding obligations of such party respectively, enforceable against such party in accordance with their respective terms;
|
||||
|
||||
|
||||
(iv)the acceptance, execution, delivery and performance of this Agreement does not and will not violate such party's charter or by-laws; nor require any consent, authorization, approval, exemption or other action by any third party or governmental entity.
|
||||
|
||||
|
||||
(b)Licensor warrants that, at the time of purchase of the Software:
|
||||
|
||||
|
||||
the Software will function materially as set forth in the website or published functionality provided by Licensor to customers and potential customers describing the Software; and
|
||||
|
||||
|
||||
Software add-ons, if purchased by the Licensee from the Licensor, will not materially diminish the features or functions of or the specifications of the Software as they existed as of the execution of this Agreement.
|
||||
|
||||
|
||||
|
||||
(c)Title. Licensor represents and warrants that it is the exclusive owner of all copyright/ intellectual property in the Software (including the Source Code) and has good and marketable title to the Software (including the Source Code) free and clear of all liens, claims and encumbrances of any nature whatsoever (collectively, "Liens"). Licensor's grant of license and rights to Licensee hereunder does not, and will not infringe any third party's property, intellectual property or personal rights.
|
||||
|
||||
|
||||
|
||||
5.Term.
|
||||
-------------
|
||||
|
||||
(a)Subject to Licensee's payment obligations, this Agreement shall commence as on the date of making payment of the Software by the Licensee to the Licensor, and shall continue until terminated by either party.
|
||||
|
||||
|
||||
(b)The Licensor retains the right to terminate the license at any time, if the Licensee is not abiding by any of the terms of the Agreement. The Licensee may terminate the Agreement at any time at its own discretion by uninstalling the Software and /or by destroying the said Software (or any copies thereof). However, the Licensee shall not be entitled to seek any refund of the amount paid by it to the Licensor, under any circumstances.
|
||||
|
||||
|
||||
(c)Survival. In the event this Agreement is terminated for any reason, the provisions set forth in Sections 2(a), 2(b), and 2(c) shall survive.
|
||||
|
||||
|
||||
|
||||
|
||||
6. Indemnification
|
||||
----------------------
|
||||
|
||||
The Licensee release the Licensor from, and agree to indemnify, defend and hold harmless the Licensor (and its officers, directors, employees, agents and Affiliates) against, any claim, loss, damage, settlement, cost, taxes, expense or other liability (including, without limitation, attorneys' fees) (each, a "Claim") arising from or related to: (a) any actual or alleged breach of any obligations in this Agreement; (b) any refund, adjustment, or return of Software,(c) any claim for actual or alleged infringement of any Intellectual Property Rights made by any third party or damages related thereto; or (d) Taxes.
|
||||
|
||||
|
||||
7. Limitation of Liability
|
||||
------------------------------
|
||||
|
||||
The Licensor will not be liable for any direct, indirect, incidental, special, consequential or exemplary damages, including but not limited to, damages for loss of profits, goodwill, use, data or other intangible losses arising out of or in connection with the Software, whether in contract, warranty, tort etc. (including negligence, software liability, any type of civil responsibility or other theory or otherwise) to the Licensee or any other person for cost of software, cover, recovery or recoupment of any investment made by the Licensee or its affiliates in connection with this Agreement, or for any other loss of profit, revenue, business, or data or punitive or consequential damages arising out of or relating to this Agreement. Further, the aggregate liability of the Licensor, arising out of or in connection with this Agreement or the transactions contemplated hereby will not exceed at any time, or under any circumstances, the total amounts received by the Licensor from the Licensee in connection with the particular software giving rise to the claim.
|
||||
|
||||
|
||||
8. Force Majeure
|
||||
---------------------
|
||||
|
||||
The Licensor will not be liable for any delay or failure to perform any of its obligations under this Agreement by reasons, events or other matters beyond its reasonable control.
|
||||
|
||||
|
||||
9. Relationship of Parties
|
||||
------------------------------
|
||||
|
||||
The Licensor and Licensee are independent legal entities, and nothing in this Agreement will be construed to create a partnership, joint venture, association of persons, agency, franchise, sales representative, or employment relationship between the parties. The Licensee will have no authority to make or accept any offers or representations on behalf of the Licensor. The relationship between the parties is that of Licensor and Licensee only, and the rights, duties, liabilities of each party shall be governed by this Agreement.
|
||||
|
||||
|
||||
10. Modification
|
||||
------------------------
|
||||
|
||||
The Licensor may amend any of the terms and conditions contained in this Agreement at any time and solely at its discretion. Any changes will be effective upon the posting of such changes on the Portal/ website, and the Licensee is responsible for reviewing these changes and informing itself of all applicable changes or notices. The continued use of a software by the Licensee after posting of any changes by the Licensor, will constitute the acceptance of such changes or modifications by the Licensee.
|
||||
|
||||
|
||||
|
||||
11.Miscellaneous.
|
||||
-----------------------
|
||||
|
||||
(a)General Provisions. This Agreement: (i) may be amended only by a writing signed by each of the parties; (ii) may be executed in several counterparts, each of which shall be deemed an original but all of which shall constitute one and the same instrument; (iii) contains the entire agreement of the parties with respect to the transactions contemplated hereby and supersedes all prior written and oral agreements, and all contemporaneous oral agreements, relating to such transactions; (iv) shall be governed by, and construed and enforced in accordance with, the laws of India; and (v) shall be binding upon, and inure to the benefit of, the parties and their respective successors and permitted assigns. Each of the parties hereby irrevocably submits to the jurisdiction of the Courts at Delhi, India, for the purposes of any action or proceeding arising out of or relating to this Agreement or the subject matter hereof and brought by any other party.
|
||||
|
||||
|
||||
(b)Assignment. Licensee cannot assign, pledge or otherwise transfer, whether by operation of law or otherwise, this Agreement, or any of its obligations hereunder, without the prior written consent of Licensor, which consent shall not be unreasonably withheld.
|
||||
|
||||
|
||||
(c)Notices. Unless otherwise specifically provided herein, all notices, consents, requests, demands and other communications required or permitted hereunder:
|
||||
|
||||
|
||||
(i)shall be in writing;
|
||||
|
||||
|
||||
(ii)shall be sent by messenger, certified or registered mail/email, or reliable express delivery service, to the appropriate address(es) set forth below; and
|
||||
|
||||
|
||||
(iii)shall be deemed to have been given on the date of receipt by the addressee, as evidenced by a receipt executed by the addressee (or a responsible person in his or her office), the records of the Party delivering such communication or a notice to the effect that such addressee refused to claim or accept such communication, if sent by messenger, mail or express delivery service.
|
||||
|
||||
|
||||
All such communications shall be sent to the following addresses or numbers, or to such other addresses or numbers as any party may inform the others by giving five days' prior notice:
|
||||
|
||||
|
||||
If to Webkul Software Pvt. Ltd.:
|
||||
|
||||
|
||||
|
||||
Webkul Software Pvt. Ltd.
|
||||
|
||||
A-67, Sector 63, NOIDA – 201301,
|
||||
|
||||
Uttar Pradesh, India
|
||||
|
||||
|
||||
If to Licensee:
|
||||
|
||||
At the address mentioned by the Licensee
|
||||
|
||||
(at the time of placing order of generating Invoice)
|
||||
|
||||
|
||||
(d)Severability. It is the intent of the parties that the provisions of this Agreement be enforced to the fullest extent permissible under the laws and public policies of India in which enforcement hereof is sought. In furtherance of the foregoing, each provision hereof shall be severable from each other provision, and any provision hereof which is/ becomes unenforceable shall be subject to the following: (i) if such provision is contrary to or conflicts with any requirement of any statute, rule or regulation in effect, then such requirement shall be incorporated into, or substituted for, such unenforceable provision to the minimum extent necessary to make such provision enforceable; (ii) the court, agency or arbitrator considering the matter is hereby authorized to (or, if such court, agency or arbitrator is unwilling or fails to do so, then the parties shall) amend such provision to the minimum extent necessary to make such provision enforceable, and the parties hereby consent to the entry of an order so amending such provision; and (iii) if any such provision cannot be or is not reformed and made enforceable pursuant to clause (i) or (ii) above, then such provision shall be ineffective to the minimum extent necessary to make the remainder of this Agreement enforceable. Any application of the foregoing provisions to any provision hereof shall not effect the validity or enforceability of any other provision hereof.
|
||||
|
||||
|
||||
(e)By purchasing the Software, the Licensee acknowledge that it has read this Agreement, and that it agrees to the content of the Agreement, its terms and agree to use the Software in compliance with this Agreement.
|
||||
|
||||
|
||||
(f)The Licensor holds the sole copyright of the Software. The Software or any portion thereof is a copyrightable matter and is liable to be protected by the applicable laws. Copyright infringement in any manner can lead to prosecution according to the current law. The Licensor reserves the right to revoke the license of any user who is not holding any license or is holding an invalid license.
|
||||
|
||||
|
||||
(g)This Agreement gives the right to use only one copy of the Software on one domain solely for the own personal or business use of the Licensee, subject to all the terms and conditions of this Agreement. A separate License has to be purchased for each new Software installation. Any distribution of the Software without the written consent of the Licensor (including non-commercial distribution) is regarded as violation of this Agreement, and will entail immediate termination of the Agreement and may invite liability, both civil and criminal, as per applicable laws.
|
||||
|
||||
|
||||
(h)The Licensor reserves the rights to publish a selected list of users/ Licensees of its Software, and no permission of any Licensee is needed in this regard. The Licensee agrees that the Licensor may, in its sole discretion, disclose or make available any information provided or submitted by the Licensee or related to it under this Agreement to any judicial, quasi-judicial, governmental, regulatory or any other authority as may be required by the Licensor to co-operate and / or comply with any of their orders, instructions or directions or to fulfill any requirements under applicable Laws.
|
||||
|
||||
|
||||
(i)If the Licensee continues to use the Software even after the sending of the notice by the Licensor for termination, the Licensee agree to accept an injunction to restrain itself from its further use, and to pay all costs (including but not limited to reasonable attorney fees) to enforce injunction or to revoke the License, and any damages suffered by the Licensor because of the misuse of the Software by the Licensee.
|
||||
|
||||
|
||||
12. Arbitration
|
||||
-----------------------
|
||||
|
||||
If any dispute arises between the Licensor and the Licensee at any time, in connection with the validity, interpretation, implementation or alleged breach of any provision of this Agreement, the same shall be referred to a sole Arbitrator who shall be an independent and neutral third party appointed exclusively by the Licensor. The Licensee shall not object to the appointment of the Arbitrator so appointed by the Licensor. The place of arbitration shall be Delhi, India. The Arbitration & Conciliation Act, 1996 as amended by The Arbitration & Conciliation (Amendment) Act, 2015, shall govern the arbitration proceedings. The arbitration proceedings shall be held in the English language.
|
||||
1
modules/qlohotelreview/README.md
Normal file
@@ -0,0 +1 @@
|
||||
##QloApps Hotel Reviews v1.0.0 Compatible with QloApps v1.6.x
|
||||
57
modules/qlohotelreview/classes/QhrCategory.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
class QhrCategory extends ObjectModel
|
||||
{
|
||||
public $id_category;
|
||||
public $name;
|
||||
public $active;
|
||||
public $date_add;
|
||||
public $date_upd;
|
||||
|
||||
public static $definition = array(
|
||||
'table' => 'qhr_category',
|
||||
'primary' => 'id_category',
|
||||
'multilang' => true,
|
||||
'fields' => array(
|
||||
'name' => array(
|
||||
'type' => self::TYPE_STRING,
|
||||
'validate' => 'isGenericName',
|
||||
'lang' => true,
|
||||
'required' => true,
|
||||
'size' => 128
|
||||
),
|
||||
'active' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
|
||||
'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false),
|
||||
'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false),
|
||||
),
|
||||
);
|
||||
|
||||
public static function getAll($active = true)
|
||||
{
|
||||
$id_lang = Context::getContext()->language->id;
|
||||
return Db::getInstance()->executeS(
|
||||
'SELECT * FROM `'._DB_PREFIX_.'qhr_category` qc
|
||||
LEFT JOIN `'._DB_PREFIX_.'qhr_category_lang` qcl
|
||||
ON qcl.`id_category` = qc.`id_category` AND qcl.`id_lang` = '.(int) $id_lang.'
|
||||
'.($active ? 'WHERE qc.`active` = 1' : '')
|
||||
);
|
||||
}
|
||||
}
|
||||
461
modules/qlohotelreview/classes/QhrHotelReview.php
Normal file
@@ -0,0 +1,461 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
class QhrHotelReview extends ObjectModel
|
||||
{
|
||||
public $id_hotel_review;
|
||||
public $id_hotel;
|
||||
public $id_order;
|
||||
public $rating;
|
||||
public $subject;
|
||||
public $description;
|
||||
public $approved;
|
||||
public $date_add;
|
||||
public $date_upd;
|
||||
|
||||
const QHR_SORT_BY_RELEVENCE = 1;
|
||||
const QHR_SORT_BY_TIME_NEW = 2;
|
||||
const QHR_SORT_BY_TIME_OLD = 3;
|
||||
const QHR_SORT_BY_RATING_HIGH = 4;
|
||||
const QHR_SORT_BY_RATING_LOW = 5;
|
||||
|
||||
public static $definition = array(
|
||||
'table' => 'qhr_hotel_review',
|
||||
'primary' => 'id_hotel_review',
|
||||
'multilang' => false,
|
||||
'fields' => array(
|
||||
'id_hotel' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true),
|
||||
'id_order' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true),
|
||||
'rating' => array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat'),
|
||||
'subject' => array('type' => self::TYPE_STRING, 'validate' => 'isMessage', 'size' => 255, 'required' => true),
|
||||
'description' => array('type' => self::TYPE_STRING, 'validate' => 'isMessage', 'size' => 65535, 'required' => true),
|
||||
'approved' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
|
||||
'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false),
|
||||
'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false),
|
||||
),
|
||||
);
|
||||
|
||||
public function __construct($id = null, $id_lang = null)
|
||||
{
|
||||
parent::__construct($id, $id_lang);
|
||||
if ($id) {
|
||||
$this->category_ratings = self::getCategoryRatings($id);
|
||||
$this->full_img_dir = _PS_MODULE_DIR_.'qlohotelreview/views/img/review/'.$this->id.'/';
|
||||
$this->img_dir = _MODULE_DIR_.'qlohotelreview/views/img/review/'.$this->id.'/';
|
||||
}
|
||||
}
|
||||
|
||||
public function delete()
|
||||
{
|
||||
// tables to remove data from
|
||||
$tables = array(
|
||||
'qhr_review_category_rating',
|
||||
'qhr_review_usefulness',
|
||||
'qhr_review_report',
|
||||
'qhr_review_reply',
|
||||
);
|
||||
|
||||
foreach ($tables as $table) {
|
||||
Db::getInstance()->delete($table, 'id_hotel_review = '.(int) $this->id);
|
||||
}
|
||||
|
||||
Tools::deleteDirectory($this->full_img_dir);
|
||||
return parent::delete();
|
||||
}
|
||||
|
||||
public static function cleanImagesDirectory()
|
||||
{
|
||||
$img_dir = _PS_MODULE_DIR_.'qlohotelreview/views/img/review/';
|
||||
$files = Tools::scandir($img_dir, '');
|
||||
foreach ($files as $file) {
|
||||
if (!in_array($file, array('.', '..', 'index.php'))) {
|
||||
if (!Tools::deleteDirectory($img_dir.$file)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static function getAverageRatingByIdHotel($id_hotel)
|
||||
{
|
||||
$validate = Configuration::get('QHR_ADMIN_APPROVAL_ENABLED');
|
||||
$cache_id = 'QhrHotelReview::getAverageRatingByIdHotel_'.(int) $id_hotel.'-'.(int) $validate;
|
||||
if (!Cache::isStored($cache_id)) {
|
||||
$result = Db::getInstance()->getValue(
|
||||
'SELECT SUM(hr.`rating`) FROM `'._DB_PREFIX_.'qhr_hotel_review` hr
|
||||
WHERE hr.`id_hotel` = '.(int) ($id_hotel).($validate == '1' ? ' AND hr.`approved` = 1' : '')
|
||||
);
|
||||
Cache::store($cache_id, $result);
|
||||
}
|
||||
return Cache::retrieve($cache_id);
|
||||
}
|
||||
|
||||
public static function getReviewCountByIdHotel($id_hotel)
|
||||
{
|
||||
$validate = Configuration::get('QHR_ADMIN_APPROVAL_ENABLED');
|
||||
$cache_id = 'QhrHotelReview::getCountByIdHotel_'.(int) $id_hotel.'-'.(int) $validate;
|
||||
if (!Cache::isStored($cache_id)) {
|
||||
$result = Db::getInstance()->getValue(
|
||||
'SELECT COUNT(*) FROM `'._DB_PREFIX_.'qhr_hotel_review` hr
|
||||
WHERE hr.`id_hotel` = '.(int) ($id_hotel).($validate == '1' ? ' AND hr.`approved` = 1' : '')
|
||||
);
|
||||
Cache::store($cache_id, $result);
|
||||
}
|
||||
return Cache::retrieve($cache_id);
|
||||
}
|
||||
|
||||
public function addCategoryRatings($categoryRatings)
|
||||
{
|
||||
if (!$categoryRatings) {
|
||||
return true;
|
||||
}
|
||||
// delete all first
|
||||
Db::getInstance()->delete('qhr_review_category_rating', 'id_hotel_review = '.(int) $this->id);
|
||||
|
||||
// insert now
|
||||
$rows = array();
|
||||
foreach ($categoryRatings as $idCategory => $rating) {
|
||||
$rows[] = array(
|
||||
'id_hotel_review' => (int) $this->id,
|
||||
'id_category' => (int) $idCategory,
|
||||
'rating' => (float) $rating
|
||||
);
|
||||
}
|
||||
Db::getInstance()->insert('qhr_review_category_rating', $rows);
|
||||
return true;
|
||||
}
|
||||
|
||||
public function addManagementReply($reply, $idEmployee = null)
|
||||
{
|
||||
if (!$reply) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$idEmployee) {
|
||||
$idEmployee = (int) Context::getContext()->employee->id;
|
||||
}
|
||||
|
||||
|
||||
// delete all first
|
||||
Db::getInstance()->delete('qhr_review_reply', 'id_hotel_review = '.(int) $this->id);
|
||||
|
||||
// insert now
|
||||
$row = array(
|
||||
'id_hotel_review' => (int) $this->id,
|
||||
'id_employee' => (int) $idEmployee,
|
||||
'message' => pSQL($reply)
|
||||
);
|
||||
|
||||
Db::getInstance()->insert('qhr_review_reply', $row);
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getCustomer()
|
||||
{
|
||||
if (!$this->id_order) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$objOrder = new Order($this->id_order);
|
||||
return $objOrder->getCustomer();
|
||||
}
|
||||
|
||||
public function getManagementReply()
|
||||
{
|
||||
$sql = new DbQuery();
|
||||
$sql->select('*');
|
||||
$sql->from('qhr_review_reply', 'rr');
|
||||
$sql->where('rr.`id_hotel_review` = '.(int) $this->id);
|
||||
return Db::getInstance()->getRow($sql);
|
||||
}
|
||||
|
||||
public function saveReviewImages()
|
||||
{
|
||||
$files = QhrHotelReviewHelper::fileAttachmentMultiple('images');
|
||||
if (is_array($files) && count($files)) {
|
||||
foreach ($files as $key => $file) {
|
||||
$ext = pathinfo($file['rename'], PATHINFO_EXTENSION);
|
||||
$dir = _PS_MODULE_DIR_.'qlohotelreview/views/img/review/'.(string) $this->id.'/';
|
||||
QhrHotelReviewHelper::createDirectory($dir);
|
||||
$useSameExt = false;
|
||||
if ($useSameExt) {
|
||||
$imgPath = $dir.($key + 1).'.jpg';
|
||||
} else {
|
||||
$imgPath = $dir.($key + 1).'.'.$ext;
|
||||
}
|
||||
ImageManager::resize($file['tmp_name'], $imgPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function approveReview()
|
||||
{
|
||||
return Db::getInstance()->update(
|
||||
'qhr_hotel_review',
|
||||
array('approved' => 1),
|
||||
'`id_hotel_review` = '.(int) $this->id
|
||||
);
|
||||
}
|
||||
|
||||
public function unapproveReview()
|
||||
{
|
||||
return Db::getInstance()->update(
|
||||
'qhr_hotel_review',
|
||||
array('approved' => 0),
|
||||
'`id_hotel_review` = '.(int) $this->id
|
||||
);
|
||||
}
|
||||
|
||||
public static function getByCustomer($id_customer, $id_hotel = null, $id_order = null)
|
||||
{
|
||||
$cache_id = 'QhrHotelReview::getByCustomer_'.(int) $id_customer.'-'.(int) $id_hotel.'-'.(int) $id_order;
|
||||
if (!Cache::isStored($cache_id)) {
|
||||
$result = Db::getInstance()->executeS(
|
||||
'SELECT * FROM `'._DB_PREFIX_.'qhr_hotel_review` hr
|
||||
LEFT JOIN `'._DB_PREFIX_.'orders` o ON o.`id_order` = hr.`id_order`
|
||||
WHERE o.`id_customer` = '.(int) $id_customer.
|
||||
($id_hotel ? ' AND hr.`id_hotel` = '.(int) $id_hotel : '').
|
||||
($id_order ? ' AND hr.`id_order` = '.(int) $id_order : '').'
|
||||
ORDER BY hr.`date_add` DESC'
|
||||
);
|
||||
Cache::store($cache_id, $result);
|
||||
}
|
||||
return Cache::retrieve($cache_id);
|
||||
}
|
||||
|
||||
public static function getByIdOrder($id_order)
|
||||
{
|
||||
$cache_id = 'QhrHotelReview::getByIdOrder_'.(int) $id_order;
|
||||
if (!Cache::isStored($cache_id)) {
|
||||
$result = (int) Db::getInstance()->getValue('
|
||||
SELECT `id_hotel_review`
|
||||
FROM `'._DB_PREFIX_.'qhr_hotel_review` hr
|
||||
WHERE hr.`id_order` = '.(int) $id_order
|
||||
);
|
||||
Cache::store($cache_id, $result);
|
||||
}
|
||||
return Cache::retrieve($cache_id);
|
||||
}
|
||||
|
||||
public static function getByHotel(
|
||||
$id_hotel,
|
||||
$p = 1,
|
||||
$n = null,
|
||||
$sort_by = self::QHR_SORT_BY_TIME_NEW,
|
||||
$id_customer = null
|
||||
) {
|
||||
if (!Validate::isUnsignedId($id_hotel)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$id_lang = Context::getContext()->language->id;
|
||||
|
||||
$validate = Configuration::get('QHR_ADMIN_APPROVAL_ENABLED');
|
||||
$p = (int) $p;
|
||||
$n = $n !== null ? (int) $n : $n; // n = null for no pagination
|
||||
if ($p <= 1) {
|
||||
$p = 1;
|
||||
}
|
||||
if ($n !== null && $n <= 0) {
|
||||
$n = (int) Configuration::get('QHR_REVIEWS_PER_PAGE');
|
||||
}
|
||||
|
||||
$cache_id = 'QhrHotelReview::getByHotel_'.(int) $id_hotel.'-'.(int) $p.'-'.(int) $n.'-'.(int) $sort_by.
|
||||
(int) $id_customer.'-'.(bool) $validate;
|
||||
if (!Cache::isStored($cache_id)) {
|
||||
$sql = 'SELECT hr.*, CONCAT(c.`firstname`, " ", c.`lastname`) as `customer_name`,
|
||||
hbil.`hotel_name`, qrr.`id_employee`, qrr.`message`,
|
||||
(SELECT COUNT(*) FROM `'._DB_PREFIX_.'qhr_review_usefulness` ru
|
||||
WHERE ru.`id_hotel_review` = hr.`id_hotel_review`) AS `total_useful`,
|
||||
(SELECT COUNT(*) FROM `'._DB_PREFIX_.'qhr_review_report` rr
|
||||
WHERE rr.`id_hotel_review` = hr.`id_hotel_review`) AS `total_report`'.
|
||||
((int) $id_customer ? ', (SELECT COUNT(*) FROM `'._DB_PREFIX_.'qhr_review_usefulness` ru
|
||||
WHERE ru.`id_hotel_review` = hr.`id_hotel_review`
|
||||
AND ru.id_customer = '.(int) $id_customer.') AS `response_helpful`' : '').
|
||||
((int) $id_customer ? ', (SELECT COUNT(*) FROM `'._DB_PREFIX_.'qhr_review_report` rr
|
||||
WHERE rr.`id_hotel_review` = hr.`id_hotel_review`
|
||||
AND rr.id_customer = '.(int)$id_customer.') AS `response_report` ' : '').'
|
||||
FROM `'._DB_PREFIX_.'qhr_hotel_review` hr
|
||||
LEFT JOIN `'._DB_PREFIX_.'orders` o ON o.`id_order` = hr.`id_order`
|
||||
LEFT JOIN `'._DB_PREFIX_.'customer` c ON c.`id_customer` = o.`id_customer`
|
||||
LEFT JOIN `'._DB_PREFIX_.'qhr_review_reply` qrr ON qrr.`id_hotel_review` = hr.`id_hotel_review`
|
||||
LEFT JOIN `'._DB_PREFIX_.'htl_branch_info_lang` hbil
|
||||
ON hbil.`id` = hr.`id_hotel` AND hbil.`id_lang` = '.(int) $id_lang.'
|
||||
WHERE hr.`id_hotel` = '.(int) ($id_hotel).($validate == '1' ? ' AND hr.`approved` = 1' : '');
|
||||
|
||||
if ($sort_by == self::QHR_SORT_BY_RELEVENCE) {
|
||||
$sql .= ' ORDER BY `total_useful` DESC ';
|
||||
} elseif ($sort_by == self::QHR_SORT_BY_TIME_NEW) {
|
||||
$sql .= ' ORDER BY hr.`date_add` DESC ';
|
||||
} elseif ($sort_by == self::QHR_SORT_BY_TIME_OLD) {
|
||||
$sql .= ' ORDER BY hr.`date_add` ASC ';
|
||||
} elseif ($sort_by == self::QHR_SORT_BY_RATING_HIGH) {
|
||||
$sql .= ' ORDER BY hr.`rating` DESC ';
|
||||
} elseif ($sort_by == self::QHR_SORT_BY_RATING_LOW) {
|
||||
$sql .= ' ORDER BY hr.`rating` ASC ';
|
||||
}
|
||||
|
||||
$sql .= ($n ? ' LIMIT '.(int) (($p - 1) * $n).', '.(int) ($n) : '');
|
||||
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
|
||||
Cache::store($cache_id, $result);
|
||||
}
|
||||
return Cache::retrieve($cache_id);
|
||||
}
|
||||
|
||||
public static function hasNextPage($id_hotel, $p, $n)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_hotel)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$id_lang = Context::getContext()->language->id;
|
||||
|
||||
$validate = Configuration::get('QHR_ADMIN_APPROVAL_ENABLED');
|
||||
$p = (int) $p + 1; // next page
|
||||
$n = (int) $n;
|
||||
|
||||
$cache_id = 'QhrHotelReview::hasNextPage'.(int) $id_hotel.'-'.(int) $p.'-'.(int) $n.'-'.'-'.(bool) $validate;
|
||||
if (!Cache::isStored($cache_id)) {
|
||||
$sql = 'SELECT *
|
||||
FROM `'._DB_PREFIX_.'qhr_hotel_review` hr
|
||||
WHERE hr.`id_hotel` = '.(int) ($id_hotel).($validate == '1' ? ' AND hr.`approved` = 1' : '');
|
||||
$sql .= ($n ? ' LIMIT '.(int) (($p - 1) * $n).', '.(int) ($n) : '');
|
||||
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
|
||||
$result = (is_array($result) && count($result)) ? true : false;
|
||||
Cache::store($cache_id, $result);
|
||||
}
|
||||
return Cache::retrieve($cache_id);
|
||||
}
|
||||
|
||||
public static function getSummaryByHotel($id_hotel)
|
||||
{
|
||||
$id_lang = Context::getContext()->language->id;
|
||||
$validate = Configuration::get('QHR_ADMIN_APPROVAL_ENABLED');
|
||||
$sql = 'SELECT (SUM(hr.`rating`) / COUNT(hr.`rating`)) AS `average`, MIN(hr.`rating`) AS `minimum`,
|
||||
MAX(hr.`rating`) AS `maximum`, COUNT(hr.`id_hotel_review`) AS `total_reviews`
|
||||
FROM `'._DB_PREFIX_.'qhr_hotel_review` hr
|
||||
WHERE hr.`id_hotel` = '.(int) ($id_hotel).($validate == '1' ? ' AND hr.`approved` = 1' : '');
|
||||
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql);
|
||||
|
||||
$sql2 = 'SELECT rcr.`id_category`, cl.`name`, SUM(rcr.`rating`) / COUNT(rcr.`rating`) AS `average`
|
||||
FROM `'._DB_PREFIX_.'qhr_review_category_rating` rcr
|
||||
LEFT JOIN `'._DB_PREFIX_.'qhr_hotel_review` hr
|
||||
ON hr.`id_hotel_review` = rcr.`id_hotel_review`
|
||||
LEFT JOIN `'._DB_PREFIX_.'qhr_category` c
|
||||
ON c.`id_category` = rcr.`id_category`
|
||||
LEFT JOIN `'._DB_PREFIX_.'qhr_category_lang` cl
|
||||
ON cl.`id_category` = rcr.`id_category` AND cl.`id_lang` = '.(int) $id_lang.'
|
||||
WHERE c.`active` = 1 AND hr.`id_hotel` = '.(int) ($id_hotel).
|
||||
($validate == '1' ? ' AND hr.`approved` = 1' : '').'
|
||||
GROUP BY hr.`id_hotel`, rcr.`id_category`';
|
||||
$result2 = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql2);
|
||||
$result['categories'] = $result2;
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getImages()
|
||||
{
|
||||
if (!$this->id) {
|
||||
return false;
|
||||
}
|
||||
return self::getImagesById($this->id);
|
||||
}
|
||||
|
||||
public static function getImagesById($id_hotel_review)
|
||||
{
|
||||
$full_img_dir = _PS_MODULE_DIR_.'qlohotelreview/views/img/review/'.$id_hotel_review.'/';
|
||||
$files = glob($full_img_dir.'*');
|
||||
$files = array_filter($files, function ($item) {
|
||||
return !strpos($item, 'index.php');
|
||||
});
|
||||
|
||||
foreach ($files as &$file) {
|
||||
$file = str_replace(_PS_ROOT_DIR_, '', $file);
|
||||
$file = ltrim($file, '/');
|
||||
$file = Context::getContext()->shop->getBaseUrl().$file;
|
||||
}
|
||||
return $files;
|
||||
}
|
||||
|
||||
public static function getAllImages($id_hotel)
|
||||
{
|
||||
$images = array();
|
||||
$reviews = self::getByHotel($id_hotel);
|
||||
if (is_array($reviews) && count($reviews)) {
|
||||
foreach ($reviews as $review) {
|
||||
$images = array_merge($images, self::getImagesById($review['id_hotel_review']));
|
||||
}
|
||||
}
|
||||
return $images;
|
||||
}
|
||||
|
||||
public static function getCategoryRatings($id_hotel_review)
|
||||
{
|
||||
if (!$id_hotel_review) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$id_lang = Context::getContext()->language->id;
|
||||
return Db::getInstance()->executeS(
|
||||
'SELECT * FROM `'._DB_PREFIX_.'qhr_category` qc
|
||||
LEFT JOIN `'._DB_PREFIX_.'qhr_category_lang` qcl
|
||||
ON qcl.`id_category` = qc.`id_category` AND qcl.`id_lang` = '.(int) $id_lang.'
|
||||
LEFT JOIN `'._DB_PREFIX_.'qhr_review_category_rating` qrcr
|
||||
ON qrcr.`id_category` = qc.`id_category`
|
||||
WHERE qc.`active` = 1 AND qrcr.`id_hotel_review` = '.(int) $id_hotel_review);
|
||||
}
|
||||
|
||||
public static function isAlreadyMarkedHelpful($id_hotel_review, $id_customer)
|
||||
{
|
||||
return (bool) Db::getInstance()->getValue('
|
||||
SELECT COUNT(*)
|
||||
FROM `'._DB_PREFIX_.'qhr_review_usefulness`
|
||||
WHERE `id_customer` = '.(int) $id_customer.'
|
||||
AND `id_hotel_review` = '.(int) $id_hotel_review
|
||||
);
|
||||
}
|
||||
|
||||
public static function markHelpful($id_hotel_review, $id_customer)
|
||||
{
|
||||
return Db::getInstance()->execute('
|
||||
INSERT INTO `'._DB_PREFIX_.'qhr_review_usefulness` (`id_hotel_review`, `id_customer`)
|
||||
VALUES ('.(int) $id_hotel_review.', '.(int) $id_customer.')'
|
||||
);
|
||||
}
|
||||
|
||||
public static function isAlreadyReportedAbuse($id_hotel_review, $id_customer)
|
||||
{
|
||||
return (bool) Db::getInstance()->getValue('
|
||||
SELECT COUNT(*)
|
||||
FROM `'._DB_PREFIX_.'qhr_review_report`
|
||||
WHERE `id_customer` = '.(int) $id_customer.'
|
||||
AND `id_hotel_review` = '.(int) $id_hotel_review
|
||||
);
|
||||
}
|
||||
|
||||
public static function reportAbuse($id_hotel_review, $id_customer)
|
||||
{
|
||||
return Db::getInstance()->execute('
|
||||
INSERT INTO `'._DB_PREFIX_.'qhr_review_report` (`id_hotel_review`, `id_customer`)
|
||||
VALUES ('.(int) $id_hotel_review.', '.(int) $id_customer.')'
|
||||
);
|
||||
}
|
||||
}
|
||||
119
modules/qlohotelreview/classes/QhrHotelReviewDb.php
Normal file
@@ -0,0 +1,119 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
class QhrHotelReviewDb
|
||||
{
|
||||
public static function createTables()
|
||||
{
|
||||
if ($sqls = QhrHotelReviewDb::getModuleSqls()) {
|
||||
foreach ($sqls as $query) {
|
||||
if (trim($query) != '') {
|
||||
if (!DB::getInstance()->execute(trim($query))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static function getModuleSqls()
|
||||
{
|
||||
return array(
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."qhr_hotel_review` (
|
||||
`id_hotel_review` INT(10) NOT NULL AUTO_INCREMENT,
|
||||
`id_hotel` INT(10) NOT NULL,
|
||||
`id_order` INT(10) NOT NULL,
|
||||
`rating` FLOAT UNSIGNED NOT NULL,
|
||||
`subject` VARCHAR(255) NOT NULL,
|
||||
`description` TEXT NOT NULL,
|
||||
`approved` TINYINT(1) DEFAULT 0,
|
||||
`date_add` DATETIME NOT NULL,
|
||||
`date_upd` DATETIME NOT NULL,
|
||||
PRIMARY KEY (`id_hotel_review`)
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."qhr_category` (
|
||||
`id_category` INT(10) NOT NULL AUTO_INCREMENT,
|
||||
`active` TINYINT(1) DEFAULT 1,
|
||||
`date_add` DATETIME NOT NULL,
|
||||
`date_upd` DATETIME NOT NULL,
|
||||
PRIMARY KEY (`id_category`)
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."qhr_category_lang` (
|
||||
`id_category` INT(10) NOT NULL,
|
||||
`id_lang` INT(10) NOT NULL,
|
||||
`name` VARCHAR(255) NOT NULL,
|
||||
PRIMARY KEY (`id_category`, `id_lang`)
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."qhr_review_category_rating` (
|
||||
`id_hotel_review` INT(10) NOT NULL,
|
||||
`id_category` INT(10) NOT NULL,
|
||||
`rating` FLOAT UNSIGNED NOT NULL,
|
||||
PRIMARY KEY (`id_hotel_review`, `id_category`)
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."qhr_review_usefulness` (
|
||||
`id_hotel_review` INT(10) NOT NULL,
|
||||
`id_customer` INT(10) NOT NULL,
|
||||
PRIMARY KEY (`id_hotel_review`, `id_customer`)
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."qhr_review_report` (
|
||||
`id_hotel_review` INT(10) NOT NULL,
|
||||
`id_customer` INT(10) NOT NULL,
|
||||
PRIMARY KEY (`id_hotel_review`, `id_customer`)
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8",
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."qhr_review_reply` (
|
||||
`id_review_reply` INT(10) NOT NULL AUTO_INCREMENT,
|
||||
`id_hotel_review` INT(10) NOT NULL,
|
||||
`id_employee` INT(10) NOT NULL DEFAULT 0,
|
||||
`message` TEXT NOT NULL,
|
||||
PRIMARY KEY (`id_review_reply`)
|
||||
) ENGINE="._MYSQL_ENGINE_." DEFAULT CHARSET=utf8",
|
||||
);
|
||||
}
|
||||
|
||||
public static function deleteTables()
|
||||
{
|
||||
return DB::getInstance()->execute(
|
||||
"DROP TABLE IF EXISTS
|
||||
`"._DB_PREFIX_."qhr_hotel_review`,
|
||||
`"._DB_PREFIX_."qhr_category`,
|
||||
`"._DB_PREFIX_."qhr_category_lang`,
|
||||
`"._DB_PREFIX_."qhr_review_category_rating`,
|
||||
`"._DB_PREFIX_."qhr_review_usefulness`,
|
||||
`"._DB_PREFIX_."qhr_review_report`,
|
||||
`"._DB_PREFIX_."qhr_review_reply`;"
|
||||
);
|
||||
}
|
||||
|
||||
public static function getModuleDefaultConfig()
|
||||
{
|
||||
return array(
|
||||
'QHR_ADMIN_APPROVAL_ENABLED' => 1,
|
||||
'QHR_MAX_IMAGES_PER_REVIEW' => 5,
|
||||
'QHR_REVIEWS_PER_PAGE' => 3,
|
||||
);
|
||||
}
|
||||
}
|
||||
154
modules/qlohotelreview/classes/QhrHotelReviewHelper.php
Normal file
@@ -0,0 +1,154 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
class QhrHotelReviewHelper
|
||||
{
|
||||
public static function getIsOrderCheckedOut($idOrder)
|
||||
{
|
||||
if (!$idOrder) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (bool) !Db::getInstance()->getValue(
|
||||
'SELECT COUNT(*) FROM `'._DB_PREFIX_.'htl_booking_detail` hbd
|
||||
WHERE hbd.`id_status` != '.(int) HotelBookingDetail::STATUS_CHECKED_OUT.'
|
||||
AND hbd.`id_order` = '.(int) $idOrder
|
||||
);
|
||||
}
|
||||
|
||||
public static function prepareCategoriesData($summary)
|
||||
{
|
||||
if (!$summary) {
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach ($summary['categories'] as &$category) {
|
||||
if ($category['average'] <= (float) 2) {
|
||||
$category['color'] = '#EC4040';
|
||||
} elseif ($category['average'] <= (float) 3.5) {
|
||||
$category['color'] = '#FFBD37';
|
||||
} else {
|
||||
$category['color'] = '#449F3A';
|
||||
}
|
||||
}
|
||||
return $summary;
|
||||
}
|
||||
|
||||
public static function getIsReviewable($idOrder)
|
||||
{
|
||||
if (!$idOrder) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (self::getIsOrderCheckedOut($idOrder)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$maxDate = Db::getInstance()->getValue(
|
||||
'SELECT MAX(DATE(hbd.`date_to`)) FROM `'._DB_PREFIX_.'htl_booking_detail` hbd
|
||||
WHERE hbd.`id_order` = '.(int) $idOrder
|
||||
);
|
||||
return date('Y-m-d') >= $maxDate;
|
||||
}
|
||||
|
||||
public static function sendReviewRequestMail($idOrder)
|
||||
{
|
||||
$objOrder = new Order((int)$idOrder);
|
||||
if (Validate::isLoadedObject($objOrder)) {
|
||||
$context = Context::getContext();
|
||||
$mailVars = array();
|
||||
$objCustomer = new Customer((int)$objOrder->id_customer);
|
||||
$mailVars = array(
|
||||
'{firstname}' => $objCustomer->firstname,
|
||||
'{lastname}' => $objCustomer->lastname,
|
||||
'{hotel_name}' => self::getHotelByOrder($idOrder)['hotel_name'],
|
||||
'{review_link}' => self::generateReviewLink($idOrder),
|
||||
);
|
||||
|
||||
return Mail::Send(
|
||||
$context->language->id,
|
||||
'review_request',
|
||||
Mail::l('Please review us!', $context->language->id),
|
||||
$mailVars,
|
||||
$objCustomer->email,
|
||||
$objCustomer->firstname.' '.$objCustomer->lastname,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
_PS_MODULE_DIR_.'qlohotelreview/mails/',
|
||||
false,
|
||||
null,
|
||||
null
|
||||
);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static function generateReviewLink($idOrder)
|
||||
{
|
||||
$objOrder = new Order($idOrder);
|
||||
$objCustomer = new Customer($objOrder->id_customer);
|
||||
if ($objCustomer->isGuest()) {
|
||||
return Context::getContext()->link->getPageLink('guest-tracking', true, null);
|
||||
}
|
||||
return Context::getContext()->link->getPageLink('history', true, null, array('id_order' => $idOrder));
|
||||
}
|
||||
|
||||
public static function getHotelByOrder($idOrder)
|
||||
{
|
||||
return Db::getInstance()->getRow(
|
||||
'SELECT `id_hotel`, `hotel_name` FROM `'._DB_PREFIX_.'htl_booking_detail`
|
||||
WHERE `id_order` = '.(int) $idOrder
|
||||
);
|
||||
}
|
||||
|
||||
public static function createDirectory($dir)
|
||||
{
|
||||
if (!file_exists($dir)) {
|
||||
if (!mkdir($dir)) {
|
||||
return false;
|
||||
}
|
||||
$src = _PS_MODULE_DIR_.'qlohotelreview/index.php';
|
||||
$dest = $dir.'index.php';
|
||||
copy($src, $dest);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static function fileAttachmentMultiple($input)
|
||||
{
|
||||
$file_attachments = null;
|
||||
if (isset($_FILES[$input]['tmp_name']) && !empty($_FILES[$input]['tmp_name'])) {
|
||||
foreach ($_FILES[$input]['tmp_name'] as $key => $tmp_name) {
|
||||
$file_attachment = array();
|
||||
$file_attachment['rename'] = uniqid().
|
||||
Tools::strtolower(Tools::substr($_FILES[$input]['name'][$key], -5));
|
||||
$file_attachment['tmp_name'] = $tmp_name;
|
||||
$file_attachment['name'] = $_FILES[$input]['name'][$key];
|
||||
$file_attachment['mime'] = $_FILES[$input]['type'][$key];
|
||||
$file_attachment['error'] = $_FILES[$input]['error'][$key];
|
||||
$file_attachment['size'] = $_FILES[$input]['size'][$key];
|
||||
$file_attachments[] = $file_attachment;
|
||||
}
|
||||
}
|
||||
return $file_attachments;
|
||||
}
|
||||
}
|
||||
24
modules/qlohotelreview/classes/RequiredFiles.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
include_once 'QhrHotelReviewHelper.php';
|
||||
include_once 'QhrHotelReviewDb.php';
|
||||
include_once 'QhrCategory.php';
|
||||
include_once 'QhrHotelReview.php';
|
||||
@@ -1,21 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2021 Webkul.
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through this link for complete license : https://store.webkul.com/license.html
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to https://store.webkul.com/customisation-guidelines/ for more information.
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN <support@webkul.com>
|
||||
* @copyright 2010-2021 Webkul IN
|
||||
* @license https://store.webkul.com/license.html
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
|
||||
@@ -0,0 +1,257 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
class AdminHotelReviewCategoryController extends ModuleAdminController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->bootstrap = true;
|
||||
$this->className = 'QhrCategory';
|
||||
$this->table = 'qhr_category';
|
||||
$this->identifier = 'id_category';
|
||||
$this->lang = true;
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$this->addRowAction('edit');
|
||||
$this->addRowAction('delete');
|
||||
|
||||
$this->fields_list = array(
|
||||
'id_category' => array(
|
||||
'title' => $this->l('ID'),
|
||||
'hint' => $this->l('ID of the category.'),
|
||||
'align' => 'center',
|
||||
'class' => 'fixed-width-xs',
|
||||
),
|
||||
'name' => array(
|
||||
'title' => $this->l('Name'),
|
||||
'hint' => $this->l('Name of the category.'),
|
||||
'align' => 'left',
|
||||
),
|
||||
'active' => array(
|
||||
'title' => $this->l('Status'),
|
||||
'hint' => $this->l('Current status of the category.'),
|
||||
'type' => 'bool',
|
||||
'active' => 'status',
|
||||
'align' => 'center',
|
||||
'filter_key' => 'a!active',
|
||||
),
|
||||
);
|
||||
|
||||
$this->list_no_link = true;
|
||||
|
||||
$this->bulk_actions = array(
|
||||
'enableSelection' => array(
|
||||
'text' => $this->l('Enable selection'),
|
||||
'icon' => 'icon-power-off text-success'
|
||||
),
|
||||
'disableSelection' => array(
|
||||
'text' => $this->l('Disable selection'),
|
||||
'icon' => 'icon-power-off text-danger'
|
||||
),
|
||||
'divider' => array(
|
||||
'text' => 'divider'
|
||||
),
|
||||
'delete' => array(
|
||||
'text' => $this->l('Delete selected'),
|
||||
'confirm' => $this->l('Delete selected items?'),
|
||||
'icon' => 'icon-trash'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function initToolbar()
|
||||
{
|
||||
parent::initToolbar();
|
||||
if (empty($this->display)) {
|
||||
$this->page_header_toolbar_btn['new'] = array(
|
||||
'href' => self::$currentIndex.'&add'.$this->table.'&token='.$this->token,
|
||||
'desc' => $this->l('Add new category')
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->display == 'options') {
|
||||
$this->toolbar_btn = array();
|
||||
$this->toolbar_btn['new'] = array(
|
||||
'href' => self::$currentIndex.'&add'.$this->table.'&token='.$this->token,
|
||||
'desc' => $this->l('Add new category')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function initToolbarTitle()
|
||||
{
|
||||
parent::initToolbarTitle();
|
||||
if ($this->display == 'add') {
|
||||
$this->toolbar_title = $this->l('Adding new category');
|
||||
} elseif ($this->display == 'edit') {
|
||||
$this->toolbar_title = $this->l('Editing');
|
||||
} elseif ($this->display == '') {
|
||||
$this->toolbar_title = $this->l('Configuration');
|
||||
}
|
||||
}
|
||||
|
||||
public function initContent()
|
||||
{
|
||||
parent::initContent();
|
||||
if ($this->display == 'options') {
|
||||
$this->content = $this->renderOptions();
|
||||
$this->content .= $this->renderList();
|
||||
$this->context->smarty->assign(array('content' => $this->content));
|
||||
}
|
||||
}
|
||||
|
||||
public function renderOptions()
|
||||
{
|
||||
$this->fields_options = array(
|
||||
'general' => array(
|
||||
'title' => $this->l('Review Options'),
|
||||
'icon' => 'icon icon-cog',
|
||||
'fields' => array(
|
||||
'QHR_ADMIN_APPROVAL_ENABLED' => array(
|
||||
'type' => 'bool',
|
||||
'title' => $this->l('Admin approval'),
|
||||
'hint' => $this->l('Enable if you want each review to be approved by an employee.'),
|
||||
'validation' => 'isBool',
|
||||
'cast' => 'intval',
|
||||
),
|
||||
'QHR_MAX_IMAGES_PER_REVIEW' => array(
|
||||
'type' => 'text',
|
||||
'title' => $this->l('Maximum images per review'),
|
||||
'hint' => $this->l('The number of maximum images that can be uploaded with a review.'),
|
||||
'class' => 'fixed-width-md',
|
||||
'validation' => 'isUnsignedInt',
|
||||
'required' => true,
|
||||
'cast' => 'intval',
|
||||
),
|
||||
'QHR_REVIEWS_PER_PAGE' => array(
|
||||
'type' => 'text',
|
||||
'title' => $this->l('Reviews per page'),
|
||||
'hint' => $this->l('The number of reviews that are displayed per page.'),
|
||||
'class' => 'fixed-width-md',
|
||||
'validation' => 'isUnsignedInt',
|
||||
'required' => true,
|
||||
'cast' => 'intval',
|
||||
),
|
||||
),
|
||||
'submit' => array(
|
||||
'title' => $this->l('Save'),
|
||||
'name' => 'submitHotelReviewOptions',
|
||||
)
|
||||
),
|
||||
);
|
||||
return parent::renderOptions();
|
||||
}
|
||||
|
||||
public function renderList()
|
||||
{
|
||||
$this->tpl_list_vars['title'] = $this->l('Categories');
|
||||
$this->context->smarty->assign(array('icon' => 'icon-list'));
|
||||
return parent::renderList();
|
||||
}
|
||||
|
||||
public function renderForm()
|
||||
{
|
||||
$smartyVars = array();
|
||||
$idCategory = Tools::getValue($this->identifier);
|
||||
$objCategory = $this->loadObject(true);
|
||||
|
||||
$smartyVars['id_category'] = (int)$idCategory;
|
||||
$smartyVars['current_iso_code'] = $this->context->language->iso_code;
|
||||
$smartyVars['currentTab'] = $this;
|
||||
$smartyVars['currentObject'] = $objCategory;
|
||||
|
||||
$this->multiple_fieldsets = 1;
|
||||
$this->fields_form = $this->getFieldsForm();
|
||||
$this->context->smarty->assign($smartyVars);
|
||||
return parent::renderForm();
|
||||
}
|
||||
|
||||
public function getFieldsForm()
|
||||
{
|
||||
$fields_form = array();
|
||||
|
||||
$fields_form[] = array(
|
||||
'form' => array(
|
||||
'submit' => array(
|
||||
'title' => $this->l('Save'),
|
||||
'name' => 'submitCategory',
|
||||
'class' => 'btn btn-default pull-right',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
return $fields_form;
|
||||
}
|
||||
|
||||
public function postProcess()
|
||||
{
|
||||
if (Tools::isSubmit('submitHotelReviewOptions')) {
|
||||
$imagesPerReview = Tools::getValue('QHR_MAX_IMAGES_PER_REVIEW');
|
||||
$reviewsPerPage = Tools::getValue('QHR_REVIEWS_PER_PAGE');
|
||||
|
||||
if ($imagesPerReview == '') {
|
||||
$this->errors[] = $this->l('Please enter maximum images per review.');
|
||||
}
|
||||
if ($imagesPerReview && !Validate::isUnsignedInt($imagesPerReview)) {
|
||||
$this->errors[] = $this->l('Please enter valid maximum images per review.');
|
||||
}
|
||||
|
||||
if ($reviewsPerPage == '') {
|
||||
$this->errors[] = $this->l('Please enter reviews per page.');
|
||||
}
|
||||
if (($reviewsPerPage == '0') || ($reviewsPerPage && !Validate::isUnsignedInt($reviewsPerPage))) {
|
||||
$this->errors[] = $this->l('Please enter valid reviews per page.');
|
||||
}
|
||||
if (!count($this->errors)) {
|
||||
Configuration::updateValue('QHR_ADMIN_APPROVAL_ENABLED', Tools::getValue('QHR_ADMIN_APPROVAL_ENABLED'));
|
||||
Configuration::updateValue('QHR_MAX_IMAGES_PER_REVIEW', $imagesPerReview);
|
||||
Configuration::updateValue('QHR_REVIEWS_PER_PAGE', $reviewsPerPage);
|
||||
Tools::redirectAdmin(self::$currentIndex.'&conf=6&token='.$this->token);
|
||||
}
|
||||
} elseif (Tools::isSubmit('submitCategory') || Tools::isSubmit('submitCategoryAndStay')) {
|
||||
$idCategory = Tools::getValue($this->identifier);
|
||||
$this->validateRules();
|
||||
if (!count($this->errors)) {
|
||||
$objCategory = new QhrCategory($idCategory);
|
||||
$this->copyFromPost($objCategory, $this->table);
|
||||
if ($objCategory->save()) {
|
||||
$newId = $objCategory->id;
|
||||
if (Tools::isSubmit('submitCategoryAndStay')) {
|
||||
if ($idCategory) {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token.
|
||||
'&update'.$this->table.'&'.$this->identifier.'='.$newId);
|
||||
} else {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&conf=3&token='.$this->token.
|
||||
'&update'.$this->table.'&'.$this->identifier.'='.$newId);
|
||||
}
|
||||
} else {
|
||||
if ($idCategory) {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token);
|
||||
} else {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&conf=3&token='.$this->token);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
parent::postProcess();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,327 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
class AdminHotelReviewHotelReviewController extends ModuleAdminController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->bootstrap = true;
|
||||
$this->className = 'QhrHotelReview';
|
||||
$this->table = 'qhr_hotel_review';
|
||||
$this->identifier = 'id_hotel_review';
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$this->_select .= ' hbl.`hotel_name`, c.`id_customer`,
|
||||
CONCAT(c.`firstname`, " ", c.`lastname`) as `customer_name`,
|
||||
CONVERT(a.`rating`, DECIMAL(10, 1)) AS `rating`,
|
||||
(SELECT COUNT(*) FROM `'._DB_PREFIX_.'qhr_review_report` rr
|
||||
WHERE rr.`id_hotel_review` = a.`id_hotel_review`) AS `total_report`';
|
||||
$this->_join .= ' LEFT JOIN `'._DB_PREFIX_.'orders` o ON (o.`id_order` = a.`id_order`)';
|
||||
$this->_join .= ' LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = o.`id_customer`)';
|
||||
$this->_join .= ' LEFT JOIN `'._DB_PREFIX_.'htl_branch_info_lang` hbl
|
||||
ON (hbl.`id` = a.`id_hotel` AND hbl.`id_lang` = '.(int) $this->context->language->id.')';
|
||||
$this->_orderBy .= 'a.date_add';
|
||||
$this->_orderWay .= 'DESC';
|
||||
|
||||
$this->addRowAction('view');
|
||||
$this->addRowAction('approve');
|
||||
$this->addRowAction('unapprove');
|
||||
$this->addRowAction('delete');
|
||||
|
||||
$this->fields_list = array(
|
||||
'id_hotel_review' => array(
|
||||
'title' => $this->l('ID'),
|
||||
'hint' => $this->l('ID of the review.'),
|
||||
'align' => 'center',
|
||||
'class' => 'fixed-width-xs',
|
||||
),
|
||||
'hotel_name' => array(
|
||||
'title' => $this->l('Hotel'),
|
||||
'hint' => $this->l('Name of the hotel for which this review has been added.'),
|
||||
'align' => 'center',
|
||||
'callback' => 'getHotelLink',
|
||||
),
|
||||
'rating' => array(
|
||||
'title' => $this->l('Overall Rating'),
|
||||
'hint' => $this->l('Overall rating of the review.'),
|
||||
'align' => 'center',
|
||||
'havingFilter' => true,
|
||||
'callback' => 'getOverallRating',
|
||||
),
|
||||
'subject' => array(
|
||||
'title' => $this->l('Subject'),
|
||||
'hint' => $this->l('Subject of the review.'),
|
||||
'align' => 'center',
|
||||
'callback' => 'getSubject',
|
||||
),
|
||||
'customer_name' => array(
|
||||
'title' => $this->l('Customer'),
|
||||
'hint' => $this->l('Name of the customer who added this review.'),
|
||||
'align' => 'center',
|
||||
'callback' => 'getCustomerLink',
|
||||
'havingFilter' => true,
|
||||
),
|
||||
'total_report' => array(
|
||||
'title' => $this->l('Total Reports'),
|
||||
'hint' => $this->l('Number of times this review has been reported.'),
|
||||
'align' => 'center',
|
||||
'havingFilter' => true,
|
||||
'class' => 'fixed-width-md',
|
||||
'callback' => 'getTotalReports',
|
||||
),
|
||||
'approved' => array(
|
||||
'title' => $this->l('Approval Status'),
|
||||
'hint' => $this->l('Approval status of the review.'),
|
||||
'align' => 'center',
|
||||
'callback' => 'getApprovalStatus',
|
||||
'type' => 'select',
|
||||
'filter_key' => 'a!approved',
|
||||
'list' => array(0 => $this->l('Unapproved'), 1 => $this->l('Approved')),
|
||||
),
|
||||
'date_add' => array(
|
||||
'title' => $this->l('Date'),
|
||||
'hint' => $this->l('Date and time when this review was added.'),
|
||||
'align' => 'center',
|
||||
'type' => 'datetime',
|
||||
),
|
||||
);
|
||||
|
||||
$this->list_no_link = true;
|
||||
|
||||
$this->bulk_actions = array(
|
||||
'delete' => array(
|
||||
'text' => $this->l('Delete selected'),
|
||||
'confirm' => $this->l('Delete selected items?'),
|
||||
'icon' => 'icon-trash'
|
||||
)
|
||||
);
|
||||
|
||||
$this->_conf[101] = $this->l('Reply has been added successfully.');
|
||||
$this->_conf[102] = $this->l('Review has been approved successfully.');
|
||||
$this->_conf[103] = $this->l('Review has been unapproved successfully.');
|
||||
|
||||
$this->cacheApproved = array();
|
||||
}
|
||||
|
||||
public function getOverallRating($rating)
|
||||
{
|
||||
if ($rating < 2) {
|
||||
return '<span class="badge badge-danger">'.$rating.'</span>';
|
||||
} elseif ($rating < 3.5) {
|
||||
return '<span class="badge badge-warning">'.$rating.'</span>';
|
||||
} else {
|
||||
return '<span class="badge badge-success">'.$rating.'</span>';
|
||||
}
|
||||
}
|
||||
|
||||
public function getSubject($subject)
|
||||
{
|
||||
return Tools::substr($subject, 0, 50).(Tools::strlen($subject) > 50 ? '...' : '');
|
||||
}
|
||||
|
||||
public function getCustomerLink($fullname, $tr)
|
||||
{
|
||||
$href = $this->context->link->getAdminLink('AdminCustomers').
|
||||
'&viewcustomer&id_customer='.(int) $tr['id_customer'];
|
||||
return "<a href='$href' target='_blank'>".$fullname." (#".(int) $tr['id_customer'].")</a>";
|
||||
}
|
||||
|
||||
public function getHotelLink($hotelName, $row)
|
||||
{
|
||||
$idHotel = $row['id_hotel'];
|
||||
$link = $this->context->link->getAdminLink('AdminAddHotel').'&id='.$idHotel.'&updatehtl_branch_info';
|
||||
return "<a target='_blank' href='$link'>$hotelName (#$idHotel)</a>";
|
||||
}
|
||||
|
||||
public function getTotalReports($totalReports, $row)
|
||||
{
|
||||
return "<span class='badge badge-danger'>$totalReports</span>";
|
||||
}
|
||||
|
||||
public function getApprovalStatus($approved, $row)
|
||||
{
|
||||
if ($approved) {
|
||||
return '<span class="badge badge-success">'.$this->l('Approved').'</span>';
|
||||
} else {
|
||||
return '<span class="badge badge-danger">'.$this->l('Unapproved').'</span>';
|
||||
}
|
||||
}
|
||||
|
||||
public function displayApproveLink($token = null, $id, $name = null)
|
||||
{
|
||||
$status = null;
|
||||
if (array_key_exists($id, $this->cacheApproved)) {
|
||||
$status = $this->cacheApproved[$id];
|
||||
} else {
|
||||
$objHotelReview = new QhrHotelReview((int) $id);
|
||||
$status = $objHotelReview->approved;
|
||||
$this->cacheApproved[$id] = $status;
|
||||
}
|
||||
|
||||
if ($status) {
|
||||
$this->addRowActionSkipList('approve', $id);
|
||||
} else {
|
||||
$href = self::$currentIndex.'&'.$this->identifier.'='.$id.'&action=approveHotelReview'.'&token='.
|
||||
($token != null ? $token : $this->token);
|
||||
$action = $this->l('Approve');
|
||||
return "<a href='$href' title='$action' class='approve'><i class='icon-check'></i>$action</a>";
|
||||
}
|
||||
}
|
||||
|
||||
public function displayUnapproveLink($token = null, $id, $name = null)
|
||||
{
|
||||
$status = null;
|
||||
if (array_key_exists($id, $this->cacheApproved)) {
|
||||
$status = $this->cacheApproved[$id];
|
||||
} else {
|
||||
$objHotelReview = new QhrHotelReview((int) $id);
|
||||
$status = $objHotelReview->approved;
|
||||
$this->cacheApproved[$id] = $status;
|
||||
}
|
||||
|
||||
if (!$status) {
|
||||
$this->addRowActionSkipList('unapprove', $id);
|
||||
} else {
|
||||
$href = self::$currentIndex.'&'.$this->identifier.'='.$id.'&action=unapproveHotelReview'.'&token='.
|
||||
($token != null ? $token : $this->token);
|
||||
$action = $this->l('Unapprove');
|
||||
return "<a href='$href' title='$action' class='approve'><i class='icon-check'></i>$action</a>";
|
||||
}
|
||||
}
|
||||
|
||||
public function initToolbarTitle()
|
||||
{
|
||||
parent::initToolbarTitle();
|
||||
if ($this->display == 'view') {
|
||||
$this->toolbar_title = $this->l('Viewing');
|
||||
} elseif ($this->display == '') {
|
||||
$this->toolbar_title = $this->l('Reviews');
|
||||
}
|
||||
}
|
||||
|
||||
public function renderList()
|
||||
{
|
||||
unset($this->toolbar_btn['new']);
|
||||
$this->context->smarty->assign(array('icon' => 'icon-list'));
|
||||
return parent::renderList();
|
||||
}
|
||||
|
||||
public function renderView()
|
||||
{
|
||||
$this->loadObject();
|
||||
if (!count($this->errors)) {
|
||||
$smartyVars = array();
|
||||
|
||||
$objCustomer = $this->object->getCustomer();
|
||||
$objHotel = new HotelBranchInformation($this->object->id_hotel, (int) $this->context->language->id);
|
||||
$smartyVars['id_hotel_review'] = (int) $this->id_object;
|
||||
$smartyVars['current_iso_code'] = $this->context->language->iso_code;
|
||||
$smartyVars['currentTab'] = $this;
|
||||
$smartyVars['currentObject'] = $this->object;
|
||||
$smartyVars['images'] = $this->object->getImages();
|
||||
$smartyVars['reply'] = $this->object->getManagementReply();
|
||||
$smartyVars['obj_customer'] = $objCustomer;
|
||||
$smartyVars['obj_hotel'] = $objHotel;
|
||||
$smartyVars['img_dir'] = $this->object->img_dir;
|
||||
|
||||
$this->context->smarty->assign($smartyVars);
|
||||
return parent::renderView();
|
||||
}
|
||||
}
|
||||
|
||||
public function postProcess()
|
||||
{
|
||||
if (Tools::isSubmit('submitReply')) {
|
||||
$reply = Tools::getValue('management_reply');
|
||||
if ($reply == '') {
|
||||
$this->errors[] = $this->l('Management reply can not be empty.');
|
||||
} elseif (!Validate::isCleanHtml($reply)) {
|
||||
$this->errors[] = $this->l('Management reply is invalid.');
|
||||
}
|
||||
|
||||
$this->loadObject(false);
|
||||
if (!count($this->errors)) {
|
||||
if ($this->object->addManagementReply($reply)) {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&conf=101&token='.$this->token.
|
||||
'&viewqhr_hotel_review&id_hotel_review='.$this->id_object);
|
||||
} else {
|
||||
$this->display = 'view';
|
||||
}
|
||||
}
|
||||
} elseif (Tools::isSubmit('submitApprove')) {
|
||||
$this->loadObject(false);
|
||||
if (!count($this->errors)) {
|
||||
if ($this->object->approveReview()) {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&conf=102&token='.$this->token.
|
||||
'&viewqhr_hotel_review&id_hotel_review='.$this->id_object);
|
||||
} else {
|
||||
$this->display = 'view';
|
||||
}
|
||||
}
|
||||
} elseif (Tools::isSubmit('submitUnapprove')) {
|
||||
$this->loadObject(false);
|
||||
if (!count($this->errors)) {
|
||||
if ($this->object->unapproveReview()) {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&conf=103&token='.$this->token.
|
||||
'&viewqhr_hotel_review&id_hotel_review='.$this->id_object);
|
||||
} else {
|
||||
$this->display = 'view';
|
||||
}
|
||||
}
|
||||
} elseif (Tools::isSubmit('submitDelete')) {
|
||||
$this->loadObject(false);
|
||||
if (!count($this->errors)) {
|
||||
if ($this->object->delete()) {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&conf=1&token='.$this->token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parent::postProcess();
|
||||
}
|
||||
|
||||
public function processApproveHotelReview()
|
||||
{
|
||||
$this->loadObject(false);
|
||||
if (!count($this->errors)) {
|
||||
if ($this->object->approveReview()) {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&conf=102&token='.$this->token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function processUnapproveHotelReview()
|
||||
{
|
||||
$this->loadObject(false);
|
||||
if (!count($this->errors)) {
|
||||
if ($this->object->unapproveReview()) {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&conf=103&token='.$this->token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function setMedia()
|
||||
{
|
||||
parent::setMedia();
|
||||
$this->addCSS($this->module->getPathUri().'views/css/admin/hotel-review.css');
|
||||
$this->addJS($this->module->getPathUri().'views/js/admin/hotel-review.js');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
class AdminParentHotelReviewController extends ModuleAdminController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
Tools::redirectAdmin($this->context->link->getAdminLink('AdminHotelReviewCategory'));
|
||||
}
|
||||
}
|
||||
29
modules/qlohotelreview/controllers/admin/index.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
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;
|
||||
231
modules/qlohotelreview/controllers/front/default.php
Normal file
@@ -0,0 +1,231 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
class QloHotelReviewDefaultModuleFrontController extends ModuleFrontController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->content_only = true;
|
||||
}
|
||||
|
||||
public function checkAccess()
|
||||
{
|
||||
return strcmp(Tools::getValue('token', ''), $this->module->secure_key) === 0;
|
||||
}
|
||||
|
||||
public function displayAjaxAddReview()
|
||||
{
|
||||
$idHotel = Tools::getValue('id_hotel');
|
||||
$idOrder = Tools::getValue('id_order');
|
||||
$ratingOverall = Tools::getValue('rating_overall');
|
||||
$ratingCategories = Tools::getValue('rating_categories');
|
||||
$subject = Tools::getValue('subject');
|
||||
$description = Tools::getValue('description');
|
||||
|
||||
$approvalEnabled = Configuration::get('QHR_ADMIN_APPROVAL_ENABLED');
|
||||
$maxImages = (int) Configuration::get('QHR_MAX_IMAGES_PER_REVIEW');
|
||||
|
||||
$status = 'ko';
|
||||
$errors = array('by_key' => array(), 'general' => array());
|
||||
$objModule = new QloHotelReview();
|
||||
$objHotel = new HotelBranchInformation($idHotel);
|
||||
$objOrder = new Order($idOrder);
|
||||
|
||||
// Validations
|
||||
if (!Validate::isLoadedObject($objHotel)) {
|
||||
$errors['general'][] = $objModule->l('Invalid hotel ID.', 'default');
|
||||
}
|
||||
|
||||
if (!Validate::isLoadedObject($objOrder)) {
|
||||
$errors['general'][] = $objModule->l('Invalid order ID.', 'default');
|
||||
}
|
||||
|
||||
if (!$subject) {
|
||||
$errors['by_key']['subject'] = $objModule->l('This field can not be empty.', 'default');
|
||||
} elseif(!Validate::isGenericName($subject)) {
|
||||
$errors['by_key']['subject'] = $objModule->l('This field is invalid.', 'default');
|
||||
}
|
||||
|
||||
if (!$description) {
|
||||
$errors['by_key']['description'] = $objModule->l('Review description can not be empty.', 'default');
|
||||
} elseif(!Validate::isMessage($description)) {
|
||||
$errors['by_key']['description'] = $objModule->l('Review description is invalid.', 'default');
|
||||
}
|
||||
|
||||
if (is_array($_FILES) && array_key_exists('images', $_FILES)) {
|
||||
if (count($_FILES['images']['name']) > $maxImages) {
|
||||
$errors['general'][] = sprintf(
|
||||
$objModule->l('Please upload a maximum of %d images.', 'default'),
|
||||
$maxImages
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (!count($errors['by_key']) && !count($errors['general'])) {
|
||||
$customerReview = QhrHotelReview::getByCustomer(
|
||||
$objOrder->id_customer,
|
||||
$idHotel,
|
||||
$idOrder
|
||||
);
|
||||
if (!$customerReview) {
|
||||
$objHotelReview = new QhrHotelReview();
|
||||
$objHotelReview->id_hotel = (int) $idHotel;
|
||||
$objHotelReview->id_order = (int) $idOrder;
|
||||
$objHotelReview->description = strip_tags($description);
|
||||
$objHotelReview->subject = $subject;
|
||||
$objHotelReview->rating = $ratingOverall;
|
||||
$objHotelReview->approved = (int) !$approvalEnabled;
|
||||
if ($objHotelReview->save()) {
|
||||
$objHotelReview->addCategoryRatings($ratingCategories);
|
||||
if ($maxImages) {
|
||||
$objHotelReview->saveReviewImages();
|
||||
}
|
||||
$status = 'ok';
|
||||
}
|
||||
} else {
|
||||
$status = 'ko';
|
||||
$errors['general'][] = $objModule->l('Something went wrong.', 'default');
|
||||
}
|
||||
} else {
|
||||
$status = 'ko';
|
||||
}
|
||||
|
||||
if (is_array($errors['general']) && count($errors['general'])) {
|
||||
$html = '<ol>';
|
||||
foreach ($errors['general'] as $error) {
|
||||
$html .= '<li>'.$error.'</li>';
|
||||
}
|
||||
$html .= '</ol>';
|
||||
$errors['general'] = $html;
|
||||
}
|
||||
die(json_encode(array('status' => $status, 'errors' => $errors)));
|
||||
}
|
||||
|
||||
public function displayAjaxMarkReviewHelpful()
|
||||
{
|
||||
$response = array('status' => 'ko');
|
||||
$idHotelReview = (int) Tools::getValue('id_hotel_review');
|
||||
if (!$idHotelReview) {
|
||||
die(json_encode($response));
|
||||
}
|
||||
|
||||
if (QhrHotelReview::isAlreadyMarkedHelpful($idHotelReview, $this->context->cookie->id_customer)) {
|
||||
die(json_encode($response));
|
||||
}
|
||||
|
||||
if (QhrHotelReview::markHelpful($idHotelReview, $this->context->cookie->id_customer)) {
|
||||
$response['status'] = 'ok';
|
||||
die(json_encode($response));
|
||||
}
|
||||
}
|
||||
|
||||
public function displayAjaxReportAbuse()
|
||||
{
|
||||
$response = array('status' => 'ko');
|
||||
$idHotelReview = (int) Tools::getValue('id_hotel_review');
|
||||
if (!$idHotelReview) {
|
||||
die(json_encode($response));
|
||||
}
|
||||
|
||||
if (QhrHotelReview::isAlreadyReportedAbuse($idHotelReview, $this->context->cookie->id_customer)) {
|
||||
die(json_encode($response));
|
||||
}
|
||||
|
||||
if (QhrHotelReview::reportAbuse($idHotelReview, $this->context->cookie->id_customer)) {
|
||||
$response['status'] = 'ok';
|
||||
die(json_encode($response));
|
||||
}
|
||||
}
|
||||
|
||||
public function displayAjaxGetReviews()
|
||||
{
|
||||
$response = array('status' => 'ko');
|
||||
$idHotel = (int) Tools::getValue('id_hotel');
|
||||
$sortBy = (int) Tools::getValue('sort_by');
|
||||
$page = (int)Tools::getValue('page');
|
||||
$reviewsPerPage = (int) Configuration::get('QHR_REVIEWS_PER_PAGE');
|
||||
|
||||
$reviews = QhrHotelReview::getByHotel(
|
||||
$idHotel,
|
||||
$page,
|
||||
$reviewsPerPage,
|
||||
$sortBy,
|
||||
$this->context->cookie->id_customer
|
||||
);
|
||||
|
||||
$hasNextPage = QhrHotelReview::hasNextPage($idHotel, $page, $reviewsPerPage);
|
||||
|
||||
if (is_array($reviews) && count($reviews)) {
|
||||
$response['html'] = $this->renderReviews($reviews);
|
||||
$response['status'] = 'ok';
|
||||
$response['message'] = 'HTML_OK';
|
||||
$response['has_next_page'] = (bool) $hasNextPage;
|
||||
}
|
||||
|
||||
die(json_encode($response));
|
||||
}
|
||||
|
||||
public function displayAjaxSortBy()
|
||||
{
|
||||
$response = array('status' => 'ko');
|
||||
$idHotel = (int) Tools::getValue('id_hotel');
|
||||
$sortBy = (int) Tools::getValue('sort_by');
|
||||
$reviewsPerPage = (int) Configuration::get('QHR_REVIEWS_PER_PAGE');
|
||||
|
||||
$reviews = QhrHotelReview::getByHotel(
|
||||
$idHotel,
|
||||
1,
|
||||
$reviewsPerPage,
|
||||
$sortBy,
|
||||
$this->context->cookie->id_customer
|
||||
);
|
||||
|
||||
$hasNextPage = QhrHotelReview::hasNextPage($idHotel, 1, $reviewsPerPage);
|
||||
|
||||
if (is_array($reviews) && count($reviews)) {
|
||||
$response['html'] = $this->renderReviews($reviews);
|
||||
$response['status'] = 'ok';
|
||||
$response['message'] = 'HTML_OK';
|
||||
$response['has_next_page'] = (bool) $hasNextPage;
|
||||
}
|
||||
|
||||
die(json_encode($response));
|
||||
}
|
||||
|
||||
public function renderReviews($reviews)
|
||||
{
|
||||
if (is_array($reviews) && count($reviews)) {
|
||||
foreach ($reviews as &$review) {
|
||||
$review['images'] = QhrHotelReview::getImagesById($review['id_hotel_review']);
|
||||
}
|
||||
|
||||
$html = '';
|
||||
foreach ($reviews as &$review) {
|
||||
$this->context->smarty->assign(array('review' => $review));
|
||||
$html .= $this->context->smarty->fetch(
|
||||
$this->module->getTemplatePath('_partials/review.tpl')
|
||||
);
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
29
modules/qlohotelreview/controllers/front/index.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
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;
|
||||
29
modules/qlohotelreview/controllers/index.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
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;
|
||||
29
modules/qlohotelreview/libs/index.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
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;
|
||||
29
modules/qlohotelreview/libs/js/index.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
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,10 @@
|
||||
/**
|
||||
* jquery-circle-progress - jQuery Plugin to draw animated circular progress bars:
|
||||
* {@link http://kottenator.github.io/jquery-circle-progress/}
|
||||
*
|
||||
* @author Rostyslav Bryzgunov <kottenator@gmail.com>
|
||||
* @version 1.2.2
|
||||
* @licence MIT
|
||||
* @preserve
|
||||
*/
|
||||
!function(i){if("function"==typeof define&&define.amd)define(["jquery"],i);else if("object"==typeof module&&module.exports){var t=require("jquery");i(t),module.exports=t}else i(jQuery)}(function(i){function t(i){this.init(i)}t.prototype={value:0,size:100,startAngle:-Math.PI,thickness:"auto",fill:{gradient:["#3aeabb","#fdd250"]},emptyFill:"rgba(0, 0, 0, .1)",animation:{duration:1200,easing:"circleProgressEasing"},animationStartValue:0,reverse:!1,lineCap:"butt",insertMode:"prepend",constructor:t,el:null,canvas:null,ctx:null,radius:0,arcFill:null,lastFrameValue:0,init:function(t){i.extend(this,t),this.radius=this.size/2,this.initWidget(),this.initFill(),this.draw(),this.el.trigger("circle-inited")},initWidget:function(){this.canvas||(this.canvas=i("<canvas>")["prepend"==this.insertMode?"prependTo":"appendTo"](this.el)[0]);var t=this.canvas;if(t.width=this.size,t.height=this.size,this.ctx=t.getContext("2d"),window.devicePixelRatio>1){var e=window.devicePixelRatio;t.style.width=t.style.height=this.size+"px",t.width=t.height=this.size*e,this.ctx.scale(e,e)}},initFill:function(){function t(){var t=i("<canvas>")[0];t.width=e.size,t.height=e.size,t.getContext("2d").drawImage(g,0,0,r,r),e.arcFill=e.ctx.createPattern(t,"no-repeat"),e.drawFrame(e.lastFrameValue)}var e=this,a=this.fill,n=this.ctx,r=this.size;if(!a)throw Error("The fill is not specified!");if("string"==typeof a&&(a={color:a}),a.color&&(this.arcFill=a.color),a.gradient){var s=a.gradient;if(1==s.length)this.arcFill=s[0];else if(s.length>1){for(var l=a.gradientAngle||0,o=a.gradientDirection||[r/2*(1-Math.cos(l)),r/2*(1+Math.sin(l)),r/2*(1+Math.cos(l)),r/2*(1-Math.sin(l))],h=n.createLinearGradient.apply(n,o),c=0;c<s.length;c++){var d=s[c],u=c/(s.length-1);i.isArray(d)&&(u=d[1],d=d[0]),h.addColorStop(u,d)}this.arcFill=h}}if(a.image){var g;a.image instanceof Image?g=a.image:(g=new Image,g.src=a.image),g.complete?t():g.onload=t}},draw:function(){this.animation?this.drawAnimated(this.value):this.drawFrame(this.value)},drawFrame:function(i){this.lastFrameValue=i,this.ctx.clearRect(0,0,this.size,this.size),this.drawEmptyArc(i),this.drawArc(i)},drawArc:function(i){if(0!==i){var t=this.ctx,e=this.radius,a=this.getThickness(),n=this.startAngle;t.save(),t.beginPath(),this.reverse?t.arc(e,e,e-a/2,n-2*Math.PI*i,n):t.arc(e,e,e-a/2,n,n+2*Math.PI*i),t.lineWidth=a,t.lineCap=this.lineCap,t.strokeStyle=this.arcFill,t.stroke(),t.restore()}},drawEmptyArc:function(i){var t=this.ctx,e=this.radius,a=this.getThickness(),n=this.startAngle;i<1&&(t.save(),t.beginPath(),i<=0?t.arc(e,e,e-a/2,0,2*Math.PI):this.reverse?t.arc(e,e,e-a/2,n,n-2*Math.PI*i):t.arc(e,e,e-a/2,n+2*Math.PI*i,n),t.lineWidth=a,t.strokeStyle=this.emptyFill,t.stroke(),t.restore())},drawAnimated:function(t){var e=this,a=this.el,n=i(this.canvas);n.stop(!0,!1),a.trigger("circle-animation-start"),n.css({animationProgress:0}).animate({animationProgress:1},i.extend({},this.animation,{step:function(i){var n=e.animationStartValue*(1-i)+t*i;e.drawFrame(n),a.trigger("circle-animation-progress",[i,n])}})).promise().always(function(){a.trigger("circle-animation-end")})},getThickness:function(){return i.isNumeric(this.thickness)?this.thickness:this.size/14},getValue:function(){return this.value},setValue:function(i){this.animation&&(this.animationStartValue=this.lastFrameValue),this.value=i,this.draw()}},i.circleProgress={defaults:t.prototype},i.easing.circleProgressEasing=function(i){return i<.5?(i=2*i,.5*i*i*i):(i=2-2*i,1-.5*i*i*i)},i.fn.circleProgress=function(e,a){var n="circle-progress",r=this.data(n);if("widget"==e){if(!r)throw Error('Calling "widget" method on not initialized instance is forbidden');return r.canvas}if("value"==e){if(!r)throw Error('Calling "value" method on not initialized instance is forbidden');if("undefined"==typeof a)return r.getValue();var s=arguments[1];return this.each(function(){i(this).data(n).setValue(s)})}return this.each(function(){var a=i(this),r=a.data(n),s=i.isPlainObject(e)?e:{};if(r)r.init(s);else{var l=i.extend({},a.data());"string"==typeof l.fill&&(l.fill=JSON.parse(l.fill)),"string"==typeof l.animation&&(l.animation=JSON.parse(l.animation)),s=i.extend(l,s),s.el=a,r=new t(s),a.data(n,r)}})}});
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
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;
|
||||
29
modules/qlohotelreview/libs/js/raty/fonts/index.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* 2010-2022 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through LICENSE.txt file inside our module
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright 2010-2022 Webkul IN
|
||||
* @license LICENSE.txt
|
||||
*/
|
||||
|
||||
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/qlohotelreview/libs/js/raty/fonts/raty.eot
Normal file
15
modules/qlohotelreview/libs/js/raty/fonts/raty.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Generated by IcoMoon</metadata>
|
||||
<defs>
|
||||
<font id="raty" horiz-adv-x="512">
|
||||
<font-face units-per-em="512" ascent="480" descent="-32" />
|
||||
<missing-glyph horiz-adv-x="512" />
|
||||
<glyph unicode=" " d="" horiz-adv-x="256" />
|
||||
<glyph unicode="" d="M256 16c-114.88 0-208 93.12-208 208s93.12 208 208 208 208-93.12 208-208-93.12-208-208-208zM351.376 284.656c3.904 3.904 3.904 10.256 0 14.16l-21.248 21.232c-3.904 3.904-10.256 3.904-14.16 0l-60.176-60.176-60.176 60.176c-3.904 3.904-10.256 3.904-14.16 0l-21.248-21.232c-3.904-3.904-3.904-10.256 0-14.16l60.192-60.192-60.192-60.16c-3.904-3.904-3.904-10.256 0-14.16l21.248-21.248c3.904-3.904 10.256-3.904 14.16 0l60.176 60.192 60.176-60.192c3.904-3.904 10.256-3.904 14.16 0l21.248 21.248c3.904 3.904 3.904 10.256 0 14.16l-60.192 60.16 60.192 60.192z" />
|
||||
<glyph unicode="" d="M256 16c-114.88 0-208 93.12-208 208s93.12 208 208 208 208-93.12 208-208-93.12-208-208-208zM256 384c-88.352 0-160-71.648-160-160s71.648-160 160-160c88.368 0 160 71.648 160 160s-71.632 160-160 160zM328.592 167.44l-16.224-16.224c-2.976-2.976-7.808-2.976-10.8 0l-45.92 45.92-45.92-45.92c-2.992-2.976-7.808-2.976-10.8 0l-16.224 16.224c-2.976 2.976-2.976 7.808 0 10.8l45.936 45.904-45.936 45.92c-2.976 2.992-2.976 7.824 0 10.816l16.224 16.208c2.992 2.992 7.808 2.992 10.8 0l45.92-45.92 45.92 45.92c2.992 2.992 7.824 2.992 10.8 0l16.224-16.208c2.976-2.992 2.976-7.824 0-10.816l-45.936-45.92 45.936-45.904c2.976-2.992 2.976-7.84 0-10.8z" />
|
||||
<glyph unicode="" d="M475.428 290.572q0-6.286-7.428-13.714l-103.714-101.143 24.572-142.857q0.286-2 0.286-5.714 0-6-3-10.143t-8.714-4.143q-5.428 0-11.428 3.428l-128.286 67.428-128.286-67.428q-6.285-3.428-11.428-3.428-6 0-9 4.143t-3 10.143q0 1.714 0.572 5.714l24.572 142.857-104 101.143q-7.143 7.714-7.143 13.714 0 10.572 16 13.143l143.428 20.857 64.286 130q5.428 11.714 14 11.714t14-11.714l64.286-130 143.429-20.857q16-2.572 16-13.143z" horiz-adv-x="476" />
|
||||
<glyph unicode="" d="M324.857 188.572l87.428 84.857-120.572 17.715-54 109.143-54-109.143-120.572-17.714 87.428-84.857-20.857-120.286 108 56.857 107.714-56.857zM475.428 290.572q0-6.286-7.428-13.714l-103.714-101.143 24.572-142.857q0.286-2 0.286-5.714 0-14.286-11.714-14.286-5.428 0-11.428 3.428l-128.286 67.428-128.286-67.428q-6.285-3.428-11.428-3.428-6 0-9 4.143t-3 10.143q0 1.714 0.572 5.714l24.572 142.857-104 101.143q-7.143 7.714-7.143 13.714 0 10.572 16 13.143l143.428 20.857 64.286 130q5.428 11.714 14 11.714t14-11.714l64.286-130 143.429-20.857q16-2.572 16-13.143z" horiz-adv-x="476" />
|
||||
<glyph unicode="" d="M338.857 202l73.428 71.428-120.572 17.714-8.572 17.143-45.428 92v-275.143l16.857-8.857 90.857-48-17.143 101.428-3.428 18.857zM468 276.857l-103.714-101.143 24.572-142.857q1.428-9.428-1.714-14.714t-9.714-5.286q-4.857 0-11.428 3.428l-128.286 67.428-128.286-67.428q-6.572-3.428-11.428-3.428-6.572 0-9.715 5.286t-1.715 14.714l24.572 142.857-104 101.143q-9.143 9.143-6.572 17t15.428 9.857l143.429 20.857 64.286 130q5.714 11.714 14 11.714 8 0 14-11.714l64.286-130 143.429-20.857q12.857-2 15.428-9.857t-6.857-17z" horiz-adv-x="476" />
|
||||
</font></defs></svg>
|
||||
|
After Width: | Height: | Size: 3.2 KiB |
BIN
modules/qlohotelreview/libs/js/raty/fonts/raty.ttf
Normal file
BIN
modules/qlohotelreview/libs/js/raty/fonts/raty.woff
Normal file
BIN
modules/qlohotelreview/libs/js/raty/images/cancel-off.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
modules/qlohotelreview/libs/js/raty/images/cancel-on.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |