Archivio mensile:Dicembre 2010

ZendX_JQuery e metodo addOnLoad con layout disabilitato

Zend Framework Logo

In un applicativo sviluppato su Zend Framework in cui è necessario un uso massiccio di ajax e jQuery spesso la libreria ZendX_JQuery non è sufficiente a coprire tutte le esigenze. Tempo fa avevo già riscontrato alcuni problemi sulle funzioni di Autocomplete di ZendX_JQeury. Oggi mi sono scontrato con il metodo OnLoad (che genera codice in $(document).ready(function(){ … }); )

Siamo nella situazione in cui da una pagina si caricano elenchi e svariate altre sottosezioni tramite le classiche chiamate jQuery. Prendiamo questa funzione Javascript come esempio:

function my_ChangeTab(url)
    {
        startLoadingBoxTopLeft('box_left');
        $.get( url ,
            function(data, textStatus)
            {
                stopLoadingBoxTopLeft('box_left');
                // load HTML data in box_left
                $('#box_left').html(data);
            }, 'html');
    }

Questa funzione carica il contenuto che restituisce url dentro un elemento (div) box_left.

Il mio problema nasce nel momento in cui url carica un form. Se in questo form abbiamo elementi di ZendX_JQuery (es: DatePicker, Autocomplete, ecc.) siamo fregati. Questi elementi infatti invocano internamente il metodo addOnLoad.

Vedi ad esempio ZendX_JQuery_View_Helper_DatePicker nel metodo datePicker (riga 71):

$this->jquery->addOnLoad($js);

Questo metodo carica, se correttamente configurato, nel head tag della pagina il codice $js. Questo codice serve per innescare le funzioni delle librerie jQuery UI per il DatePicker.

Tornando alla nostra situazione (vedi sopra) è comprensibile come il tutto non funzioni. La chiamata Javascript qui sopra infatti richiama solo il contenuto generato dall’action e non l’intero layout: nell’action infatti il layout sarà disabilitato:

$this->_helper->layout()->disableLayout();

Come risolvere?

Io mi sono arrangiato con un bel plugin:

<?php 
class My_Controller_Plugin_JQueryOnLoadWithoutLayout
    extends Zend_Controller_Plugin_Abstract
{
	protected $view;
 
	function __construct(){
		$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
        if (null === $viewRenderer->view) {
            $viewRenderer->initView();
        }
        $this->view = $viewRenderer->view;
	}
 
    public function  postDispatch(Zend_Controller_Request_Abstract $request)
    {
        // get Layout
        $layout = Zend_Layout::getMvcInstance();
 
        // elenco delle action registrate in OnLoad
        $actions = $this->view->jQuery()->getOnLoadActions();
        if( count($actions) > 0
            && !$layout->isEnabled()
          )
        {
            // create jQuery code
            $content = "";
            if(ZendX_JQuery_View_Helper_JQuery::getNoConflictMode() == true) {
                $content .= '$j(document).ready(function() {'."\n    ";
            } else {
                $content .= '$(document).ready(function() {'."\n    ";
            }
            foreach($actions AS $action)
            {
                $content .= $action . PHP_EOL;
            }
            $content .= '});'."\n";
 
            // add code to script tag
            $code = '<script type="text/javascript">' . PHP_EOL
                  . '//<![CDATA[' . PHP_EOL
                  . $content
                  . '//]]>' . PHP_EOL
                  . '</script>' . PHP_EOL;
 
            // OUTPUT
            $this->getResponse()->appendBody($code);
        }
    }
 
}
?>

Questo plugin modifica l’output a fine dispatch (postDispatch). Prima di tutto verifica se esistono righe di codice da inserire nella sezione OnLoad, poi verifica che il layout sia disabilitato (altrimenti quando è abilitato scriviamo 2 volte lo stesso codice) e infine genera l’apposito codice Javascript che viene aggiunto al Response.

In questo modo risolviamo il problema posto sopra. Ogni volta che carichiamo una “porzione” di pagina tramite Ajax (quindi il layout è disabilitato) e necessitiamo di codice in OnLoad (generato automaticamente, ad esempio, dagli elementi form di ZendX_JQuery) il suddetto plugin aggiungerà il codice generato per l’OnLoad in coda all’HTML restituito via Ajax.

Samizdat e Wikileaks

Stamattina, grazie a questo tweet di Wikileaks, ho scoperto il Samizdat. Non ne avevo mai sentito parlare, fu un movimento di dissenso che si impose tra gli anni ’50 e ’60 in Russia per constrastare il regime. Consisteva nella diffusione clandestina di scritti illegali perché censurati dalle autorità o in qualche modo ostili al regime sovietico. Usavano le macchine da scrivere, l’autore scriveva il testo facendo alcune copie con la carta carbone, poi le distribuiva agli amici; se questi lo trovavano interessante lo distribuivano a loro volta raggiungendo così gli angoli più remoti del paese. I fascicoli del samizdat passavano rapidamente di mano in mano, e capitava di avere in lettura un testo per una sola notte, perché la lista d’attesa era lunghissima. Allora il fortunato passava la notte in bianco, immerso nella lettura, e magari invitava gli amici a partecipare.

La verità verrà a galla, anche a fronte di un totale annientamento“, recita la seconda parte del tweet.

Wikileaks è la nuova frontiera del giornalismo investigativo

Assange Wikileaks

