From 2ee1dd5813942b23dec73792393339efbc843560 Mon Sep 17 00:00:00 2001 From: mMarinetti Date: Mon, 21 Nov 2011 19:26:30 +0000 Subject: [PATCH] // AdminProducts informations fix, saveAndStay fix, [+] BO : if json, ajax-layout.tpl can generate json with conf, _errors, warnings, informations and page var // HelpAccess improvement // now Product does not require quantity anymore git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@10377 b9a71923-0436-4b27-9f14-aed3839534dd --- admin-dev/themes/template/footer.tpl | 23 +++ admin-dev/themes/template/layout-ajax.tpl | 127 +++++++------ admin-dev/themes/template/products/form.tpl | 4 +- .../themes/template/products/informations.tpl | 82 ++++++++- admin-dev/themes/template/toolbar.tpl | 8 + classes/AdminController.php | 61 ++++++- classes/Controller.php | 2 + classes/HelpAccess.php | 12 +- classes/Helper.php | 1 + classes/HelperForm.php | 7 + classes/HelperList.php | 7 + controllers/admin/AdminProductsController.php | 172 +++++------------- 12 files changed, 316 insertions(+), 190 deletions(-) diff --git a/admin-dev/themes/template/footer.tpl b/admin-dev/themes/template/footer.tpl index 41e6f7632..d3dcb8ca6 100644 --- a/admin-dev/themes/template/footer.tpl +++ b/admin-dev/themes/template/footer.tpl @@ -122,6 +122,29 @@ }); return false; }); + if($('.help-context')) + { + $.ajax({ + type: 'POST', + url: 'index.php', + data: { + 'ajax' : '1', + 'action' : 'helpAccess', + 'item' : '{$class_name}', + 'isoUser' : '{$iso_user}', + 'country' : '{$country_iso_code}', + 'version' : '{$smarty.const._PS_VERSION_}' + }, + async : true, + success: function(msg) { + if(msg.status == 'ok' && msg.content != 'none') + { + $(".help-context").html(msg.content); + $(".help-context").fadeIn("slow").show(); + } + } + }); + } }); diff --git a/admin-dev/themes/template/layout-ajax.tpl b/admin-dev/themes/template/layout-ajax.tpl index 5e2183c55..629b6a4f2 100644 --- a/admin-dev/themes/template/layout-ajax.tpl +++ b/admin-dev/themes/template/layout-ajax.tpl @@ -23,56 +23,77 @@ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} -{if isset($conf)} -
- {$conf} -
-{/if}{if count($errors)} {* @todo what is ??? AND $this->_includeContainer *} -
- X - {if count($errors) == 1} - {$errors[0]} - {else} - {$errors|count} {l s='errors'} -
-
    - {foreach $errors AS $error} -
  1. {$error}
  2. - {/foreach} -
- {/if} -
-{/if}{if isset($informations) && count($informations) && $informations} -
- {foreach $informations as $info} - {$info}
- {/foreach} -

-{/if}{if isset($confirmations) && count($confirmations) && $confirmations} -
- {foreach $confirmations as $conf} - {$conf}
- {/foreach} -

-{/if}{if count($warnings)} -
- - X - - - {if count($warnings) > 1} - {l s='There are'} {count($warnings)} {l s='warnings'} - {else} - {l s='There is'} {count($warnings)} {l s='warning'} - {/if} - - {l s='Click here to see more'} - - - -
-{/if}{$page} +{if isset($json)} +{ + status:{$status}, + conf:{$json}, + informations:{$informations}, + error:{$errors}, + warnings:{$warnings}, + content:{$page} +} +{else} + + {if isset($conf)} +
+ {$conf} +
+ {/if} + + {if count($errors)} {* @todo what is ??? AND $this->_includeContainer *} +
+ X + {if count($errors) == 1} + {$errors[0]} + {else} + {$errors|count} {l s='errors'} +
+
    + {foreach $errors AS $error} +
  1. {$error}
  2. + {/foreach} +
