Fork me on GitHub




« 1 ... 8 9 10 (11) 12 13 14 15 »


Re: Recensement des bugs pour Formulaire 3.33
Régulier
Inscrit: 01/08/2005 10:48
De Braine-l'Alleud
Messages: 336
Bonjour à tous,

Concernant les pièces jointes, il me semble important de relater une petite mésaventure (qui pourrait arriver à d'autres):

- par défaut, je cache toujours les extensions connues. or parfois (allez savoir pourquoi) certains programmes - mais aucune idée desquels) - ont la facheuse habitude de proposer d'office des extensions en majuscules (du type nom_du_fichier.JPG ou autre)

- comme formulaire comprend que .JPG et .jpg c'est la même chose, il accepte le fichier joint mais ne l'ajoute pas dans le courrier envoyé.

=> Donc, toujours vérifier que les extensions de fichiers sont bien en minuscule

Posté le : 23/02/2008 21:27

Capouille
gardien du site "bbw291.be"

j'ai pas perdu l'esprit, il traine quelque part par líƒÂ  ...
Partager Twitter Partagez cette article sur GG+
Re: Recensement des bugs pour Formulaire 3.33
Xoops accro
Inscrit: 25/11/2004 12:53
De 48400 Florac - France
Messages: 3370
Comme indiqué plus haut dans la discussion cela ne concerne pas que l'extension du fichier, mais le nom du fichier dans son ensemble : si une(des) majuscule(s) est présente à un endroit quelconque, le fichier est bien uploadé, tout est converti en minuscules et le fichier n'est pas transmis car le script ne "trouve" plus le nom avec majuscules d'origine.
Merci pour la précision concernant l'extension, il n'était pas indiqué que ça concernait également ce point.

Philippe.

Posté le : 23/02/2008 21:55
Partager Twitter Partagez cette article sur GG+
Re: Recensement des bugs pour Formulaire 3.33
Xoops accro
Inscrit: 20/02/2008 20:27
De Belgium
Messages: 2708
Citation :

Ghia a écrit:
Citation :

blueteen a écrit:
Le dossier est créé avec ce code dans xoops_version.php
if (!file_exists(XOOPS_ROOT_PATH."/uploads/formulaire"))
{
$chemin=XOOPS_ROOT_PATH.'/uploads/formulaire';
mkdir("$chemin",0777);
}
if (!
file_exists(XOOPS_ROOT_PATH."/uploads/formulaire/imgform"))
{
$chemin=XOOPS_ROOT_PATH.'/uploads/formulaire/imgform';
mkdir("$chemin",0777);
}
Mon hébergeur dit: "En effet, le dossier est créé avec l'utilisateur apache nobody, qui est aussi le propriétaire. Par raisons des securite, ce n'est pas possible d'avoir les droits (0777) demandee, mais seulement drwxr-xr-x."

J'ai pensee de resoudre mon probleme moi meme par adaptee le module filemanager (qui ne marchait pas au 2.2.6) et puis installee. Neanmoins que les operations fichier travaille aussi en dessous Apache, c'est impossible de effacer les dossiers. Ca ne fait aucune erreur, mais le dossier reste en place. Je sais ajoute une dossier 'test' a cote de imgform et puis effacer. Quand je demande la liste du dossier en FTP, ca regarde la meme:
drwxr-xr-x    4 99       99           4096 Mar  7 16:38 .
drwxrwxrwx    4 monutil  monutil      4096 Mar  6 14:41 ..
drwxr-xr-x    2 99       99           4096 Mar  7 16:37 imgform
drwxr
-xr-x    2 99       99           4096 Mar  7 16:38 test
Ajouter les dossier en filemanager passe avec la meme code que la creation du dossiers formulaire et imgform.
mkdir"" XOOPS_ROOT_PATH "/$rep/$nomdir"0775 );
et ca c'efface par
rmdir"$location/$file);
sauf ce deux qui sont creer par le module formulaire.
Quelq'un qui a une idee?
Autrement, il ne me reste que demander a mon hebergeur de les effacer.


Autres problemes avec formulaire:
-1- c'etait une fois passee que avec le renummerotation du champs dans la formulaire, tous les texte fixes etait disparru. Les champs etaitent encore la, mais vide.

Il y a aussi des messages dans le PHP debug:

