PluXml Forum Home Documentation Ressources Forum Blog PluCSS Github

Ne l'appelez plus jamais submit !!!

bazooka07bazooka07 PluXml Lead Developer, Moderator
Bonjour,

Je suis en train de modifier quelques scripts php dans core/admin car j'ai la flemme d'appuyer sur le bouton à côté d'une liste de choix pour valider un changement. Eh oui, la paresse est un art que je trouve très respectable :D
La manip est assez simple, il suffit d'appeler la fonction submit() d'un formulaire quand il se produit un évènement onchange sur un select.
En code, ça donne ceci :
[== HTML ==]
<select name="mon select" onchange="this.form.submit();" >
Pour le gestionnaire de medias, core/admin/medias.php, ça passe tout seul et c'est bien agréable au final.
Par contre pour article.php lorsque je fais la même chose pour filtrer par catégorie, c'est la grosse galère avec l'erreur suivante :
[== Indéfini ==]
this.form.submit is not a function
Comme dirait une chanteuse : Non, mais je rêve !!
Mais heureusement, il y a Google qui m'a soufflé il y a du 'name="submit"'
Et là, découverte du gros bug en utilisant
[== Indéfini ==]
grep 'name="submit' core/admin/*.php :

categories.php:         <input class="button submit" type="submit" name="submit" value="<?php echo L_OK ?>" onclick="return confirmAction(this.form, 'id_selection', 'delete', 'idCategory[]', '<?php echo L_CONFIRM_$
index.php:              <input name="sel1" class="button submit" type="button" name="submit" value="<?php echo L_OK; ?>" onclick="return confirmAction(this.form, 'id_selection1', 'delete', 'idArt[]', '<?php echo L$
index.php:                                      <input class="button submit<?php echo $_SESSION['sel_cat']!='all'?' select':'' ?>" type="submit" name="submit" value="<?php echo L_ARTICLES_FILTER_BUTTON ?>" />
index.php:              <input name="sel2" class="button submit" type="button" name="submit" value="<?php echo L_OK; ?>" onclick="return confirmAction(this.form, 'id_selection2', 'delete', 'idArt[]', <?php echo L_$
parametres_edittpl.php:                 <input  class="button update" name="submit" type="submit" value="<?php echo L_SAVE_FILE ?>" />
parametres_plugincss.php:                       <input  class="button update" name="submit" type="submit" value="<?php echo L_SAVE_FILE ?>" />
parametres_plugins.php:                 <input class="button submit" type="submit" name="submit" value="<?php echo L_OK ?>" onclick="return confirmAction(this.form, 'id_selection', 'delete', 'chkAction[]', '<?php $
parametres_users.php:                           <input class="button submit" type="submit" name="submit" value="<?php echo L_OK ?>" onclick="return confirmAction(this.form, 'id_selection', 'delete', 'idUser[]', '<$
statiques.php:                          <input class="button submit" type="submit" name="submit" value="<?php echo L_OK ?>" onclick="return confirmAction(this.form, 'id_selection', 'delete', 'idStatic[]', '<?php e$

Ne jamais nommer un élément de formulaire submit !!

Pour corriger, soit vous y faites à la mano, ou si vous êtes sous Linux, allez dans le répertoire core/admin et faites :
[== Indéfini ==]
for f in `grep -l 'name="submit' *.php`; do sed -i 's/\s*name="submit"//' $f; done
sudo chgrp www-data *.php 

Faites quand même une sauvegarde avant si vous n'êtes pas sûr de vous.

Réponses

Connectez-vous ou Inscrivez-vous pour répondre.