[imc-italy] [italy-tech] migliorare la funzione make_checkbox_form in cache_class.inc

st3 st3 at riseup.net
Wed Mar 8 12:08:47 PST 2006


[provo a spendere un po' del mio tempo rispondendo in modo molto
dettagliato a questo tipo di email, che e' probabilmente il modo migliore
per spiegare con esempi le questioni tecniche piu' rilevanti - metto in cc
italy-list, chissa' mai che a qualcuno la cosa non sembri piu' semplice =]

On Wed, 08 Mar 2006 18:31:19 +0100
"pinna at incal.net" <pinna at incal.net> wrote:

> credo che questa funzione, contenuta in
> /sf-active/shared/classes/cache_class.inc [v. http://ln-s.net/+kG ],
> generi nell'interfaccia di admin l'incasinatissima serie di caselle
> che si puo' vedere come esempio nella prima parte del post nascosto
> http://italy.indymedia.org/news/2006/03/1012435.php
> 
> 1
> si vorre che generasse invece le caselle nell'ordine mostrato dalla
> *seconda* parte del post
> 
> 2
> l'ordine attuale delle caselle e' a detta di varie persone ostico, rende
> difficile la lettura delle categorie e di conseguenza ostacola l'utile
> lavoro di ricollocazione dei post nelle categorie appropriate

per queste due cose, andrebbe modificata la query fatta al db dalla
funzione che chiama make_checkbox_form, in modo da:
1) restituire anche catclass dalla tabella category (che poi andrebbe a
finire in $options)
2) cambiare il sorting dei risultati (ORDER BY name ASC, ad esempio)

> 3
> /sf-active/shared/classes/cache_class.inc e' un file condiviso con le
> altre installazioni (cioe' con gli altri IMC), quindi non credo che
> possiamo modificare questa funzione make_checkbox_form, ma magari
> possiamo aggiungere una funzione make_sorted_checkbox_form e aggiungerla
> senza problemi al file condiviso cache_class.inc

a me non sembra una buona idea, andrebbe piuttosto sistemato il problema
alla radice, in modo da:
1) ridurre la complessita' e quindi incrementare l'affidabilita'
2) sistemare il problema anche per gli altri imc
[e' un consiglio di metodo in generale piu' che una controindicazione
specifica per questo problema]

l'altro problema di questa funzione (e di molte altre) e' il fatto che non
sia per niente astratta dall'html, che e' una cattivissima idea perche':
1) rende il codice illeggibile
2) non e' associabile a un template
[ma qui e' una sbatta non indifferente cambiare questa cosa per cui io la
lascerei cosi']

> io per ora non so nemmeno leggerla

> function make_checkbox_form($checkbox_name, $options, $checked)

funzione make_checkbox_form, che prende come argomenti $checkbox_name (una
stringa), $options (un array bidimensionale 2xX), $checked (un array
monodimensionale)

>      {

inizio della funzione

>           while (list($key, $value) = each ($options))

    finche' $options contiene elementi, assegna una coppia di elementi
    rispettivamente alle variabili $key [1] e $value [2], e si sposta
    all'elemento successivo, poi:

>           {
>                $return_html .= "<input type=\"checkbox\" name=\"" .
> $checkbox_name . "\"";
>                $return_html .= " value=\"" . $key . "\"";

        concatena alla variabile $return_html [3] un certo codice html, che
        contiene le variabili citate [4]

>                if (is_array($checked))

            se $checked contiene elementi [5], allora:

>                {
>                     if (in_array($key,$checked))

                se l'elemento $key a cui siamo arrivati e' contenuto
                nell'array $checked, allora [6]

>                     {
>                          $return_html .= " checked=\"checked\"";

                    concatena alla variabile $return_html il codice html di
                    cui sopra [7]

>                     }
>                }
> 
>                $return_html .= " /> " . $value . "&nbsp;&nbsp;&nbsp;\n";

            concatena alla variabile $return_html la fine del tag html e la
            variabile $value

>           }
>           return $return_html;

    restituisce la variabile $return_html;

>     }
 
[1] $key indica l'id della categoria
[2] $value indica il nome della categoria
[3] la variabile $return_html contiene l'html che andra' poi restituito
dalla funzione per essere stampato a video
[4] in modo da fare una casella per ogni coppia id/nome
[5] se esistono caselle gia' attivate prima che il post venga editato
[6] se il valore che stiamo trattando e' contenuto nella lista delle
caselle gia' attivate
[7] imposta l'attributo html che indica che la casella e' attivata di
default


--
ciao
st3



More information about the italy-list mailing list