Changeset 67842 in spip-zone


Ignore:
Timestamp:
Nov 21, 2012, 4:09:28 PM (7 years ago)
Author:
esj@…
Message:

Associaspip amélioration: lorsqu'il n'y a qu'une seule destination, ne pas afficher un balise Select mais un Input en ReadOnly?. Il apparaît que r45740 a rendu cette page XHTML invalide, car un attribut Id ne peut avoir comme valeur une chaîne avec des crochets. Idem pour l'attribut Class, et d'ailleurs les dites classes ne sont pas définies dans le fichier CSS. Mais il semble que ces valeurs soient ici pour des manipulations JavaScript?. A tirer au clair.

Location:
_plugins_/Associaspip/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/Associaspip/trunk/association.css

    r60592 r67842  
    223223}
    224224
     225.formulaire_spip input[readonly] {border:0}
     226
    225227/* formulaires specifiques du plugin */
    226228.formulaire_ajouter_membres_groupe
  • _plugins_/Associaspip/trunk/inc/association_comptabilite.php

    r67832 r67842  
    5656 */
    5757function association_editeur_destinations($destinations, $defaut='') {
    58     $options = sql_allfetsel('id_destination,intitule', 'spip_asso_destination', '', '', 'intitule');
    59     if (!$options) return '';
    60     // Constuire les balises Options d'un Select
    61     // mais il faudrait arranger ca si une seule
    62     foreach ($options as $k => $v) {
    63         $options[$k] = '<option value="'. $v['id_destination'] .'">'.$v['intitule'].'</option>';
    64     }
    65     $options = join("\n", $options);
    66     $idIndex = 1;
    67     $res = '';
    68     if ( is_array($destinations) ) {
     58        $options = array();
     59        // Constuire les balises Options d'un Select
     60        // mais il faudrait arranger ca si une seule
     61        $q = sql_select('id_destination,intitule', 'spip_asso_destination', '', '', 'intitule');
     62
     63        while ($v = sql_fetch($q)) {
     64          // Ces deux variables sont utilisees plus bas si une seule iteration
     65                $id = $v['id_destination'];
     66                $texte = $v['intitule'];
     67                $options[$id] = "<option value='$id'>$texte</option>";
     68        }
     69        if (!$options) return '';
     70        $idIndex = 1;
     71        if ( is_array($destinations) ) {
    6972      // si on a une liste de destinations (on edite une operation)
    70             foreach ($destinations as $destId => $destMontant) { // restitution des listes de selection HTML
     73          $options = join("\n", $options) ;
     74          $res = '';
     75          foreach ($destinations as $destId => $destMontant) { // restitution des listes de selection HTML
    7176                $res .= '<div id="row'.$idIndex.'" class="choix"><ul>'
    7277                . '<li class="editer_id_dest['.$idIndex.']">'
     
    8792                $idIndex++;
    8893            }
    89     } else { // pas de destination deja definies pour cette operation
     94        } else { // pas de destination deja definies pour cette operation
    9095            if ($defaut!='') {
    91                 $options = preg_replace('/(value="'.$defaut.'")/', '$1 selected="selected"', $options);
     96              $options[$defaut] = str_replace('<option ', '<option selected="selected" ', $options[$defaut]);
    9297            }
    93             $res .= '<div id="row1" class="choix"><ul><li class="editer_id_dest[1]"><select name="id_dest[1]" id="id_dest[1]" >'
    94                 . $options . '</select></li>';
     98            $n = " name='id_dest[1]' id='id_dest[1]'";
     99            if ((count($options) == 1) AND $GLOBALS['association_metas']['unique_dest']) {
     100              $sel = "<input$n readonly='readonly' value='$id' /> ($texte)";
     101            } else $sel = "<select$n>" . join("\n", $options) . '</select>';
     102            $res = "<div id='row1' class='choix'><ul>\n<li class='editer_id_dest[1]'>$sel\n</li>";
    95103            if (!$GLOBALS['association_metas']['unique_dest']) { // destinations multiples
    96104                $res .= '<li class="editer_montant_dest[1]"><input name="montant_dest[1]" value="'
     
    100108            $res .= '</div>';
    101109    }
    102     if (!$GLOBALS['association_metas']['unique_dest']) // destinations multiples
    103             $res .= '<input type="hidden" id="idNextDestination" value="'.($idIndex+1).'">';
    104 
    105     return '<script type="text/javascript" src="'.find_in_path('javascript/jquery.destinations_form.js').'"></script>'
     110    return '<script type="text/javascript" src="'
     111      . find_in_path('javascript/jquery.destinations_form.js')
     112      . '"></script>'
    106113      . '<label for="destination">'
    107114      . _T('asso:destination')
     
    109116      . '<div id="divTxtDestination" class="formulaire_edition_destinations">'
    110117      . $res
     118      . ($GLOBALS['association_metas']['unique_dest'] ? '' :
     119        ('<input type="hidden" id="idNextDestination" value="'.($idIndex+1).'" />'))
    111120      . '</div>';
    112121
Note: See TracChangeset for help on using the changeset viewer.