diff --git a/admin-dev/themes/default/template/controllers/modules/list.tpl b/admin-dev/themes/default/template/controllers/modules/list.tpl index a950295ef..bbf5fd85e 100644 --- a/admin-dev/themes/default/template/controllers/modules/list.tpl +++ b/admin-dev/themes/default/template/controllers/modules/list.tpl @@ -79,7 +79,9 @@ {if $module->id && isset($module->version_addons) && $module->version_addons}
  • {l s='Update it!'}
  • {/if} -
  • id) && $module->id gt 0 && !empty($module->options.uninstall_onclick)}onclick="{$module->options.uninstall_onclick}"{/if} href="{if isset($module->id) && $module->id gt 0}{$module->options.uninstall_url}{else}{$module->options.install_url}{/if}" class="button installed">{if isset($module->id) && $module->id gt 0}{l s='Uninstall'}{else}{l s='Install'}{/if}
  • +
  • + id) && $module->id gt 0 && !empty($module->options.uninstall_onclick)}onclick="{$module->options.uninstall_onclick}"{/if} href="{if isset($module->id) && $module->id gt 0}{$module->options.uninstall_url}{else}{$module->options.install_url}{/if}" class="button installed">{if isset($module->id) && $module->id gt 0}{l s='Uninstall'}{else}{l s='Install'}{/if} +
  • diff --git a/classes/module/Module.php b/classes/module/Module.php index 4ba1bacd5..14062f346 100644 --- a/classes/module/Module.php +++ b/classes/module/Module.php @@ -987,6 +987,7 @@ abstract class ModuleCore $item->confirmUninstall = Translate::getModuleTranslation((string)$xml_module->name, Module::configXmlStringFormat($xml_module->confirmUninstall), (string)$xml_module->name); $item->active = 0; + $item->onclick_option = false; $module_list[] = $item; $module_name_list[] = '\''.pSQL($item->name).'\''; @@ -1038,6 +1039,9 @@ abstract class ModuleCore $item->currencies = isset($tmp_module->currencies) ? $tmp_module->currencies : null; $item->currencies_mode = isset($tmp_module->currencies_mode) ? $tmp_module->currencies_mode : null; + // Method pointer to get dynamically the onclick content + $item->onclick_option = method_exists($module, 'onclickOption') ? true : false; + $module_list[] = $item; if (!$xml_exist || $needNewConfigFile) { @@ -1107,6 +1111,7 @@ abstract class ModuleCore $item->author = strip_tags((string)$modaddons->author); $item->limited_countries = array(); $item->parent_class = ''; + $item->onclick_option = false; $item->is_configurable = 0; $item->need_instance = 0; $item->not_on_disk = 1; diff --git a/controllers/admin/AdminModulesController.php b/controllers/admin/AdminModulesController.php index 925b8b66b..e52345263 100644 --- a/controllers/admin/AdminModulesController.php +++ b/controllers/admin/AdminModulesController.php @@ -1110,6 +1110,10 @@ class AdminModulesControllerCore extends AdminController unset($modules[$km]); else { + $obj = null; + if ($module->onclick_option) + $obj = new $module->name(); + // Fill module data $modules[$km]->logo = '../../img/questionmark.png'; if (file_exists('../modules/'.$module->name.'/logo.gif')) @@ -1121,11 +1125,19 @@ class AdminModulesControllerCore extends AdminController $modules[$km]->options['install_url'] = self::$currentIndex.'&install='.urlencode($module->name).'&token='.$this->token.'&tab_module='.$module->tab.'&module_name='.$module->name.'&anchor=anchor'.ucfirst($module->name); $modules[$km]->options['update_url'] = self::$currentIndex.'&update='.urlencode($module->name).'&token='.$this->token.'&tab_module='.$module->tab.'&module_name='.$module->name.'&anchor=anchor'.ucfirst($module->name); $modules[$km]->options['uninstall_url'] = self::$currentIndex.'&uninstall='.urlencode($module->name).'&token='.$this->token.'&tab_module='.$module->tab.'&module_name='.$module->name.'&anchor=anchor'.ucfirst($module->name); - $modules[$km]->options['uninstall_onclick'] = ((!method_exists($module, 'onclickOption')) ? ((empty($module->confirmUninstall)) ? '' : 'return confirm(\''.addslashes($module->confirmUninstall).'\');') : $module->onclickOption('uninstall', $modules[$km]->options['uninstall_url'])); + + $modules[$km]->options['uninstall_onclick'] = ((!$module->onclick_option) ? + ((empty($module->confirmUninstall)) ? '' : 'return confirm(\''.addslashes($module->confirmUninstall).'\');') : + $obj->onclickOption('uninstall', $modules[$km]->options['uninstall_url'])); + if ((Tools::getValue('module_name') == $module->name || in_array($module->name, explode('|', Tools::getValue('modules_list')))) && (int)Tools::getValue('conf') > 0) $modules[$km]->message = $this->_conf[(int)Tools::getValue('conf')]; + + if ((Tools::getValue('module_name') == $module->name || in_array($module->name, explode('|', Tools::getValue('modules_list')))) && (int)Tools::getValue('conf') > 0) + if (isset($modules_preferences[$modules[$km]->name])) $modules[$km]->preferences = $modules_preferences[$modules[$km]->name]; + unset($obj); } unset($object); }