protected function displayMassSeoSearchForm() { $id_search = Tools::getValue('id_search'); $search = AdvancedSearchClass::getSearch($id_search, false, false); $criterions_groups_indexed = AdvancedSearchClass::getCriterionsGroupsIndexedForSEO($id_search, $this->_cookie->id_lang); $this->_startForm(array('id' => 'seoMassSearchForm')); $this->_displayTitle($this->l('Massive add of products pages')); $this->_showInfo($this->l('Select your criteria')); $this->_html .= '<div id="seoSearchPanelCriteriaTabs"> <ul>'; foreach ($criterions_groups_indexed as $key => $criterions_group_indexed) { $this->_html .= '<li><a href="#seoSearchPanelCriteriaTabs-' . $key . '">' . htmlentities($criterions_group_indexed['name'], ENT_COMPAT, 'UTF-8') . '</a></li>'; } $this->_html .= '</ul>'; foreach ($criterions_groups_indexed as $key => $criterions_group_indexed) { $this->_html .= '<div id="seoSearchPanelCriteriaTabs-' . $key . '" class="seoSearchPanelCriteriaTabsContent" style="height:150px;overflow:auto;text-align:left;">'; $this->_html .= '<input type="hidden" name="id_criterion_group" value="' . (int) $criterions_group_indexed['id_criterion_group'] . '" style="margin-left:4px;" /><input type="checkbox" value="0" style="margin-left:4px;" onclick="enableAllCriterion4MassSeo(this);" /> <small>' . $this->l('Check all') . '</small><br /><br />'; $this->_html .= '<ul class="ui-helper-reset ui-sortable">'; if ($criterions_group_indexed['range'] == 1) { if ($criterions_group_indexed['criterion_group_type'] == 'price') { $default_currency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT')); $criterions_group_indexed['range_sign'] = $default_currency->sign; $rangeSignLeft = $default_currency->getSign('left'); $rangeSignRight = $default_currency->getSign('right'); } else { $rangeSignLeft = ''; $rangeSignRight = ' ' . $criterions_group_indexed['range_sign']; } $ranges = explode(',', $criterions_group_indexed['range_interval']); $criterions = array(); foreach ($ranges as $krange => $range) { $rangeUp = isset($ranges[$krange + 1]) ? $ranges[$krange + 1] : ''; $range1 = $range . '-' . $rangeUp; $range2 = ($rangeUp ? $this->l('From') : $this->l('More than')) . ' ' . $rangeSignLeft . $range . $rangeSignRight . ($rangeUp ? ' ' . $this->l('to') . ' ' . $rangeSignLeft . $rangeUp . $rangeSignRight : ''); $selected_criteria_groups_type = AdvancedSearchClass::getCriterionGroupsTypeAndDisplay($id_search, array($criterions_group_indexed['id_criterion_group'])); $criterions[] = array('id_criterion' => $range1, 'value' => $range2); } if ($criterions && sizeof($criterions)) { foreach ($criterions as $row) { $this->_html .= '<li class="ui-state-default massSeoSearchCriterion" id="criterion_' . $criterions_group_indexed['id_criterion_group'] . '_' . $row['id_criterion'] . '" title="' . htmlentities($row['value'], ENT_COMPAT, 'UTF-8') . '" onclick="enableCriterion4MassSeo(this);">'; $this->_html .= '<input type="checkbox" name="criteria[' . (int) $criterions_group_indexed['id_criterion_group'] . '][]" value="' . $criterions_group_indexed['id_criterion_group'] . '_' . $row['id_criterion'] . '" onclick="enableCriterion4MassSeo($jqPm( this ).parent(\'li\'));" /> '; $this->_html .= htmlentities($row['value'], ENT_COMPAT, 'UTF-8'); $this->_html .= '</li>'; } } } elseif ($criterions_group_indexed['criterion_group_type'] == 'price') { $default_currency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT')); $price_range = AdvancedSearchClass::getPriceRangeForSearchBloc($search[0], $criterions_group_indexed['id_criterion_group_linked'], (int) $default_currency->id, $this->getCurrentCustomerGroupId(), 0, $count_product = false, $selected_criterion = array(), $selected_criteria_groups_type = array()); $this->_html .= '<li class="ui-state-default massSeoSearchCriterion massSeoSearchCriterionPrice" id="criterion_price' . (isset($price_range[0]['min_price']) ? '-' . (int) $price_range[0]['min_price'] . '-' . (int) $price_range[0]['max_price'] : '') . '" title="' . $this->l('From') . ' ' . (int) $price_range[0]['min_price'] . ' ' . $this->l('to') . ' ' . Tools::displayPrice((int) $price_range[0]['max_price'], $default_currency) . '" onclick="enableCriterion4MassSeo(this);" style="height:50px;">'; $this->_html .= '<input type="checkbox" id="massSeoSearchCriterionPriceInput" name="criteria[' . (int) $criterions_group_indexed['id_criterion_group'] . '][]" value="' . $criterions_group_indexed['id_criterion_group'] . '_' . (isset($price_range[0]['min_price']) ? (double) $price_range[0]['min_price'] . '-' . (double) $price_range[0]['max_price'] : '') . '" onclick="enableCriterion4MassSeo($jqPm( this ).parent(\'li\'));" /> '; $this->_html .= $this->l('Choose your price range bellow : ') . '<br />'; $this->_html .= '<div id="PM_ASSeoPriceRange" style="width:30%;margin-left:10px;margin-top:10px;float:left"></div>'; $this->_html .= '<span id="PM_ASPriceRangeValue" style="width:35%;display:block;margin-top:10px;float:left;font-size:11px;margin-left:10px;">' . (int) $price_range[0]['min_price'] . ' - ' . Tools::displayPrice((int) $price_range[0]['max_price'], $default_currency) . '</span>'; $this->_html .= '<select id="id_currency" name="id_currency" style="float:left;margin-left:10px;width:50px;margin-top:10px;">'; foreach (Currency::getCurrencies() as $row) { $this->_html .= '<option value="' . (int) $row['id_currency'] . '" ' . ($default_currency->id == $row['id_currency'] ? 'selected="selected"' : '') . '>' . $row['sign'] . '</option>'; } $this->_html .= '</select>'; $this->_html .= '<script type="text/javascript"> $jqPm( "#id_currency" ).change(function() { var id_currency = $jqPm(this).val(); $jqPm.ajax( { type : "GET", url : "' . $this->_base_config_url . '&pm_load_function=displaySeoPriceSlider&id_search=' . (int) $criterions_group_indexed['id_search'] . '&id_criterion_group_linked=' . (int) $criterions_group_indexed['id_criterion_group_linked'] . '&id_currency="+id_currency, dataType : "script" }); }); $jqPm( "#PM_ASSeoPriceRange" ).slider({ range: true, min: ' . (int) $price_range[0]['min_price'] . ', max: ' . (int) $price_range[0]['max_price'] . ', values: [ ' . (int) $price_range[0]['min_price'] . ', ' . (int) $price_range[0]['max_price'] . ' ], slide: function( event, ui) { $jqPm( "#PM_ASPriceRangeValue" ).html( "" + ui.values[0] + " - " + "' . $default_currency->getSign('left') . '" + ui.values[1] + "' . $default_currency->getSign('right') . '" ); $jqPm( "#massSeoSearchCriterionPriceInput" ).val(' . $criterions_group_indexed['id_criterion_group'] . ' + "_" + ui.values[ 0 ] + "-" + ui.values[ 1 ] ); $jqPm( ".seoSearchCriterionPriceSortable" ).attr("id", "criterion_price-" + ui.values[ 0 ] + "-" + ui.values[ 1 ] ); $jqPm( ".seoSearchCriterionPriceSortable" ).attr("title", "' . $this->l('From') . ' " + ui.values[ 0 ] + " ' . $this->l('to') . ' " + "' . $default_currency->getSign('left') . '" + ui.values[1] + "' . $default_currency->getSign('right') . '" ); } }); </script>'; $this->_html .= '</li>'; } elseif ($criterions_group_indexed['display_type'] == 5) { $range = AdvancedSearchClass::getCriterionsRange($search[0], $criterions_group_indexed['id_criterion_group'], $this->_cookie->id_lang, false, array(), array(), false, false, false, $criterions_group_indexed); $this->_html .= '<li class="ui-state-default massSeoSearchCriterion seoSearchCriterionRangeSortable' . $criterions_group_indexed['id_criterion_group'] . '" id="criterion_' . (int) $criterions_group_indexed['id_criterion_group'] . '_' . (double) $range[0]['min'] . '-' . (double) $range[0]['max'] . '" title="' . $this->l('From') . ' ' . (double) $range[0]['min'] . ' ' . $this->l('to') . ' ' . (double) $range[0]['max'] . ' (' . $criterions_group_indexed['range_sign'] . ')" onclick="enableCriterion4MassSeo(this);" style="height:50px;">'; $this->_html .= '<input type="checkbox" id="massSeoSearchCriterionRangeInput' . (int) $criterions_group_indexed['id_criterion_group'] . '" name="criteria[' . (int) $criterions_group_indexed['id_criterion_group'] . '][]" value="' . $criterions_group_indexed['id_criterion_group'] . '_' . (int) $criterions_group_indexed['id_criterion_group'] . '_' . (double) $range[0]['min'] . '-' . (double) $range[0]['max'] . '" onclick="enableCriterion4MassSeo($jqPm( this ).parent(\'li\'));" /> '; $this->_html .= $this->l('Choose your range bellow : ') . '<br />'; $this->_html .= '<div id="PM_ASSeoRange' . $criterions_group_indexed['id_criterion_group'] . '" style="width:30%;margin-left:10px;float:left"></div>'; $this->_html .= '<span id="PM_ASRangeValue' . $criterions_group_indexed['id_criterion_group'] . '" style="width:35%;display:block;float:left;font-size:11px;margin-left:10px;">' . (double) $range[0]['min'] . ' - ' . (double) $range[0]['max'] . ' (' . $criterions_group_indexed['range_sign'] . ')</span>'; $this->_html .= '<script type="text/javascript"> $jqPm( "#PM_ASSeoRange' . $criterions_group_indexed['id_criterion_group'] . '" ).slider({ range: true, min: ' . (double) $range[0]['min'] . ', max: ' . (double) $range[0]['max'] . ', values: [ ' . (double) $range[0]['min'] . ', ' . (double) $range[0]['max'] . ' ], slide: function( event, ui) { $jqPm( "#PM_ASRangeValue' . $criterions_group_indexed['id_criterion_group'] . '" ).html( "" + ui.values[ 0 ] + " - " + ui.values[ 1 ] + " (' . $criterions_group_indexed['range_sign'] . ')" ); $jqPm( "#massSeoSearchCriterionRangeInput' . (int) $criterions_group_indexed['id_criterion_group'] . '" ).val(' . $criterions_group_indexed['id_criterion_group'] . ' + "_" + ui.values[ 0 ] + "-" + ui.values[ 1 ] ); $jqPm( ".seoSearchCriterionRangeSortable' . $criterions_group_indexed['id_criterion_group'] . '" ).attr("id", "criterion_' . $criterions_group_indexed['id_criterion_group'] . '_" + ui.values[ 0 ] + "-" + ui.values[ 1 ] ); $jqPm( ".seoSearchCriterionRangeSortable' . $criterions_group_indexed['id_criterion_group'] . '" ).attr("title", "' . $this->l('From') . ' " + ui.values[ 0 ] + " ' . $this->l('to') . ' " + ui.values[ 1 ] + " (' . $criterions_group_indexed['range_sign'] . ')" ); } }); </script>'; $this->_html .= '</li>'; } else { $criterions = AdvancedSearchClass::getCriterionsFromCriterionGroup($criterions_group_indexed['criterion_group_type'], $criterions_group_indexed['id_criterion_group_linked'], $criterions_group_indexed['id_search'], $criterions_group_indexed['sort_by'], $criterions_group_indexed['sort_way'], $this->_cookie->id_lang); if ($criterions && sizeof($criterions)) { foreach ($criterions as $row) { $this->_html .= '<li class="ui-state-default massSeoSearchCriterion" id="criterion_' . (int) $row['id_criterion'] . '" title="' . htmlentities($row['value'], ENT_COMPAT, 'UTF-8') . '" onclick="enableCriterion4MassSeo(this);">'; $this->_html .= '<input type="checkbox" name="criteria[' . (int) $criterions_group_indexed['id_criterion_group'] . '][]" value="' . (int) $criterions_group_indexed['id_criterion_group'] . '_' . (int) $row['id_criterion'] . '" onclick="enableCriterion4MassSeo($jqPm( this ).parent(\'li\'));" /> '; $this->_html .= htmlentities($row['value'], ENT_COMPAT, 'UTF-8'); $this->_html .= '</li>'; } } } $this->_html .= '</ul></div>'; } $this->_html .= '</div>'; $this->_showInfo($this->l('Reorder criteria groups for making human reading expressions')); $this->_html .= '<div id="seoMassSearchPanelCriteriaGroupsTabs"> <ul style="width:835px;min-height:50px;" class="ui-helper-reset ui-sortable">'; foreach ($criterions_groups_indexed as $key => $criterions_group_indexed) { $this->_html .= '<li class="ui-state-default seoSearchCriterionSortable ui-state-disabled seoSearchCriterionGroupSortable" id="criterion_group_' . (int) $criterions_group_indexed['id_criterion_group'] . '" style="display:none;"><a href="#seoSearchPanelCriteriaTabs-' . $key . '">' . htmlentities($criterions_group_indexed['name'], ENT_COMPAT, 'UTF-8') . '</a></li>'; } $this->_html .= '</ul></div> <input type="hidden" name="id_search" id="id_search" value="' . (int) $id_search . '" /> <input type="hidden" name="criteria_groups" id="massSeoSearchCriterionGroupsInput" />'; $this->_pmClear(); $this->_html .= '<script type="text/javascript"> var msgMaxCriteriaForMass = "' . $this->l('You can not select more than three groups of criteria') . '"; var msgNoSeoCriterion = "' . $this->l('You must choose at least one criterion to use this option') . '"; $jqPm(document).ready(function() { $jqPm("#seoSearchPanelCriteriaTabs").tabs({cache:false}); $jqPm("#seoMassSearchPanelCriteriaGroupsTabs ul").sortable({ items: "li:not(.ui-state-disabled)", placeholder: "ui-state-highlight seoSearchCriterionSortable", sort: function() { $jqPm( this ).removeClass( "ui-state-default" ); }, update: function(event, ui) { massSeoSearchCriteriaGroupUpdate(); } }); }); </script>'; $this->_showInfo($this->l('Then, you can click bellow to automaticaly generate friendly strings and urls')); $this->_displaySubmit($this->l('Generate SEO pages'), 'submitMassSeoSearchForm'); $this->_pmClear(); $this->_endForm(array('id' => 'seoMassSearchForm')); }