Fork me on GitHub

Rapport de message :*
 

Re: Recensement des bugs pour Formulaire 3.33 Etoiles et texte double

Titre du sujet : Re: Recensement des bugs pour Formulaire 3.33 Etoiles et texte double
par Ghia sur 06/06/2008 01:36:45

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 ...
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

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