Riporto l’articolo scritto per ReggioNelWeb.it n. 392 del 30/11/2010

Fondato sui sani principi dell’etica hacker, Wikileaks ci catapulta nella nuova era della libertà incondizionata dell’informazione. E’ ora di cambiare scenario.

In questi giorni il mondo intero è rimasto sulle spine in attesa di un nuovo (*) rilascio di documenti da parte di Wikileaks (da Leak: “perdita”, “fuga” di notizie). Ovunque si legge di questo misterioso sito web che pubblica documenti segreti e non mancano i riferimenti al suo fondatore: un “tipo strano” di nome Julian Assange. Un hacker.

Per capire un po’ meglio di cosa e di chi stiamo parlando a mio avviso è bene fare un passo indietro. Negli anni 80, grazie soprattutto ai mass media, si è iniziato ad associare erroneamente il termine hacker ai criminali informatici (la cui definizione corretta è “cracker”). Nel tempo questa definizione si è consolidata fino a divenire oggi un luogo comune.
Un hacker in realtà “è una persona che si impegna nell’affrontare sfide intellettuali per aggirare o superare creativamente le limitazioni che gli vengono imposte” (via Wikipedia). Non necessariamente un criminale quindi, non necessariamente informatico. In realtà le definizioni di hacker sono migliaia e non ne esiste una in particolare. Tutti gli hacker però sono accomunati da principi condivisi che, messi insieme, formano l’etica hacker. Uno dei principi fondamentali, ad esempio, è “Migliorare il mondo“. Un altro è “Tutta l’informazione dev’essere libera“.

Julian Paul Assange, il fondatore di Wikileaks, nasce in Australia (Townsville) nel 1971. E’ indubbiamente un hacker di fama mondiale e il mondo che lo avvolge ha del misterioso. Chi sia realmente pochi lo sanno. Per alcuni oggi è una figura “strana”, un uomo accecato da ideologie distruttive (Frattini: “Assange vuole distruggere il mondo“), custode di chissà quali segreti. Anche lui, inevitabilmente, come altri, in giovane età subisce una condanna (intrusione nel sistema informatico del Dipartimento di Difesa degli Stati Uniti, il Pentagono). Poi, basandosi sui sani principi dell’etica hacker, nel 2007 arriva a fondare Wikileaks.

Wikileaks è un’organizzazione internazionale che, attraverso il suo sito, raccoglie documenti di carattere governativo o aziendale da fonti coperte dall’anonimato. L’organizzazione si occupa di verificare l’autenticità del materiale e poi lo pubblica tramite i propri server, preservando l’anonimato degli informatori e di tutti coloro che sono implicati nella “fuga di notizie”. Lo scopo ultimo è quello della trasparenza assoluta a garanzia di giustizia, di etica e di una più forte democrazia.
Il sito è curato da giornalisti, attivisti, dissidenti del governo cinese, scienziati. Qualsiasi cittadino proveniente da qualsiasi parte del mondo può ed è invitato ad inviare materiale che possa mettere in luce “comportamenti non etici di governi e aziende“. [via Wikipedia]

Stiamo assistendo all’imporsi del nuovo giornalismo investigativo. Le fonti si moltiplicano senza controllo, tutte protette da anonimato assoluto. L’accesso alle informazioni è diretto e non necessita di alcun “privilegio”.
Chiunque sia in possesso di informazioni segrete può pubblicarle e renderle visibili al mondo intero. Dirigenti dei servizi segreti, spie, hacker e cracker, uomini di stato, dirigenti e dipendenti aziendali e pubblici, tutti oggi possono portare all’attenzione mondiale documenti “scomodi”.
Allo stesso tempo chiunque può visionare le informazioni pubblicate collegandosi al sito www.wikileaks.org
La rivoluzione del web è anche questa e gli hacker, forse, giocano un ruolo fondamentale. Il fenomeno non è contrastabile ne tanto meno può essere arginato, la libertà incondizionata è nella natura stessa della rete Internet.
Credo sia giunto il momento di prepararsi al meglio per affrontare le sfide del nuovo millennio piuttosto che farneticare senza nemmeno capire di cosa si stia parlando.

(*) ___________________

Tra i più importanti scoop giornalistici pubblicati da Wikileaks ricordiamo:

  • Collateral Murder. Il video dell’elicottero statunitense che spara e uccide per errore 15 civili. L’equipaggio ride e insulta le vittime.
  • Le procedure operative del carcere di Guantanamo.
  • Le email dell’Unità di Ricerca sul Clima che smascherano i tentativi di alcuni scienziati di far apparire la situazione climatica più grave del reale.
  • La lista nera dei siti Australiani.
  • Gli scarichi nocivi in Africa dell’azienda petrolifera Trafigura.
  • Elenco dei membri del partito di estrema destra britannico, in rilievo i nomi di spicco di ufficiali di polizia e dell’esercito, medici e professori.
  • Diari della guerra in Afghanistan.
  • Quest’ultimo sulle comunicazioni tra ambasciate e Washington da cui emerge, per ora, un quadro generale su tutti i leader mondiali; il programma del dipartimento di Stato americano volto a controllare e spiare i vertici delle Nazioni Unite; il grande nervosismo dei paesi arabi nei confronti dell’Iran. Al momento sono stati rilasciati solo qualche centinaia di documenti su 250.000 circa attesi, la pubblicazione richiederà mesi ed è in continuo aggiornamento.

[Fonte ilpost.it]