diff --git a/admin/themes/default/template/controllers/products/amenities.tpl b/admin/themes/default/template/controllers/products/amenities.tpl
new file mode 100644
index 000000000..17a354dd7
--- /dev/null
+++ b/admin/themes/default/template/controllers/products/amenities.tpl
@@ -0,0 +1,124 @@
+{**
+* NOTICE OF LICENSE
+*
+* This source file is subject to the Open Software License version 3.0
+* that is bundled with this package in the file LICENSE.md
+* It is also available through the world-wide-web at this URL:
+* https://opensource.org/license/osl-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 support@qloapps.com so we can send you a copy immediately.
+*
+* DISCLAIMER
+*
+* Do not edit or add to this file if you wish to upgrade this module to a 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.
+*
+* @author Webkul IN
+* @copyright Since 2010 Webkul
+* @license https://opensource.org/license/osl-3-0-php Open Software License version 3.0
+*}
+
+{if isset($product->id)}
+
{hook h='displayAdminAddHotelFormFeaturesTabBefore' id_hotel=$hook_arg_id_hotel}
- {if isset($hotel_feature_tree)}
+
+ {if isset($hotel_amenity_tree)}
-
-{strip}
- {addJsDefL name=prnt_ftr_err}{l s='Enter Parent feature name first.' js=1 mod='hotelreservationsystem'}{/addJsDefL}
- {addJsDefL name=chld_ftr_err}{l s='Enter at least one child feature.' js=1 mod='hotelreservationsystem'}{/addJsDefL}
- {addJsDefL name=chld_ftr_text_err}{l s='Enter child feature name.' js=1 mod='hotelreservationsystem'}{/addJsDefL}
- {addJsDefL name=pos_numeric_err}{l s='Position should be numeric.' js=1 mod='hotelreservationsystem'}{/addJsDefL}
-{/strip}
-
-{block name=script}
-
-{/block}
diff --git a/modules/hotelreservationsystem/views/templates/admin/hotel_features/helpers/view/view.tpl b/modules/hotelreservationsystem/views/templates/admin/hotel_features/helpers/view/view.tpl
deleted file mode 100644
index a4e59dea7..000000000
--- a/modules/hotelreservationsystem/views/templates/admin/hotel_features/helpers/view/view.tpl
+++ /dev/null
@@ -1,68 +0,0 @@
-{*
-* NOTICE OF LICENSE
-*
-* This source file is subject to the Open Software License version 3.0
-* that is bundled with this package in the file LICENSE.md
-* It is also available through the world-wide-web at this URL:
-* https://opensource.org/license/osl-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 support@qloapps.com so we can send you a copy immediately.
-*
-* DISCLAIMER
-*
-* Do not edit or add to this file if you wish to upgrade this module to a 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.
-*
-* @author Webkul IN
-* @copyright Since 2010 Webkul
-* @license https://opensource.org/license/osl-3-0-php Open Software License version 3.0
-*}
-
-
-
- {l s='Hotel Features' mod='hotelreservationsystem'}
-
-
-
-{strip}
- {addJsDef delete_url=$link->getAdminLink('AdminHotelFeatures') js=1 mod='hotelreservationsystem'}
- {addJsDefL name=success_delete_msg}{l s='Successfully Deleted.' js=1 mod='hotelreservationsystem'}{/addJsDefL}
- {addJsDefL name=error_delete_msg}{l s='Some error occured while deleting feature.Please try again.' js=1 mod='hotelreservationsystem'}{/addJsDefL}
- {addJsDefL name=no_feature_warning_txt}{l s='No hotel features found. Start adding new features for the hotels.' js=1 mod='hotelreservationsystem'}{/addJsDefL}
- {addJsDefL name=confirm_delete_msg}{l s='Are you sure?' js=1 mod='hotelreservationsystem'}{/addJsDefL}
-{/strip}
\ No newline at end of file
diff --git a/modules/qlocleaner/qlocleaner.php b/modules/qlocleaner/qlocleaner.php
index 8b532ef5a..c44060b28 100644
--- a/modules/qlocleaner/qlocleaner.php
+++ b/modules/qlocleaner/qlocleaner.php
@@ -690,8 +690,8 @@ class QloCleaner extends Module
array('htl_room_type_global_demand_lang', 'id_global_demand', 'htl_room_type_global_demand', 'id_global_demand'),
array('htl_branch_info_lang', 'id_lang', 'lang', 'id_lang'),
array('htl_branch_info_lang', 'id', 'htl_branch_info', 'id'),
- array('htl_features_lang', 'id_lang', 'lang', 'id_lang'),
- array('htl_features_lang', 'id', 'htl_features', 'id'),
+ array('htl_amenity_lang', 'id_lang', 'lang', 'id_lang'),
+ array('htl_amenity_lang', 'id_amenity', 'htl_amenity', 'id_amenity'),
array('htl_room_type_demand', 'id_global_demand', 'htl_room_type_global_demand', 'id_global_demand'),
array('htl_room_type_demand', 'id_product', 'product', 'id_product'),
array('htl_room_type_demand_price', 'id_product', 'product', 'id_product'),
@@ -704,7 +704,8 @@ class QloCleaner extends Module
array('htl_booking_demands', 'id_htl_booking', 'htl_booking_detail', 'id_htl_booking'),
array('htl_cart_booking_data', 'id_order', 'orders', 'id_order'),
array('htl_cart_booking_data', 'id_customer', 'customer', 'id_customer'),
- array('htl_branch_features', 'id_hotel', 'htl_branch_info', 'id'),
+ array('htl_branch_amenity', 'id_hotel', 'htl_branch_info', 'id'),
+ array('htl_branch_amenity', 'amenity_id', 'htl_amenity', 'id_amenity'),
array('htl_image', 'id_hotel', 'htl_branch_info', 'id'),
array('htl_branch_info', 'id_category', 'category', 'id_category'),
array('htl_room_information', 'id_product', 'product', 'id_product'),
@@ -727,9 +728,8 @@ class QloCleaner extends Module
array('htl_room_type_service_product', 'id_element', 'product', 'id_product'),
array('htl_room_type_service_product_price', 'id_product', 'product', 'id_product'),
array('htl_room_type_service_product_price', 'id_element', 'product', 'id_product'),
- array('htl_bed_type_lang', 'id_lang', 'lang', 'id_lang'),
- array('htl_room_type_bed_type', 'id_product', 'product', 'id_product'),
- array('htl_room_type_bed_type', 'id_bed_type', 'htl_bed_type', 'id_bed_type'),
+ array('htl_room_type_amenity', 'id_product', 'product', 'id_product'),
+ array('htl_room_type_amenity', 'amenity_id', 'htl_amenity', 'id_amenity'),
)
);
@@ -813,7 +813,7 @@ class QloCleaner extends Module
'htl_branch_info',
'htl_branch_info_lang',
'htl_image',
- 'htl_branch_features',
+ 'htl_branch_amenity',
'htl_advance_payment',
'htl_branch_refund_rules',
'htl_order_restrict_date',
@@ -831,9 +831,7 @@ class QloCleaner extends Module
'htl_room_type_global_demand',
'htl_room_type_service_product',
'htl_room_type_service_product_price',
- 'htl_bed_type',
- 'htl_bed_type_lang',
- 'htl_room_type_bed_type',
+ 'htl_room_type_amenity',
)
);
}
diff --git a/modules/wkhotelfilterblock/views/templates/hook/htlfilterblock.tpl b/modules/wkhotelfilterblock/views/templates/hook/htlfilterblock.tpl
index 0929ac1f6..7f72fdca6 100644
--- a/modules/wkhotelfilterblock/views/templates/hook/htlfilterblock.tpl
+++ b/modules/wkhotelfilterblock/views/templates/hook/htlfilterblock.tpl
@@ -24,7 +24,7 @@
{block name='room_types_amenities_filter'}
- {if isset($config) && $config['SHOW_AMENITIES_FILTER'] && $all_feat}
+ {if isset($config) && $config['SHOW_AMENITIES_FILTER'] && $all_amenities}
diff --git a/modules/wkhotelfilterblock/wkhotelfilterblock.php b/modules/wkhotelfilterblock/wkhotelfilterblock.php
index 17226b9a2..b2afe5cbc 100644
--- a/modules/wkhotelfilterblock/wkhotelfilterblock.php
+++ b/modules/wkhotelfilterblock/wkhotelfilterblock.php
@@ -179,7 +179,7 @@ class wkhotelfilterblock extends Module
$this->context->controller->addJS($this->_path.'/views/js/wkhotelfilterblock.js');
$this->context->controller->addCSS($this->_path.'/views/css/wkhotelfilterblock.css');
$id_lang = $this->context->language->id;
- $all_feat = FeatureCore::getFeatures($id_lang);
+ $all_amenities = HotelAmenities::getAmenities($id_lang);
$max_adult = HotelRoomType::getMaxAdults($id_hotel);
$max_child = HotelRoomType::getMaxChild($id_hotel);
@@ -235,7 +235,7 @@ class wkhotelfilterblock extends Module
$warning_num = Configuration::get('WK_ROOM_LEFT_WARNING_NUMBER');
$this->context->smarty->assign(array(
'warning_num' => $warning_num,
- 'all_feat' => $all_feat,
+ 'all_amenities' => $all_amenities,
'max_adult' => $max_adult,
'max_child' => $max_child,
'cat_link' => $categoryUrl,
diff --git a/themes/hotel-reservation-theme/_partials/room_type_list.tpl b/themes/hotel-reservation-theme/_partials/room_type_list.tpl
index aaa0f3ec0..7aadb79ba 100644
--- a/themes/hotel-reservation-theme/_partials/room_type_list.tpl
+++ b/themes/hotel-reservation-theme/_partials/room_type_list.tpl
@@ -60,7 +60,13 @@
{if !empty($room_v['feature'])}
{foreach from=$room_v['feature'] key=feat_k item=feat_v}
-
+ {if $feat_v.logo_type == 'icon' && $feat_v.logo}
+
+ {elseif $feat_v.logo_type == 'image' && $feat_v.logo}
+
+ {/if}
{/foreach}
{/if}
diff --git a/themes/hotel-reservation-theme/css/category.css b/themes/hotel-reservation-theme/css/category.css
index 17cf23feb..93ac147ef 100644
--- a/themes/hotel-reservation-theme/css/category.css
+++ b/themes/hotel-reservation-theme/css/category.css
@@ -143,7 +143,7 @@ p.capa_txt {
.rm_amenities_cont
{
- margin-bottom: 15px;
+ margin-bottom: 10px;
}
.rm_left
@@ -155,11 +155,10 @@ p.capa_txt {
.rm_amen
{
- height: 15px;
- width: 15px;
+ width: 20px;
display: inline-block;
margin-right: 10px;
- margin-bottom: 3px;
+ margin-bottom: 5px;
}
.rm_price_val
diff --git a/themes/hotel-reservation-theme/css/product.css b/themes/hotel-reservation-theme/css/product.css
index cee78c595..82d73e3c9 100644
--- a/themes/hotel-reservation-theme/css/product.css
+++ b/themes/hotel-reservation-theme/css/product.css
@@ -1282,6 +1282,23 @@ Quick View Styles
background: #FFFFFF;}
.room_info_content span.col-sm-4 {
margin-bottom: 5px;}
+.room_info_content.row {
+ line-height: 30px;}
+.room_info_content.row .col-sm-4 {
+ overflow: hidden;
+ display: flex;
+ align-items: center;
+ gap: 5px;}
+.room_info_content.row .col-sm-4 .amenity-name {
+ white-space: nowrap;
+ overflow: hidden;}
+.room_feature_group {
+ margin-bottom: 15px;}
+.room_feature_group .room_info_heading {
+ display: flex;
+ align-items: center;
+ gap: 5px;
+ margin-bottom: 3px;}
.product_wrapper .form-control {
background-color: transparent!important;
diff --git a/themes/hotel-reservation-theme/product.tpl b/themes/hotel-reservation-theme/product.tpl
index 67f4a03fe..b4878c11d 100644
--- a/themes/hotel-reservation-theme/product.tpl
+++ b/themes/hotel-reservation-theme/product.tpl
@@ -262,51 +262,87 @@
{/if}
{/block}
- {block name='product_info_tab_room_bed_type'}
- {if isset($selected_bed_types) && $selected_bed_types && isset($bed_types_info) && $bed_types_info}
-
-
- {l s='Bed Types'}
-
-
- {foreach $selected_bed_types as $selected_bed_type}
- {if isset($bed_types_info[$selected_bed_type])}
-
{$bed_types_info[$selected_bed_type]['name']}: {$bed_types_info[$selected_bed_type]['area']} {l s='sq.'}{$dimension_unit}
- {/if}
- {/foreach}
-
-
- {/if}
- {/block}
{block name='product_info_tab_room_features'}
- {if isset($features) && $features}
+ {if isset($room_type_features) && $room_type_features}
-
- {l s='Room Features'}
-
-
- {foreach from=$features key=ftr_k item=ftr_v}
-
-
-

{$ftr_v.name|escape:'html':'UTF-8'}
+ {assign var="current_feature_name" value=""}
+ {assign var="current_feature_values" value=""}
+ {assign var="current_feature_id" value=0}
+ {foreach from=$room_type_features item=feature}
+ {if $feature.name != $current_feature_name}
+ {if $current_feature_name != ""}
+
+
+

+
{$current_feature_name|escape:'html':'UTF-8'}
+
+
{$current_feature_values|escape:'html':'UTF-8'}
+ {/if}
+ {assign var="current_feature_name" value=$feature.name}
+ {assign var="current_feature_id" value=$feature.id_feature}
+ {assign var="current_feature_values" value=$feature.value}
+ {else}
+ {assign var="current_feature_values" value="`$current_feature_values`, `$feature.value`"}
+ {/if}
+ {if $feature@last}
+
+
+

+
{$current_feature_name|escape:'html':'UTF-8'}
+
+
{$current_feature_values|escape:'html':'UTF-8'}
- {/foreach}
-
+ {/if}
+ {/foreach}
{/if}
{/block}
{* Block for booking products *}
{if isset($id_hotel) && $id_hotel}
- {block name='product_info_tab_hotel_features'}
- {if isset($hotel_features) && $hotel_features}
+ {block name='product_info_tab_room_amenities'}
+ {if isset($room_dynamic_amenities) && $room_dynamic_amenities}
- {l s='Hotel Features'}
+ {l s='Room Amenities'}
- {foreach from=$hotel_features key=ftr_k item=ftr_v}
-
o {$ftr_v|escape:'html':'UTF-8'}
+ {foreach from=$room_dynamic_amenities item=amenity}
+
+ {if $amenity.logo_type == 'icon' && $amenity.logo}
+
+ {elseif $amenity.logo_type == 'image' && $amenity.logo}
+

+ {/if}
+
{$amenity.name|escape:'html':'UTF-8'}
+
+ {/foreach}
+
+
+ {/if}
+ {/block}
+ {block name='product_info_tab_hotel_features'}
+ {if isset($hotel_dynamic_amenities) && $hotel_dynamic_amenities}
+
+
+ {l s='Hotel Amenities'}
+
+
+ {foreach from=$hotel_dynamic_amenities item=amenity}
+
+ {if $amenity.logo_type == 'icon' && $amenity.logo}
+
+ {elseif $amenity.logo_type == 'image' && $amenity.logo}
+

+ {/if}
+
{$amenity.name|escape:'html':'UTF-8'}
+
{/foreach}