[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 . " \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