345 lines
12 KiB
PHP
345 lines
12 KiB
PHP
<?php
|
|
|
|
class AdminHotelConfigurationSettingController extends ModuleAdminController
|
|
{
|
|
protected $position_identifier = 'id_settings_link';
|
|
|
|
public function __construct()
|
|
{
|
|
$this->table = 'htl_settings_link';
|
|
$this->identifier = 'id_settings_link';
|
|
$this->className = 'HotelSettingsLink';
|
|
$this->_defaultOrderBy = 'position';
|
|
$this->lang = true;
|
|
$this->bootstrap = true;
|
|
$this->list_no_link = true;
|
|
|
|
parent::__construct();
|
|
|
|
$this->addRowAction('edit');
|
|
$this->addRowAction('delete');
|
|
|
|
$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'
|
|
)
|
|
);
|
|
|
|
$this->fields_list = array(
|
|
'id_settings_link' => array(
|
|
'title' => $this->l('ID'),
|
|
'hint' => $this->l('ID of the settings link.'),
|
|
'align' => 'center',
|
|
'class' => 'fixed-width-xs',
|
|
),
|
|
'name' => array(
|
|
'title' => $this->l('Name'),
|
|
'hint' => $this->l('Name of the settings link.'),
|
|
'align' => 'left',
|
|
'class' => 'fixed-width-xxl',
|
|
),
|
|
'link' => array(
|
|
'title' => $this->l('Link'),
|
|
'hint' => $this->l('Link of the page where admin is redirected.'),
|
|
'align' => 'left',
|
|
'callback' => 'displayColumnLink',
|
|
),
|
|
'icon' => array(
|
|
'title' => $this->l('Icon'),
|
|
'hint' => $this->l('Icon of the settings link.'),
|
|
'align' => 'center',
|
|
'callback' => 'displayColumnIcon',
|
|
),
|
|
'new_window' => array(
|
|
'title' => $this->l('New Window'),
|
|
'hint' => $this->l('Active if link is opened in a new window.'),
|
|
'align' => 'center',
|
|
'active' => 'new_window',
|
|
'ajax' => true,
|
|
'orderby' => false,
|
|
'type' => 'bool',
|
|
'class' => 'fixed-width-sm',
|
|
),
|
|
'position' => array(
|
|
'title' => $this->l('Position'),
|
|
'filter_key' => 'a!position',
|
|
'position' => 'position',
|
|
'align' => 'center',
|
|
'class' => 'fixed-width-md',
|
|
),
|
|
'active' => array(
|
|
'title' => $this->l('Status'),
|
|
'hint' => $this->l('Current status of the settings link.'),
|
|
'type' => 'bool',
|
|
'active' => 'status',
|
|
'align' => 'center',
|
|
'class' => 'fixed-width-lg',
|
|
'filter_key' => 'a!active',
|
|
),
|
|
);
|
|
}
|
|
|
|
public function displayColumnIcon($icon)
|
|
{
|
|
$tpl = $this->context->smarty->createTemplate(
|
|
$this->module->getLocalPath().'views/templates/admin/'.$this->tpl_folder.'helpers/list/link-icon.tpl'
|
|
);
|
|
|
|
$tpl->assign('icon', $icon);
|
|
|
|
return $tpl->fetch();
|
|
}
|
|
|
|
public function displayColumnLink($link)
|
|
{
|
|
$this->loadObject(true);
|
|
$tpl = $this->context->smarty->createTemplate(
|
|
$this->module->getLocalPath().'views/templates/admin/'.$this->tpl_folder.'helpers/list/link-page.tpl'
|
|
);
|
|
|
|
$tpl->assign(array(
|
|
'saved_link' => $link,
|
|
'generated_link' => $this->object->generateLink($link),
|
|
));
|
|
|
|
return $tpl->fetch();
|
|
}
|
|
|
|
public function initToolbar()
|
|
{
|
|
parent::initToolbar();
|
|
if ($this->display == 'view') {
|
|
$this->toolbar_title = $this->l('Hotel Settings');
|
|
$this->page_header_toolbar_btn['manage_links'] = array(
|
|
'icon' => 'process-icon-cogs',
|
|
'href' => self::$currentIndex.'&display=list&token='.$this->token,
|
|
'desc' => $this->l('Manage links'),
|
|
);
|
|
} elseif ($this->display == 'list') {
|
|
$this->page_header_toolbar_title = $this->l('Settings Links');
|
|
$this->page_header_toolbar_btn['new'] = array(
|
|
'href' => self::$currentIndex.'&add'.$this->table.'&token='.$this->token,
|
|
'desc' => $this->l('Add new link'),
|
|
);
|
|
}
|
|
}
|
|
|
|
public function initContent()
|
|
{
|
|
if (!$this->ajax) {
|
|
if (Tools::getValue('display') == 'list') {
|
|
$this->display = 'list';
|
|
} elseif (empty($this->display)
|
|
&& !Tools::isSubmit('submitFilter'.$this->table)
|
|
) {
|
|
$this->display = 'view';
|
|
}
|
|
}
|
|
|
|
parent::initContent();
|
|
}
|
|
|
|
public function renderList()
|
|
{
|
|
$this->context->smarty->assign('icon', 'icon-list');
|
|
$this->toolbar_title = $this->l('Settings Links');
|
|
|
|
$this->loadObject(true);
|
|
$unremovableLinks = $this->object->getUnremovableLinks();
|
|
if (is_array($unremovableLinks) && count($unremovableLinks)) {
|
|
$ids = array();
|
|
foreach ($unremovableLinks as $unremovableLink) {
|
|
$ids[] = $unremovableLink['id_settings_link'];
|
|
}
|
|
$this->addRowActionSkipList('delete', $ids);
|
|
}
|
|
|
|
return parent::renderList();
|
|
}
|
|
|
|
public function renderForm()
|
|
{
|
|
$smartyVars = array();
|
|
$idSettingsLink = (int) Tools::getValue($this->identifier);
|
|
$objHotelSettingsLink = $this->loadObject(true);
|
|
|
|
$smartyVars['id_hotel_settings_link'] = $idSettingsLink;
|
|
$smartyVars['currentTab'] = $this;
|
|
$smartyVars['currentObject'] = $objHotelSettingsLink;
|
|
|
|
$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' => 'submitHotelSettingsLink',
|
|
'class' => 'btn btn-default pull-right',
|
|
),
|
|
),
|
|
);
|
|
|
|
return $fields_form;
|
|
}
|
|
|
|
public function renderView()
|
|
{
|
|
$settingsLinks = $this->object->getAllSettingsLinks();
|
|
foreach ($settingsLinks as $index => &$settingsLink) {
|
|
$settingsLink['generated_link'] = $this->object->generateLink($settingsLink['link']);
|
|
}
|
|
|
|
$this->tpl_view_vars = array(
|
|
'settings_links' => $settingsLinks,
|
|
);
|
|
|
|
return parent::renderView();
|
|
}
|
|
|
|
public function postProcess()
|
|
{
|
|
if (Tools::isSubmit('submitHotelSettingsLink') || Tools::isSubmit('submitHotelSettingsLinkAndStay')) {
|
|
$idHotelSettingsLink = Tools::getValue($this->identifier);
|
|
$this->validateRules();
|
|
|
|
if (is_array($this->errors) && !count($this->errors)) {
|
|
$objHotelSettingsLink = new HotelSettingsLink($idHotelSettingsLink);
|
|
$this->copyFromPost($objHotelSettingsLink, $this->table);
|
|
if (!$idHotelSettingsLink) {
|
|
$objHotelSettingsLink->position = $objHotelSettingsLink->getHigherPosition();
|
|
}
|
|
if ($objHotelSettingsLink->save()) {
|
|
$newId = $objHotelSettingsLink->id;
|
|
|
|
if (is_array($this->errors) && !count($this->errors)) {
|
|
if (Tools::isSubmit('submitHotelSettingsLinkAndStay')) {
|
|
if ($idHotelSettingsLink) {
|
|
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 {
|
|
self::$currentIndex .= '&display=list';
|
|
if ($idHotelSettingsLink) {
|
|
Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token);
|
|
} else {
|
|
Tools::redirectAdmin(self::$currentIndex.'&conf=3&token='.$this->token);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
parent::postProcess();
|
|
}
|
|
|
|
public function processStatus()
|
|
{
|
|
self::$currentIndex .= '&display=list';
|
|
return parent::processStatus();
|
|
}
|
|
|
|
public function processDelete()
|
|
{
|
|
self::$currentIndex .= '&display=list';
|
|
return parent::processDelete();
|
|
}
|
|
|
|
public function processBulkDelete()
|
|
{
|
|
self::$currentIndex .= '&display=list';
|
|
return parent::processBulkDelete();
|
|
}
|
|
|
|
public function ajaxProcessNewWindowHtlSettingsLink()
|
|
{
|
|
$response = array(
|
|
'success' => 0,
|
|
'text' => $this->l('An error occurred while updating object.')
|
|
);
|
|
|
|
$idSettingsLink = Tools::getValue('id_settings_link');
|
|
$objHotelSettingsLink = new HotelSettingsLink($idSettingsLink);
|
|
|
|
if (Validate::isLoadedObject($objHotelSettingsLink)) {
|
|
$objHotelSettingsLink->new_window = (int) !$objHotelSettingsLink->new_window;
|
|
|
|
if ($objHotelSettingsLink->save()) {
|
|
$response['success'] = 1;
|
|
$response['text'] = $this->l('The object has been updated successfully.');
|
|
}
|
|
}
|
|
|
|
$this->ajaxDie(json_encode($response));
|
|
}
|
|
|
|
public function ajaxProcessUpdatePositions()
|
|
{
|
|
$way = (int) Tools::getValue('way');
|
|
$idSettingsLink = (int) Tools::getValue('id');
|
|
$positions = Tools::getValue('settings_link');
|
|
|
|
foreach ($positions as $position => $value) {
|
|
$pos = explode('_', $value);
|
|
|
|
if (isset($pos[2]) && (int) $pos[2] === $idSettingsLink) {
|
|
if ($objHotelSettingsLink = new HotelSettingsLink((int) $pos[2])) {
|
|
if (isset($position) && $objHotelSettingsLink->updatePosition($way, $position, $idSettingsLink)) {
|
|
$this->ajaxDie(json_encode(true));
|
|
} else {
|
|
$this->ajaxDie(json_encode(array(
|
|
'hasError' => true,
|
|
'errors' => sprintf(
|
|
$this->l('Can not update position for object ID: %d to position %d'),
|
|
(int) $idSettingsLink,
|
|
$position
|
|
),
|
|
)));
|
|
}
|
|
} else {
|
|
$this->ajaxDie(json_encode(array(
|
|
'hasError' => true,
|
|
'errors' => sprintf(
|
|
$this->l('The object with ID: %d can not be loaded.'),
|
|
(int) $idSettingsLink
|
|
),
|
|
)));
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function setMedia()
|
|
{
|
|
parent::setMedia();
|
|
$this->addCSS(_MODULE_DIR_.'hotelreservationsystem/views/css/HotelReservationAdmin.css');
|
|
$this->addJs(_MODULE_DIR_.'hotelreservationsystem/views/js/HotelReservationAdmin.js');
|
|
}
|
|
}
|