giovedì 7 aprile 2011

Joomla 1.6: creare un modulo (I parte)

Joomla 1.6 permette di creare un modulo personalizzato in maniera molto semplice sfruttando le caratteristiche del framework stesso: un modulo di Joomla 1.6 è infatti essenzialmente composto da un insieme di file posizionati in determinate directory di Joomla.

File che compongono un modulo di Joomla 1.6

Come esempio classico creiamo il modulo "ciao mondo"
  1. andate nella directory “modules” di Joomla e create una cartella chiamata “mod_ciao_mondo”
  2. entrate nella directory “mod_ciao_mondo”
  3. create un file denominato “mod_ciao_mondo.php” (il nome deve essere uguale a quello scelto nel punto numero 1)
  4. create un secondo file, denominato “mod_ciao_mondo.xml”
  5. create un file denominato “helper.php”
  6. create la cartella tmpl
  7. create un file di template “tmpl/default.php”
Per motivi di sicurezza, ricordatevi inoltre di creare in ogni nuova cartella il file index.html con il seguente contenuto: "<html><body></body></html>".

In conclusione i file principali di ogni modulo di Joomla sono quindi contenuti nella cartella "mod_nome_modulo" e sono ad esempio:
  1. “mod_ciao_mondo.php” (rappresenta l'entry point)
  2. “helper.php”
  3. “tmpl/default.php” (il file del template)
Nel prossimo articolo joomla 1.6: creare un modulo (II parte) andremo ad analizzare in dettaglio il codice di cui è composto ogni singolo file.
martedì 22 marzo 2011

Joomla 1.6: le categorie

Dopo aver visto il nuovo sistema di gestione dei permessi e degli utenti di Joomla 1.6 introduciamo un'altra importante novità: la gestione delle categorie. Mentre in Joomla 1.5 eravamo obbligati a legare le categorie alle sezioni non potendo annidare una categoria dentro l'altra, in Joomla 1.6 questa limitazione è stata tolta: esistono solo le categorie (non troverete più le sezioni) ed inoltre possiamo formare una gerarchia ad albero profonda quanto vogliamo assegnando ad ogni categoria il proprio padre. Vediamo con un esempio come è possibile nidificare le categorie in Joomla 1.6: andiamo in Contenuti -> Gestione Categorie -> Nuovo

Joomla 1.6 categorie

Come possiamo vedere per ogni categoria abbiamo la possibilità di specificare la categoria padre (Parent): in questa maniera riusciamo a creare la nostra gerarchia ad albero.
Gli articoli che andremo a scrivere verrano legati alla categoria rendendo la gestione dei contenuti più semplice e completa senza dover essere obbligati per forza a creare le sezioni.
lunedì 14 marzo 2011

PHP DEBUG con Eclipse (PDT)

Per chi sviluppa in PHP è semplice effettuare il DEBUG delle proprie applicazioni utilizzando Eclipse: in particolare Eclipse PHP (PDT) è l'IDE che fa per voi. Vediamo come dotarsi velocemente di un ambiente professionale per creare le vostre applicazioni in PHP utilizzando un PC che abbia come sistema operativo Windows 7:

Installiamo XAMPP

Per prima cosa ci dobbiamo dotare di un web server, dell'interprete PHP e di tutto il necessario per sviluppare applicazioni web dinamiche: a questo provvede XAMPP, che ci fa risparmiare un bel pò di lavoro. Chiaramente questa soluzione deve essere utilizzata solo per gli ambienti di sviluppo (mai in produzione).
Un problema che può sorgere in questa fase riguarda la porta utilizzata da Apache. Di default è la 80 ma ci potrebbero essere altri programmi che la utilizzano (ad esempio Skype) rendendo impossibile l'avvio del web server. Se così fosse fermiamo XAMPP e apriamo con un editor di testo il file:
[Cartella dove è stato installato XAMPP]/apache/conf/httpd.conf
Cerchiamo la proprietà Listen e mettiamo un numero di porta diverso (ad esempio 81). Ricordiamoci di sostituire il numero della porta anche sulla proprietà ServerName.

Attivare XDEBUG

Per effettuare il DEBUG delle nostre applicazioni PHP utilizzeremo la libreria Xdebug. Andate a verificare che nel seguente percorso:
[Cartella dove è stato installato XAMPP]/php/ext/
sia presente il file php_xdebug.dll. Se non trovate questa dll andate nella pagina di download di Xdebug e scegliete il link corretto a seconda della vostra versione di PHP (per saperlo visualizzate il phpinfo). Una volta completato il download mettete la dll che avete scaricato nel percorso in questione.
Adesso apriamo con un editor di testo il seguente file:
[Cartella dove è stato installato XAMPP]/php/php.ini
Per prima cosa cerchiamo la proprietà zend_extension e rimuoviamo il punto e virgola (commento). Controlliamo poi che il percorso specificato punti proprio alla dll di cui parlavo sopra. Togliamo il commento alle seguenti proprietà e impostiamole come segue:

xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"

Riavviamo XAMPP e Apache e verifichiamo dal phpinfo() che Xdebug sia correttamente abilitato.

Eclipse e il DEBUG delle applicazioni in PHP

Scarichiamo la versione di Eclipse ottimizzata per PHP: PDT. Facciamo il download del file All-In-One Windows 32-bit. Dopo aver lanciato Eclipse andiamo in window -> preferences -> PHP -> PHP Executables. Facciamo add (aggiungi)

php debug eclipse pdt

Nel name mettiamo PHP, nell'executable path mettiamo il percorso del file php-cgi.exe presente dentro la cartella php che si trova nella cartella di installazione di XAMPP. Lo stesso discorso per il file php.ini. Come debugger scegliamo XDebug. Vedi sopra per un esempio.
Salviamo e andiamo infine in window -> preferences -> PHP -> Debug e impostiamo i valori come nella immagine sottostante dove andiamo a impostare il debugger e l'eseguibile PHP.

php debug eclipse

A questo punto possiamo effettuare il Debug delle nostre applicazioni PHP utilizzando eclipse.
lunedì 7 marzo 2011

jQuery Ajax: utilizzare il framework jQuery per le richieste Ajax

jQuery consente di effettuare richieste Ajax in maniera molto semplice: vediamo con un esempio come sfruttare la potenza del framework jQuery per effettuare chiamate Ajax:

Scarichiamo la libreria jQuery

Andiamo nel sito ufficiale del porgetto e facciamo il download della versione Minified. A questo punto includiamola nel nostro script lato client

<script type="text/javascript" src="jquery-1.5.1.min.js"></script>

Prepariamo lo script lato server (esempio in PHP)

<?php

  (int)$id = $_GET["id"];
  if ($id==1) echo "Rosso";
  if ($id==2) echo "Giallo";
  if ($id==3) echo "Verde";
  if ($id!=1 && $id!=2 && $id!=3) 
    echo "id non valido!";

?>

Salviamo il file con il nome test_ajax.php

jQuery Ajax

Nel nostro script lato client avremo:

<script type="text/javascript">
  $.ajax({
    type: "GET",
    url: "test_ajax.php",
    data: "id=1",
    success: function(response){
      $("#output").html(response);
    }
  });
</script>

Il valore dell'id passato allo script PHP si trova in data. La risposta testuale fornita dal file PHP è contenuta nel parametro response e la visualizziamo nel div output tramite la riga:

$("#output").html(response);

Nel nostro esempio otteremo ovviamente come risposta "Rosso". Modificando il valore dell'id in data avremo le altre risposte.
Chiaramente sarebbe più utile passare il valore dell'id tramite un form o altro ma per far capire il funzionamento di base questo non era necessario. Quello che risulta evidente è la semplicità con cui si possono effettuare chiamate ajax attraverso jQuery e le potenzialità di questo framework.
venerdì 4 marzo 2011

Joomla 1.6: gestione permessi

Nel precedente post Joomla 1.6: permessi e utenti abbiamo introdotto la gestione dei permessi (ACL) presenti nel nuovo core di Joomla 1.6 rimandando ad un successivo articolo per un esempio concreto. Supponiamo quindi di avere la necessità di applicare dei permessi diversi a seconda del tipo di utente che effettua il login al nostro sito web.

Esempio di gestione dei permessi

Nel nostro sito aziendale vogliamo che ci siano tre tipi di utenti:
  1. Utente normale
  2. Cliente
  3. Cliente affezionato
In pratica vogliamo che i clienti, oltre ai contenuti degli utenti normali, possano visualizzare degli articoli particolari; inoltre vogliamo premiare i clienti affezionati (quelli che non ci lasceranno mai) con dei contenuti pensati esclusivamente per loro. Chiaramente i clienti affezionati potranno vedere anche quello che vedono gli utenti normali e i clienti.
Con la gestione dei permessi di Joomla 1.6 è molto semplice soddisfare questa esigenza. Vediamo come:

Creare i gruppi

Per creare un gruppo, accediamo nel back end del nostro sito in Joomla 1.6. Nel menù superiore andiamo su Utenti - Aggiungi nuovo gruppo.
  1. Nel campo Titolo Gruppo inseriamo Gruppo Clienti
  2. Nel campo Gruppo Principale scegliamo Registered. I gruppi Registered e Clienti avranno le stesse autorizzazioni (cioè, potranno accedere al front end del sito). I Clienti saranno un sotto gruppo degli utenti Registered.
  3. Clicchiamo su Salva e Nuovo in alto a destra per salvare il gruppo Clienti e creare un nuovo gruppo.
  4. Inseriamo Gruppo Clienti affezionati nel campo Titolo Gruppo.
  5. Nel campo Gruppo Principale scegliamo Registered. In questo modo Clienti e Clienti affezionati avranno lo stesso livello di accesso.
  6. Clicchiamo su Salva e Chiudi per tornare nella schermata User Manager: Gruppi.
Notiamo che il gruppo public è già esistente di default.

Assegnare i permessi di base

I gruppi Clienti e Clienti affezionati, hanno ereditato i permessi di base del Gruppo padre. Il gruppo Registered ha infatti impostato per default l'autorizzazione per accedere al front end del sito, quindi, in questo caso, non abbiamo bisogno di assegnare altri permessi ai gruppi.
Notiamo che stiamo parlando solo dei contenuti che possono o non possono essere visti e non abbiamo parlato di modifica, creazione e gestione dei contenuti: per questo motivo abbiamo scelto come gruppo padre il gruppo Registered che ha come permesso solo il Site Login mentre tutti gli altri sono disabilitati.

Creare utenti e assegnarli ai gruppi

Ora che abbiamo creato i gruppi e assegnato i permessi di base andiamo su Utenti -> Aggiungi nuovo utente e cominciamo ad inserire i dati dei nostri clienti. Scegliamo ovviamente come gruppo quello relativo ai clienti. Ripetiamo la stessa operazione per i Clienti affezionati.

Creare i livelli di accesso

Ora che abbiamo gli utenti, i permessi di base e i gruppi, non ci resta che creare due livelli di accesso, uno per i clienti e uno per i clienti affezionati.
Andiamo su Utenti - Aggiungi Nuovo Livello di Accesso
Nel campo Titolo del Livello, inseriamo Accesso Clienti affezionati. Selezioniamo la casella vicino al Gruppo Clienti affezionati. In questo modo solo il gruppo selezionato potrà vedere i contenuti del Gruppo Clienti affezionati.
Clicchiamo su Salva e Nuovo, e inseriamo Accesso Clienti come Titolo Livello e selezioniamo le caselle Gruppo Clienti e Gruppo Clienti affezionati. Ciò consentirà ai Clienti affezionati di visualizzare entrambi i contenuti.
Ricordiamo che quando creiamo un nuovo livello di accesso specifichiamo quali gruppi possono vedere i  contenuti associati a quel livello.

Inserire i contenuti

Creiamo le categorie una per i "clienti" ed un'altra per i "clienti affezionati" impostando i relativi livelli di accesso.
Prepariamo un articolo per i clienti affezionati nella categoria clienti affezionati. Per creare un nuovo articolo andiamo su Contenuto - Nuovo Articolo.
Compiliamo i campi in questo modo:
  • Titolo: Questo articolo è per i Clienti affezionati
  • Categoria: Categoria clienti affezionati
  • Stato: Pubblicato
  • Accesso: Accesso clienti affezionati
  • Testo Articolo: inserire un testo fittizio.
Clicchiamo su Salva e Nuovo e ripetiamo l'operazione per i clienti:
  • Titolo: Questo articolo è per i Clienti
  • Categoria: Categoria clienti
  • Stato: Pubblicato
  • Accesso: Accesso clienti
  • Testo Articolo: inserire un testo fittizio.
Clicchiamo su Salva e Chiudi appena finito.
Organizziamo le voci di menù. Nel menù principale (Menù - Menù Principale), aggiungiamo due voci.
Per creare il collegamento, clicchiamo su Nuovo (in alto a destra), scegliamo Lista Categorie come tipo di menù e inseriamo le informazioni:
  • Titolo: Informazioni Clienti affezionati
  • Tipo di menù: clicchiamo su Selezione, quindi Lista Categoria
  • Stato: Pubblicato
  • Accesso: Accesso clienti affezionati
  • Scegli una Categoria: Categoria clienti affezionati
Clicchiamo su Salva e Nuovo e ripetiamo il procedimento per i clienti:
  • Titolo: Informazioni Clienti
  • Tipo di menù: clicchiamo su Selezione, quindi Lista Categoria
  • Accesso: Accesso clienti
  • Scegli una Categoria: Categoria clienti
Clicchiamo su Salva e Chiudi. Adesso possiamo testare il nostro sistema andando ad usare le username e password inserite quando abbiamo creato i nostri utenti. Se entriamo come cliente affezionato dovremmo vedere due collegamenti nel menù principale, "Informazioni Clienti" e "Informazioni Clienti affezionati" mentre se entriamo con un username associato al gruppo clienti dovremmo vedere solo il collegamento "Informazioni Clienti".
lunedì 28 febbraio 2011

Joomla 1.6: permessi e utenti (ACL)

Fra le novità più importanti di Joomla 1.6 abbiamo la nuova gestione dei permessi e degli utenti, in gergo tecnico ACL (Access Control Levels); in pratica in Joomla è possibile dare permessi per leggere, creare, modificare e cancellare determinate pagine a utenti o gruppi di utenti, a seconda del ruolo che essi hanno all'interno del sito web.

ACL in Joomla 1.6: Panoramica

Joomla 1.6: permessi e utenti ACL

Utenti

Lo User rappresenta evidentemente l'utente del sito web. Notiamo che un utente non deve essere necessariamente registrato in quanto potrebbe essere un utente pubblico (semplice navigatore). Ogni utente può essere assegnato a uno o più gruppi.

Permessi di base

I permessi di base rappresentano le operazioni che possono essere effettuate e sono assegnati al gruppo, non ai singoli utenti. (Se volete assegnarli a un singolo utente, dovrete creare un gruppo per quel determinato utente).
Le autorizzazioni di base includono:
  • Login al sito: la possibilità di accedere al front end del sito.
  • Admin login: la possibilità di accedere al back end del sito.
  • Admin: privilegi amministrativi, come la possibilità di cambiare la configurazione globale.
  • Gestione: la possibilità di cambiare le impostazioni delle estensioni.
  • Creare: la possibilità di creare un nuovo contenuto.
  • Cancellare: la possibilità di eliminare un contenuto.
  • Modifica: la possibilità di modificare tutti i contenuti esistenti.
  • Modifica stato: la possibilità di cambiare stato tra pubblicato, non pubblicato, cestino.
Le autorizzazioni di base si impostano da Configurazione Globale cliccando nella tabella Permessi.

Gruppi

Un gruppo è un insieme di utenti che hanno gli stessi permessi. Prendendo per esempio i gruppi di Joomla 1.5, un utente del gruppo publisher si può loggare nel front end del sito, creare nuovi articoli, modificare quelli già esistenti, renderli pubblici o annullare la pubblicazione. Tutti gli utenti del gruppo publisher hanno gli stessi permessi.
In Joomla 1.6, un utente può essere assegnato a più gruppi, per esempio nel gruppo publisher e nel gruppo administrator.
Ogni gruppo può avere dei sotto-gruppi che a loro volta si possono suddividere ancora andando a creare una gerarchia ad albero ben precisa. In pratica ogni gruppo ha il suo padre ad eccezione del Gruppo Public che è il livello più generale da cui discendono tutti gli altri.
E' possibile assegnare le autorizzazioni di base ai gruppi creati. Osserviamo che le autorizzazioni di base vengono ereditate tra i gruppi nel senso che i figli avranno di default i permessi dei gruppi padri. Chiaramente sarà possibile modificare il comportamento andando in Configurazione Globale -> Permessi. Notiamo però che non potrete ad esempio attivare un permesso che è stato espressamente disabilitato nel gruppo padre perchè questo andrebbe contro la relazione di dipendenza creata.
Un utente non registrato sul sito viene considerato appartenente al gruppo Public che avrà i permessi più leggeri.
Il gruppo Public e il gruppo Registered non possono essere eliminati al contrario di tutti gli altri gruppi. (Comunque, vi consiglio di tenerli, perchè danno un buon modello su come funziona l'ereditarietà delle autorizzazioni).

Livelli d'accesso

I livelli d'accesso sono relativi a che cosa uno o più gruppi di utenti possono vedere, nel front end del sito web. In sostanza, sono le autorizzazioni di lettura sul front end del sito.
Storicamente ci sono stati tre livelli di accesso: public (tutti possono vedere i contenuti), registered (si deve accedere sul sito per vedere i contenuti), special (bisogna avere un livello author o superiore per vedere il contenuto).
Questi livelli di accesso sono ancora presenti in Joomla 1.6 come default, ma si possono creare dei livelli d'accesso personalizzati.
I livelli di accesso non ereditano i permessi. Se si imposta un articolo visibile solo dai publishers, anche i super admin non potranno vederlo. (Comunque, con i permessi di super admin, si potrà modificare l'articolo dal back end).

In un prossimo articolo cercheremo di mettere in pratica questi concetti in un esempio reale.
lunedì 21 febbraio 2011

Factory Method Design Pattern C#

Riprendiamo oggi il nostro viaggio tra i Design Pattern: dopo aver visto l'Abstract Factory introduciamo ora il Factory Method che può essere visto come un caso più semplice. Ecco un diagramma UML di esempio:

Factory Method

Struttura di un Factory Method
  • Product: definisce l'interfaccia dell'oggetto creato dal factory method.
  • ProductOne e ProductTwo: implementano l'interfaccia di Product rappresentando i casi concreti.
  • Framework: dichiara il factory method (in questo caso makeProduct) che restituisce un oggetto di tipo Product a prescindere dal tipo concreto di prodotto; il Framework può in alcuni casi definire un'implementazione del factory method che ritorna un oggetto di default.
  • ApplicationOne: ridefinisce il factory method per restituire un'istanza di ProductOne
  • ApplicationTwo: ridefinisce il factory method per restituire un'istanza di ProductTwo

La classe Framework si affida alle sue sottoclassi per quanto riguarda la definizione del factory method, cosicché esso ritorni un'istanza appropriata del Product.
Il codice client tratta solo con l'interfaccia e con nessuna classe concreta.