+ {/if} +
+ {/if} + + {if isset($informations) && count($informations) && $informations} +
+ {foreach $informations as $info} + {$info}
+ {/foreach} +

+ {/if} + + {if isset($confirmations) && count($confirmations) && $confirmations} +
+ {foreach $confirmations as $conf} + {$conf}
+ {/foreach} +

+ {/if} + + {if count($warnings)} +
+ + X + + + {if count($warnings) > 1} + {l s='There are'} {count($warnings)} {l s='warnings'} + {else} + {l s='There is'} {count($warnings)} {l s='warning'} + {/if} + + {l s='Click here to see more'} + + + +
+ {/if} + {$page} +{/if} diff --git a/admin-dev/themes/template/products/form.tpl b/admin-dev/themes/template/products/form.tpl index b3116c76f..8e2b17cfa 100644 --- a/admin-dev/themes/template/products/form.tpl +++ b/admin-dev/themes/template/products/form.tpl @@ -227,7 +227,7 @@ $(document).ready(function(){ //]]> -
+
@@ -255,6 +255,8 @@ $(document).ready(function(){ {/if}
+

diff --git a/admin-dev/themes/template/products/informations.tpl b/admin-dev/themes/template/products/informations.tpl index 15cb241a8..83781518f 100644 --- a/admin-dev/themes/template/products/informations.tpl +++ b/admin-dev/themes/template/products/informations.tpl @@ -962,8 +962,88 @@ $(document).ready(function(){ } {/if} -{$last_content} + + + + + {foreach from=$languages item=language} +
+ + {l s='Forbidden characters:'} !<;>;?=+#"°{}_$%  +
+ {/foreach} +

{l s='Tags separated by commas (e.g., dvd, dvd player, hifi)'}

+ + + + + + +
+ {* @todo : donot use 3 foreach, but assign var *} + {foreach from=$accessories item=accessory} + {$accessory.name|htmlentitiesUTF8}{if !empty($accessory.reference)}{$accessory.reference}{/if}
+ {/foreach} +
+ + + + +
+

{l s='Begin typing the first letters of the product name, then select the product from the drop-down list:'}

+ + {l s='Add an accessory'} +
+ + + +
+ +
+ + + + '; } + return $content; } } diff --git a/classes/Helper.php b/classes/Helper.php index 451fda01d..8a9531332 100755 --- a/classes/Helper.php +++ b/classes/Helper.php @@ -37,6 +37,7 @@ class HelperCore public $identifier; public $token; public $toolbar_btn; + public $ps_help_context; public $title; public $show_toolbar = true; public $context; diff --git a/classes/HelperForm.php b/classes/HelperForm.php index 6c253f835..3465aaffb 100644 --- a/classes/HelperForm.php +++ b/classes/HelperForm.php @@ -138,6 +138,13 @@ class HelperFormCore extends Helper $this->tpl->assign(array( 'title' => $this->title, 'toolbar_btn' => $this->toolbar_btn, + + 'ps_help_context' => $this->ps_help_context, + 'class_name' => get_class($this->context->controller), + 'iso_user' => $this->context->language->id, + 'country_iso_code' => $this->context->country->iso_code, + 'version' => _PS_VERSION_, + 'show_toolbar' => $this->show_toolbar, 'toolbar_fix' => $this->toolbar_fix, 'submit_action' => $this->submit_action, diff --git a/classes/HelperList.php b/classes/HelperList.php index dcf0b5d38..a58fa5944 100644 --- a/classes/HelperList.php +++ b/classes/HelperList.php @@ -564,6 +564,13 @@ class HelperListCore extends Helper 'show_toolbar' => $this->show_toolbar, 'toolbar_fix' => $this->toolbar_fix, 'toolbar_btn' => $this->toolbar_btn, + + 'ps_help_context' => $this->ps_help_context, + 'class_name' => get_class($this->context->controller), + 'iso_user' => $this->context->language->id, + 'country_iso_code' => $this->context->country->iso_code, + 'version' => _PS_VERSION_, + 'table' => $this->table, 'currentIndex' => $this->currentIndex, 'action' => $action, diff --git a/controllers/admin/AdminProductsController.php b/controllers/admin/AdminProductsController.php index 79a2029ff..9470081be 100644 --- a/controllers/admin/AdminProductsController.php +++ b/controllers/admin/AdminProductsController.php @@ -297,7 +297,7 @@ class AdminProductsControllerCore extends AdminController if (!sizeof($this->_errors)) { $attachment->add(); - Tools::redirectAdmin(self::$currentIndex.'&id_product='.(int)(Tools::getValue($this->identifier)).'&id_category='.(int)(Tools::getValue('id_category')).'&addproduct&conf=4&tabs=6&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&id_product='.(int)(Tools::getValue($this->identifier)).'&id_category='.(int)(Tools::getValue('id_category')).'&addproduct&conf=4&tabs=6&token='.($token ? $token : $this->token); } else $this->_errors[] = Tools::displayError('Invalid file'); @@ -312,7 +312,7 @@ class AdminProductsControllerCore extends AdminController if ($this->tabAccess['edit'] === '1') if ($id = (int)(Tools::getValue($this->identifier))) if (Attachment::attachToProduct($id, Tools::getValue('attachments'))) - Tools::redirectAdmin(self::$currentIndex.'&id_product='.(int)$id.(isset($_POST['id_category']) ? '&id_category='.(int)$_POST['id_category'] : '').'&conf=4&add'.$this->table.'&tabs=6&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&id_product='.(int)$id.(isset($_POST['id_category']) ? '&id_category='.(int)$_POST['id_category'] : '').'&conf=4&add'.$this->table.'&tabs=6&token='.($token ? $token : $this->token); } /* Product duplication */ @@ -349,7 +349,7 @@ class AdminProductsControllerCore extends AdminController { Hook::exec('addProduct', array('product' => $product)); Search::indexation(false, $product->id); - Tools::redirectAdmin(self::$currentIndex.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&conf=19&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&conf=19&token='.($token ? $token : $this->token); } } else @@ -368,7 +368,7 @@ class AdminProductsControllerCore extends AdminController { // @todo : redirect to the previous page instead of always product list if ($object->toggleStatus()) - Tools::redirectAdmin(self::$currentIndex.'&conf=5'.((($id_category = (!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1')) && Tools::getValue('id_product')) ? '&id_category='.$id_category : '').'&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&conf=5'.((($id_category = (!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1')) && Tools::getValue('id_product')) ? '&id_category='.$id_category : '').'&token='.($token ? $token : $this->token); else $this->_errors[] = Tools::displayError('An error occurred while updating status.'); } @@ -398,10 +398,10 @@ class AdminProductsControllerCore extends AdminController $object->deleteImages(); $object->deleted = 1; if ($object->update()) - Tools::redirectAdmin(self::$currentIndex.'&conf=1&token='.($token ? $token : $this->token).$category_url); + $this->redirect_after = self::$currentIndex.'&conf=1&token='.($token ? $token : $this->token).$category_url; } else if ($object->delete()) - Tools::redirectAdmin(self::$currentIndex.'&conf=1&token='.($token ? $token : $this->token).$category_url); + $this->redirect_after = self::$currentIndex.'&conf=1&token='.($token ? $token : $this->token).$category_url; $this->_errors[] = Tools::displayError('An error occurred during deletion.'); } } @@ -445,7 +445,7 @@ class AdminProductsControllerCore extends AdminController $id_category = Tools::getValue('id_category'); $category_url = empty($id_category) ? '' : '&id_category='.$id_category; - Tools::redirectAdmin(self::$currentIndex.'&conf=2&token='.$token.$category_url); + $this->redirect_after = self::$currentIndex.'&conf=2&token='.$token.$category_url; } $this->_errors[] = Tools::displayError('An error occurred while deleting selection.'); } @@ -487,7 +487,7 @@ class AdminProductsControllerCore extends AdminController $productId = (int)(Tools::getValue('id_product')); @unlink(_PS_TMP_IMG_DIR_.'/product_'.$productId.'.jpg'); @unlink(_PS_TMP_IMG_DIR_.'/product_mini_'.$productId.'.jpg'); - Tools::redirectAdmin(self::$currentIndex.'&id_product='.$image->id_product.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&addproduct&tabs=1'.'&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&id_product='.$image->id_product.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&addproduct&tabs=1'.'&token='.($token ? $token : $this->token); } } @@ -495,7 +495,7 @@ class AdminProductsControllerCore extends AdminController else if (isset($_GET['imgPosition']) && isset($_GET['imgDirection'])) { $image->updatePosition(Tools::getValue('imgDirection'), Tools::getValue('imgPosition')); - Tools::redirectAdmin(self::$currentIndex.'&id_product='.$image->id_product.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=1&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&id_product='.$image->id_product.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=1&token='.($token ? $token : $this->token); } } else @@ -608,7 +608,7 @@ class AdminProductsControllerCore extends AdminController if (!empty($is_virtual)) Product::updateIsVirtual($product->id); - Tools::redirectAdmin(self::$currentIndex.'&id_product='.$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=3&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&id_product='.$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=3&token='.($token ? $token : $this->token); } } } @@ -640,7 +640,7 @@ class AdminProductsControllerCore extends AdminController else Product::updateDefaultAttribute($id_product); - Tools::redirectAdmin(self::$currentIndex.'&add'.$this->table.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&tabs=3&id_product='.$product->id.'&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&add'.$this->table.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&tabs=3&id_product='.$product->id.'&token='.($token ? $token : $this->token); } else $this->_errors[] = Tools::displayError('Cannot delete attribute'); @@ -663,7 +663,7 @@ class AdminProductsControllerCore extends AdminController $product->cache_default_attribute = 0; $product->update(); } - Tools::redirectAdmin(self::$currentIndex.'&add'.$this->table.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&tabs=3&id_product='.$product->id.'&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&add'.$this->table.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&tabs=3&id_product='.$product->id.'&token='.($token ? $token : $this->token); } else $this->_errors[] = Tools::displayError('Cannot delete attributes'); @@ -679,7 +679,7 @@ class AdminProductsControllerCore extends AdminController { $product->deleteDefaultAttributes(); $product->setDefaultAttribute((int)(Tools::getValue('id_product_attribute'))); - Tools::redirectAdmin(self::$currentIndex.'&add'.$this->table.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&tabs=3&id_product='.$product->id.'&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&add'.$this->table.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&tabs=3&id_product='.$product->id.'&token='.($token ? $token : $this->token); } else $this->_errors[] = Tools::displayError('Cannot make default attribute'); @@ -724,7 +724,7 @@ class AdminProductsControllerCore extends AdminController } } if (!sizeof($this->_errors)) - Tools::redirectAdmin(self::$currentIndex.'&id_product='.(int)$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=4&conf=4&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&id_product='.(int)$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=4&conf=4&token='.($token ? $token : $this->token); } else $this->_errors[] = Tools::displayError('Product must be created before adding features.'); @@ -767,7 +767,7 @@ class AdminProductsControllerCore extends AdminController $this->_errors = Tools::displayError('An error occurred while updating the specific price.'); } if (!sizeof($this->_errors)) - Tools::redirectAdmin(self::$currentIndex.'&id_product='.(int)(Tools::getValue('id_product')).'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&update'.$this->table.'&tabs=2&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&id_product='.(int)(Tools::getValue('id_product')).'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&update'.$this->table.'&tabs=2&token='.($token ? $token : $this->token); } else $this->_errors[] = Tools::displayError('You do not have permission to add here.'); @@ -805,7 +805,7 @@ class AdminProductsControllerCore extends AdminController if (!$specificPrice->add()) $this->_errors = Tools::displayError('An error occurred while updating the specific price.'); else - Tools::redirectAdmin(self::$currentIndex.(Tools::getValue('id_category') ? '&id_category='.Tools::getValue('id_category') : '').'&id_product='.$id_product.'&add'.$this->table.'&tabs=2&conf=3&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.(Tools::getValue('id_category') ? '&id_category='.Tools::getValue('id_category') : '').'&id_product='.$id_product.'&add'.$this->table.'&tabs=2&conf=3&token='.($token ? $token : $this->token); } } else @@ -825,7 +825,7 @@ class AdminProductsControllerCore extends AdminController if (!$specificPrice->delete()) $this->_errors[] = Tools::displayError('An error occurred while deleting the specific price'); else - Tools::redirectAdmin(self::$currentIndex.(Tools::getValue('id_category') ? '&id_category='.Tools::getValue('id_category') : '').'&id_product='.$obj->id.'&add'.$this->table.'&tabs=2&conf=1&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.(Tools::getValue('id_category') ? '&id_category='.Tools::getValue('id_category') : '').'&id_product='.$obj->id.'&add'.$this->table.'&tabs=2&conf=1&token='.($token ? $token : $this->token); } } else @@ -842,12 +842,12 @@ class AdminProductsControllerCore extends AdminController if (!SpecificPrice::setPriorities($priorities)) $this->_errors[] = Tools::displayError('An error occurred while updating priorities.'); else - Tools::redirectAdmin(self::$currentIndex.'&id_product='.$obj->id.'&add'.$this->table.'&tabs=2&conf=4&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&id_product='.$obj->id.'&add'.$this->table.'&tabs=2&conf=4&token='.($token ? $token : $this->token); } else if (!SpecificPrice::setSpecificPriority((int)($obj->id), $priorities)) $this->_errors[] = Tools::displayError('An error occurred while setting priorities.'); else - Tools::redirectAdmin(self::$currentIndex.(Tools::getValue('id_category') ? '&id_category='.Tools::getValue('id_category') : '').'&id_product='.$obj->id.'&add'.$this->table.'&tabs=2&conf=4&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.(Tools::getValue('id_category') ? '&id_category='.Tools::getValue('id_category') : '').'&id_product='.$obj->id.'&add'.$this->table.'&tabs=2&conf=4&token='.($token ? $token : $this->token); } /* Customization management */ else if (Tools::isSubmit('submitCustomizationConfiguration')) @@ -866,7 +866,7 @@ class AdminProductsControllerCore extends AdminController if (!sizeof($this->_errors) && !$product->update()) $this->_errors[] = Tools::displayError('An error occurred while updating customization configuration.'); if (!sizeof($this->_errors)) - Tools::redirectAdmin(self::$currentIndex.'&id_product='.$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=5&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&id_product='.$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=5&token='.($token ? $token : $this->token); } else $this->_errors[] = Tools::displayError('Product must be created before adding customization possibilities.'); @@ -886,7 +886,7 @@ class AdminProductsControllerCore extends AdminController if (!sizeof($this->_errors) && !$product->updateLabels()) $this->_errors[] = Tools::displayError('An error occurred while updating customization.'); if (!sizeof($this->_errors)) - Tools::redirectAdmin(self::$currentIndex.'&id_product='.$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=5&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&id_product='.$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=5&token='.($token ? $token : $this->token); } else $this->_errors[] = Tools::displayError('Product must be created before adding customization possibilities.'); @@ -903,7 +903,7 @@ class AdminProductsControllerCore extends AdminController if (!$object->updatePosition((int)(Tools::getValue('way')), (int)(Tools::getValue('position')))) $this->_errors[] = Tools::displayError('Failed to update the position.'); else - Tools::redirectAdmin(self::$currentIndex.'&'.$this->table.'Orderby=position&'.$this->table.'Orderway=asc&conf=5'.(($id_category = (!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1')) ? ('&id_category='.$id_category) : '').'&token='.Tools::getAdminTokenLite('AdminProducts')); + $this->redirect_after = self::$currentIndex.'&'.$this->table.'Orderby=position&'.$this->table.'Orderway=asc&conf=5'.(($id_category = (!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1')) ? ('&id_category='.$id_category) : '').'&token='.Tools::getAdminTokenLite('AdminProducts'); } else if (Tools::isSubmit('submitAccountingDetails')) $this->postProcessFormAccounting(); @@ -978,7 +978,7 @@ class AdminProductsControllerCore extends AdminController @unlink(_PS_TMP_IMG_DIR_.'/product_'.$image->id_product.'.jpg'); @unlink(_PS_TMP_IMG_DIR_.'/product_mini_'.$image->id_product.'.jpg'); if (!$this->ajax) - Tools::redirectAdmin($currentIndex.'&id_product='.$image->id_product.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=1'.'&token='.($token ? $token : $this->token)); + $this->redirect_after = $currentIndex.'&id_product='.$image->id_product.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=1'.'&token='.($token ? $token : $this->token); else $this->content = '{"status":"ok"}'; } @@ -1207,7 +1207,7 @@ class AdminProductsControllerCore extends AdminController Hook::exec('updateProduct', array('product' => $object)); Search::indexation(false, $object->id); if (Tools::getValue('resizer') == 'man' && isset($id_image) && is_int($id_image) && $id_image) - Tools::redirectAdmin(self::$currentIndex.'&id_product='.$object->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&edit='.strval(Tools::getValue('productCreated')).'&id_image='.$id_image.'&imageresize&toconf=4&submitAddAndStay='.((Tools::isSubmit('submitAdd'.$this->table.'AndStay') || Tools::getValue('productCreated') == 'on') ? 'on' : 'off').'&token='.(($token ? $token : $this->token))); + $this->redirect_after = self::$currentIndex.'&id_product='.$object->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&edit='.strval(Tools::getValue('productCreated')).'&id_image='.$id_image.'&imageresize&toconf=4&submitAddAndStay='.((Tools::isSubmit('submitAdd'.$this->table.'AndStay') || Tools::getValue('productCreated') == 'on') ? 'on' : 'off').'&token='.(($token ? $token : $this->token)); // Save and preview if (Tools::isSubmit('submitAddProductAndPreview')) @@ -1224,14 +1224,14 @@ class AdminProductsControllerCore extends AdminController $preview_url .= '&'; $preview_url .= 'adtoken='.$token.'&ad='.$admin_dir; } - Tools::redirectAdmin($preview_url); + $this->redirect_after = $preview_url; } else if (Tools::isSubmit('submitAdd'.$this->table.'AndStay') || ($id_image && $id_image !== true)) // Save and stay on same form // Save and stay on same form if (Tools::isSubmit('submitAdd'.$this->table.'AndStay')) - Tools::redirectAdmin(self::$currentIndex.'&id_product='.$object->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&addproduct&conf=4&tabs='.(int)(Tools::getValue('tabs')).'&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&id_product='.$object->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&addproduct&conf=4&tabs='.(int)(Tools::getValue('tabs')).'&token='.($token ? $token : $this->token); // Default behavior (save and back) - Tools::redirectAdmin(self::$currentIndex.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&conf=4&token='.($token ? $token : $this->token).'&onredirigeici'); + $this->redirect_after = self::$currentIndex.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&conf=4&token='.($token ? $token : $this->token).'&onredirigeici'; } } else @@ -1278,16 +1278,17 @@ class AdminProductsControllerCore extends AdminController $preview_url .= '&adtoken='.$token.'&ad='.$admin_dir; } - Tools::redirectAdmin($preview_url); + $this->redirect_after = $preview_url; } if (Tools::getValue('resizer') == 'man' && isset($id_image) && is_int($id_image) && $id_image) - Tools::redirectAdmin(self::$currentIndex.'&id_product='.$object->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&id_image='.$id_image.'&imageresize&toconf=3&submitAddAndStay='.(Tools::isSubmit('submitAdd'.$this->table.'AndStay') ? 'on' : 'off').'&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&id_product='.$object->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&id_image='.$id_image.'&imageresize&toconf=3&submitAddAndStay='.(Tools::isSubmit('submitAdd'.$this->table.'AndStay') ? 'on' : 'off').'&token='.($token ? $token : $this->token); // Save and stay on same form if (Tools::isSubmit('submitAdd'.$this->table.'AndStay')) - Tools::redirectAdmin(self::$currentIndex.'&id_product='.$object->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&addproduct&conf=3&tabs='.(int)(Tools::getValue('tabs')).'&token='.($token ? $token : $this->token)); - // Default behavior (save and back) - Tools::redirectAdmin(self::$currentIndex.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&conf=3&token='.($token ? $token : $this->token)); + $this->redirect_after = self::$currentIndex.'&id_product='.$object->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&addproduct&conf=3&tabs='.(int)(Tools::getValue('tabs')).'&token='.($token ? $token : $this->token); + else + // Default behavior (save and back) + $this->redirect_after = self::$currentIndex.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&conf=3&token='.($token ? $token : $this->token); } } else @@ -1756,10 +1757,18 @@ class AdminProductsControllerCore extends AdminController 'href' => '#todo'.$this->context->link->getAdminLink('AdminProducts').'&id_product='.$product->id, 'desc' => $this->l('Create'), ); if($this->tabAccess['edit']) + { $this->toolbar_btn['save'] = array( - 'short' => 'Save', - 'href' => '#todo'.$this->context->link->getAdminLink('AdminProducts').'&id_product='.$product->id, 'desc' => $this->l('Save'), - ); + 'short' => 'Save', + 'href' => '#todo'.$this->context->link->getAdminLink('AdminProducts').'&id_product='.$product->id, + 'desc' => $this->l('Save'), + ); + $this->toolbar_btn['save-and-stay'] = array( + 'short' => 'SaveAndStay', + 'href' => '#todo'.$this->context->link->getAdminLink('AdminProducts').'&id_product='.$product->id, + 'desc' => $this->l('Save and stay'), + ); + } } parent::initToolbar(); $this->context->smarty->assign('toolbar_fix', 1); @@ -2724,23 +2733,6 @@ class AdminProductsControllerCore extends AdminController $data->assign('images', $images); $data->assign('imagesTypes', ImageType::getImagesTypes('products')); - $content .= ' - - - '; - if ($product->id) - $product->tags = Tag::getProductTags((int)$product->id); - foreach ($this->_languages as $language) - { - $content .= '
- - '.$this->l('Forbidden characters:').' !<>;?=+#"°{}_$%  -
'; - } - $content .= '

'.$this->l('Tags separated by commas (e.g., dvd, dvd player, hifi)').'

- - '; $accessories = Product::getAccessoriesLight($this->context->language->id, $product->id); if ($postAccessories = Tools::getValue('inputAccessories')) @@ -2750,89 +2742,17 @@ class AdminProductsControllerCore extends AdminController if (!$this->haveThisAccessory($accessoryId, $accessories) && $accessory = Product::getAccessoryById($accessoryId)) $accessories[] = $accessory; } + $data->assign('accessories', $accessories); + $product->tags = Tag::getProductTags($product->id); - $content .= ' - - - -
'; - foreach ($accessories as $accessory) - $content .= htmlentities($accessory['name'], ENT_COMPAT, 'UTF-8').(!empty($accessory['reference']) ? ' ('.$accessory['reference'].')' : '').'
'; - $content .= '
- - - '; $this->addJqueryPlugin('autocomplete'); - $content .= ' -
-

'.$this->l('Begin typing the first letters of the product name, then select the product from the drop-down list:').'

- - '.$this->l('Add an accessory').' -
- - - -
- - - -   - - -
- '; // TinyMCE $iso_tiny_mce = $this->context->language->iso_code; $iso_tiny_mce = (file_exists(_PS_JS_DIR_.'tiny_mce/langs/'.$iso_tiny_mce.'.js') ? $iso_tiny_mce : 'en'); $data->assign('ad', dirname($_SERVER["PHP_SELF"])); $data->assign('iso_tiny_mce', $iso_tiny_mce); - $content .= ' - '; $categoryBox = Tools::getValue('categoryBox', array()); $data->assign('product', $product); $data->assign('last_content', $content);