// First boostraping pass on blocklayered module

This commit is contained in:
Jerome Nadaud
2013-11-13 15:31:30 +01:00
parent 899dea47a1
commit aa81e2607f
5 changed files with 351 additions and 208 deletions
@@ -25,7 +25,7 @@
{extends file="helpers/form/form.tpl"} {extends file="helpers/form/form.tpl"}
{block name="field"} {block name="input_row"}
{$smarty.block.parent} {$smarty.block.parent}
{if $input.name == 'public_name'} {if $input.name == 'public_name'}
{hook h="displayAttributeGroupForm" id_attribute_group=$form_id} {hook h="displayAttributeGroupForm" id_attribute_group=$form_id}
@@ -24,7 +24,7 @@
*} *}
{extends file="helpers/form/form.tpl"} {extends file="helpers/form/form.tpl"}
{block name="field"} {block name="input_row"}
{$smarty.block.parent} {$smarty.block.parent}
{if $input.name == 'id_feature'} {if $input.name == 'id_feature'}
{hook h="displayFeatureValueForm" id_feature_value=$feature_value->id} {hook h="displayFeatureValueForm" id_feature_value=$feature_value->id}
@@ -24,7 +24,7 @@
*} *}
{extends file="helpers/form/form.tpl"} {extends file="helpers/form/form.tpl"}
{block name="field"} {block name="input_row"}
{$smarty.block.parent} {$smarty.block.parent}
{if $input.name == 'name'} {if $input.name == 'name'}
{hook h="displayFeatureForm" id_feature=$form_id} {hook h="displayFeatureForm" id_feature=$form_id}
+341 -198
View File
@@ -41,6 +41,7 @@ class BlockLayered extends Module
$this->version = '1.8.9'; $this->version = '1.8.9';
$this->author = 'PrestaShop'; $this->author = 'PrestaShop';
$this->need_instance = 0; $this->need_instance = 0;
$this->bootstrap = true;
parent::__construct(); parent::__construct();
@@ -565,53 +566,83 @@ class BlockLayered extends Module
public function hookFeatureValueForm($params) public function hookFeatureValueForm($params)
{ {
$languages = Language::getLanguages(false); $languages = Language::getLanguages(false);
$default_form_language = (int)(Configuration::get('PS_LANG_DEFAULT')); $default_form_language = (int)$this->context->controller->default_form_language;
$lang_value = array(); $lang_value = array();
$return = '
<script type="text/javascript">
flag_fields = \'\';
</script>';
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS( $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(
'SELECT url_name, meta_title, id_lang FROM '._DB_PREFIX_.'layered_indexable_feature_value_lang_value 'SELECT url_name, meta_title, id_lang FROM '._DB_PREFIX_.'layered_indexable_feature_value_lang_value
WHERE id_feature_value = '.(int)$params['id_feature_value']); WHERE id_feature_value = '.(int)$params['id_feature_value']);
if ($result) if ($result)
foreach ($result as $data) foreach ($result as $data)
$lang_value[$data['id_lang']] = array('url_name' => $data['url_name'], 'meta_title' => $data['meta_title']); $lang_value[$data['id_lang']] = array('url_name' => $data['url_name'], 'meta_title' => $data['meta_title']);
$return .= '<div class="clear"></div>
<label>'.$this->l('URL:').'</label>
<div class="margin-form">
<script type="text/javascript">
flag_fields += \'¤url_name¤meta_title\';
</script>
<div class="translatable">';
foreach ($languages as $language)
$return .= '
<div class="lang_'.$language['id_lang'].'" id="url_name_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').'; float: left;">
<input size="33" type="text" name="url_name_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['url_name'], true).'" />
<span class="hint" name="help_box">'.$this->l('Invalid characters:').' <>;=#{}_<span class="hint-pointer">&nbsp;</span></span>
<p style="clear: both">'.$this->l('Specific URL format in block layered generation').'</p>
</div>';
$return .= ' $return = '<div class="form-group">
</div> <label class="control-label col-lg-3">
<div class="clear"></div> <span class="label-tooltip" data-toggle="tooltip" data-html="true" title="" data-original-title="'.$this->l('Invalid characters:').' <>;=#{}_">
</div> '.$this->l('URL:').'
<label>'.$this->l('Meta title:').' </label> </span>
<div class="margin-form"> </label>
<div class="translatable">'; <div class="col-lg-9">
<div class="form-group">';
foreach ($languages as $language) foreach ($languages as $language)
{
$return .= ' $return .= '
<div class="lang_'.$language['id_lang'].'" id="meta_title_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').'; float: left;"> <div class="translatable-field lang-'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').';">
<input size="33" type="text" name="meta_title_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['meta_title'], true).'" /> <div class="col-lg-9">
<p style="clear: both">'.$this->l('Specific format for meta title').'</p> <input type="text" name="url_name_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['url_name'], true).'" />
</div>
<div class="col-lg-2">
<button type="button" class="btn btn-default dropdown-toggle" tabindex="-1" data-toggle="dropdown">
'.$language['iso_code'].'
<span class="caret"></span>
</button>
<ul class="dropdown-menu">';
foreach ($languages as $language)
$return .= '<li><a href="javascript:hideOtherLanguage('.$language['id_lang'].');" tabindex="-1">'.$language['name'].'</a></li>';
$return .= '</ul>
</div>
</div>'; </div>';
}
$return .= ' $return .= '<div class="col-lg-9">
</div> <p class="help-block">'.$this->l('Specific URL format in block layered generation').'</p>
<div class="clear"></div> </div>
</div>'; </div>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-3">'.$this->l('Meta title:').' </label>
<div class="col-lg-9">
<div class="form-group">';
foreach ($languages as $language)
{
$return .= '
<div class="translatable-field lang-'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').';">
<div class="col-lg-9">
<input type="text" name="meta_title_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['meta_title'], true).'" />
</div>
<div class="col-lg-2">
<button type="button" class="btn btn-default dropdown-toggle" tabindex="-1" data-toggle="dropdown">
'.$language['iso_code'].'
<span class="caret"></span>
</button>
<ul class="dropdown-menu">';
foreach ($languages as $language)
$return .= '<li><a href="javascript:hideOtherLanguage('.$language['id_lang'].');" tabindex="-1">'.$language['name'].'</a></li>';
$return .= '</ul>
</div>
</div>';
}
$return .= '<div class="col-lg-9">
<p class="help-block">'.$this->l('Specific format for meta title').'</p>
</div>
</div>
</div>
</div>';
return $return; return $return;
} }
@@ -646,53 +677,83 @@ class BlockLayered extends Module
public function hookAttributeForm($params) public function hookAttributeForm($params)
{ {
$languages = Language::getLanguages(false); $languages = Language::getLanguages(false);
$default_form_language = (int)(Configuration::get('PS_LANG_DEFAULT')); $default_form_language = (int)$this->context->controller->default_form_language;
$lang_value = array(); $lang_value = array();
$return = '
<script type="text/javascript">
flag_fields = \'\';
</script>';
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS( $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(
'SELECT url_name, meta_title, id_lang FROM '._DB_PREFIX_.'layered_indexable_attribute_lang_value 'SELECT url_name, meta_title, id_lang FROM '._DB_PREFIX_.'layered_indexable_attribute_lang_value
WHERE id_attribute = '.(int)$params['id_attribute']); WHERE id_attribute = '.(int)$params['id_attribute']);
if ($result) if ($result)
foreach ($result as $data) foreach ($result as $data)
$lang_value[$data['id_lang']] = array('url_name' => $data['url_name'], 'meta_title' => $data['meta_title']); $lang_value[$data['id_lang']] = array('url_name' => $data['url_name'], 'meta_title' => $data['meta_title']);
$return .= '<div class="clear"></div>
<label>'.$this->l('URL:').'</label>
<div class="margin-form">
<script type="text/javascript">
flag_fields += \'¤url_name¤meta_title\';
</script>
<div class="translatable">';
foreach ($languages as $language)
$return .= '
<div class="lang_'.$language['id_lang'].'" id="url_name_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').'; float: left;">
<input size="33" type="text" name="url_name_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['url_name'], true).'" />
<span class="hint" name="help_box">'.$this->l('Invalid characters:').' <>;=#{}_<span class="hint-pointer">&nbsp;</span></span>
<p style="clear: both">'.$this->l('Specific URL format in block layered generation').'</p>
</div>';
$return .= ' $return = '<div class="form-group">
</div> <label class="control-label col-lg-3">
<div class="clear"></div> <span class="label-tooltip" data-toggle="tooltip" data-html="true" title="" data-original-title="'.$this->l('Invalid characters:').' <>;=#{}_">
</div> '.$this->l('URL:').'
<label>'.$this->l('Meta title:').' </label> </span>
<div class="margin-form"> </label>
<div class="translatable">'; <div class="col-lg-9">
<div class="form-group">';
foreach ($languages as $language) foreach ($languages as $language)
{
$return .= ' $return .= '
<div class="lang_'.$language['id_lang'].'" id="meta_title_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').'; float: left;"> <div class="translatable-field lang-'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').';">
<input size="33" type="text" name="meta_title_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['meta_title'], true).'" /> <div class="col-lg-9">
<p style="clear: both">'.$this->l('Specific format for meta title').'</p> <input type="text" name="url_name_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['url_name'], true).'" />
</div>
<div class="col-lg-2">
<button type="button" class="btn btn-default dropdown-toggle" tabindex="-1" data-toggle="dropdown">
'.$language['iso_code'].'
<span class="caret"></span>
</button>
<ul class="dropdown-menu">';
foreach ($languages as $language)
$return .= '<li><a href="javascript:hideOtherLanguage('.$language['id_lang'].');" tabindex="-1">'.$language['name'].'</a></li>';
$return .= '</ul>
</div>
</div>'; </div>';
}
$return .= ' $return .= '<div class="col-lg-9">
</div> <p class="help-block">'.$this->l('Specific URL format in block layered generation').'</p>
<div class="clear"></div> </div>
</div>'; </div>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-3">'.$this->l('Meta title:').' </label>
<div class="col-lg-9">
<div class="form-group">';
foreach ($languages as $language)
{
$return .= '
<div class="translatable-field lang-'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').';">
<div class="col-lg-9">
<input type="text" name="meta_title_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['meta_title'], true).'" />
</div>
<div class="col-lg-2">
<button type="button" class="btn btn-default dropdown-toggle" tabindex="-1" data-toggle="dropdown">
'.$language['iso_code'].'
<span class="caret"></span>
</button>
<ul class="dropdown-menu">';
foreach ($languages as $language)
$return .= '<li><a href="javascript:hideOtherLanguage('.$language['id_lang'].');" tabindex="-1">'.$language['name'].'</a></li>';
$return .= '</ul>
</div>
</div>';
}
$return .= '<div class="col-lg-9">
<p class="help-block">'.$this->l('Specific format for meta title').'</p>
</div>
</div>
</div>
</div>';
return $return; return $return;
} }
@@ -760,7 +821,7 @@ class BlockLayered extends Module
public function hookAttributeGroupForm($params) public function hookAttributeGroupForm($params)
{ {
$languages = Language::getLanguages(false); $languages = Language::getLanguages(false);
$default_form_language = (int)(Configuration::get('PS_LANG_DEFAULT')); $default_form_language = (int)$this->context->controller->default_form_language;
$indexable = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT indexable FROM '._DB_PREFIX_.'layered_indexable_attribute_group $indexable = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT indexable FROM '._DB_PREFIX_.'layered_indexable_attribute_group
WHERE id_attribute_group = '.(int)$params['id_attribute_group']); WHERE id_attribute_group = '.(int)$params['id_attribute_group']);
$lang_value = array(); $lang_value = array();
@@ -777,51 +838,95 @@ class BlockLayered extends Module
else else
$on = (bool)$indexable; $on = (bool)$indexable;
$return = ' $return = '<div class="form-group">
<script type="text/javascript"> <label class="control-label col-lg-3">
flag_fields = \'\'; <span class="label-tooltip" data-toggle="tooltip" data-html="true" title="" data-original-title="'.$this->l('Invalid characters:').' <>;=#{}_">
</script>'; '.$this->l('URL:').'
</span>
$return .= '<div class="clear"></div> </label>
<label>'.$this->l('URL:').'</label> <div class="col-lg-9">
<div class="margin-form"> <div class="form-group">';
<script type="text/javascript">
flag_fields += \'¤url_name¤meta_title\';
</script>
<div class="translatable">';
foreach ($languages as $language) foreach ($languages as $language)
{
$return .= ' $return .= '
<div class="lang_'.$language['id_lang'].'" id="url_name_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').'; float: left;"> <div class="translatable-field lang-'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').';">
<input size="33" type="text" name="url_name_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['url_name'], true).'" /> <div class="col-lg-9">
<span class="hint" name="help_box">'.$this->l('Invalid characters:').' <>;=#{}_<span class="hint-pointer">&nbsp;</span></span> <input type="text" name="url_name_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['url_name'], true).'" />
<p style="clear: both">'.$this->l('Specific URL format in block layered generation').'</p> </div>
</div>'; <div class="col-lg-2">
<button type="button" class="btn btn-default dropdown-toggle" tabindex="-1" data-toggle="dropdown">
'.$language['iso_code'].'
<span class="caret"></span>
</button>
<ul class="dropdown-menu">';
foreach ($languages as $language)
$return .= '<li><a href="javascript:hideOtherLanguage('.$language['id_lang'].');" tabindex="-1">'.$language['name'].'</a></li>';
$return .= ' $return .= '</ul>
</div> </div>
<div class="clear"></div>
</div>
<label>'.$this->l('Meta title:').' </label>
<div class="margin-form">
<div class="translatable">';
foreach ($languages as $language)
$return .= '
<div class="lang_'.$language['id_lang'].'" id="meta_title_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').'; float: left;">
<input size="33" type="text" name="meta_title_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['meta_title'], true).'" />
<p style="clear: both">'.$this->l('Specific format for meta title').'</p>
</div>'; </div>';
}
$return .= ' $return .= '<div class="col-lg-9">
</div> <p class="help-block">'.$this->l('Specific URL format in block layered generation').'</p>
<div class="clear"></div> </div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-3">'.$this->l('Meta title:').' </label>
<div class="col-lg-9">
<div class="form-group">';
foreach ($languages as $language)
{
$return .= '
<div class="translatable-field lang-'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').';">
<div class="col-lg-9">
<input type="text" name="meta_title_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['meta_title'], true).'" />
</div>
<div class="col-lg-2">
<button type="button" class="btn btn-default dropdown-toggle" tabindex="-1" data-toggle="dropdown">
'.$language['iso_code'].'
<span class="caret"></span>
</button>
<ul class="dropdown-menu">';
foreach ($languages as $language)
$return .= '<li><a href="javascript:hideOtherLanguage('.$language['id_lang'].');" tabindex="-1">'.$language['name'].'</a></li>';
$return .= '</ul>
</div>
</div>';
}
$return .= '<div class="col-lg-9">
<p class="help-block">'.$this->l('Specific format for meta title').'</p>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-3" for="">'.$this->l('Indexable:').'</label>
<div class="col-lg-9">
<div class="row">
<div class="input-group col-lg-2">
<span class="switch prestashop-switch">
<input type="radio" name="layered_indexable" id="indexable_on" value="1"'.(($on) ? ' checked="checked"' : '').'>
<label for="indexable_on" class="radioCheck">
<i class="icon-check-sign color_success"></i> '.$this->l('Yes').'
</label>
<input type="radio" name="layered_indexable" id="indexable_off" value="0"'.((!$on) ? ' checked="checked"' : '').'>
<label for="indexable_off" class="radioCheck">
<i class="icon-ban-circle color_danger"></i> '.$this->l('No').'
</label>
<span class="slide-button btn btn-default"></span>
</span>
</div>
</div>
</div>
<div class="col-lg-9 col-lg-push-3">
<p class="help-block">'.$this->l('Use this attribute in URL generated by the layered navigation module').'</p>
</div> </div>
<label>'.$this->l('Indexable:').' </label>
<div class="margin-form">
<input type="radio" '.(($on) ? 'checked="checked"' : '').' value="1" id="indexable_on" name="layered_indexable">
<label for="indexable_on" class="t"><img title="Yes" alt="Enabled" src="../img/admin/enabled.gif"></label>
<input type="radio" '.((!$on) ? 'checked="checked"' : '').' value="0" id="indexable_off" name="layered_indexable">
<label for="indexable_off" class="t"><img title="No" alt="Disabled" src="../img/admin/disabled.gif"></label>
<p>'.$this->l('Use this attribute in URL generated by the layered navigation module').'</p>
</div>'; </div>';
return $return; return $return;
} }
@@ -829,7 +934,7 @@ class BlockLayered extends Module
public function hookFeatureForm($params) public function hookFeatureForm($params)
{ {
$languages = Language::getLanguages(false); $languages = Language::getLanguages(false);
$default_form_language = (int)(Configuration::get('PS_LANG_DEFAULT')); $default_form_language = (int)$this->context->controller->default_form_language;
$indexable = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT indexable FROM '._DB_PREFIX_.'layered_indexable_feature WHERE id_feature = '.(int)$params['id_feature']); $indexable = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT indexable FROM '._DB_PREFIX_.'layered_indexable_feature WHERE id_feature = '.(int)$params['id_feature']);
$lang_value = array(); $lang_value = array();
@@ -846,51 +951,95 @@ class BlockLayered extends Module
else else
$on = (bool)$indexable; $on = (bool)$indexable;
$return = ' $return = '<div class="form-group">
<script type="text/javascript"> <label class="control-label col-lg-3">
flag_fields = \'\'; <span class="label-tooltip" data-toggle="tooltip" data-html="true" title="" data-original-title="'.$this->l('Invalid characters:').' <>;=#{}_">
</script>'; '.$this->l('URL:').'
</span>
$return .= '<div class="clear"></div> </label>
<label>'.$this->l('URL:').'</label> <div class="col-lg-9">
<div class="margin-form"> <div class="form-group">';
<script type="text/javascript">
flag_fields += \'¤url_name¤meta_title\';
</script>
<div class="translatable">';
foreach ($languages as $language) foreach ($languages as $language)
{
$return .= ' $return .= '
<div class="lang_'.$language['id_lang'].'" id="url_name_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').'; float: left;"> <div class="translatable-field lang-'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').';">
<input size="33" type="text" name="url_name_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['url_name'], true).'" /> <div class="col-lg-9">
<span class="hint" name="help_box">'.$this->l('Invalid characters:').' <>;=#{}_<span class="hint-pointer">&nbsp;</span></span> <input type="text" name="url_name_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['url_name'], true).'" />
<p style="clear: both">'.$this->l('Specific URL format in block layered generation').'</p> </div>
</div>'; <div class="col-lg-2">
<button type="button" class="btn btn-default dropdown-toggle" tabindex="-1" data-toggle="dropdown">
'.$language['iso_code'].'
<span class="caret"></span>
</button>
<ul class="dropdown-menu">';
foreach ($languages as $language)
$return .= '<li><a href="javascript:hideOtherLanguage('.$language['id_lang'].');" tabindex="-1">'.$language['name'].'</a></li>';
$return .= ' $return .= '</ul>
</div> </div>
<div class="clear"></div>
</div>
<label>'.$this->l('Meta title:').' </label>
<div class="margin-form">
<div class="translatable">';
foreach ($languages as $language)
$return .= '
<div class="lang_'.$language['id_lang'].'" id="meta_title_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').'; float: left;">
<input size="33" type="text" name="meta_title_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['meta_title'], true).'" />
<p style="clear: both">'.$this->l('Specific format for meta title').'</p>
</div>'; </div>';
}
$return .= ' $return .= '<div class="col-lg-9">
</div> <p class="help-block">'.$this->l('Specific URL format in block layered generation').'</p>
<div class="clear"></div> </div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-3">'.$this->l('Meta title:').' </label>
<div class="col-lg-9">
<div class="form-group">';
foreach ($languages as $language)
{
$return .= '
<div class="translatable-field lang-'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $default_form_language ? 'block' : 'none').';">
<div class="col-lg-9">
<input type="text" name="meta_title_'.$language['id_lang'].'" value="'.Tools::safeOutput(@$lang_value[$language['id_lang']]['meta_title'], true).'" />
</div>
<div class="col-lg-2">
<button type="button" class="btn btn-default dropdown-toggle" tabindex="-1" data-toggle="dropdown">
'.$language['iso_code'].'
<span class="caret"></span>
</button>
<ul class="dropdown-menu">';
foreach ($languages as $language)
$return .= '<li><a href="javascript:hideOtherLanguage('.$language['id_lang'].');" tabindex="-1">'.$language['name'].'</a></li>';
$return .= '</ul>
</div>
</div>';
}
$return .= '<div class="col-lg-9">
<p class="help-block">'.$this->l('Specific format for meta title').'</p>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-3" for="">'.$this->l('Indexable:').'</label>
<div class="col-lg-9">
<div class="row">
<div class="input-group col-lg-2">
<span class="switch prestashop-switch">
<input type="radio" name="layered_indexable" id="indexable_on" value="1"'.(($on) ? ' checked="checked"' : '').'>
<label for="indexable_on" class="radioCheck">
<i class="icon-check-sign color_success"></i> '.$this->l('Yes').'
</label>
<input type="radio" name="layered_indexable" id="indexable_off" value="0"'.((!$on) ? ' checked="checked"' : '').'>
<label for="indexable_off" class="radioCheck">
<i class="icon-ban-circle color_danger"></i> '.$this->l('No').'
</label>
<span class="slide-button btn btn-default"></span>
</span>
</div>
</div>
</div>
<div class="col-lg-9 col-lg-push-3">
<p class="help-block">'.$this->l('Use this attribute in URL generated by the layered navigation module').'</p>
</div> </div>
<label>'.$this->l('Indexable:').' </label>
<div class="margin-form">
<input type="radio" '.(($on) ? 'checked="checked"' : '').' value="1" id="indexable_on" name="layered_indexable">
<label for="indexable_on" class="t"><img title="Yes" alt="Enabled" src="../img/admin/enabled.gif"></label>
<input type="radio" '.((!$on) ? 'checked="checked"' : '').' value="0" id="indexable_off" name="layered_indexable">
<label for="indexable_off" class="t"><img title="No" alt="Disabled" src="../img/admin/disabled.gif"></label>
<p>'.$this->l('Use this attribute in URL generated by the layered navigation module').'</p>
</div>'; </div>';
return $return; return $return;
} }
@@ -1442,16 +1591,15 @@ class BlockLayered extends Module
} }
$html .= ' $html .= '
<div id="ajax-message-ok" class="conf ajax-message" style="display: none"> <div id="ajax-message-ok" class="conf ajax-message alert alert-success" style="display: none">
<span class="message"></span> <span class="message"></span>
</div> </div>
<div id="ajax-message-ko" class="error ajax-message" style="display: none"> <div id="ajax-message-ko" class="error ajax-message alert alert-danger" style="display: none">
<span class="message"></span> <span class="message"></span>
</div> </div>
<h2>'.$this->l('Layered navigation').'</h2> <div class="panel">
<fieldset class="width4"> <h3><i class="icon-cogs"></i> '.$this->l('Indexes and caches').'</h3>
<legend><img src="../img/admin/cog.gif" alt="" />'.$this->l('Indexes and caches').'</legend> <div id="indexing-warning" class="alert alert-warning" style="display: none">'.$this->l('Indexing is in progress. Please do not leave this page').'</div>';
<span id="indexing-warning" style="display: none; color:red; font-weight: bold">'.$this->l('Indexing is in progress. Please do not leave this page').'<br/><br/></span>';
if (!Configuration::getGlobalValue('PS_LAYERED_INDEXED')) if (!Configuration::getGlobalValue('PS_LAYERED_INDEXED'))
$html .= ' $html .= '
@@ -1469,37 +1617,30 @@ class BlockLayered extends Module
$domain = Tools::getProtocol(Tools::usingSecureMode()).$_SERVER['HTTP_HOST']; $domain = Tools::getProtocol(Tools::usingSecureMode()).$_SERVER['HTTP_HOST'];
$html .= ' $html .= '<div class="row">
<a class="bold ajaxcall-recurcive" <a class="ajaxcall-recurcive btn btn-default"
style="width: 250px; text-align:center;display:block;border:1px solid #aaa;text-decoration:none;background-color:#fafafa;color:#123456;margin:2px;padding:2px"
href="'.$domain.__PS_BASE_URI__.'modules/blocklayered/blocklayered-price-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'">'. href="'.$domain.__PS_BASE_URI__.'modules/blocklayered/blocklayered-price-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'">'.
$this->l('Index all missing prices').'</a> $this->l('Index all missing prices').'</a>
<br /> <a class="ajaxcall-recurcive btn btn-default"
<a class="bold ajaxcall-recurcive"
style="width: 250px; text-align:center;display:block;border:1px solid #aaa;text-decoration:none;background-color:#fafafa;color:#123456;margin:2px;padding:2px" id="full-index"
href="'.$domain.__PS_BASE_URI__.'modules/blocklayered/blocklayered-price-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'&full=1">'. href="'.$domain.__PS_BASE_URI__.'modules/blocklayered/blocklayered-price-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'&full=1">'.
$this->l('Rebuild entire price index').'</a> $this->l('Rebuild entire price index').'</a>
<br /> <a class="ajaxcall btn btn-default" id="attribute-indexer" rel="attribute"
<a class="bold ajaxcall" id="attribute-indexer" rel="attribute"
style="width: 250px; text-align:center;display:block;border:1px solid #aaa;text-decoration:none;background-color:#fafafa;color:#123456;margin:2px;padding:2px" id="full-index"
href="'.$domain.__PS_BASE_URI__.'modules/blocklayered/blocklayered-attribute-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'">'. href="'.$domain.__PS_BASE_URI__.'modules/blocklayered/blocklayered-attribute-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'">'.
$this->l('Build attribute index').'</a> $this->l('Build attribute index').'</a>
<br /> <a class="ajaxcall btn btn-default" id="url-indexer" rel="price"
<a class="bold ajaxcall" id="url-indexer" rel="price"
style="width: 250px; text-align:center;display:block;border:1px solid #aaa;text-decoration:none;background-color:#fafafa;color:#123456;margin:2px;padding:2px" id="full-index"
href="'.$domain.__PS_BASE_URI__.'modules/blocklayered/blocklayered-url-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'&truncate=1">'. href="'.$domain.__PS_BASE_URI__.'modules/blocklayered/blocklayered-url-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'&truncate=1">'.
$this->l('Build URL index').'</a> $this->l('Build URL index').'</a>
<br />
<br />
'.$this->l('You can set a cron job that will rebuild price index using the following URL:').'<br /><b>'.
$domain.__PS_BASE_URI__.'modules/blocklayered/blocklayered-price-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'&full=1</b>
<br />
'.$this->l('You can set a cron job that will rebuild URL index using the following URL:').'<br /><b>'.
$domain.__PS_BASE_URI__.'modules/blocklayered/blocklayered-url-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'&truncate=1</b>
<br />
'.$this->l('You can set a cron job that will rebuild attribute index using the following URL:').'<br /><b>'.
$domain.__PS_BASE_URI__.'modules/blocklayered/blocklayered-attribute-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'</b>
<br /><br /> <br /><br />
</div><div class="row">
<div class="alert alert-info">'.$this->l('You can set a cron job that will rebuild price index using the following URL:').'<br /><strong>'.
$domain.__PS_BASE_URI__.'modules/blocklayered/blocklayered-price-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'&full=1</strong>
</div></div><div class="row">
<div class="alert alert-info">'.$this->l('You can set a cron job that will rebuild URL index using the following URL:').'<br /><strong>'.
$domain.__PS_BASE_URI__.'modules/blocklayered/blocklayered-url-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'&truncate=1</strong>
</div></div><div class="row">
<div class="alert alert-info">'.$this->l('You can set a cron job that will rebuild attribute index using the following URL:').'<br /><strong>'.
$domain.__PS_BASE_URI__.'modules/blocklayered/blocklayered-attribute-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'</strong>
</div></div><div class="row">
'.$this->l('A nightly rebuild is recommended.').' '.$this->l('A nightly rebuild is recommended.').'
<script type="text/javascript"> <script type="text/javascript">
$(\'.ajaxcall\').click(function() { $(\'.ajaxcall\').click(function() {
@@ -1622,23 +1763,25 @@ class BlockLayered extends Module
}); });
}); });
</script> </script>
</fieldset> </div>
<br /> </div>
<fieldset class="width4"> <div class="panel">
<legend><img src="../img/admin/cog.gif" alt="" />'.$this->l('Existing filter templates').'</legend>'; <h3><i class="icon-cogs"></i> '.$this->l('Existing filter templates').'</h3>';
$filters_templates = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT * FROM '._DB_PREFIX_.'layered_filter ORDER BY date_add DESC'); $filters_templates = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT * FROM '._DB_PREFIX_.'layered_filter ORDER BY date_add DESC');
if (count($filters_templates)) if (count($filters_templates))
{ {
$html .= '<p>'.count($filters_templates).' '.$this->l('filter templates are configured:').'</p> $html .= '<p>'.sprintf($this->l('%s filter templates are configured:'), count($filters_templates)).'</p>
<table id="table-filter-templates" class="table" style="width: 700px;"> <table id="table-filter-templates" class="table">
<tr> <thead>
<th>'.$this->l('ID').'</th> <tr>
<th>'.$this->l('Name').'</th> <th class="fixed-width-xs"><span class="title_box">'.$this->l('ID').'</span></th>
<th>'.$this->l('Categories').'</th> <th class="text-left"><span class="title_box">'.$this->l('Name').'</span></th>
<th>'.$this->l('Created on').'</th> <th class="fixed-width-sm"><span class="title_box">'.$this->l('Categories').'</span></th>
<th>'.$this->l('Actions').'</th> <th><span class="title_box">'.$this->l('Created on').'</span></th>
</tr>'; <th><span class="title_box">'.$this->l('Actions').'</span></th>
</tr>
</thead>';
foreach ($filters_templates as $filters_template) foreach ($filters_templates as $filters_template)
{ {
@@ -1648,8 +1791,8 @@ class BlockLayered extends Module
$html .= ' $html .= '
<tr> <tr>
<td>'.(int)$filters_template['id_layered_filter'].'</td> <td>'.(int)$filters_template['id_layered_filter'].'</td>
<td style="text-align: left; padding-left: 10px; width: 270px;">'.$filters_template['name'].'</td> <td class="text-left">'.$filters_template['name'].'</td>
<td style="text-align: center;">'.(int)$filters_template['n_categories'].'</td> <td>'.(int)$filters_template['n_categories'].'</td>
<td>'.Tools::displayDate($filters_template['date_add'],null , true).'</td> <td>'.Tools::displayDate($filters_template['date_add'],null , true).'</td>
<td> <td>
<a href="#" onclick="return updElements('.($filters_template['n_categories'] ? 0 : 1).', '.(int)$filters_template['id_layered_filter'].');"> <a href="#" onclick="return updElements('.($filters_template['n_categories'] ? 0 : 1).', '.(int)$filters_template['id_layered_filter'].');">
@@ -1668,9 +1811,9 @@ class BlockLayered extends Module
$html .= $this->l('No filter template found.'); $html .= $this->l('No filter template found.');
$html .= ' $html .= '
</fieldset><br /> </div>
<fieldset class="width4"> <div class="panel">
<legend><img src="../img/admin/cog.gif" alt="" />'.$this->l('Build your own filter template').'</legend> <h3><i class="icon-cogs"></i> '.$this->l('Build your own filter template').'</h3>
<link rel="stylesheet" href="'._PS_CSS_DIR_.'jquery-ui-1.8.10.custom.css" /> <link rel="stylesheet" href="'._PS_CSS_DIR_.'jquery-ui-1.8.10.custom.css" />
<style type="text/css"> <style type="text/css">
#error-filter-name { display: none; } #error-filter-name { display: none; }
@@ -1986,9 +2129,9 @@ class BlockLayered extends Module
<input type="hidden" name="id_layered_filter" id="id_layered_filter" value="0" /> <input type="hidden" name="id_layered_filter" id="id_layered_filter" value="0" />
<input type="hidden" name="n_existing" id="n_existing" value="'.(int)count($filters_templates).'" /> <input type="hidden" name="n_existing" id="n_existing" value="'.(int)count($filters_templates).'" />
</form> </form>
</fieldset><br /> </div>
<fieldset class="width4"> <div class="panel">
<legend><img src="../img/admin/cog.gif" alt="" /> '.$this->l('Configuration').'</legend> <h3><i class="icon-cogs"></i> '.$this->l('Configuration').'</h3>
<form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post"> <form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post">
<table border="0" style="font-size: 11px; width: 100%; margin: 0 auto;" class="table"> <table border="0" style="font-size: 11px; width: 100%; margin: 0 auto;" class="table">
<tr> <tr>
@@ -2076,7 +2219,7 @@ class BlockLayered extends Module
</table> </table>
<p style="text-align: center;"><input type="submit" class="button" name="submitLayeredSettings" value="'.$this->l('Save configuration').'" /></p> <p style="text-align: center;"><input type="submit" class="button" name="submitLayeredSettings" value="'.$this->l('Save configuration').'" /></p>
</form> </form>
</fieldset>'; </div>';
return $html; return $html;
} }
+1 -1
View File
@@ -2,7 +2,7 @@
<module> <module>
<name>blocklayered</name> <name>blocklayered</name>
<displayName><![CDATA[Layered navigation block]]></displayName> <displayName><![CDATA[Layered navigation block]]></displayName>
<version><![CDATA[1.8.9]]></version> <version><![CDATA[1.9.0]]></version>
<description><![CDATA[Displays a block with layered navigation filters.]]></description> <description><![CDATA[Displays a block with layered navigation filters.]]></description>
<author><![CDATA[PrestaShop]]></author> <author><![CDATA[PrestaShop]]></author>
<tab><![CDATA[front_office_features]]></tab> <tab><![CDATA[front_office_features]]></tab>