waLibs 4.x
Personalizzare la UI - 2
Applicare stili CSS diversi modifica il rendering, ma naturalmente non cambia nulla della funzionalità della vostra pagina. Se per qualsiasi motivo, che va dal vostro gusto personale alle esigenze applicative al desiderio del cliente, volete modificare la funzionalità della vostra applicazione, allora dovrete mettere mano al view-object e modificarlo affinchè la vostra applicazione si comporti come desiderate.
Diciamo che vogliamo inserire l'elemento titolo tra H1, anzichè in un div e vogliamo assicurarci che l'elemento titolo sia sempre mandato in output come primo elemento (il view-object di default di waApplication manda in output gli elementi della pagina nello stesso ordine in cui gli vengono passati, e non è assolutamente consapevole di cosa il nome di un elemento possa significare).
Copiamo il file contenente il view-object di default di waApplication all'interno della nostra UI e apriamolo col nostro editor preferito
$ cd /var/www/testwalibs
$ mkdir ui
$ mkdir ui/view
$ cp walibs4/waapplication/uis/waapplication_default/view/waapplication.php ui/view/testwalibs.php
$ pico ui/view/testwalibs.php
			
Avete davanti una classe PHP che, come è possibile notare, deve implementare la semplicissima interfaccia i_waApplicationView e che non fa caltro che effettuare l'output di una pagina formattata HTML.
Il foglio fa riferimento a elementi di un oggetto stdClass di cui potrete trovare la spiegazione all'interno della documentazione specifica di waApplication. Qui vogliamo vedere solo come intervenire per ottenere il risultato che ci siamo prefissi.
Innanzitutto, se volete (ed è caldamente consigliato), potete cambiare il namespace della classe: quello presente è relativo al view-object di default; diciamo che il nostro namespace sarà testwalibs.
Intorno alla metà del file troverete un costrutto foreach ($this->data->page->items as $item) che cicla su tutti gli elementi da mandare in output passati alla pagina; modifichiamo l'intero blocco foreach in questo modo:
		<!-- ****************** testwalibs.php : file del view-object ****************************** -->
		
		<!-- creazione degli elementi costitutivi della pagina (titolo, tabelle, moduli, testo libero, ecc.-->		
		<h1>
			<?=$this->data->page->items['titolo']->value?>
		</h1>
		
		<?php 
		foreach ($this->data->page->items as $item) : 
			if ($item->name != "titolo"):
				?>
				<div class="waapplication_<?=$item->name?>">
					<?=$item->value?>
				</div>
				<?php 
			endif;
		endforeach; 
		?>
			
Salviamo il nostro view-object e ricarichiamo col browser pagina1.php. Magicamente scopriremo che... non è successo niente. Ovvio: non abbiamo istruito la nostra applicazione che deve usare il nostro nuovo view-object anzichè quello di default...
Editiamo allora la classe della nostra applicazione (ma volendo avremmo potuto farlo per ogni singola pagina) e informiamo l'applicazione che la nostra UI è data dal view-object appena modificato:
<?php
//****************** testwalibs.inc.php ***************************************
include __DIR__ . "/walibs4/waapplication/waapplication.class.php";

class testwalibs extends waLibs\waApplication
	{

	function __construct()
		{			
		$this->name = "testwalibs";
		$this->title = "Voglio testare le waLibs";
		
		include_once  "ui/view/testwalibs.php";
		$this->view = new testwalibs\waApplicationView();
		
		$this->init();
		}
	}

			
Già che ci siamo, e giusto per dare un po' di movimento alla pagina, aggiungiamo anche un elemento corpo (lo aggiungiamo prima del titolo, ma come vedrete comparirà dopo, all'interno dell'output della pagina)
<?php
//****************** pagina1.php ***************************************
include __DIR__ . "/testwalibs.inc.php";

class page extends testwalibs
	{
	function doSomething()
		{
		
		$corpo = "Lorem Ipsum è un testo segnaposto utilizzato nel settore della 
			tipografia e della stampa. Lorem Ipsum è considerato il testo segnaposto standard 
			sin dal sedicesimo secolo, quando un anonimo tipografo prese una cassetta di 
			caratteri e li assemblò per preparare un testo campione. È sopravvissuto non solo 
			a più di cinque secoli, ma anche al passaggio alla videoimpaginazione, pervenendoci 
			sostanzialmente inalterato. Fu reso popolare, negli anni ’60, con la diffusione 
			dei fogli di caratteri trasferibili “Letraset”, che contenevano passaggi del 
			Lorem Ipsum, e più recentemente da software di impaginazione come Aldus PageMaker, 
			che includeva versioni del Lorem Ipsum.";
		$this->addItem($corpo, "corpo");
		
		$this->addItem("ciao mondo", "titolo");
		$this->show();
		}

	}

$page = new page();
$page->doSomething();

			
Caricate la pagina col browser, guardate il risultato e iniziate a far girare le idee nella vostra testa di bravi, giovani problem-solver.