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);
}