Mi è venuta l'idea di scrivere una sorta di diario su cui annotare i progressi fatti sul sito.
Allo stato attuale il sito è solo un ambiente di test su cui sperimentare l'uso di Joomla! ma sono certo che tenere un diario di cosa si fa sia un ottimo modo per imparare a fare le cose per bene; inoltre può essere utile a chi è alle prime armi. Sicuramente avrei dovuto scrivere dall'inizio per avere un diario completo ma ormai ci sono e, comunque, non è che sia andato chissà quanto avanti.
L'idea iniziale era quella di provare mantenere un'installazione standard il più a lungo possibile e aggiungere componenti solo se necessario.
Iniziamo col dire che, rispetto all'installazione vanilla di Joomla!, ho aggiunto Akeeba Backup ma questo rientra nelle mie personali best practice. Inoltre ho aggiunto il componente Advanced Module Manager di Regular Labs per motivi che spiegherò tra poco.
Ci sono moltissimi tutorial per creare siti con qualsiasi CMS ma credo che in nessuno di questi venga detto quale debba essere il contenuto del sito, a quello ci deve pensare chi il sito lo crea.
Questo è stato il mio problema principale: non avevo nulla da scrivere.
Mi ritrovavo così ad avere la voglia e la motivazione giusta per imparare ma ero nell'impossibilità di fare progressi per mancanza di contenuti.
Primo consiglio che posso dare: la creazione di un sito non si improvvisa.
Prima di mettervi davanti a un computer decidete come deve essere organizzato il sito, quali sezioni deve avere e se ognuna di queste deve essere identificata da un Menu.
Questo è stato il primo scoglio da superare perché non avevo alcuna idea di cosa scrivere nel sito. Non doveva essere impegnativo perché altrimenti avrei tolto tempo allo sviluppo, ma nemmeno irrilevante dal punto di vista dell'interesse personale. Così ho deciso di fare delle pagine che parlassero di videogiochi. Anzi, di videogiochi vintage, quelli che mi piacevano da bambino e che continuano a piacermi ancora. Ho deciso di scrivere alcune recensioni di giochi per Intellivision. I motivi sono principalmente due: il primo è che si prestano all’idea di avere più pagine diverse ma piene di informazioni; il secondo è che, come detto, mi piacciono e scrivere di cose che piacciono è sempre un buon punto di partenza.
Organizzazione del sito
Una volta deciso cosa scrivere bisogna organizzare il sito.
Nell'ottica di installare il meno possibile ho deciso di utilizzare il template Cassiopeia di default.
Ho pensato a una Menu Bar in alto con diversi Menu, uno dei quali aprirà una pagina con la lista delle recensioni.
Visto che la Menu Bar aveva solo la scelta Home, ho aggiunto tre ulteriori scelte: “Life”, “Universe” e “Everything”, tanto per avere tre menu. Sono nomi provvisori che non hanno alcun collegamento con ciò a cui rimandano, sono usati solo per dividere il sito in sezioni.
Gli articoli che ho scritto hanno ben poco di mio in quanto ho fatto degli spudorati copia/incolla da Wikipedia, Appena avrò le pagine pronte e nulla da fare nel sito li sostituirò con gli articoli veri scritti da me (sempre che avrò ancora voglia di pubblicare una cosa del genere).
Ho immaginato una pagina standard in cui in alto c'è il logo, subito sotto il menu del sito, poi un'immagine sulla falsa riga dell'immagine di copertina di Facebook e sotto il contenuto della pagina.
Quanto al footer non ho ancora deciso cosa ci andrà.
Prime operazioni
Ho sostituito il logo semplicemente creandone uno simile a quello di default con scritto il mio nome così, invece che Cassiopeia, si troverà scritto Stefano Lupparelli.
Realizzarlo è stato semplice: con un editor di immagini, io ho usato Gimp, ho creato una gif 600x60 con sfondo trasparente e scritta bianca. Direi elementare.
Per l'immagine di copertina (chiamiamola come la chiama FB) ho preso quella che ho in uso in questo momento proprio sul social di Zuckerberg e ne ho creata una versione grande 2040x550. L'ho voluta fare grande perché non voglio che sgrani troppo se l'utente avesse un monitor grande. Non l'ho ottimizzata ed in effetti è un bel po' pesante, 563kb, che conto di ridurre in fase di ottimizzazione. Perché non l'ho fatto subito? Perché avevo voglia di usarla e non mi andava di fare prove.
Tecnicamente l'immagine di copertina in Joomla! è inserita in un modulo che viene visualizzato nel punto voluto. L'ho messa nella Position "banner" di Cassiopeia che sta proprio dove serve a me. Non so se questa scelta mi darà problemi in futuro se vorrò usare il modulo che gestisce i banner, credo di no.
Home Page
Della parte alta ho già scritto. Per il contennuto della Home Page ho pensato di scrivere il solito messaggio di benvenuto e sotto presentare gli ultimi tre (o quattro, o sei?) articoli scritti nella forma di: un'immagine, del testo e un link "continua a leggere" che apre la pagina relativa all'articolo. Per ora ci sono tre articoli a caso perché non ho ancora affrontato il problema di visualizzare gli ultimi tre articoli.
Creazione dell'Articolo
La mia idea era quella di replicare la Home Page cambiando l'immagine di copertina, e qui veniamo al motivo per cui ho dovuto installare l'estensione "Advanced Module Manager". Nella mia visione ogni articolo deve avere un'immagine di copertina diversa che sarà uno zoom su un'area dello schermo del videogioco di cui tratta la pagina, poi l'immagine del gioco in piccolo e il testo dell'articolo.
Se l'immagine di copertina fosse contenuta nell'articolo non sarebbe un problema metterne una diversa per ognuno ma, come già detto, è un modulo visualizzato in una specifica position. La position è uguale per l'intero sito quindi nell'installazione di Joomla! standard non c'è possibilità di variare un modulo a seconda dell'articolo.
Con AMM si può invece specificare quale modulo visualizzare secondo una specifica Condition. Non entro nel merito dell'uso di questa potente estensione perché il tutorial è fatto bene e ne rende facile l'utilizzo.
Basti dire che va a sostituire il tab Menu Assigment del Modulo con la tab Conditions così che, invece che limitarsi a scegliere in base a quale Menu è attivo in quel momento, si possono specificare una serie di condizioni che rendono la gestione estremamente più personalizzata. Uso la versione gratuita che fa anche troppo per le mie esigenze.
Vista la ripetitività di alcune operazioni ho creato uno script con Automator per ridimensionare le immagini.
In questo modo, in pochi secondi si passa dallo screenshot creato con Mame durante il gioco a una piccola immagine grande 320x224 punti, pochi kb per tenere leggera la pagina.
20 agosto 2024
Riprendo lo sviluppo del sito con un progetto relativo al lavoro e riservato agli utenti registrati. Per questo non ne parlerò nel dettagli qui ma mi limiterò a citarne gli aspetti tecnici relativi all'area riservata. Si tratta di consentire agli utenti l'inserimento di alcuni dati raccolti durante la giornata lavorativa e consentire fondamentalmente due cose: creare automaticamente una relazione sul lavoro svolto e generare statistiche.
Aggiornamento all'ultima versione di Joomla
Visto che non toccavo il sito da più di un anno e Joomla è andato avanti fino alla versione 5 ho approfittato per fare un aggiornamento fino alla 4.4.6 (ultima nella major release 4). Non arrivo alla 5, per ora, nell'ottica di fare un passo alla volta.
Scelta del componente per la gestione dei Form
Per l'inserimento dei dati ho deciso di installare un nuovo componente che gestisce i form. Ho valutato tre progetti. RSForm, Fabric e ChronoForms.
Fabrik l'ho abbandonato subito in quanto un po' troppo complesso per l'immediatezza che cercavo ma con la certezza di volerne sapere un po' di più, anche perché lo avevo sfiorato anche in passato in uno dei miei tanti progetti poi abbandonati.
ChronoForms lo avevo valutato qualche tempo fa, all'uscita della versione 7, per usarlo in una versione evoluta di iBet. Mi era piaciuto tantissimo ma ho dovuto sospendere lo sviluppo in quanto ho avuto dei problemi con l'utilizzo dei campi calendar nelle righe delle bollette. Ora siamo arrivati alla versione 8, speravo di trovare ampia documentazione e la soluzione di molti problemini ma pare che invece la community sia un bel po' sfiduciata dalla lentezza dello sviluppo e dalle incompatibilità con le vecchie versioni.
Questa situazione mi ha fatto valutare l'utilizzo di RSForm che avevo valutato anche all'epoca, mi era piaciuto ma aveva la limitazione di poter disporre i campi al massimo su 4 colonne, cosa un po' scomoda per iBet ma che per il nuovo progetto può andar bene. Inoltre ho trovato un canale YouTube italiano che ne spiega l'utilizzo in modo egregio (https://www.youtube.com/@pixedweb). Un problema grosso sta nella mancanza delle aree 'repeater' che avevo trovato in ChronoForms e che qui non ci sono, così le eventuali righe ripetute devono essere simulate in qualche modo visualizzando o meno dei campi ripetuti.
Creazione di Utenti
Il progetto lavorativo prevede che gli utenti siano registrati sul sito. Ora c'è da decidere se usare gli utenti Joomla o creare una tabella a parte. L'integrazione con gli utenti Joomla sembra richiedere un po' di lavoro aggiuntivo ma, oltre a portare con sé l'infrastruttura alle spalle, mi darebbe l'opportunità di studiare i campi aggiuntivi di Joomla. I campi aggiuntivi possono essere previsti negli articoli e negli utenti. Prevedono che si crei prima un gruppo in cui inserire i relativi campi.
Ogni gruppo avrà una tab nella gestione di utenti e articoli sotto la quale verranno mostrati solo i campi che ne fanno parte.
Ho creato un gruppo Officer, nella parte relativa agli Utenti (non negli Articoli), per i campi aggiuntivi relativi agli utenti che sono anche colleghi (potrebbero esserci tipologie di utenti diverse per altre aree del sito), e un campo Ruolo che identifica l'utente come agente, ufficiale o dirigente. Lo scopo della distinzione sarebbe quello di consentire o meno alcune future funzioni nel sito.
Una cosa che ho imparato subito è che il campo type di un custom field non può essere cambiato. Me ne sono accorto perché ho pensato bene (o male) di assegnare il tipo "integer" per la matricola ma questo fa scegliere il numero da un popup dove ci sono le scelte da 1 a 100 (di default ma è configurabile) e non un campo numerico libero. Poco male, lo cancello e lo ricreo come campo di testo.
Campi aggiuntivi impostati e messi da parte, mi metto al lavoro sul form di inserimento dele operazioni. Il focus deve essere posto sulla velocità di inserimento dell'evento, non più di cinque secondi altrimenti l'utente non sarà mai invogliato ad usare l'applicazione.
L'idea è quella di avere la maggior parte dei campi in forma di scelte fisse provenienti da tabelle. Le tabelle saranno inserite da utenti abilitati (e qui torna utile la distinzione agenti/funzionari/dirigenti).
The Login Situation
Titolo del paragrafo che prende a piene mani dall'episodio The Bonnie Situation di Pulp Fiction, quello con Mr.Wolf per intenderci.
Ma a cosa mi riferisco? Probabilmente un giorno tutto ciò mi sarà chiaro ma Joomla ha una gestione del login degli utenti che al momento mi sembra quanto meno strana.
In pratica il form di login può presentarsi in due forme: inserito in un modulo posto in una qualsiasi posizione prevista dal template oppure come contenuto di una pagina che deriva dalla creazione di un'apposita voce di menu.
Poco male, si dirà, basta sceglierne uno e non preoccuparsi. In effetti io ho scelto di mettere il form in un modulo (anzi, credo che sia già previsto appena si installa Joomla) e, fin quando le cose vanno bene è tutto a posto. Poi un giorno sbagli ad inserire la password e ti accorgi che il messaggio d'errore viene visualizzato all'interno della pagina. Ci può stare ma il brutto è che, subito sotto al messaggio d'errore, viene visualizzato anche il form di login così ci si trova con una pagina web in cui ci sono due form di login, quello della pagine e quello del modulo.
In realtà funziona tutto ma è veramente brutto. Ancor più brutto il fatto che, senza aver impostato nulla, Joomla va a cercare la pagina da visualizzare tra quelle possibili andando ad infilare il form in mezzo ad articoli o in home page.
Ho cercato soluzioni ma quella più semplice, e che in fondo mi piace anche di più, è stata quella di eliminare il modulo e creare due menu.
Un menu Login accessibile agli utenti guest e un menu Logout per gli utenti Registered.
Nella creazione dei menu c'è proprio la scelta di puntare il prima a una pagina col form di login e il secondo a una funzione che effettua il logout e fa scegliere la pagina dove andare.