-2- Notice [PHP]: Undefined offset: 0 in file modules/formulaire/admin/ele_modif.php line 41

Dans le console d'erreur dans FireFox:

-3- Warning: Error in parsing value for property 'top'. Declaration dropped.
Source File: modules/formulaire/admin/index.php?id=4
Line: 0

Meme une fois, il y a une popup d'erreur:
-4- DHTML TIP MESSAGE VERSION 1.5 ERROR NOTICE
<DIV ID ="help"></DIV> tag missing or its ID has been altered

Je crois q'il y a encore des autre messages PHP debug, mais je n'ai pas pris note.

Posté le : 07/03/2008 18:55

Salutations, Gerard.
PS: Excusez mon mauvais français.
De la bonne manière de poser les questions
Partager Twitter Partagez cette article sur GG+
Re: Recensement des bugs pour Formulaire 3.33
Xoops accro
Inscrit: 20/02/2008 20:27
De Belgium
Messages: 2708
Quand je utilise le fonction cloner, ca ne marche plus. je recoit toujours l'erreur decrit dans la poste precedente avec No -4- et d'apres une erreur insert avec la texte SQL.
Il y a deux observations pour ce commande SQL:
- Une insert est faites pour un no de formulaire qui deja existe (5).
- Les valeurs sont de la formulaire qui est dernier dans la liste et ne pas de celui qui etait selectionnee.

Alors j'ai une fois regardee dans le code PHP et j'ai trouvee des choses problematiques (meme si je ne suis pas un specialiste XOOPS, ni PHP). Le fichier est admin/modform.php.

Ligne 66
if(!isset($_POST['id'])){
    
$id = isset ($_GET['id']) ? $_GET['id'] : '0';
}else {
    
$id $_POST['id'];
}

Le valeur $id pour le no de formulaire est trouvee dans la requete html, mais pas verifiee.
Pour eviter des injections SQL, il faut ajouter apres ligne 70:
$id intval($id);


Ligne 96
$sql="SELECT distinct desc_form, id_form FROM ".$xoopsDB->prefix("form_id");
Ca fait la selection des formulaires. Une probleme est que la liste n'est pas sortee. (C'est une cause de l'erreur, mais je revient sur ca plus tard.) Alors moi, j'aime une list alphabetique sur titre.
$sql="SELECT distinct desc_form, id_form FROM ".$xoopsDB->prefix("form_id")." order by desc_form";


