Joomla: messa a punto su host Aruba

Alcune annotazioni per la messa a punto di una installazione liscia di Joomla su host Aruba, ovvero senza utilizzare l’Application Installer  di quest0ultima.

  • In Configurazione globale / Server / Configurazione ftp non abilitare il wrapper ftp altrimenti si avrà problemi durante l’installazione delle estensioni
  • Se in Configurazione globale / Sito / Configurazione SEO è stato abilitato utilizza mod_rewrite eseguire i seguenti cambiamenti al file .htaccess
    • Commentare la linea 23 in modo da renderla così:
      #Options +FollowSymLinks
    • Decommentare la linea 59 in modo da renderla così:
      RewriteBase /
  • Se si verificano problemi strani (esempio estensioni che non funzionano dopo averle installate) provare ad eseguire un reset dei permessi dei file utilizzando l’apposita funzione Riparazione Permissions del pannello di controllo di Aruba

HP Photosmart Premium C310

Alcuni giorni fa ho avuto l’esigenza di dovere acquistare una periferica multi funzione di stampa e scanner. L’uso che ne dovevo fare era quello tipico casalingo e semi-professionale. Dodo un po di ricerche sul web la mia scelta è ricaduta su una HP Photosmart Premium C310 attratto soprattutto dalle interessanti caratteristiche di integrazione con il web, la possibilità di stampare semplicemente inviando una email alla periferica e non per ultimo l’interfaccia wireless che offre la possibilità di utilizzare la stampante senza i classico cavo usb e la rende una stampante/scanner di rete. L’acquisto l’ho fatto presso un negozio di Agliana (Pistoia) della catena Mediaworld dove l’ho trovato ad un prezzo record di 169 € (di listino si aggira attorno ai 200 €).

Continue reading “HP Photosmart Premium C310”

flowplayer: risolvere problemi di black screen disabilitando la compressione gzip di apache

Recentemente ho usato flowplayer per riprodurre alcuni file flv da utilizzare come intro e presentazioni su un sito che stò sviluppando.

Flowplayer è un player flash multiformato veramente ottimo che supporta tantissime features.

Testando il sito in locale sulla mia Debian era tutto funzionante, una volta pubblicato invece mi sono inbattuo in un problema molto strano: al momento della riproduzione dei file flv questi non venivano visualizzati mostrando invece un blocco completamente nero.

Facendo alcune ricerche sul forum di supporto ho trovato la soluzione: il problema è derivato della compressione gzip che in alcune installazioni di apache viene utilizzata; essendo questa attiva causa problemi nel caricamento dei file swf di flowplayer.

La soluzione è disablitare la compressione gzip per i file swf di flowplayer creando nella directory dove questi sono riposti un file .htaccess con la seguente linea:

SetEnv no-gzip dont-vary

Apache: abilitare mod_rewrite in locale

Appunti per abilitare il mod_rewrite in locale sulla mia debian:

  • Verificare che sia in /etc/apache2/mods-enabled sia presente un link a ../mods-available/rewrite.load
  • Modificare la configurazione del virtual host present in /etc/apache2/sites-available commentando la direttiva AllowOverride None e inserendo AllowOverride all come segue:
    <Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    #AllowOverride None
    AllowOverride all
    Order allow,deny
    allow from all
    </Directory>
  • Riavviare apache
  • Verificare che mod_rewrite tramite la pagina l’istruzione php:
    phpinfo(INFO_MODULES);
  • Verificare il funzionamento con il tutorial indicato qui

Joomla: aggiungere helpers personalizzati a JHTML

Di seguito riporto alcuni appunti che indicano come aggiungere degli helpers personalizzati alla classe JHTML che potranno essere richiamati con la classica chiamata

JHTML::_( "prefix.file.function", ........ );

Con il parametro riportato sopra “prefix.file.function” si indica l’helper da richiamare specificando il prefisso della classe (opzionale, se non riportato viene assunto il valore JHTML), il nome del file che poi deve anche essere il suffisso della classe, e il metodo della classe da richiamare.

Per esempio, generalmente si utilizza la seguente chiamata

JHTML::_( "grid.publisher", $row, $i );

per generare codice HTML con il quale eseguire il rendering del pulsante di pubblicazione/non pubblicazione.

Nel caso sopra indicato viene in pratica eseguita la chiamata a JHTMLGrid::publisher(). Per eseguire tale chiamata viene composto il nome della classe, nome delle funzione e nome del file da caricare prendendo il primo argomento fornitoro a JHTML::_():

  • classe JHTMLGrid: composta dal prefisso JHTML (preso di default perché non specificato) e dal suffisso Grid preso dalla prima parte di grid.published
  • funzione published(): presa dalla seconda parte di grid.published
  • file grid.php da cui da cui caricare la classe: preso dalla prima parte grid.published

