Jump to content

almeidaz

Members
  • Posts

    23
  • Joined

  • Last visited

About almeidaz

  • Birthday 07/07/1982

Profile Information

  • Location
    Nantes
  • Activity
    Freelancer

almeidaz's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. Bonjour, J'ai en ce moment un tpl qui inclut un javascript comme ceci : <script type="text/javascript"> var met = {if !empty($papp_method_var)}{$papp_method_var}{else}1{/if}; $(document).ready(function() { if (met == 1) { ... mais quand je le passe au validator PS il me dit que je dois escape les variables du type $data|escape:'htmlall':'UTF-8' j'ai donc essayé |escape:javascript mais sa na pas l'air de fonctionner. J'ai aussi regardé du coté de {literal} et {ldelim}{rdelim} mais je n'y suis pas arrivé non plus. Si vous avez une idée sur comment faire je suis preneur. Bonne journée à tous.
  2. Merci d'avoir pris le temps de répondre. Je suis passé à l'URSSAF en expliquant ce que je voulais faire, ils m'ont donc renvoyé vers la chambre de commerce qui elle m'a renvoyé vers l'URSSAF. Enfin vous connaissez la musique... Je suis donc à l'écoute de vos différentes expériences.
  3. Bonjour, je souhaiterais vendre des modules Prestashop via la plateforme Prestashop Addons en tant qu' auto entrepreneur, savez vous dans quelle catégorie cela rentre ? Activité commerciale ou activité liberale ? Merci d'avance.
  4. Bonjour, Je me pose la question suivante : lorsque l' on développe un module pour la version 1.6 faut il considéré que l'utilisateur final doit avoir installé la dernière version de prestashop (1.6.0.14 en ce jour ) ou bien faut il prendre en compte que l’utilisateur soit ou veuille rester en 1.6.0.9 (par ex.) pour x raison . un cas concret de code : Récemment les boutons save et save and stay se sont vu modifiés avec une nouvelle option qui attend que les tabs soient finis d'être chargés pour être clickable. disabled="disabled" et <i class="process-icon-save"> est devenu <i class="process-icon-loading"> Dans ce cas, que faut il faire pour le code final du module ? coder pour la 1.6.0.14 ou alors ajouter dans le code : if (version_compare(_PS_VERSION_, '1.6.0.14', '>') == 1) { return $this->display(__FILE__, 'views/templates/front/myfront.tpl'); } else { return $this->display(__FILE__, 'views/templates/front/myfrontbefore16014.tpl'); } Merci pour tous éclairages sur la question.
  5. Thanks for reply. But if i do that , i will show both div no ? you mean my modulefront.tpl gonna look like this : <div id="hook1" > template1 content </div> <div id="hook2" > template2 content </div> then both div will appear (with their own CSS in this case) I forgot to tell they have the same .tpl in my first post (i' ve updated my 1st post with .tpl call line and the code in modulefront.tpl) i think i will change return $this->display(__FILE__, 'views/templates/front/modulefront.tpl'); in each function with their own .tpl and in each i will put the div class i want. 1 CSS with 3 class + 3 files tpl (one for each hook) .aus{...} .aus1{...} .aus2{...} 1st tpl modulefront.tpl <div class="aus">template content </div> 2nd tpl modulefront1.tpl <div class="aus1">template content</div> 3rd tpl modulefront2.tpl <div class="aus2">template content</div> Finally, in this solution i need to create 3tpl files in the First solution i had created 3CSS files. What do you think about this solution ? In fact i'm still looking for solution with 3CSS files and 1tpl.
  6. Hi, presta community, I'm trying to call CSS for specific hook in my module there is my code : public function hookDisplayHeader($params) { $this->context->controller->addCSS($this->_path.'css/template.css'); $this->context->controller->addJS($this->_path.'/js/io.js'); } public function hookDisplayProductPapp1($params) { $this->context->controller->addCSS($this->_path.'css/template1.css'); return $this->display(__FILE__, 'views/templates/front/modulefront.tpl'); ... } public function hookDisplayProductPapp2($params) { $this->context->controller->addCSS($this->_path.'css/template2.css'); return $this->display(__FILE__, 'views/templates/front/modulefront.tpl'); ... } and my modulefront.tpl <div class="aus">template content</div> in my case template1.css win all the time : result from firebug when i select my <div class=aus in the HookDisplayProductPapp2 with template2.css .aus { template1.css:1 width: 100%; margin-top: -13px; position: relative; z-index: 1; } .aus { template2.css:1 width: 90%; position: relative; z-index: 1; } template.css:1 .aus { width: 100%; position: relative; z-index: 1; } any idea ? thx for help ! PS : i see we can add 'all' like this addCSS($this->_path.'css/template.css', 'all') there is other option than all ?
  7. Merci d' avoir pris le temps de répondre , malheureusement avec AdminModules&module_name= sa ne marche pas non plus . Cela me renvoi dans la page d'admin des modules sans aucun effet. J'ai réussi à obtenir ce que je voulais en ajoutant du javascript . Je commence par détailler certaine chose pour bien comprendre : je suis ici sur le .tpl du module qui est un onglet de la page admin d'un produit et non sur la page de la config du module le bouton en question devient: <div class="col-lg-5"> <div class="papp btn btn-default" {*onclick="return confirm('{l s='Do you really want to delete this file?' js=1}');"*}><i class="icon-trash"></i> {l s='Delete this file'}</div> j'ai donc passé onclick en commentaire car il ne sera plus utile dans ma facon de faire a suivre j' ai aussi ajouté class="papp j'enleve donc la methode get &pappDelete mon footer (j'ai pas tout mis, juste ce qui nous interesse) : <div class="panel-footer"> <a href="{$link->getAdminLink('AdminProducts')|escape:'html':'UTF-8'}" class="btn btn-default"><i class="process-icon-cancel"></i> {l s='Cancel'}</a> <input type="hidden" name="pappDeleteFile" id="pappDeleteFile" value=""/> <button type="submit" name="submitAddproduct" class="btn btn-default pull-right"><i class="process-icon-save"></i> {l s='Save'}</button> <button type="submit" name="submitAddproductAndStay" id="submitAddproductAndStayPapp" class="btn btn-default pull-right"><i class="process-icon-save"></i> {l s='Save and stay'}</button> </div> ici j' ajoute la ligne input type hidden pour pappDeleteFile et donne l'id="submitAddproductAndStayPapp" au button submit et j'ajoute le script suivant dans le tpl : <script type="text/javascript"> $(document).ready(function(){ $('.col-lg-5').find('.papp').attr('onclick',''); $('.col-lg-5').find('.papp').on('click',function(e){ if (confirm('Delete this file?')){ e.preventDefault(); var truc = 2; $('#pappDeleteFile').val(truc); $('#submitAddproductAndStayPapp').trigger('click'); }else{ e.preventDefault(); } }) }) </script> coté pappmod.php public function hookActionProductUpdate($params) { if (Tools::getValue('pappDeleteFile')) { $this->pappDeleteFile(); } ... } public function pappDeleteFile() { echo "bla bla mon code etc"; exit; } Comme ceci j'arrive à lancer mon code via mon bouton. J'espere avoir été clair et ne rien oublié de l 'explication. En gros, je passe d'une methode get en methode post. C'est dommage car j'aurais preferé la methode via l'url. Encore une fois s'il y a d'autres methodes possible je suis preneur mais je cherche surtout la method get. Alors peut etre en créant un controller dans modules/pappmod/controllers/admin/pappcontroller.php j' y arriverais (pas encore test).
  8. merci d'avoir repondu rapidement mais j'avoue etre un peu perdu. Dans mon cas mon module s'appelle pappmod. Il est situé dans modules/pappmod/pappmod.php Comme tu le précises j'utilise currentIndex ce qui donne en lien du bouton : http://127.0.0.1/projects/Demoprestashop/admin9977/index.php?controller=AdminProducts&pappDelete=true&updateproduct&token=8dfeeca2952d486b7866187cabad123e&id_product=1 comment dois-je indiquer le chemin du module? index.php?controller=pappmod&pappDelete=true si je fais ca il me dis controller introuvable. ou alors index.php?controller=AdminProducts&module=pappmod&pappDelete=true ou encore index.php?module=pappmod&pappDelete=true tous ca se sont des idées car je n'ai plus aucune idée à quoi cela doit ressembler. puis je m'aider d'un helper pour retrouver mon chemin ? j'ai vu un fichier nommer ModuleAdminController.php peut-il m'aider dans mon cas? dois-je definitivement supprimer controller=AdminProducts de mon url ou bien lui ajouter quelque chose? sa à l'air simple mais plus j'y reflechi et plus je m'embrouille. Merci d'avance.
  9. Bonjour, j'ai crée un module qui ajoute un nouvelle onglet dans l'admin d'un produit avec l'aide de hookDisplayAdminProductsExtra Dans celui-ci j'ai crée un bouton qui est à l'image de celui que l'on peut trouver dans virtualproduct.tpl celui du virtualproduct.tpl : <a href="{$currentIndex|escape:'html':'UTF-8'}&deleteVirtualProduct=true&updateproduct&token={$token|escape:'html':'UTF-8'}&id_product={$product->id}" class="btn btn-default" onclick="return confirm('{l s='Do you really want to delete this file?' js=1}');"><i class="icon-trash"></i> {l s='Delete this file'}</a> le mien dans mon module.tpl : <a href="{$currentIndex|escape:'html':'UTF-8'}&pappDelete=true&updateproduct&token={$token|escape:'html':'UTF-8'}&id_product={$product->id}" class="btn btn-default" onclick="return confirm('{l s='Do you really want to delete this file?' js=1}');"><i class="icon-trash"></i> {l s='Delete this file'}</a> la seule chose qui change c'est l' appelle de la function : pappDelete=true Donc si je modifie le fichier AdminProductsController.php en ajoutant ma fonction : public function processPappDelete() { echo "hello du adminproducts controller"; exit; } et en ajoutant aussi dans function initProcess() if (Tools::getValue('pappDelete')) { if ($this->tabAccess['delete'] === '1') $this->action = 'pappDelete'; else $this->errors[] = Tools::displayError('You do not have permission to delete this.'); } mon bouton fonctionne. le problème c'est que je ne souhaite pas modifier le fichier AdminProductsController.php mais appeler la fonction qui est dans mon module directement. Pour cela dans mon module.php j'ai mis ceci : public function hookActionProductUpdate($params) { if (Tools::getValue('pappDelete')) { if ($this->tabAccess['delete'] === '1') $this->action = 'pappDelete'; else $this->errors[] = Tools::displayError('You do not have permission to delete this.'); } ... puis aussi la fonction : public function processPappDelete() { echo "hello"; exit; } malheureusement je n'arrive pas atteindre la fonction de mon module. il appelle toujours la fonction de AdminProductControllers.php avez-vous une idée de comment puis-je faire pour appeler la fonction de mon module? Merci d'avance.
  10. Thx so much for reply ! i add ) at end of line ....$id_product)); too now when i try to update i got this : Unknown column '0' in 'field list' UPDATE `ps_product` SET `custom_field` = '',`0` = '`id_product` = 1' to be sure of what we are talking about , i want this in sql : UPDATE ps_product SET custom_field ='hello' WHERE id_product =1
  11. Hi , presta community i'm looking to simplify this function : public function hookActionProductUpdate($params) { // get all languages // for each of them, store the custom field! $id_product = (int)Tools::getValue('id_product'); $languages = Language::getLanguages(true); foreach ($languages as $lang) { if(!Db::getInstance()->update('product_lang', array('custom_field'=> pSQL(Tools::getValue('custom_field_'.$lang['id_lang']))) ,'id_lang = ' . $lang['id_lang'] .' AND id_product = ' .$id_product )) $this->context->controller->_errors[] = Tools::displayError('Error: ').mysql_error(); } } i've done some modifications : custom_field is direclty in product table then i don't want anymore $lang i've try to do this but don't seem to work : public function hookActionProductUpdate($params) { $id_product = (int)Tools::getValue('id_product'); Db::getInstance()->update('product', array('custom_field'=> pSQL(Tools::getValue('custom_field')) .' AND `id_product` = ' .$id_product) $this->context->controller->_errors[] = Tools::displayError('Error: ').mysql_error(); } any idea about update syntax ? thx.
×
×
  • Create New...