* @copyright 2007-2011 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ /** * Use this helper to generate preferences forms, with values stored in the configuration table */ class HelperOptionsCore extends Helper { public $first_call = true; public $required = false; /** * @var array of forms fields * Usage : * */ protected $fields_form = array(); public $fields_value = array(); public $tpl = 'helper/options/options.tpl'; /** * Generate a form for options * @param array options * @return string html */ public function generateOptions($option_list) { $tab = Tab::getTab($this->context->language->id, $this->id); if (!isset($languages)) $languages = Language::getLanguages(false); foreach ($option_list as $category => $category_data) { if (!isset($category_data['image'])) $category_data['image'] = (!empty($tab['module']) && file_exists($_SERVER['DOCUMENT_ROOT']._MODULE_DIR_.$tab['module'].'/'.$tab['class_name'].'.gif') ? _MODULE_DIR_.$tab['module'].'/' : '../img/t/').$tab['class_name'].'.gif'; if (!isset($category_data['fields'])) $category_data['fields'] = array(); foreach ($category_data['fields'] as $key => $field) { // Set field value $field['value'] = $this->getOptionValue($key, $field); // Check if var is invisible (can't edit it in current shop context), or disable (use default value for multishop) $isDisabled = $isInvisible = false; if (Shop::isFeatureActive()) { if (isset($field['visibility']) && $field['visibility'] > $this->context->shop->getContextType()) { $isDisabled = true; $isInvisible = true; } else if (Context::shop() != Shop::CONTEXT_ALL && !Configuration::isOverridenByCurrentContext($key)) $isDisabled = true; } $field['is_disabled'] = $isDisabled; $field['is_invisible'] = $isInvisible; $field['required'] = isset($field['required']) ? $field['required'] : $this->required; // Cast options values if specified if ($field['type'] == 'select' && isset($field['cast'])) foreach ($field['list'] as $option_key => $option) $field['list'][$option_key][$field['identifier']] = $field['cast']($option[$field['identifier']]); // Fill values for all languages for all lang fields if (substr($field['type'], -4) == 'Lang') { foreach ($languages as $language) { if ($field['type'] == 'textLang') $value = Tools::safeOutput(Tools::getValue($key.'_'.$language['id_lang'], Configuration::get($key, $language['id_lang']))); elseif ($field['type'] == 'textareaLang') $value = Configuration::get($key, $language['id_lang']); elseif ($field['type'] == 'selectLang') $value = Configuration::get($key, $language['id_lang']); $field['languages'][$language['id_lang']] = $value; $field['value'][$language['id_lang']] = $this->getOptionValue($key.'_'.strtoupper($language['iso_code']), $field); } } // pre-assign vars to the tpl if ($field['type'] == 'maintenance_ip') { $field['script_ip'] = ' '; $field['link_remove_ip'] = '  '.$this->l('Add my IP').''; if (!isset($category_data['bottom'])) $category_data['bottom'] = ''; } else if ($field['type'] == 'price') { $field['currency_left'] = $this->context->currency->getSign('left'); $field['currency_right'] = $this->context->currency->getSign('right').' '.$this->l('(tax excl.)'); } // Multishop default value $field['multishop_default'] = (Shop::isFeatureActive() && Context::shop() != Shop::CONTEXT_ALL && !$isInvisible); // Assign the modifications back to parent array $category_data['fields'][$key] = $field; // Is at least one required field present? if (isset($field['required']) && $field['required']) $required_fields = true; } // Assign the modifications back to parent array $option_list[$category] = $category_data; } $this->tpl->assign(array( 'current' => $this->currentIndex, 'table' => $this->table, 'token' => $this->token, 'option_list' => $option_list, 'current_id_lang' => $this->context->language->id, 'required_fields' => isset($required_fields) ? $required_fields : false, 'languages' => isset($languages) ? $languages : null, )); return $this->tpl->fetch(); } /** * Type = image * @ TODO */ public function displayOptionTypeImage($key, $field, $value) { echo '
| ';
echo '';
echo '';
echo ' '; echo ''; echo ' | ';
if (isset($field['max']) && ($i +1 ) % $field['max'] == 0)
echo '