A questo punto capito il meccanismo con cui viene richiamato l’helper possiamo crearne uno nostro. Di seguito riporto come esempio l’helper che ho creato per eseguire un  nuovo tipo di pubblicazione ovvero chiamato publishedHd, che dovrebbe servire per eseguire la pubblicazione/non pubblicazione di un elemento che qui non sto a specificare.

La chiamata viene eseguita nel seguente modo:

JHTML::_( "extendedgrid.publisherHd", $row, $i );

che in pratica richiama JHTMLExtendgrid::publishedHd( $row, $i ) contenuta nel file extendedgrid.php

Di seguito riporto il codice sorgente della classe JHTMLExtendedgrid:

class JHTMLExtendgrid extends JHTMLGrid
{
  function publishedHd( &$row, $i, $imgY = 'tick.png', $imgX = 'publish_x.png', $prefix='' )
  {
    $img    = $row->published_hd ? $imgY : $imgX;
    $task   = $row->published_hd ? 'unpublish_hd' : 'publish_hd';
    $alt    = $row->published_hd ? JText::_( 'Published' ) : JText::_( 'Unpublished' );
    $action = $row->published_hd ? JText::_( 'Unpublish Item' ) : JText::_( 'Publish item' );
 
    $href = '
    <a title="'. $action .'" onclick="return listItemTask(\'cb'. $i .'\',\''. $prefix.$task .'\')" href="javascript:void(0);">
    <img src="images/'. $img .'" border="0" alt="'. $alt .'" /></a>';
 
    return $href;
  }
}

Il precedente sorgente contenuto nel file extendgrid.php è stato salvato nella cartella helpers/html/ nella parte amministrativa del componente sviluppato. Il path di tale directory dovrà essere fornita JHTML per sapere dove andare a cercare i files contenenti gli helpers da caricare e viene fatto con la seguente chiamata che ho inserito nell’entrypoint del componente:

JHTML::addIncludePath( array( JPATH_COMPONENT_ADMINISTRATOR.DS.'helpers'.DS.'html' ) );

Ridimensionare immagini da shell

Alcuni appunti per ricordarmi come ridimensionare  un gruppo di immagini da shell:

Prerequisito fondamentale è installare il pacchetto imagemagick.

Ridimensiona le immagini in larghezza mantenendo la proporzione:

for i in *.jpg; do convert -geometry 800x $i thumb-$i; done

Ridimensiona le immagini in altezza mantenendo la proporzione:

for i in *.jpg; do convert -geometry x600 $i thumb-$i; done

Ridimensiona le immagini sia larghezza che in altezza:

for i in *.jpg; do convert -geometry 800x600 $i thumb-$i; done

Joomla: wdbanner variant, modulo per banner a rotazione

Qualche settimana fa ho avuto bisogno di inserire su un’installazione Joomla dei banner che ruotassero dopo alcuni secondi (www.dodicesimouomo.net).

Girando in rete ho trovato wd rotation banner, che però dava problemi se il modulo veniva duplicato più volte nella stessa installazione e non gestiva banner di tipo flash di cui io avevo bisogno. Così ho provveduto a modificare il codice sorgente per adattarlo alle mie esigenze.

Continue reading “Joomla: wdbanner variant, modulo per banner a rotazione”

Joomla estendere la registrazione utente

Recentemente ho avuto necessità di aggiungere alcuni campi nella gestione utenti di Joomla e di poterli gestire in fase di registrazione/modifica utente.

Dopo avere fatto una veloce ricerca fra le estensioni disponibili in rete non ho trovato niente che potesse fare al mio caso, quindi ho deciso di percorrere una strada non molto ortodossa, ovvero modificare direttamente i componenti core di Joomla. Questo metodo non è molto consigliato perché in caso di aggiornamento verrebbero perse le modifiche fatte. Come vedremo però le modifiche eseguite sono veramente poche e rimangono gestibili.

L’esempio trattato è quello di aggiungere il campo telephone ai dati utente, i passi sono essenzialmente quattro:

  • Modificare del database alla tabella jos_users aggiungendo il campo telephone
  • Modificare le core libraries per fare gestire il campo appena aggiunto
  • Gestione del campo nel front-end
  • Gestione del campo nel back-end

Continue reading “Joomla estendere la registrazione utente”