Ligne 136
if( $op != 'addform' && $op != 'modform' && $op != 'renform' && $op != 'delform' && $op != 'showform' && $op != 'permform') {

Ici il y a la cause pourqoi les donnees clonee ne sont pas du formulaire selectionnee. $id est utilisee dans la loop et pointe a la fin sur le formulaire dernier. Comme ca seulement le formulaire dernier peut etre cloner.
Il faut ajouter l'operation cloner dans la liste.
if( $op != 'addform' && $op != 'modform' && $op != 'renform' && $op != 'delform' && $op != 'showform' && $op != 'permform' && $op != 'cloneform') {


ligne 202
redirect_header("modform.php"2_MD_ERRORTITLE);
Une petite remarque: je trouve ce temps de 2 secondes trop court pour lire et comprendre les messages. Alors j'ai mis partout 5 (redirect_header dans tous les fichiers).

Maitenant on arrive au fonction cloneform() au ligne 226
Ligne 246
$title $myts->makeTboxData4Save($row['desc_form']);
  
$admin $myts->makeTboxData4Save($row['admin']);
  
$groupe $myts->makeTboxData4Save($row['groupe']);
  
$email $myts->makeTboxData4Save($row['email']);
  
$expe $myts->makeTboxData4Save($row['expe']);
    
$url $myts->makeTboxData4Save($row['url']);
    
$help $myts->makeTboxData4Save($row['help']);
    
$send $myts->makeTboxData4Save($row['send']);
    
$msend $myts->makeTboxData4Save($row['msend']);
    
$msub $myts->makeTboxData4Save($row['msub']);
    
$mip $myts->makeTboxData4Save($row['mip']);
    
$mnav $myts->makeTboxData4Save($row['mnav']);
    
$cod $myts->makeTboxData4Save($row['cod']);
    
$save $myts->makeTboxData4Save($row['save']);
    
$onlyone $myts->makeTboxData4Save($row['onlyone']);
    
$image $myts->makeTboxData4Save($row['image']);
    
$nbjours $row['nbjours'];
    
$afftit $myts->makeTboxData4Save($row['afftit']);
    
$affimg $myts->makeTboxData4Save($row['affimg']);
    
$ordre $row['ordre'];
    
$qcm $myts->makeTboxData4Save($row['qcm']);
    
$affres $myts->makeTboxData4Save($row['affres']);
    
$affrep $myts->makeTboxData4Save($row['affrep']);
Je ne comprends pas pourqoi tous ce formatage est necessaire. Les donnees vient du database et sont deja formatee, non?

ligne 269
$idd $id 1;

Ici il y a une autre cause de l'erreur. L'assumption que la no pour la formulaire nouveau suivent la dernier de la liste non sortee (voir haut). Chez moi, la liste etait 1,5,4. Le dernier est 4, alors le nouveau est 5, qui existe deja et c'est pour ca que l'erreur vienne.

ligne 275
}

Ceci est la termination du condition au ligne 280:
if ($res)

Le resultat du recherce pour le formulaire a cloner. A mon avis la termination est trop tot. Si le formulaire demandee n'existe pas, il n'y pas de sens pour cloner les elements, ni le menu.
Il faut que la termination ce deplace vers ligne 327.

ligne 322
$sql2 sprintf("INSERT INTO %s (menuid, position, indent, itemname, margintop, marginbottom, itemurl, bold, status) VALUES (%u, %u, %u, '%s', '%s', '%s', '%s', %u, %u)"$xoopsDB->prefix("form_menu"), $idd$position$indent$itemname$margintop$marginbottom$itemurl$bold$status);

Il me semble que les tableaux form et form_menu sont ligne par ligne (pour chaque form_id, il existe une menu_id avec la meme valeur). Dans ce cas la, c'etait plus simple d'ajouter tous les champs form_menu en form et de suprimer ce tableau.

Alors j'ai un peu recrit la fonction cloneform. C'est plutot du SQL que du PHP.
function cloneform()
{
    global 
$xoopsDB$_POST$myts$eh$id$xoopsmodule;
    if (empty(
$id)) 
    {
        
redirect_header("modform.php"5"ID VIDE");
    }

// add the head original value in the table form_id
    
$sql=sprintf("SELECT * FROM ".$xoopsDB->prefix("form_id")." WHERE id_form=%u",$id);
    
$res $xoopsDB->query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.$xoopsDB->error().' <br /> cannot read the original form in the form_id table (modform.php / cloneform())');
    if (
$res)
    {
        
$sql sprintf("INSERT INTO %s (desc_form, admin, groupe, email, expe, url, help, send, msend, msub, mip, mnav, cod, save, onlyone, image, nbjours, afftit, affimg, ordre, qcm, affres, affrep) SELECT desc_form, admin, groupe, email, expe, url, help, send, msend, msub, mip, mnav, cod, save, onlyone, image, nbjours, afftit, affimg, ordre, qcm, affres, affrep FROM %s WHERE id_form=%u"$xoopsDB->prefix("form_id"), $xoopsDB->prefix("form_id"), $id);
        
$xoopsDB->queryF($sql) or die('Erreur insertion : <br />' $sql '<br />'); 
        
$idd mysql_insert_id();
// }

// add the body original values in the table form
        
$sql"SELECT * FROM ".$xoopsDB->prefix("form")." WHERE id_form=$id";
        
$res $xoopsDB->query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.$xoopsDB->error().' <br /> cannot read the original form in the form_id table (modform.php / cloneform())');
        if (
$res)
        {
            
$sql sprintf("INSERT INTO ".$xoopsDB->prefix('form')." (id_form, ele_type, ele_caption, ele_order, ele_req, ele_value, ele_display) SELECT %u as `id_form`, `ele_type`, `ele_caption`, `ele_order`, `ele_req`, `ele_value`, `ele_display` FROM ".$xoopsDB->prefix('form')." WHERE `id_form` = %u"$idd$id );
            
$xoopsDB->queryF($sql) or die('Erreur insertion : <br />' $sql '<br />'); 
        }

// add the original value in the table form_menu

        
$sql=sprintf("SELECT * FROM ".$xoopsDB->prefix("form_menu")." WHERE menuid=%u",$id);
        
$res $xoopsDB->query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.$xoopsDB->error().' <br /> cannot read the original formmenu in the form_menu table (modform.php / cloneform())');
        if (
$res)
        {
            
$itemurl XOOPS_URL.'/modules/formulaire/formulaire.php?title='.$idd.'';

            
$sql2 sprintf("INSERT INTO %s (menuid, position, indent, itemname, margintop, marginbottom, itemurl, bold, status) SELECT %u as menuid, position, indent, itemname, margintop, marginbottom, '%s' as itemurl, bold, status FROM %s WHERE menuid=%u"$xoopsDB->prefix("form_menu"), $idd$itemurl$xoopsDB->prefix("form_menu"), $id);
// echo $sql2;
            
$xoopsDB->queryF($sql2) or $eh->show("error : cannot insert values in the form_menu table (modform.php / cloneform())");
        }
    }
    
