* @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 = '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); foreach ($option_list as $category => $category_data) { foreach ($category_data['fields'] as $key => $field) { // Field value $option_list[$category]['fields'][$key]['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::isMultiShopActivated()) { 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; } $option_list[$category]['fields'][$key]['is_disabled'] = $isDisabled; $option_list[$category]['fields'][$key]['is_invisible'] = $isInvisible; $option_list[$category]['fields'][$key]['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) $option_list[$category]['fields'][$key]['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') { if (!isset($languages)) $languages = Language::getLanguages(false); 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']); $option_list[$category]['fields'][$key]['languages'][$language['id_lang']] = $value; } $option_list[$category]['fields'][$key]['flags'] = $this->displayFlags($languages, $this->context->language->id, $key, $key, true); } // Multishop default value $option_list[$category]['fields'][$key]['multishop_default'] = (Shop::isMultiShopActivated() && Context::shop() != Shop::CONTEXT_ALL && !$isInvisible); } } $this->context->smarty->assign(array( 'img_legend' => (!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', 'current' => $this->currentIndex, 'optionsList' => $option_list, 'current_id_lang' => $this->context->language->id, )); return $this->context->smarty->fetch(_PS_ADMIN_DIR_.'/themes/template/'.$this->tpl); } /** * 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 '