alle prese con la grafica

Il link del progetto in working progress

http://umbriawayformazione.altervista.org/ci_project_glocal/

Riassunto delle puntate precedenti

All’ indirizzo https://umbriawayinfo.wordpress.com/2021/03/07/territorio-storia-cultura-conoscere-le-risorse-che-hai-sotto-casa-con-glocal-web-app-come-mettere-in-moto-un-progetto-con-codeigniter-terza-puntata/ abbiamo visto come si integra una gallery template nel nostro framework (ambiente di sviluppo integrato). Ora cerchiamo di creare una simulazione reale, costruendo nella pratica una gallery funzionale anche se con caratteristiche statiche (senza usare il MODEL come paradigma di programmazione). Questo ci aiuterà a preparare il terreno portandoci avanti nei lavori quando andremo a lavorare su qualcosa di dinamico!

Primo passo, lavorare sulla grafica

funzioni di grafica automatizzate

Nella home page del progetto abbiamo inserito un nuovo link, CollePhotoStatic. Poi ci servono le foto modellate secondo certe caratteristiche, in questo caso orizzontali e di dimensioni precise! Fortunatamente oggi i programmi di grafica mettono a disposizione delle funzioni automatizzate che consentono di lavorare su un set di files senza intervenire sulle foto prese singolarmente. In questo modo abbiamo recuperato 64 foto tutte diverse per dimensione e nome e le abbiamo convertite in dimensioni 700 x 400 e successivamente rinominate in sequenza con un numero progressivo, in modo da facilitare poi l’aggiornamento dei contenuti sulle pagine statiche che per comodità abbiamo suddiviso della capacità di venti foto a pagina (per diluire i tempi)

Un controller dedicato? Si può fare!

Questa volta abbiamo deciso di gestire il meccanismo Controller – View con un controller dedicato che abbiamo replicato da quello principale, soluzione inedita mai sperimentata prima che ci dà il vantaggio di avere un codice organizzato e subito disponibile anche per successivi progetti in un ottica modulare:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class NomeController extends CI_Controller {

	public function __construct()
	{
		parent::__construct();
		$this->load->helper('url');
	}

	public function collephotos()
	{
		$this->load->view('collegallery');
	}

	public function collephotos1()
	{
		$this->load->view('collegallery1');
	}

	public function collephotos2()
	{
		$this->load->view('collegallery2');
	}

	public function collephotos3()
	{
		$this->load->view('collegallery3');
	}
}

Poi abbiamo creato le pagine in modo da allacciare le VIEW. Non essendoci nessuna parte dinamica su queste pagine non devo importare dei dati utilizzando il MODEL e questo mi consente di posizionare una per una le foto all’ interno delle pagine (non che ci sia di essere particolarmente felici nel fare questa operazione), impostando anche i link per la paginazione

Gli include per facilitare la gestione

Essendoci molte pagine non voglio intervenire singolarmente sulla navbar o sul footer per esempio, quindi per comodità sono stati tagliati i codici corrispondenti dalle 4 pagine, sostituite con gli include di php (o anche require_once) che puntano tutti sotto a una catella includes creata sotto la VIEWS. Volendo avrei potuto fare lo stesso anche per la sezione PAGINATION che alla fine abbiamo lasciato nella 4 pagine come codice sorgente. Quindi all’ interno delle pagine della gallery dedicata mi ritroverò della roba tipo:

<?php include 'includes/collegallerynavbar.php';?>

per la NAVBAR su cui da sotto INCLUDES posso modificare una sola volta i contenuti senza ripetere per il numero di pagine per rendere effettive le modifiche su tutte le pagine o anche:

<?php include 'includes/collegalleryfooter.php';?>

per il FOOTER che avrà un unico luogo per le modifiche da riversare poi su tutte le pagine. La differenza tra require_once e include sta nella rigorosità dei controlli una volta riscontrata in fase di debugging una anomalia: nel primo caso la funzionalità della pagina si arresta mentre una eventuale anomalia con gli include vive in un regime più permissivo senza warning da segnalare.

PROBLEM SOLVING: dopo il caricamento via FTP non vedo nulla cliccando sul link della home page perché?

Perchè avendo clocanto il controller principale e rinominato, dentro la classe dobbiamo andare a inserire il nome della nuova classe creata, in particolare sulla terza riga del controller precedente:

class NomeController extends CI_Controller {

che diventerà appunto NOME EFFETTIVO usato per rinominare il file che utilizzerà sempre la notazione CAMEL-SENSE, nel nostro caso lo abbiamo chiamato ColleGalleryStatic quindi esetenderò dalla classe principale la nuova classe dichiarata:

class ColleGalleryStatic extends CI_Controller {

Fatta questa correzione e trasportato di nuovo tutto via FTP su SERVER ci accorgiamo questa volta che tutto funziona e anche la nuova sezione gallery statica funziona perfettamente all’ indirizzo http://umbriawayformazione.altervista.org/ci_project_glocal/index.php/ColleGalleryStatic/collephotos , bene!

wow

CONCLUSIONI

Anche questa volta abbiamo sperimentato una tecnica nuova, quella di creare un controller completamente adibito a un compito specifico.Questo migliora l’organizzazione interna del codice all’ interno di un ambiente integrato che offre già delle risorse avanzate per sviluppare funzionalità al top. Inoltre siamo entrati dentro al problema, una gallery come http://umbriawayformazione.altervista.org/ci_project_glocal/index.php/ColleGalleryStatic/collephotos non ha molto senso di esistere. In particolare ci siamo accorti che gli “oggetti” contenuti nella foto potrebbero essere gestiti tramite l’uso di CATEGORIE e di TAGS specifici all’ interno di un DB, quindi sappiamo già che cosa dobbiamo fare in the next time, mettere in piedi una gallery questa volta dinamica! Le categorie potrebbero essere tipo: VINTAGE, B/N, LANDSCAPE, CHIESE, FONTANE, LAPIDI, CHIESETTE, MONUMENTI, CASTELLO, PIETRE, TARGHE etc, per esempio, mentre sul campo TAGS potrei racchiudere quelle foto che hanno un particolare interesse storico, scrivendo per esempio GIGLIO dentro quelle foto che mostrano un giglio sopra un arcata o in prossimità di un caminetto. Categorie e TAGS come campi mi serviranno per estrapolare i contenuti che mi interessano dalla pagina!

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...