[+] BO : new display of payment modules in payment tab

This commit is contained in:
vAugagneur
2013-02-04 18:18:50 +01:00
parent bc203bfc3a
commit 0de5c242ca
15 changed files with 374 additions and 245 deletions
+20 -20
View File
@@ -194,13 +194,13 @@ a.module_toggle_all{color: #268CCD;}
.multishop_toolbar .chzn-container .chzn-results .shop{padding-left: 30px;background-color: #EAF2FC;}
/*toolbarBox*/
.toolbarBox { background-color: #F8F8F8; border: 1px solid #CCCCCC; margin-bottom:10px; padding: 5px 0; border-radius:3px; -moz-border-radius:3px; -webkit-border-radius:3px;position:relative}
.toolbarBox {background-color: #F8F8F8; border: 1px solid #CCCCCC; margin-bottom:10px; padding: 5px 0; border-radius:3px; -moz-border-radius:3px; -webkit-border-radius:3px;-o-border-radius:3px;position:relative}
.toolbarBox .pageTitle { margin-left:10px; line-height:48px}
.toolbarBox .pageTitle h3 {font-size: 2em; font-weight: normal; line-height: 52px; margin: 0; padding: 0; text-shadow:0 1px 0 #fff;}
.toolbarBox ul.cc_button {float:right;margin:0 5px 0 0;padding:0;}
.toolbarBox ul.cc_button li {color: #666666; float: left; height: 48px; list-style: none outside none; padding: 1px 1px 3px 4px; text-align: center;}
.toolbarBox a.toolbar_btn { border:1px solid #f8f8f8; min-width:50px; border-width: 1px; font-size:11px;cursor: pointer; display: block; float: left; padding: 3px 5px; white-space: nowrap; text-shadow: 0 1px 0 #ffffff;}
.toolbarBox a.toolbar_btn:hover { background-color:#fff; border:1px inset #ccc; border-radius:3px;}
.toolbarBox a.toolbar_btn:hover { background-color:#fff; border:1px inset #ccc; border-radius:3px;-moz-border-radius:3px; -webkit-border-radius:3px;-o-border-radius:3px;}
.toolbarBox .toolbar_btn span{ display: block;float: none;height: 32px;margin: 0 auto;width: 32px; /*hacking ie7*/ margin:0 !ie; position:relative !ie;}
.toolbarBox .process-icon-delete { background-image: url('../img/process-icon-delete.png');}
.toolbarBox .process-icon-duplicate { background-image: url('../img/process-icon-duplicate.png');}
@@ -246,7 +246,7 @@ a.module_toggle_all{color: #268CCD;}
right: 13px;
top: 63px;
z-index: 100;
padding: 10px 10px 0px 10px;
padding: 10px;
box-shadow: 1px 5px 5px #CCCCCC;
-moz-box-shadow: 1px 5px 10px #CCCCCC;
-webkit-box-shadow: 1px 5px 10px #CCCCCC;
@@ -256,7 +256,7 @@ a.module_toggle_all{color: #268CCD;}
.toolbarBox #modules_list_container #modules_list_container_content
{
max-height: 500px;
overflow: scroll;
overflow: auto;
}
@@ -266,15 +266,8 @@ a.module_toggle_all{color: #268CCD;}
.toolbarBox #modules_list_container #modules_list_container_tab tr.rowalt {background-color: #EEE}
.toolbarBox #modules_list_container #modules_list_container_tab #tab_module_switch {margin-bottom: 10px;}
.toolbarBox #modules_list_container #modules_list_loader {margin-top: 10px}
.toolbarBox #modules_list_container .nav-tabs-modules:after {
clear: both;
}
.toolbarBox #modules_list_container .nav-tabs-modules > li {
height: 19px;
}
.toolbarBox #modules_list_container .nav-tabs-modules:after {clear: both;}
.toolbarBox #modules_list_container .nav-tabs-modules > li {height: 19px;}
.toolbarBox #modules_list_container .nav-tabs-modules > li > a {
padding-right: 12px;
padding-left: 12px;
@@ -284,10 +277,11 @@ a.module_toggle_all{color: #268CCD;}
.toolbarBox #modules_list_container .nav-tabs-modules > li > a {
padding-top: 8px;
padding-bottom: 8px;
padding-bottom: 7px;
border: 1px solid transparent;
-webkit-border-radius: 4px 4px 0 0;
-moz-border-radius: 4px 4px 0 0;
-o-border-radius: 4px 4px 0 0;
border-radius: 4px 4px 0 0;
}
@@ -296,7 +290,7 @@ a.module_toggle_all{color: #268CCD;}
background-color: #ffffff;
}
.toolbarBox #modules_list_container .nav-tabs-modules > li > a {border: 1px solid #ddd;}
.toolbarBox #modules_list_container .nav-tabs-modules > li > a {border: 1px solid #ddd;border-bottom:none;}
.toolbarBox #modules_list_container .nav-tabs-modules > .active > a,
.toolbarBox #modules_list_container .nav-tabs-modules > .active > a:hover {
@@ -307,6 +301,9 @@ a.module_toggle_all{color: #268CCD;}
border-bottom-color: transparent;
}
div.fix-toolbar {border-bottom: 1px solid #E0E0E0;position:fixed;top:0;opacity:0.9;z-index:500;}
/*button upload files*/
@@ -337,7 +334,8 @@ div.fix-toolbar {border-bottom: 1px solid #E0E0E0;position:fixed;top:0;opacity:0
#productBox { position:relative; width:100%; float:left;}
/*tab-pane*/
form#product_form, form#access_form, form#cart_rule_form { background-color:#ebedf4; border:1px solid #ccced7; min-height:404px; padding: 5px 10px 10px; margin-left:140px;}
form#product_form, form#access_form, form#cart_rule_form, #modules_tab_list { background-color:#ebedf4; border:1px solid #ccced7; min-height:404px; padding: 5px 10px 10px; margin-left:140px;}
#modules_tab_list {min-height: inherit}
#content form.adminstockmanagement {margin-left:0px;}
form#product_form h3 { font-size:14px; font-weight:normal;}
form#product_form h4 { font-size:18px; font-weight:normal;}
@@ -508,7 +506,7 @@ form#product_form h4 { font-size:18px; font-weight:normal;}
#moduleContainer .setup {background-color:#6db300; font-weight:bold; font-size:10px; color:#fff; text-transform:uppercase; position:relative; left:10px; padding:0px 4px; display: inline-block; border-radius:3px;}
#moduleContainer .setup.non-install { background-color:#ec7000;}
#moduleContainer .setup.must-have { background-color: #ec7000;}
#moduleContainer .setup.off{ background-color:#ccc;}
#moduleContainer .setup.off{ background-color:#ccc; color:#666666}
#moduleContainer .row-actions-module span {padding-right:5px;}
#moduleContainer .row-actions-module span a { font-size:12px;}
#moduleContainer .button.uninstalled,
@@ -524,7 +522,7 @@ form#product_form h4 { font-size:18px; font-weight:normal;}
#modules_list_container_tab table tr td { font-size:12px; padding: 3px 3px 3px; border-top:1px solid #ccc; border-bottom:none;}
#modules_list_container_tab table tr td tr td {border: none}
#modules_list_container_tab table tr:first-child {border-top:1px solid #ccc}
#modules_list_container_tab .imgm {width:32px;}
#modules_list_container_tab .imgm {width:32px;}
#modules_list_container_tab .moduleDesc { font-size:12px;}
#modules_list_container_tab .moduleDesc h3 { color:#3A6EA7;margin: 0;font-size: 1.1em;text-align: left}
#modules_list_container_tab .moduleDesc .metadata { float:left; display:block; margin:5px 0;}
@@ -533,11 +531,11 @@ form#product_form h4 { font-size:18px; font-weight:normal;}
#modules_list_container_tab .moduleDesc .metadata dl dd { padding-right:10px;}
#modules_list_container_tab .moduleDesc .metadata dl dt { font-weight:bold; padding-right:5px;}
#modules_list_container_tab .moduleDesc p.desc { color:#666; font-family: Georgia; font-style: italic; font-size:12px; display:block; clear:both;text-align: left}
#modules_list_container_tab .setup {background-color:#6db300; font-weight:bold; font-size:10px; color:#fff; text-transform:uppercase; position:relative; left:10px; padding:0px 4px; display: inline-block; border-radius:3px;}
#modules_list_container_tab .setup {background-color:#6db300; font-weight:bold; font-size:10px; color:#fff; text-transform:uppercase; position:relative; padding:2px 3px; display: inline-block; border-radius:3px;}
#modules_list_container_tab .row-actions-module {float: right;}
#modules_list_container_tab .setup.non-install { background-color:#ec7000;}
#modules_list_container_tab .setup.must-have { background-color: #ec7000;}
#modules_list_container_tab .setup.off{ background-color:#ccc;}
#modules_list_container_tab .setup.off{ background-color:#ccc; color:#666666}
#modules_list_container_tab .row-actions-module span { padding-right:5px;}
#modules_list_container_tab .row-actions-module span a { font-size:12px;}
#modules_list_container_tab ul.listing-grid-module { position:relative; margin:0; padding:0;}
@@ -546,6 +544,8 @@ form#product_form h4 { font-size:18px; font-weight:normal;}
#modules_list_container_tab .moduleGridDesc h3 { color:#3A6EA7; margin:0;}
#modules_list_container_tab ul.listing-grid-module li select { position:absolute; top:0; right:0px; }
.default_modules_list_display_type #modules_list_container_content li table tr td{border: none}
.default_modules_list_display_type #modules_list_container_content li table {border: solid 1px #ccc; height: 115px}
/*MODULE POSITION*/
.blocLiveEdit { float:right; clear:right; background-color: #EBEDF4; border: 1px solid #C2C4D9;display: block; width:250px;}
@@ -1,79 +1,81 @@
{*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2013 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
<tr class="{$class_row}">
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top">
<img class="imgm" alt="" src="{if isset($module->image)}{$module->image}{else}../modules/{$module->name}/{$module->logo}{/if}">
</td>
<td>
<div class="moduleDesc" id="anchor{$module->name|ucfirst}">
<h3>{$module->displayName} {$module->version}
</h3>
<p class="desc">
{if isset($module->description) && $module->description ne ''}
{$module->description|truncate:100:'…'}
{else}
&nbsp;
{/if}
</p>
</div>
</td>
</tr>
<tr>
<td>
{if isset($module->id) && $module->id gt 0 }
{if $module->active}
<span class="setup">{l s='Enabled'}</span>
{else}
<span class="setup off">{l s='Disabled'}</span>
{/if}
{else}
{if isset($module->type) && $module->type == 'addonsMustHave'}
<span class="setup must-have">{l s='Must Have'}</span>
{else}
<span class="setup off">{l s='Not installed'}</span>
{/if}
{/if}
</td>
<td class="tab_modules_actions_row">
{if isset($module->type) && $module->type == 'addonsMustHave'}
<a href="{$module->addons_buy_url}" target="_blank" class="button updated">
<span><img src="../img/admin/cart_addons.png">&nbsp;&nbsp;{displayPrice price=$module->price currency=$module->id_currency}</span></a>
{else if !isset($module->not_on_disk)}
{$module->optionsHtml}
<a href="#" class="button action_tab_module" data-option="select_{$module->name}" class="button">Valider</a>
{else}
<a href="{$module->options.install_url}" class="button action_tab_module"><span>{l s='Install'}</span></a>
{/if}
</td>
</tr>
</table>
{*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2013 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
<tr class="{$class_row}">
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="60" valign="top" width="75">
<img class="imgm" alt="" src="{if isset($module->image)}{$module->image}{else}../modules/{$module->name}/{$module->logo}{/if}">
</td>
<td height="60" width="220" valign="top">
<div class="moduleDesc" id="anchor{$module->name|ucfirst}">
<h3>{$module->displayName|truncate:40:'…'} {$module->version}
</h3>
<p class="desc">
{if isset($module->description) && $module->description ne ''}
{$module->description|truncate:100:'…'}
{else}
&nbsp;
{/if}
</p>
</div>
</td>
</tr>
<tr>
<td border="0" height="20" width="75" style="text-align:center" valign="bottom">
{if isset($module->id) && $module->id gt 0 }
{if $module->active}
<span class="setup">{l s='Enabled'}</span>
{else}
<span class="setup off">{l s='Disabled'}</span>
{/if}
{else}
{if isset($module->type) && $module->type == 'addonsMustHave'}
<span class="setup must-have">{l s='Must Have'}</span>
{else}
<span class="setup off">{l s='Not installed'}</span>
{/if}
{/if}
</td>
<td class="tab_modules_actions_row" height="20" border="0" width="220" valign="bottom">
<div style="float:right">
{if isset($module->type) && $module->type == 'addonsMustHave'}
<a href="{$module->addons_buy_url}" target="_blank" class="button updated">
<span><img src="../img/admin/cart_addons.png">&nbsp;&nbsp;{displayPrice price=$module->price currency=$module->id_currency}</span></a>
{else if !isset($module->not_on_disk)}
{$module->optionsHtml}
<a href="#" class="button action_tab_module" data-option="select_{$module->name}" class="button">Valider</a>
{else}
<a href="{$module->options.install_url}" class="button action_tab_module">{l s='Install'}</a>
{/if}
</div>
</td>
</tr>
</table>
</td>
@@ -28,9 +28,8 @@
{if !$shop_context}
<div class="warn">{l s='You have more than one shop and must select one to configure payment.'}</div>
{else}
<h2 class="space">{l s='Payment modules list'}</h2>
{if isset($url_modules)}
<input type="button" class="button" onclick="document.location='{$url_modules}'" value="{l s='Click to see the list of payment modules.'}" /><br>
{if isset($modules_list)}
{$modules_list}
{/if}
<br />
@@ -23,6 +23,10 @@
* International Registered Trademark & Property of PrestaShop SA
*}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7 lt-ie6 " lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8 ie7" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9 ie8" lang="en"> <![endif]-->
<!--[if gt IE 8]> <html lang="fr" class="no-js ie9" lang="en"> <![endif]-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{$iso}" lang="{$iso}">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
@@ -0,0 +1,40 @@
{*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2013 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
<h2 style="margin-top:0">{l s='Modules list'}</h2>
<div id="modules_list_container_tab" class="default_modules_list_display_type">
<ul id="modules_list_container_content" style="list-style-type:none; padding:0; margin:0;">
{if count($modules_list)}
{foreach from=$modules_list item=module}
<li style="display:block;float:left;">
{include file='controllers/modules/tab_module_line.tpl' class_row={cycle values=",row alt"}}
</li>
{/foreach}
{else}
<tr><td><b>{l s='No modules available in this section.'}</b></td></tr>
{/if}
</ul>
</div>
<div class="clear"></div>
@@ -117,11 +117,12 @@
}
{/block}
}
if ({$tab_modules_open})
openModulesList();
{if isset($tab_modules_open)}
if ({$tab_modules_open})
openModulesList();
{/if}
});
{if isset($tab_modules_list)}
$('.process-icon-modules-list').parent('a').unbind().bind('click', function (){
openModulesList();
});
@@ -140,7 +141,7 @@
controller : "AdminModules",
action : "getTabModulesList",
tab_modules_list : '{$tab_modules_list}',
back_tab_modules_list : '{$back_tab_modules_list}',
back_tab_modules_list : '{$back_tab_modules_list}'
},
success : function(data)
{
@@ -157,6 +158,7 @@
}
return false;
}
{/if}
//]]>
</script>
{/block}
+22 -9
View File
@@ -508,7 +508,7 @@ class TabCore extends ObjectModel
public static function getTabModulesList($id_tab)
{
$modules_list = array();
$modules_list = array('default_list' => array(), 'slider_list' => array());
$xml_tab_modules_list = false;
$db_tab_module_list = Db::getInstance()->executeS('
SELECT module
@@ -520,20 +520,33 @@ class TabCore extends ObjectModel
if (file_exists(_PS_ROOT_DIR_.Module::CACHE_FILE_TAB_MODULES_LIST))
$xml_tab_modules_list = @simplexml_load_file(_PS_ROOT_DIR_.Module::CACHE_FILE_TAB_MODULES_LIST);
$class_name = null;
$display_type = 'default_list';
if ($xml_tab_modules_list)
foreach ($xml_tab_modules_list->children() as $tab)
foreach($xml_tab_modules_list->tab as $tab)
{
foreach($tab->attributes() as $key => $value)
if ($key == 'class_name' && Tab::getIdFromClassName((string)$value) == $id_tab)
foreach ($tab->children() as $module)
foreach ($module->attributes() as $k => $v)
if ($k == 'name')
$modules_list[] = (string)$v;
if ($key == 'class_name')
$class_name = (string)$value;
if (Tab::getIdFromClassName((string)$class_name) == $id_tab)
{
foreach($tab->attributes() as $key => $value)
if ($key == 'display_type')
$display_type = (string)$value;
foreach ($tab->children() as $module)
foreach ($module->attributes() as $k => $v)
if ($k == 'name')
$modules_list[$display_type][] = (string)$v;
}
}
//merge tab modules preferences from db with xml
foreach($db_tab_module_list as $m)
if (!in_array($m, $modules_list))
$modules_list[] = $m['module'];
$modules_list['slider_list'][] = $m['module'];
return $modules_list;
}
}
}
+174 -13
View File
@@ -96,7 +96,13 @@ class AdminControllerCore extends Controller
/** @var array list to be generated */
protected $fields_list;
/** @var array modules list filters */
protected $filter_modules_list = null;
/** @var array modules list filters */
protected $modules_list = array();
/** @var array edit form to be generated */
protected $fields_form;
@@ -227,6 +233,7 @@ class AdminControllerCore extends Controller
protected $action;
protected $display;
protected $_includeContainer = true;
protected $tab_modules_list = array('default_list' => array(), 'slider_list' => array());
public $tpl_folder;
@@ -1016,7 +1023,7 @@ class AdminControllerCore extends Controller
'desc' => $this->l('Add new')
);
}
$this->addToolBarModulesListButton();
}
/**
@@ -1385,6 +1392,7 @@ class AdminControllerCore extends Controller
}
elseif (!$this->ajax)
{
$this->content .= $this->renderModulesList();
$this->content .= $this->renderList();
$this->content .= $this->renderOptions();
@@ -1404,23 +1412,32 @@ class AdminControllerCore extends Controller
*/
protected function initTabModuleList()
{
$tab_modules_list = array();
if (!$this->isFresh(Module::CACHE_FILE_TAB_MODULES_LIST, 604800))
$this->refresh(Module::CACHE_FILE_TAB_MODULES_LIST, 'http://'.Tab::TAB_MODULE_LIST_URL);
$tab_modules_list = Tab::getTabModulesList($this->id);
if ($tab_modules_list)
$this->tab_modules_list = Tab::getTabModulesList($this->id);
if (is_array($this->tab_modules_list['default_list']) && count($this->tab_modules_list['default_list']))
$this->filter_modules_list = $tab_modules_list['default_list'];
else if (is_array($this->tab_modules_list['slider_list']) && count($this->tab_modules_list['slider_list']))
{
$this->addToolBarModulesListButton();
$this->context->smarty->assign(array(
'tab_modules_list' => implode(',', $this->tab_modules_list['slider_list']),
'admin_module_ajax_url' => $this->context->link->getAdminLink('AdminModules'),
'back_tab_modules_list' => $this->context->link->getAdminLink(Tools::getValue('controller')),
'tab_modules_open' => (int)Tools::getValue('tab_modules_open')
));
}
}
protected function addToolBarModulesListButton()
{
if (is_array($this->tab_modules_list['slider_list']) && count($this->tab_modules_list['slider_list']))
$this->toolbar_btn['modules-list'] = array(
'href' => '#',
'desc' => $this->l('Modules List')
);
$this->context->smarty->assign(array(
'tab_modules_list' => implode(',', $tab_modules_list),
'admin_module_ajax_url' => $this->context->link->getAdminLink('AdminModules'),
'back_tab_modules_list' => $this->context->link->getAdminLink(Tools::getValue('controller')),
'tab_modules_open' => (int)Tools::getValue('tab_modules_open')
));
}
/**
@@ -1448,7 +1465,17 @@ class AdminControllerCore extends Controller
'iso_is_fr' => strtoupper($this->context->language->iso_code) == 'FR',
));
}
public function renderModulesList()
{
if ($this->getModulesList($this->filter_modules_list))
{
$helper = new Helper();
return $helper->renderModulesList($this->modules_list);
}
}
/**
* Function used to render the list to display for this controller
*/
@@ -2114,6 +2141,31 @@ class AdminControllerCore extends Controller
else
$this->_listTotal = Db::getInstance()->getValue('SELECT FOUND_ROWS() AS `'._DB_PREFIX_.$this->table.'`');
}
public function getModulesList($filter_modules_list)
{
if (!is_array($filter_modules_list) && !is_null($filter_modules_list))
$filter_modules_list = array($filter_modules_list);
if (!count($filter_modules_list))
return false; //if there is no modules to display just return false;
$all_modules = Module::getModulesOnDisk(true);
$this->modules_list = array();
foreach($all_modules as $module)
{
if (in_array($module->name, $filter_modules_list))
{
$this->fillModuleData($module, 'select');
$this->modules_list[] = $module;
}
}
if (count($this->modules_list))
return true;
return false; //no module found on disk just return false;
}
public function getLanguages()
{
@@ -2811,4 +2863,113 @@ class AdminControllerCore extends Controller
// No content, return false
return false;
}
public function fillModuleData(&$module, $output_type = 'link', $back = null)
{
$obj = null;
if ($module->onclick_option)
$obj = new $module->name();
// Fill module data
$module->logo = '../../img/questionmark.png';
if (file_exists('../modules/'.$module->name.'/logo.gif'))
$module->logo = 'logo.gif';
if (file_exists('../modules/'.$module->name.'/logo.png'))
$module->logo = 'logo.png';
$module->optionsHtml = $this->displayModuleOptions($module, $output_type);
$module->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);
$module->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);
$module->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);
$module->options['uninstall_onclick'] = ((!$module->onclick_option) ?
((empty($module->confirmUninstall)) ? '' : 'return confirm(\''.addslashes($module->confirmUninstall).'\');') :
$obj->onclickOption('uninstall', $module->options['uninstall_url']));
if ((Tools::getValue('module_name') == $module->name || in_array($module->name, explode('|', Tools::getValue('modules_list')))) && (int)Tools::getValue('conf') > 0)
$module->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)
unset($obj);
}
/**
* Display modules list
*
* @param $module
* @param $output_type (link or select)
* @param $back
*
* @return string
*/
protected $translationsTab = array();
public function displayModuleOptions($module, $output_type = 'link', $back = null)
{
if (!isset($this->translationsTab['Disable this module']))
{
$this->translationsTab['Disable this module'] = $this->l('Disable this module');
$this->translationsTab['Enable this module for all shops'] = $this->l('Enable this module for all shops');
$this->translationsTab['Disable'] = $this->l('Disable');
$this->translationsTab['Enable'] = $this->l('Enable');
$this->translationsTab['Reset'] = $this->l('Reset');
$this->translationsTab['Configure'] = $this->l('Configure');
$this->translationsTab['Delete'] = $this->l('Delete');
$this->translationsTab['Install'] = $this->l('Install');
$this->translationsTab['Uninstall'] = $this->l('Uninstall');
$this->translationsTab['This action will permanently remove the module from the server. Are you sure you want to do this?'] = $this->l('This action will permanently remove the module from the server. Are you sure you want to do this?');
}
$modules_options = array(
'configure-module' => array(
'href' => self::$currentIndex.'&configure='.urlencode($module->name).'&token='.$this->token.'&tab_module='.$module->tab.'&module_name='.urlencode($module->name),
'onclick' => $module->onclick_option && isset($module->onclick_option_content['configure']) ? $module->onclick_option_content['configure'] : '',
'title' => '',
'text' => $this->translationsTab['Configure'],
'cond' => $module->id && isset($module->is_configurable) && $module->is_configurable,
),
'desactive-module' => array(
'href' => self::$currentIndex.'&token='.$this->token.'&module_name='.urlencode($module->name).'&'.($module->active ? 'enable=0' : 'enable=1').'&tab_module='.$module->tab,
'onclick' => $module->active && $module->onclick_option && isset($module->onclick_option_content['desactive']) ? $module->onclick_option_content['desactive'] : '' ,
'title' => Shop::isFeatureActive() ? htmlspecialchars($module->active ? $this->translationsTab['Disable this module'] : $this->translationsTab['Enable this module for all shops']) : '',
'text' => $module->active ? $this->translationsTab['Disable'] : $this->translationsTab['Enable'],
'cond' => $module->id,
),
'reset-module' => array(
'href' => self::$currentIndex.'&token='.$this->token.'&module_name='.urlencode($module->name).'&reset&tab_module='.$module->tab,
'onclick' => $module->onclick_option && isset($module->onclick_option_content['reset']) ? $module->onclick_option_content['reset'] : '',
'title' => '',
'text' => $this->translationsTab['Reset'],
'cond' => $module->id && $module->active,
),
'delete-module' => array(
'href' => self::$currentIndex.'&delete='.urlencode($module->name).'&token='.$this->token.'&tab_module='.$module->tab.'&module_name='.urlencode($module->name),
'onclick' => $module->onclick_option && isset($module->onclick_option_content['delete']) ? $module->onclick_option_content['delete'] : 'return confirm(\''.$this->translationsTab['This action will permanently remove the module from the server. Are you sure you want to do this?'].'\');',
'title' => '',
'text' => $this->translationsTab['Delete'],
'cond' => true,
),
);
$return = '';
foreach($modules_options as $option_name => $option)
{
if ($option['cond'])
{
if ($output_type == 'link')
$return .= '<span class="'.$option_name.'">
<a class="action_module" href="'.$option['href'].(!is_null($back) ? '&back='.urlencode($back) : '').'" onclick="'.$option['onclick'].'" title="'.$option['title'].'">'.$option['text'].'</a>
</span>';
else if ($output_type == 'select')
$return .= '<option id="'.$option_name.'" data-href="'.$option['href'].(!is_null($back) ? '&back='.urlencode($back) : '').'" data-onclick="'.$option['onclick'].'">'.$option['text'].'</option>';
}
}
if ($output_type == 'select')
{
if (!$module->id)
$return = '<option data-onclick="" data-href="'.self::$currentIndex.'&install='.urlencode($module->name).'&token='.$this->token.'&tab_module='.$module->tab.'&module_name='.$module->name.'&anchor=anchor'.ucfirst($module->name).(!is_null($back) ? '&back='.urlencode($back) : '').'" >'.$this->translationsTab['Install'].'</option>'.$return;
else
$return = '<option data-onclick="" data-href="'.self::$currentIndex.'&uninstall='.urlencode($module->name).'&token='.$this->token.'&tab_module='.$module->tab.'&module_name='.$module->name.'&anchor=anchor'.ucfirst($module->name).(!is_null($back) ? '&back='.urlencode($back) : '').'" >'.$this->translationsTab['Uninstall'].'</option>'.$return;
$return = '<select id="select_'.$module->name.'">'.$return.'</select>';
}
return $return;
}
}
+10
View File
@@ -350,6 +350,16 @@ class HelperCore
return $tpl->fetch();
}
public function renderModulesList($modules_list)
{
$this->tpl_vars = array('modules_list' => $modules_list);
$tpl = $this->createTemplate('helpers/modules_list/list.tpl');
$tpl->assign($this->tpl_vars);
return $tpl->fetch();
}
public static function renderShopList()
{
+4 -2
View File
@@ -102,12 +102,13 @@
</modules>
<modules type="partner">
<module name="authorizeaim"/>
<module name="avalaratax"/>
<module name="cashticket"/>
<module name="criteo"/>
<module name="dejala"/>
<module name="dibs"/>
<module name="ebay"/>
<module name="envoimoinscher"/>
<module name="ebay"/>
<module name="envoimoinscher"/>
<module name="ekomi"/>
<module name="fedexcarrier"/>
<module name="fianetfraud"/>
@@ -121,6 +122,7 @@
<module name="paypal"/>
<module name="reverso"/>
<module name="secuvad"/>
<module name="shipwire"/>
<module name="socolissimo"/>
<module name="treepodia"/>
<module name="trustedshops"/>
+2 -1
View File
@@ -170,9 +170,10 @@ class AdminEmailsControllerCore extends AdminController
*/
public function initContent()
{
$this->initTabModuleList();
$this->initToolbar();
$this->addToolBarModulesListButton();
unset($this->toolbar_btn['save']);
$back = $this->context->link->getAdminLink('AdminHome');
$this->toolbar_btn['back'] = array(
+4 -112
View File
@@ -255,11 +255,11 @@ class AdminModulesControllerCore extends AdminController
$modules_list['not_installed'][] = $module;
}
}
$this->context->smarty->assign(array(
}
$this->context->smarty->assign(array(
'tab_modules_list' => $modules_list,
'admin_module_favorites_view' => $this->context->link->getAdminLink('AdminModules').'&select=favorites'
));
}
$this->smartyOutputContent('controllers/modules/tab_modules_list.tpl');
exit;
@@ -809,88 +809,6 @@ class AdminModulesControllerCore extends AdminController
return $html_error;
}
/**
* Display modules list
*
* @param $module
* @param $output_type (link or select)
* @param $back
*
* @return string
*/
protected $translationsTab = array();
public function displayModuleOptions($module, $output_type = 'link', $back = null)
{
if (!isset($this->translationsTab['Disable this module']))
{
$this->translationsTab['Disable this module'] = $this->l('Disable this module');
$this->translationsTab['Enable this module for all shops'] = $this->l('Enable this module for all shops');
$this->translationsTab['Disable'] = $this->l('Disable');
$this->translationsTab['Enable'] = $this->l('Enable');
$this->translationsTab['Reset'] = $this->l('Reset');
$this->translationsTab['Configure'] = $this->l('Configure');
$this->translationsTab['Delete'] = $this->l('Delete');
$this->translationsTab['Install'] = $this->l('Install');
$this->translationsTab['Uninstall'] = $this->l('Uninstall');
$this->translationsTab['This action will permanently remove the module from the server. Are you sure you want to do this?'] = $this->l('This action will permanently remove the module from the server. Are you sure you want to do this?');
}
$modules_options = array(
'configure-module' => array(
'href' => self::$currentIndex.'&configure='.urlencode($module->name).'&token='.$this->token.'&tab_module='.$module->tab.'&module_name='.urlencode($module->name),
'onclick' => $module->onclick_option && isset($module->onclick_option_content['configure']) ? $module->onclick_option_content['configure'] : '',
'title' => '',
'text' => $this->translationsTab['Configure'],
'cond' => $module->id && isset($module->is_configurable) && $module->is_configurable,
),
'desactive-module' => array(
'href' => self::$currentIndex.'&token='.$this->token.'&module_name='.urlencode($module->name).'&'.($module->active ? 'enable=0' : 'enable=1').'&tab_module='.$module->tab,
'onclick' => $module->active && $module->onclick_option && isset($module->onclick_option_content['desactive']) ? $module->onclick_option_content['desactive'] : '' ,
'title' => Shop::isFeatureActive() ? htmlspecialchars($module->active ? $this->translationsTab['Disable this module'] : $this->translationsTab['Enable this module for all shops']) : '',
'text' => $module->active ? $this->translationsTab['Disable'] : $this->translationsTab['Enable'],
'cond' => $module->id,
),
'reset-module' => array(
'href' => self::$currentIndex.'&token='.$this->token.'&module_name='.urlencode($module->name).'&reset&tab_module='.$module->tab,
'onclick' => $module->onclick_option && isset($module->onclick_option_content['reset']) ? $module->onclick_option_content['reset'] : '',
'title' => '',
'text' => $this->translationsTab['Reset'],
'cond' => $module->id && $module->active,
),
'delete-module' => array(
'href' => self::$currentIndex.'&delete='.urlencode($module->name).'&token='.$this->token.'&tab_module='.$module->tab.'&module_name='.urlencode($module->name),
'onclick' => $module->onclick_option && isset($module->onclick_option_content['delete']) ? $module->onclick_option_content['delete'] : 'return confirm(\''.$this->translationsTab['This action will permanently remove the module from the server. Are you sure you want to do this?'].'\');',
'title' => '',
'text' => $this->translationsTab['Delete'],
'cond' => true,
),
);
$return = '';
foreach($modules_options as $option_name => $option)
{
if ($option['cond'])
{
if ($output_type == 'link')
$return .= '<span class="'.$option_name.'">
<a class="action_module" href="'.$option['href'].(!is_null($back) ? '&back='.urlencode($back) : '').'" onclick="'.$option['onclick'].'" title="'.$option['title'].'">'.$option['text'].'</a>
</span>';
else if ($output_type == 'select')
$return .= '<option id="'.$option_name.'" data-href="'.$option['href'].(!is_null($back) ? '&back='.urlencode($back) : '').'" data-onclick="'.$option['onclick'].'">'.$option['text'].'</option>';
}
}
if ($output_type == 'select')
{
if (!$module->id)
$return = '<option data-onclick="" data-href="'.self::$currentIndex.'&install='.urlencode($module->name).'&token='.$this->token.'&tab_module='.$module->tab.'&module_name='.$module->name.'&anchor=anchor'.ucfirst($module->name).(!is_null($back) ? '&back='.urlencode($back) : '').'" >'.$this->translationsTab['Install'].'</option>'.$return;
else
$return = '<option data-onclick="" data-href="'.self::$currentIndex.'&uninstall='.urlencode($module->name).'&token='.$this->token.'&tab_module='.$module->tab.'&module_name='.$module->name.'&anchor=anchor'.ucfirst($module->name).(!is_null($back) ? '&back='.urlencode($back) : '').'" >'.$this->translationsTab['Uninstall'].'</option>'.$return;
$return = '<select id="select_'.$module->name.'">'.$return.'</select>';
}
return $return;
}
public function initModulesList(&$modules)
{
foreach ($modules as $k => $module)
@@ -1144,6 +1062,8 @@ class AdminModulesControllerCore extends AdminController
else
{
$this->fillModuleData($module);
$module->categoryName = (isset($this->list_modules_categories[$module->tab]['name']) ? $this->list_modules_categories[$module->tab]['name'] : $this->list_modules_categories['others']['name']);
if (isset($modules_preferences[$modules[$km]->name]))
$modules[$km]->preferences = $modules_preferences[$modules[$km]->name];
}
@@ -1203,32 +1123,4 @@ class AdminModulesControllerCore extends AdminController
}
$smarty->assign($tpl_vars);
}
public function fillModuleData(&$module, $output_type = 'link', $back = null)
{
$obj = null;
if ($module->onclick_option)
$obj = new $module->name();
// Fill module data
$module->logo = '../../img/questionmark.png';
if (file_exists('../modules/'.$module->name.'/logo.gif'))
$module->logo = 'logo.gif';
if (file_exists('../modules/'.$module->name.'/logo.png'))
$module->logo = 'logo.png';
$module->optionsHtml = $this->displayModuleOptions($module, $output_type, $back);
$module->categoryName = (isset($this->list_modules_categories[$module->tab]['name']) ? $this->list_modules_categories[$module->tab]['name'] : $this->list_modules_categories['others']['name']);
$module->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);
$module->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);
$module->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);
$module->options['uninstall_onclick'] = ((!$module->onclick_option) ?
((empty($module->confirmUninstall)) ? '' : 'return confirm(\''.addslashes($module->confirmUninstall).'\');') :
$obj->onclickOption('uninstall', $module->options['uninstall_url']));
if ((Tools::getValue('module_name') == $module->name || in_array($module->name, explode('|', Tools::getValue('modules_list')))) && (int)Tools::getValue('conf') > 0)
$module->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)
unset($obj);
}
}
+1 -1
View File
@@ -222,7 +222,7 @@ class AdminPaymentControllerCore extends AdminController
}
$this->tpl_view_vars = array(
'url_modules' => isset($token_modules) ? 'index.php?tab=AdminModules&token='.$token_modules.'&&filterCategory=payments_gateways' : null,
'modules_list' => $this->renderModulesList(),
'display_restrictions' => $display_restrictions,
'lists' => $lists,
'ps_base_uri' => __PS_BASE_URI__,
@@ -36,8 +36,9 @@ abstract class AdminStatsTabControllerCore extends AdminPreferencesControllerCor
public function initContent()
{
$this->initTabModuleList();
$this->addToolBarModulesListButton();
$this->toolbar_title = $this->l('Stats', 'AdminStatsTab');
if ($this->display == 'view')
{
// Some controllers use the view action without an object
+2
View File
@@ -352,6 +352,8 @@ select optgroup option {
#content {
padding: 1.25em;
padding-bottom: 0.5em;
position: relative;
z-index: 3000;
}
#news {