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.