diff --git a/admin-dev/themes/default/css/admin.css b/admin-dev/themes/default/css/admin.css index c995c233a..97f1f6389 100644 --- a/admin-dev/themes/default/css/admin.css +++ b/admin-dev/themes/default/css/admin.css @@ -194,7 +194,7 @@ 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;} +.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 .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;} @@ -233,6 +233,32 @@ a.module_toggle_all{color: #268CCD;} .toolbarBox .process-icon-standardRefund{ background-image: url('../img/process-icon-standard-refund.png');} .toolbarBox .process-icon-help{ background-image: url('../img/process-icon-help.png');} .toolbarBox .process-icon-help-new{ background-image: url('../img/process-icon-help-new.png');} +.toolbarBox .process-icon-modules-list{ background-image: url('../img/process-icon-modules-list.png');} + +.toolbarBox #modules_list_container { + background: none repeat scroll 0 0 #FFF; + border: solid 1px #CCC; + display: block; + float: right; + height: auto; + width: 300px; + position: absolute; + right: 13px; + top: 63px; + z-index: 100; + padding: 10px; + box-shadow: 1px 5px 5px #CCCCCC; + -moz-box-shadow: 1px 5px 10px #CCCCCC; + -webkit-box-shadow: 1px 5px 10px #CCCCCC; +} + +.toolbarBox #modules_list_container #modules_list_container_tab {margin-top: 10px;width: auto;height: auto; } +.toolbarBox #modules_list_container #modules_list_container_tab table {width: 100%;border-spacing: 0px; } +.toolbarBox #modules_list_container #modules_list_container_tab tr { height: auto} +.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} + div.fix-toolbar {border-bottom: 1px solid #E0E0E0;position:fixed;top:0;opacity:0.9;z-index:500;} @@ -423,7 +449,7 @@ form#product_form h4 { font-size:18px; font-weight:normal;} #moduleContainer .table tr th { height:40px;} #moduleContainer .table tr td { font-size:12px; vertical-align:top; padding: 5px 7px 0; border-top:1px solid #ccc; border-bottom:none;} #moduleContainer .table tr:first-child {border-top:1px solid #ccc} -#moduleContainer .table tr td .imgm {width:32px;} +#moduleContainer .table tr td .imgm , #modules_list_container_tab .imgm {width:32px;} #moduleContainer .moduleDesc { font-size:12px; position:relative; margin-bottom:10px;} #moduleContainer .moduleDesc h3 { color:#3A6EA7; margin:0;} #moduleContainer .moduleDesc .metadata { float:left; display:block; margin:5px 0;} @@ -446,6 +472,34 @@ form#product_form h4 { font-size:18px; font-weight:normal;} #moduleContainer .moduleGridDesc h3 { color:#3A6EA7; margin:0;} #moduleContainer ul.listing-grid-module li select { position:absolute; top:0; right:0px; } +/*TAB MODULES LIST*/ +#modules_list_container_tab table tr th { height:40px;} +#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 .moduleDesc { font-size:12px; margin-bottom:10px;} +#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;} +#modules_list_container_tab .moduleDesc .metadata dl { float:left; margin:0; padding-right:10px;} +#modules_list_container_tab .moduleDesc .metadata dl dt, .moduleDesc .metadata dl dd { float:left; margin:0; padding:0;} +#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.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 .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;} +#modules_list_container_tab ul.listing-grid-module li { float:left; border:1px solid #ccc; width:400px; min-height:30px; margin:10px; padding:5px; border-radius:4px;} +#modules_list_container_tab .moduleGridDesc { position:relative; display:block; height:30px;} +#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; } +#modules_list_container_tab table tr td.tab_modules_actions_row { height: 20px} + + /*MODULE POSITION*/ .blocLiveEdit { float:right; clear:right; background-color: #EBEDF4; border: 1px solid #C2C4D9;display: block; width:250px;} .blocLiveEdit h2 { background: transparent url('../img/live_edit.png') no-repeat scroll 10px 10px; height: 40px; line-height: 50px;margin: 0; padding: 0 10px; text-indent: 40px;} diff --git a/admin-dev/themes/default/img/process-icon-modules-list.png b/admin-dev/themes/default/img/process-icon-modules-list.png new file mode 100644 index 000000000..5c8af7d21 Binary files /dev/null and b/admin-dev/themes/default/img/process-icon-modules-list.png differ diff --git a/admin-dev/themes/default/template/controllers/modules/favorites.tpl b/admin-dev/themes/default/template/controllers/modules/favorites.tpl index 86275baa6..b3f43dfe3 100755 --- a/admin-dev/themes/default/template/controllers/modules/favorites.tpl +++ b/admin-dev/themes/default/template/controllers/modules/favorites.tpl @@ -1,12 +1,10 @@
- {include file='controllers/modules/header.tpl'} -
@@ -16,6 +14,7 @@ + @@ -27,6 +26,7 @@ {l s='Module Name'} {l s='Description'} {l s='Status'} + {l s='Tab'} {l s='Categories:'} {l s='Interest'} {l s='Favorite'} @@ -40,6 +40,22 @@ {$module->displayName} {$module->description|truncate:80:'...'} {if isset($module->id) && $module->id gt 0}{l s='Installed'}{else}{l s='Not Installed'}{/if} + + {assign var="module_name" value=$module->name} + + {$module->categoryName} '.$return.''; return $return; } @@ -925,7 +986,7 @@ class AdminModulesControllerCore extends AdminController // Module has not been filtered return false; } - + public function initContent() { // Adding Css @@ -951,7 +1012,13 @@ class AdminModulesControllerCore extends AdminController // Retrieve Modules Preferences $modules_preferences = ''; + $tab_modules_preferences = array(); $modules_preferences_tmp = Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'module_preference` WHERE `id_employee` = '.(int)$this->id_employee); + $tab_modules_preferences_tmp = Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'tab_module_preference` WHERE `id_employee` = '.(int)$this->id_employee); + + foreach($tab_modules_preferences_tmp as $i => $j) + $tab_modules_preferences[$j['module']][] = $j['id_tab']; + foreach ($modules_preferences_tmp as $k => $v) { if ($v['interest'] == null) @@ -1033,34 +1100,9 @@ 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')) - $modules[$km]->logo = 'logo.gif'; - if (file_exists('../modules/'.$module->name.'/logo.png')) - $modules[$km]->logo = 'logo.png'; - $modules[$km]->optionsHtml = $this->displayModuleOptions($module); - $modules[$km]->categoryName = (isset($this->list_modules_categories[$module->tab]['name']) ? $this->list_modules_categories[$module->tab]['name'] : $this->list_modules_categories['others']['name']); - $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'] = ((!$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) - + $this->fillModuleData($module); if (isset($modules_preferences[$modules[$km]->name])) $modules[$km]->preferences = $modules_preferences[$modules[$km]->name]; - unset($obj); } unset($object); } @@ -1109,6 +1151,7 @@ class AdminModulesControllerCore extends AdminController $tpl_vars['check_openssl'] = (extension_loaded('openssl') ? 'ok' : 'ko'); $tpl_vars['add_permission'] = $this->tabAccess['add']; + $tpl_vars['tab_modules_preferences'] = $tab_modules_preferences; if ($this->logged_on_addons) { @@ -1117,4 +1160,32 @@ class AdminModulesControllerCore extends AdminController } $smarty->assign($tpl_vars); } + + public function fillModuleData(&$module, $output_type = 'link') + { + $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->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); + } } diff --git a/install-dev/data/db_structure.sql b/install-dev/data/db_structure.sql index 572de3a2c..c4a01418a 100644 --- a/install-dev/data/db_structure.sql +++ b/install-dev/data/db_structure.sql @@ -2433,6 +2433,15 @@ CREATE TABLE `PREFIX_module_preference` ( UNIQUE KEY `employee_module` (`id_employee`, `module`) ) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; +CREATE TABLE `PREFIX_tab_module_preference` ( + `id_tab_module_preference` int(11) NOT NULL auto_increment, + `id_employee` int(11) NOT NULL, + `id_tab` int(11) NOT NULL, + `module` varchar(255) NOT NULL, + PRIMARY KEY (`id_tab_module_preference`), + UNIQUE KEY `employee_module` (`id_employee`, `id_tab`, `module`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + CREATE TABLE `PREFIX_carrier_tax_rules_group_shop` ( `id_carrier` int( 11 ) unsigned NOT NULL, `id_tax_rules_group` int(11) unsigned NOT NULL, diff --git a/install-dev/upgrade/sql/1.5.4.0.sql b/install-dev/upgrade/sql/1.5.4.0.sql index b758dbde7..06144b74c 100644 --- a/install-dev/upgrade/sql/1.5.4.0.sql +++ b/install-dev/upgrade/sql/1.5.4.0.sql @@ -10,3 +10,11 @@ UPDATE `PREFIX_customer` c, `PREFIX_orders` o SET c.id_lang = o.id_lang WHERE c. UPDATE `PREFIX_quick_access` SET `link` = 'index.php?controller=AdminCartRules&addcart_rule' WHERE `link` = 'index.php?tab=AdminDiscounts&adddiscount'; +CREATE TABLE `PREFIX_tab_module_preference` ( + `id_tab_module_preference` int(11) NOT NULL auto_increment, + `id_employee` int(11) NOT NULL, + `id_tab` int(11) NOT NULL, + `module` varchar(255) NOT NULL, + PRIMARY KEY (`id_tab_module_preference`), + UNIQUE KEY `employee_module` (`id_employee`, `id_tab`, `module`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; \ No newline at end of file