A bit of Open Source

Negli ultimi tempi ho dovuto affrontare qualche grattacapo per lavori mistici, per cui ho dovuto scrivere un po' di codice che lascio con piacere ai posteri, nel caso qualcuno dovesse trovarsi di fronte alle stesse necessità.

Reverse selector engineering

Se vi capita di dover annotare degli elementi del DOM, salvare le annotazioni (localStorage) e poi visualizzarle ad un ricaricamento pagina, probabilmente dovrete trovare un modo per salvare la posizione dell'elemento annotato all'interno dell'albero in una stringa.

La cosa non è niente di trascendentale, potete cimentarvi con xpath ad esempio, ma a me piacciono i selettori css, ed inoltre li trovo pratici in questo caso, in quanto se riusciamo ad ottenere il selettore che punta all'elemento, a quel punto riottenere l'elemento a partire dal selettore è un gioco da ragazzi siccome ogni libreria js che si rispetti utilizza i selettori css3 per beccare elementi all'interno del DOM.

Allora ecco la funzione che ho scritto, la quale vi restituisce il selettore che compete all'elemento dato, uniche richieste: mootools selectors >= 1.4, ed il browser deve supportare il selettore :nth-of-type.

Convertire il widget select multiplo in un widget checkbox multiplo nei form dell'area amministrativa di django

Questo forse è più interessante.

Di default l'admin di django utilizza un select con attributo multiple per permettere l'associazione di più elementi ad un campo di un modello (many to many relationship). Talvolta questa non pare essere la soluzione migliore, e quindi potrebbe essere utile trasformare questo widget in un multi-checkbox. Django, che non a caso è uno dei migliori framework in circolazione, ha delle opzioni che permettono di ottenere qualcosa di simile, ma mi pare che non funzionino al meglio ed in più non sono utilizzabili con l'applicazione django-mptt che IMO è un must quando si ha a che fare con dati aventi una struttura ad albero.

Pertanto ho costruito una soluzione ad hoc in solo javascript utilizzando, ahimè, jquery (che detesto), siccome django admin lo include di default.

Questa volta la storia che ci sta dietro è un po' più ciccia e quindi, se ho stuzzicato la vostra curiosità, vi invito a leggere interamente l'articolo che ho scritto (in italenglish) qui:
http://www.abidibo.net/blog/2013/04/10/convert-select-multiple-widget-checkboxes-django-admin-form/

Categorie

internet opendata piemonte web jeff php programmazione tutorial curiosita governance vim cucina sviluppo apple hardware imac crisi economia politica torino didattica flash illustrazione ricorrenze lapalisse novita release informazione html5 javascript website musica mootools mercato societa vita lavoro HMI interfaccia utente gino gino-news gino-multimedia modernità usa burocrazia jquery django testing libri nova americana etica impresa solidarietà css comunicazioni trasloco ufficio vita sociale entropia immagini fotografia concorso polymer webcomponents programming crowdfunding progetti finanziamento fallimento opensource deploy otto python