$url "modform.php";
    
Header("Location: $url");
}

Et ca a meme l'aire de marcher.

Encore une remarque: avec le 'die', quand le SQL donne une erreur, il y a toujours d'abord l'erreur popup DHTML (voir -4- dans ma poste precedente)

Pour etre bien tous les textes d'erreur doivent etre localiser (mis en fichier language).

Une autre chose est quand on specifie une element radio et dans l'edit de l'element en admin, on selectionne une de par exemple deux circles, ce n'est pas possible de deselectionnee ce choix.
Workaround: ajoute une troisieme, selectionne celui et efface le. Comme ca les deux choix sont de nouveau deselectionnee.

Posté le : 27/03/2008 18:32

Salutations, Gerard.
PS: Excusez mon mauvais français.
De la bonne manière de poser les questions
Partager Twitter Partagez cette article sur GG+
Re: Recensement des bugs pour Formulaire 3.33
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
Bonjour et merci pour ton analyse/travail !
Je suis sûr que Philou appréciera (et nous aussi

Posté le : 27/03/2008 18:52
Partager Twitter Partagez cette article sur GG+
Re: Recensement des bugs pour Formulaire 3.33
Xoops accro
Inscrit: 25/11/2004 12:53
De 48400 Florac - France
Messages: 3370
Bonsoir,

Concernant les problèmes (évoqués précédemment) d'affichage des étoiles (*) sur les champs requis des formulaires, il semble que ça provienne de modifications apparues depuis la version de xoops 2.0.16fr.

Dans le fichier :
www/class/xoopsform/themeform.php
Lignes 105 etc... :
"<span class='caption-marker'>*</span>".

qui n'existaient pas avant.

associées à un ajout dans www/xoops.css
Ligne 20 et suivantes :
/* For required elements in XOOPS form, can be overwritten in theme styles */
.xoops-form-element-caption .caption-marker {
    
displaynone;
}

.
xoops-form-element-caption-required .caption-marker {
    
color#ff0000;
    
padding-left2px;
}

.
xoops-form-element-help {
    
font-size90%;
    
padding-top5px;
    
font-weightnormal;


Si quelqu'un a un avis pertinent sur la "philosophie" de cette modification, je suis preneur

Philippe.

Posté le : 05/06/2008 18:32
Partager Twitter Partagez cette article sur GG+
Re: Recensement des bugs pour Formulaire 3.33 Etoiles et texte double
Xoops accro
Inscrit: 20/02/2008 20:27
De Belgium
Messages: 2708
Moi, j'utilise V2.2.6 et ca fait aussi des doubles, neanmoins que la programation est differente et la code php et css du poste precedente n'existe pas.

Le fichier www/class/xoopsform/themeform.php contient a la fin le fonction 'render':
/**
     * create HTML to output the form as a theme-enabled table with validation.
     *
     * @return    string
     */
    
function render()
    {
        
$hidden "";
        
$required =& $this->getRequired();
        
// Hack Hervé Thouzard
        
$reqnames=array();
        foreach(
array_keys($required) as $i) {
            
$reqnames[] = $required[$i]->getName();
        }
        
// End Hack Hervé Thouzard
        
$ret "<form name='".$this->getName()."' id='".$this->getName()."' action='".$this->getAction()."' method='".$this->getMethod()."' ".$this->getExtra().">n";
        foreach ( 
$this->getElements() as $ele ) {
            if (
is_object($ele) && $ele->isHidden()) {
                
$ret .= $ele->render()."n";
            }
        }
        
$ret .= "<table width='100%' class='outer' cellspacing='1'><tr><th colspan='2'>".$this->getTitle()."</th></tr>";
        foreach ( 
$this->getElements() as $ele ) {
            if (!
is_object($ele)) {
                
$ret .= $ele;
            } elseif (!
$ele->isHidden()) {
                
$class 'even';
                
$suppl='';
                if(
in_array($ele->getName(),$reqnames)) {
                    
$suppl=' *';
                }
                
$ret .= "<tr valign='top' align='left'><td class='head'>".$ele->getCaption().$suppl;
                
// End Hack Herv?Thouzard
                
if ($ele->getDescription() != '') {
                    
$ret .= '<br /><br /><span style="font-weight: normal;">'.$ele->getDescription().'</span>';
                }
                
$ret .= "</td><td class='$class'>".$ele->render()."</td></tr>";
                
//$count++;
            
}
        }
        if (
count($reqnames) > 0) {
            
//We have required fields - provide explanation for *
            
$ret .= "<tr class='foot'><td colspan='2'>* = "._REQUIRED."</td></tr>";
        }
        
$ret .= "</table>n</form>n";
        
$ret .= $this->renderValidationJStrue );
        return 
$ret;
    }


Alors j'ai aussi faites les lignes suivantes en commentaires pour eliminer les etoiles et textes explicatives doublees.

En formulaire.php:
Ligne 413:

//        echo "<div>"._AM_WARN."</div>";


et en /class/elementrenderer.php depuis ligne 52

//     $req = intval( $this->_ele->getVar('ele_req'));
// if ($req) $ele_caption = $ele_caption.' *';


Meme avec cettes adaptations, il y a encore des etoiles en trop. Toutes les champs, qui n'ont pas l'option required (comme 'radio', etc) ont toujours l'etoile pour obligee de remplir. Ca c'est aussi le cas pour des lignes avec les textes fixes, qui ne contient pas des champs a remplir.

Example ici.

Il me semble q'il faut peut-etre mis le 'required' a 'false' apres la creation des cettes 'form elements' ou quelque chose ...

Posté le : 06/06/2008 01:36

Salutations, Gerard.
PS: Excusez mon mauvais français.
De la bonne manière de poser les questions
Partager Twitter Partagez cette article sur GG+
Re: Recensement des bugs pour Formulaire 3.33 Etoiles et texte double
Xoops accro
Inscrit: 20/02/2008 20:27
De Belgium
Messages: 2708
Encore une petite correction en formulaire\blocks\formulaire_menu.php
+/- ligne 9
$block['css_file'] = XOOPS_URL "/modules/formulaire/formulaire.css";

doit etre
$block['css_file'] = XOOPS_URL "/modules/formulaire/scripts/formulaire.css";


Aussi en formulaire\blocks\qcm_menu.php

Posté le : 03/07/2008 23:07

Salutations, Gerard.
PS: Excusez mon mauvais français.
De la bonne manière de poser les questions
Partager Twitter Partagez cette article sur GG+
Re: Recensement des bugs pour Formulaire 3.33
Supporter Xoops
Inscrit: 09/01/2005 13:37
De Breizh
Messages: 16972
@phmo : celà laisse le choix de vouloir ou non afficher ces étoiles.
Par défaut, il a été décidé de ne pas les afficher via le core de xoops

@++

Posté le : 04/07/2008 00:27

La connaissance s'accroît quand on la partage ...
Partager Twitter Partagez cette article sur GG+
Re: Recensement des bugs pour Formulaire 3.33
Régulier
Inscrit: 27/10/2006 15:06
De l'Ouest
Messages: 357
Bonjour, depuis plusieurs mois tout fonctionnait , xoops 2.18 et formulaire 3.33 puis d'un seul coup blocage : pas de formulaire à s'ouvrir quand on clique sur le bouton qui ouvrait le formulaire ?
A+

Posté le : 06/07/2008 16:11
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
« 1 ... 8 9 10 (11) 12 13 14 15 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

42 Personne(s) en ligne (28 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 42 | Plus ...