Forum

Support Général Bug PHPBoost autocomplete

Myster Membre non connecté

Booster Mortier

Rang

Avatar

Inscrit le : 04/10/2010 à 19h18

Messages: 964

Le 28/11/2019 à 15h46
Bonjour,

Il y a un bug avec la fonction formulaire autocomplete de PHPBoost

Je parle de cette fonction

Code PHP :
 
        $fieldset->add_field(new FormFieldAjaxUserAutoComplete('username', $this->lang['chat.form.username'], '',
        array('required' => true)
        ));
 


Lorsqu'on tape un peu le pseudo et qu'on appui sur la flèche du bas, le pseudo dans le formulaire est remplacé par un code html que voilà par exemple pour mon pseudo:

Code HTML :
 
<a href="" class="admin" onclick="return false;" style="">Myster</a>


Et de plus lorsqu'on clique sur le pseudo proposé ça met bien le pseudo dedans, mais ça suggère de nouveau le pseudo alors que c'est censé se fermé si on clique sur le pseudo ? Edité par Myster Le 28/11/2019 à 15h47
Site web    
j1.seth Membre non connecté

Administrateur

Rang

Avatar

Chef de Projet Equipe Développement

Inscrit le : 01/09/2008 à 09h42

Messages: 2806

Le 28/11/2019 à 16h49
Ah j'ai corrigé ça pour la 5.3 mais j'ai oublié de le faire pour la 5.2 du coup je vais l'ajouter.

En attendant voici la correction à appliquer (2ème fichier uniquement si tu ne souhaites pas corriger le bugtracker) :
https://github.com/PHPBoost/PHPBoost/commit/d001868c402355b9e828dae323d4991228c20e7b#diff-a9c855095ae560e02a70b4e6682d91de

Au passage il te manque la contrainte suivante dans ton champ (regarde dans l'exemple de la correction du bugtracker) :
Code PHP :
array(new FormFieldConstraintUserExist())


Edit :
Ah si j'avais corrigé, c'est disponible depuis la 5.2.3
Site web    
Myster Membre non connecté

Booster Mortier

Rang

Avatar

Inscrit le : 04/10/2010 à 19h18

Messages: 964

Le 28/11/2019 à 18h18
Je suis pourtant en 5.2.3

Version du noyau
5.2.3

Et d'accord je vais mettre la contrainte :)

Même en remplacant par le code (même s'il est identique du coup) y'a toujours l'erreur, ça affiche un lien si on appui sur la flèche du bas Edité par Myster Le 28/11/2019 à 18h25
Site web    
j1.seth Membre non connecté

Administrateur

Rang

Avatar

Chef de Projet Equipe Développement

Inscrit le : 01/09/2008 à 09h42

Messages: 2806

Le 28/11/2019 à 19h49
Ah j'avais pas vu que c'était avec la flèche du bas.
Il faut que je regarde plus en détail du coup j'ai pas pris en compte je fais à la souris.
Site web    
j1.seth Membre non connecté

Administrateur

Rang

Avatar

Chef de Projet Equipe Développement

Inscrit le : 01/09/2008 à 09h42

Messages: 2806

Le 28/11/2019 à 20h02
Essayes en ajoutant l'option suivante :
Code PHP :
'display_html_in_suggestions' => false

Elle est à true par défaut pour ce champ.
Site web    
Myster Membre non connecté

Booster Mortier

Rang

Avatar

Inscrit le : 04/10/2010 à 19h18

Messages: 964

Le 28/11/2019 à 20h13
En faisant ça, ça m'affiche le lien <a href=""> en suggestion lorsque je tape un pseudo, ça propose plus les pseudos mais les liens <a href="">
Site web    
j1.seth Membre non connecté

Administrateur

Rang

Avatar

Chef de Projet Equipe Développement

Inscrit le : 01/09/2008 à 09h42

Messages: 2806

Le 28/11/2019 à 22h44
Ok bizarre il faut que j'arrive à reproduire ça.
Site web    
Myster Membre non connecté

Booster Mortier

Rang

Avatar

Inscrit le : 04/10/2010 à 19h18

Messages: 964

Le 29/11/2019 à 21h14
Bonsoir,

J'ai une petite question d'ailleurs, existe t-il une contrainte qui recherche dans la bdd si un champ existe, par exemple j'ai un formulaire avec un champ de type texte, pour la création d'une news (c'est un exemple) j'aimerais que l'utilisateur ne puisse pas mettre le titre "Blabla" s'il est présent dans la bdd

Merci :]

Edit, J'ai résolu le problème, j'ai ajouter une nouvelle contrainte (FormFieldConstraintChannelNotExist) et le js

Code JAVASCRIPT :
 
function ChannelNotExist(e, r) {
    var t = HTMLForms.getField(e);
    if (t) {
        var a = t.getValue(),
            i = "";
        return "" != a && jQuery.ajax({
            url: PATH_TO_ROOT + "/kernel/framework/ajax/user_xmlhttprequest.php",
            type: "post",
            async: !1,
            data: {
                name: a,
                token: TOKEN
            },
            success: function(e) {
                1 != e && (i = r)
            }
        }), i
    }
    return ""
}
 


Et le userxhtml

Code PHP :
 
elseif(!empty($name)) // Vérification de l'existence du salon pour la création d'une communauté
{
$req = $db_querier->count('matable','WHERE name=:name',array('name'=> "#".$name));
if($req)
{
    echo 0;
}
else // si le count renvoi 0 alors
{
    echo 1;
}
}
 


Cependant j'ai une question, vu qu'on fait un count dans ce fichier, à quoi ça sert de faire une requête dans le fichier de la contrainte ? Vu que le count dis si y'a ou pas la valeur présente dans la bdd ? Perso j'en ai pas mis et ça fonctionne mais si c'est présent dans les autres fichiers genre userexist, c'est que ça dois servir à quelque chose ? Edité par Myster Le 30/11/2019 à 14h49
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie