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