Skip to content

Commit

Permalink
Merge pull request #1264 from shreesh-webkul/update-hotel
Browse files Browse the repository at this point in the history
Update: Add meta field in manage hotel panel and other text issues
  • Loading branch information
rohit053 authored Oct 4, 2024
2 parents fd77b84 + 1dfcebe commit b14bead
Show file tree
Hide file tree
Showing 3 changed files with 194 additions and 28 deletions.
24 changes: 19 additions & 5 deletions modules/hotelreservationsystem/classes/HotelBranchInformation.php
Original file line number Diff line number Diff line change
Expand Up @@ -653,7 +653,7 @@ public function update($null_values = false)
return $return;
}

public function addCategory($name, $parent_cat = false, $group_ids, $ishotel = false, $idHotel = false, $link_rewrite = false)
public function addCategory($name, $parent_cat = false, $group_ids, $ishotel = false, $idHotel = false, $link_rewrite = false, $meta_title = false, $meta_description = false, $meta_keywords = false)
{
$context = Context::getContext();
if (!$parent_cat) {
Expand Down Expand Up @@ -700,6 +700,15 @@ public function addCategory($name, $parent_cat = false, $group_ids, $ishotel = f
}
$category->id_parent = $parent_cat;
$category->groupBox = $group_ids;
if ($meta_title) {
$category->meta_title = $meta_title;
}
if ($meta_description) {
$category->meta_description = $meta_description;
}
if ($meta_keywords) {
$category->meta_keywords = $meta_keywords;
}
$category->add();
return $category->id;
}
Expand Down Expand Up @@ -772,13 +781,18 @@ public function delete()
* @param array $excludeIdHotels [array of the hotels which categories you dont want]
* @return [array] returns array of all the categories used by all the hotels
*/
public function getAllHotelCategories($excludeIdHotels = array())
public function getAllHotelCategories($excludeIdHotels = array(), $idHotel = false)
{
$hotelrelatedCategs = array();
$sql = 'SELECT `id_category` FROM `'._DB_PREFIX_.'htl_branch_info`';
$sql = 'SELECT `id_category` FROM `'._DB_PREFIX_.'htl_branch_info` WHERE 1';
if ($excludeIdHotels && count($excludeIdHotels)) {
$sql .= ' WHERE `id` NOT IN ('.implode(',', $excludeIdHotels).')';
$sql .= ' AND `id` NOT IN ('.implode(',', $excludeIdHotels).')';
}

if ($idHotel) {
$sql .= ' AND `id`='.(int) $idHotel;
}

// get all the hotel name categories
if ($hotelCategs = Db::getInstance()->executeS($sql)) {
foreach ($hotelCategs as $rowCateg) {
Expand Down Expand Up @@ -831,7 +845,7 @@ public function updateRoomTypeCategories()
return false;
}

$hotelCategories = $this->getAllHotelCategories();
$hotelCategories = $this->getAllHotelCategories(array(), $this->id);
$objHotelRoomType = new HotelRoomType();
if ($roomTypes = $objHotelRoomType->getRoomTypeByHotelId($this->id, Context::getContext()->language->id)) {
foreach ($roomTypes as $roomType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ public function __construct()
'state_name' => array(
'title' => $this->l('State'),
'align' => 'center',
'optional' => true,
'filter_key' => 's!name',
),
'country_name' => array(
Expand Down Expand Up @@ -99,6 +100,8 @@ public function renderList()
$this->addRowAction('edit');
$this->addRowAction('delete');

$this->_new_list_header_design = true;

return parent::renderList();
}

Expand Down Expand Up @@ -140,6 +143,9 @@ public function renderForm()
$smartyVars['address_info'] = $addressInfo;
$smartyVars['hotel_info'] = (array) $hotelBranchInfo;
$smartyVars['link_rewrite_info'] = $objCategory->link_rewrite;
$smartyVars['meta_title_info'] = $objCategory->meta_title;
$smartyVars['meta_description_info'] = $objCategory->meta_description;
$smartyVars['meta_keywords_info'] = $objCategory->meta_keywords;
//Hotel Images
$objHotelImage = new HotelImage();
if ($hotelAllImages = $objHotelImage->getImagesByHotelId($idHotel)) {
Expand Down Expand Up @@ -288,6 +294,31 @@ public function processSave()
$this->errors[] = sprintf($this->l('policies are not valid in %s'), $lang['name']);
}
}

if ($metaTitle = trim(Tools::getValue('meta_title_'.$lang['id_lang']))) {
if (!Validate::isGenericName($metaTitle)) {
$this->errors[] = $this->l('Invalid Meta title in ').$lang['name'];
} else if (Tools::strlen($metaTitle) > 128) {
$this->errors[] = $this->l('Meta title cannot be longer than 128 in ').$lang['name'];
}
}

if ($metaDescription = trim(Tools::getValue('meta_description_'.$lang['id_lang']))) {
if (!Validate::isGenericName($metaDescription)) {
$this->errors[] = $this->l('Invalid Meta description in ').$lang['name'];
} else if (Tools::strlen($metaDescription) > 255) {
$this->errors[] = $this->l('Meta description cannot be longer than 128 in ').$lang['name'];
}
}

if ($metaKeyWords = trim(Tools::getValue('meta_keywords_'.$lang['id_lang']))) {
if (!Validate::isGenericName($metaKeyWords)) {
$this->errors[] = $this->l('Invalid Meta keywords in ').$lang['name'];
} else if (Tools::strlen($metaKeyWords) > 255) {
$this->errors[] = $this->l('Meta keywords cannot be longer than 128 in ').$lang['name'];
}

}
}
}

Expand Down Expand Up @@ -442,6 +473,9 @@ public function processSave()
// lang fields
$hotelCatName = array();
$linkRewriteArray = array();
$metaTitleArray = array();
$metaDescriptionArray = array();
$metaKeywordsArray = array();
foreach ($languages as $lang) {
if (!trim(Tools::getValue('hotel_name_'.$lang['id_lang']))) {
$objHotelBranch->hotel_name[$lang['id_lang']] = trim(Tools::getValue(
Expand Down Expand Up @@ -505,6 +539,38 @@ public function processSave()
'policies_'.$lang['id_lang']
);
}


if (!trim(Tools::getValue('meta_title_'.$lang['id_lang']))) {
$metaTitleArray[$lang['id_lang']] = Tools::getValue(
'meta_title_'.$defaultLangId
);
} else {
$metaTitleArray[$lang['id_lang']] = Tools::getValue(
'meta_title_'.$lang['id_lang']
);
}

if (!trim(Tools::getValue('meta_description_'.$lang['id_lang']))) {
$metaDescriptionArray[$lang['id_lang']] = Tools::getValue(
'meta_description_'.$defaultLangId
);
} else {
$metaDescriptionArray[$lang['id_lang']] = Tools::getValue(
'meta_description_'.$lang['id_lang']
);
}

if (!trim(Tools::getValue('meta_keywords_'.$lang['id_lang']))) {
$metaKeywordsArray[$lang['id_lang']] = Tools::getValue(
'meta_keywords_'.$defaultLangId
);
} else {
$metaKeywordsArray[$lang['id_lang']] = Tools::getValue(
'meta_keywords_'.$lang['id_lang']
);
}

}
$objHotelBranch->email = $email;
$objHotelBranch->check_in = $check_in;
Expand Down Expand Up @@ -614,12 +680,23 @@ public function processSave()
$objCategory = new Category($objHotelBranch->id_category);
$objCategory->name = $objHotelBranch->hotel_name;
$objCategory->link_rewrite = $linkRewriteArray;
$objCategory->meta_title = $metaTitleArray;
$objCategory->meta_description = $metaDescriptionArray;
$objCategory->meta_keywords = $metaKeywordsArray;
$objCategory->id_parent = $catCity;
$objCategory->save();
Category::regenerateEntireNtree();
} else {
if ($catHotel = $objHotelBranch->addCategory(
$hotelCatName, $catCity, $groupIds, 1, $newIdHotel, $linkRewriteArray
$hotelCatName,
$catCity,
$groupIds,
1,
$newIdHotel,
$linkRewriteArray,
$metaTitleArray,
$metaDescriptionArray,
$metaKeywordsArray
)) {
$objHotelBranch = new HotelBranchInformation($newIdHotel);
$objHotelBranch->id_category = $catHotel;
Expand Down Expand Up @@ -850,6 +927,7 @@ public function ajaxProcessUpdateSlidesPosition()
public function setMedia()
{
parent::setMedia();
$this->addjQueryPlugin('tagify');

HotelHelper::assignDataTableVariables();
$this->context->controller->addJS(_PS_JS_DIR_.'/datatable/jquery.dataTables.min.js');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@
{l s='Information' mod='hotelreservationsystem'}
</a>
</li>
<li>
<a href="#hotel-seo" data-toggle="tab">
<i class="icon-link"></i>
{l s='Seo' mod='hotelreservationsystem'}
</a>
</li>
<li>
<a href="#hotel-images" data-toggle="tab">
<i class="icon-image"></i>
Expand Down Expand Up @@ -132,27 +138,6 @@
{/foreach}
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label required" for="link_rewrite" >
{l s='Friendly URL :' mod='hotelreservationsystem'}
{include file="../../../_partials/htl-form-fields-flag.tpl"}
</label>
<div class="col-lg-6">
{foreach from=$languages item=language}
{assign var="link_rewrite" value="link_rewrite_`$language.id_lang`"}
<input type="text"
id="link_rewrite_{$language.id_lang}"
name="link_rewrite_{$language.id_lang}"
value="{if isset($smarty.post.$link_rewrite)}{$smarty.post.$link_rewrite|escape:'htmlall':'UTF-8'}{elseif isset($edit)}{$link_rewrite_info[{$language.id_lang}]|escape:'htmlall':'UTF-8'}{/if}"
class="form-control wk_text_field_all wk_text_field_{$language.id_lang}"
maxlength="128"
{if $currentLang.id_lang != $language.id_lang}style="display:none;"{/if} />
{/foreach}
</div>
<div class="col-lg-2">
<button type="button" class="btn btn-default" onmousedown="updateFriendlyURLByName();"><i class="icon-random"></i> {l s='Generate'}</button>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">
{l s='Short Description :' mod='hotelreservationsystem'}
Expand Down Expand Up @@ -319,6 +304,95 @@

{hook h='displayAdminAddHotelFormInformationTabAfter' id_hotel=$hook_arg_id_hotel}
</div>
<div class="tab-pane" id="hotel-seo">
{hook h='displayAdminAddHotelFormSeoTabBefore' id_hotel=$hook_arg_id_hotel}
<div class="form-group">
<label class="col-sm-3 control-label required" for="link_rewrite" >
{l s='Friendly URL :' mod='hotelreservationsystem'}
{include file="../../../_partials/htl-form-fields-flag.tpl"}
</label>
<div class="col-lg-6">
{foreach from=$languages item=language}
{assign var="link_rewrite" value="link_rewrite_`$language.id_lang`"}
<input type="text"
id="link_rewrite_{$language.id_lang}"
name="link_rewrite_{$language.id_lang}"
value="{if isset($smarty.post.$link_rewrite)}{$smarty.post.$link_rewrite|escape:'htmlall':'UTF-8'}{elseif isset($edit)}{$link_rewrite_info[{$language.id_lang}]|escape:'htmlall':'UTF-8'}{/if}"
class="form-control wk_text_field_all wk_text_field_{$language.id_lang}"
maxlength="128"
{if $currentLang.id_lang != $language.id_lang}style="display:none;"{/if} />
{/foreach}
</div>
<div class="col-lg-2">
<button type="button" class="btn btn-default" onmousedown="updateFriendlyURLByName();"><i class="icon-random"></i> {l s='Generate'}</button>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="meta_title" >
{l s='Meta title:' mod='hotelreservationsystem'}
{include file="../../../_partials/htl-form-fields-flag.tpl"}
</label>
<div class="col-lg-6">
{foreach from=$languages item=language}
{assign var="meta_title" value="meta_title_`$language.id_lang`"}
<input type="text"
id="meta_title_{$language.id_lang}"
name="meta_title_{$language.id_lang}"
value="{if isset($smarty.post.$meta_title)}{$smarty.post.$meta_title|escape:'htmlall':'UTF-8'}{elseif isset($edit)}{$meta_title_info[$language.id_lang]|escape:'htmlall':'UTF-8'}{/if}""
class="form-control wk_text_field_all wk_text_field_{$language.id_lang}"
maxlength="128"
{if $currentLang.id_lang != $language.id_lang}style="display:none;"{/if} />
{/foreach}
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="meta_title" >
{l s='Meta description:' mod='hotelreservationsystem'}
{include file="../../../_partials/htl-form-fields-flag.tpl"}
</label>
<div class="col-lg-6">
{foreach from=$languages item=language}
{assign var="meta_description" value="meta_description_`$language.id_lang`"}
<input type="text"
id="meta_description_{$language.id_lang}"
name="meta_description_{$language.id_lang}"
value="{if isset($smarty.post.$meta_description)}{$smarty.post.$meta_description|escape:'htmlall':'UTF-8'}{elseif isset($edit)}{$meta_description_info[{$language.id_lang}]|escape:'htmlall':'UTF-8'}{/if}"
class="form-control wk_text_field_all wk_text_field_{$language.id_lang}"
maxlength="225"
{if $currentLang.id_lang != $language.id_lang}style="display:none;"{/if} />
{/foreach}
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="meta_title" >
{l s='Meta keywords:' mod='hotelreservationsystem'}
{include file="../../../_partials/htl-form-fields-flag.tpl"}
</label>
<div class="col-lg-6">
{foreach from=$languages item=language}
<div class="wk_text_field_all wk_text_field_{$language.id_lang}" {if $currentLang.id_lang != $language.id_lang}style="display:none;"{/if} >
{assign var="meta_keywords" value="meta_keywords_`$language.id_lang`"}
<script type="text/javascript">
$().ready(function () {
var input_id = 'meta_keywords_{$language.id_lang}';
$("#"+input_id).tagify({ delimiters: [13,44], addTagPrompt: "{l s='Add tag' mod='hotelreservationsystem' js=1}"});
$("#htl_branch_info_form").submit( function() {
$('#'+input_id).val($('#'+input_id).tagify('serialize'));
});
});
</script>
<input type="text"
id="meta_keywords_{$language.id_lang}"
name="meta_keywords_{$language.id_lang}"
value="{if isset($smarty.post.$meta_keywords)}{$smarty.post.$meta_keywords|escape:'htmlall':'UTF-8'}{elseif isset($edit)}{$meta_keywords_info[{$language.id_lang}]|escape:'htmlall':'UTF-8'}{/if}"
class="form-control tagify"
maxlength="225">
</div>
{/foreach}
</div>
</div>
{hook h='displayAdminAddHotelFormSeoTabAfter' id_hotel=$hook_arg_id_hotel}
</div>
<div class="tab-pane" id="hotel-images">
{hook h='displayAdminAddHotelFormImagesTabBefore' id_hotel=$hook_arg_id_hotel}
Expand Down Expand Up @@ -384,7 +458,7 @@
<label for="enable_use_global_preparation_time_off">{l s='No' mod='hotelreservationsystem'}</label>
<a class="slide-button btn"></a>
</span>
<div class="help-block">{l s='Global preparation time :' mod='hotelreservationsystem'} {$GLOBAL_PREPARATION_TIME}</div>
<div class="help-block">{l s='Global minimum booking offset :' mod='hotelreservationsystem'} {$GLOBAL_PREPARATION_TIME}</div>
</div>
</div>
<div class="form-group" {if isset($smarty.post.enable_use_global_preparation_time)}{if !$smarty.post.enable_use_global_preparation_time}style="display:block;"{else}style="display:none;"{/if}{elseif isset($order_restrict_date_info.use_global_preparation_time) && !$order_restrict_date_info.use_global_preparation_time}style="display:block;" {else} style="display:none;" {/if}>
Expand Down

0 comments on commit b14bead

Please sign in to comment.