Territorio, storia, cultura

Inizializzare un progetto

Per inizializzare un progetto digitale servono le tecnologie come https://codeigniter.com/download ad esempio e per imbrigliare i contenuti servono testi, immagini, risorse grafiche come https://getbootstrap.com/docs/3.3/components/ o altre librerie offerte a supporto da numerosi framework. In qualsiasi luogo tu viva non c’è problema, le risorse temporali e i contenuti ce le hai cronologicamente a portata di mano indagando sulla grande storia e anche quella più piccola a seconda dove vai a cercare. Sempre parlando di risorse oltre all’ abusato Font-Awesome vediamo che Bootstrap Framework è ricco comunque di suo come icone, oltre alla menzionata Glyphicons che sembra riferito alla versione tre di Bootstrap stiamo notando anche https://icons.getbootstrap.com/#install. In ogni caso gli ingredienti per trasformare l’algoritmo della ricetta in pietanza da ingurgitare ci sono.

Pianificazione

Una volta assodato che di certo non manca la tecnologia (basta avere una normale connessione a Internet per approvvigionarsi) va pianificata la fase di progettazione. Che cosa voglio fare? Diventare sindaco di Bugliano Umbra e lanciare programmi sul rilancio dell’ economia locale? O voglio semplicemente conoscere meglio il territorio che mi ospita indagando sulle risorse messe a disposizione dalla naturale bellezza del paesaggio? Difficile scoprire l’acqua calda così per esempio se voglio replicare a modo mio siti come https://www.pietredellamemoria.it/ dove tra l’altro c’è anche un interessante reperto storico locale (immagino anche altri) https://www.pietredellamemoria.it/pietre/lastra-ai-caduti-di-colle-di-nocera-umbra-nella-grande-guerra/ che ci parla della grande guerra, camminerei su una strada sbagliata in partenza anche perché lo sappiamo in chiave SEO niente è più dannoso e sacrilego che replicare contenuti. Ok stabilito che non voglio fare il copia e incolla di progetti altrui ma scavare a fondo su una zona specifica caratterizzata dall’ appennino che lega Fossato a Foligno con particolare zoom sui cap 06023 e 06025 e che non voglio limitarmi a conoscere solo la storia ma tutto quello che offre il menù per apprezzarne al meglio tutte quelle risorse che spesso vengono bistrattate, lo step prevede un salto alle questioni tecniche. Fortunatamente per noi c’è un famoso aforisma che recita “l’importante è iniziare, solo così puoi iniziare il viaggio”. Con l’esperienza avuta con http://umbriawayformazione.altervista.org/ci_project_seicento/ , giudicando dai report http://umbriawayformazione.altervista.org/index.php/home/plannerdesc, ci ha tenuto impegnati non poco, abbiamo esplorato un ecosistema modulare di possibilità che hanno sconfinato anche in altri settori e quindi prendendo la grande storia del seicento ma non solo come riferimento possiamo inizializzare il nostro progetto con maggiore velocità e meno ansie da prestazione. Sapendo già in anticipo quali sono le problematiche, prima fra tutte quella dei template da usare graficamente. Per risolvere questo problema abbiamo deciso questa volta di sfruttare al massimo il potenziale offerto da https://www.quackit.com dove c’è tantissima roba interessante offerta in free download senza limitazioni, soprattutto poi come nel nostro caso dove la finalità principale non è il business come fattore principale (certo conoscere meglio il territorio, affondando una vanga nel terreno, significa anche avere una faretra più ricca di informazioni, dati che possono diventare produttivi con settori collaterali come la finction per esempio).

Il template grafico

Quindi la parte grafica dei template ci suggerisce anche l’idea di una modularità con micropogetti autonomi all’ interno del progetto GLOCAL che può a sua volta dividersi in altre situazioni grafiche come era già successo con http://umbriawayformazione.altervista.org/ci_project_seicento/ , in questo modo possiamo sfruttare tutto il potenziale offerto dal sito QUACKIT. Risolta anche questa questione non ci resta che iniziare e quindi ci basta avere in questo caso un paio di editor di codice che fanno al nostro scopo e che sono https://atom.io/ e https://code.visualstudio.com/ che sono due ferrari che di fatto vengono usate come utilitarie, visto che c’è tanto da scoprire e che il potenziale non si sfrutta mai appieno (da emmet, agli snippet di codice a plug-in utilitaristici che non vengono installati etc). Perchè due? Non te ne bastava uno? Perchè utilizzeremo un editor per tenere aperto il progetto seicento e un altro per iniziare a riempire il nuovo progetto senza reinventare la ruota, ma trasportando il codice già pronto (è questo il bello di una tecnologia, che una volta ssimilata a livello base, non devi perdere tempo per risolvere gli stessi problemi!).

Glocal nella pratica

A questo punto si passa oltre e ci si domanda: come posso iniziare a vedere la pagina base del mio progetto anche nella pratica? Dopo essere andati su https://codeigniter.com/download con il template scelto da QUACKIT già pronto all’ uso si parte con l’agganzio statico delle risorse, visto che ci sono delle cartelle che codeigniter deve somatizzare. La prima cosa da fare è creare una cartella ASSETS (letteralmente risorse) allo stesso livello della cartella APPLICATION che sappiamo essere molto importante strategicamente in quanto ci consente di lavorare sul famoso PATTERN MODEL-VIEW-CONTROLLER. Dentro la cartella ASSETS devo creare le cartelle del template statico scaricato dalla rete che sono quindi IMG/FONTS/JS/CSS. Per fare questa operazione possiamo semplicemente tagliare il contenuto del file system del template preso e copiarlo dentro la cartella ASSETS di codeigniter creata precedentemente. A questo punto abbiamo preso il contenuto del file HTML e lo abbiamo copiato integralmente nel file welcome_message.php presente dentro la cartella APPLICATION/VIEW. Il passo successivo è stato quello di eliminare il template in quanto la prima fase di assorbimento e di somatizzazione del materiale esterno offerto da QUACKIT è diventata quasi una parte funzionale del core di codeigniter. Naturalmente non è così, infatti quando trasportiamo tutto sul server via FTP che cosa andremo a vedere fatte queste operazioni e tenendo conto che il CERVELLO di tutta la visualizzazione è il file Welcome.php presente dentro APPLICATION/CONTROLLERS così composto:


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

class Welcome extends CI_Controller {

	/**
	 * Index Page for this controller.
	 *
	 * Maps to the following URL
	 * 		http://example.com/index.php/welcome
	 *	- or -
	 * 		http://example.com/index.php/welcome/index
	 *	- or -
	 * Since this controller is set as the default controller in
	 * config/routes.php, it's displayed at http://example.com/
	 *
	 * So any other public methods not prefixed with an underscore will
	 * map to /index.php/welcome/<method_name>
	 * @see https://codeigniter.com/user_guide/general/urls.html
	 */
	public function index()
	{
		$this->load->view('welcome_message');
	}
}

La prima riga viene inserita in un ottica di sicurezza. Analizzando tutto il resto ci accorgiamo di quanto siamo fortunati con codeigniter in quanto senza saperlo ci sta insegnando la programmazione orientata agli oggetti infatti la seconda riga ci sta dicendo: estendo la classe principale CI_CONTROLLER per un nuovo oggetto che chiamerò classe WELCOME e che quindi eredità tutte le proprietà e i metodi della classe genitore. Vediamo intanto l’effetto che fa portando tutto in rete effettiva e quindi trasformando tutta la teoria in pratica grazie a FileZilla scaricabile all’ indirizzo https://filezilla-project.org/download.php che trasporterà più di 400 file su server effettivo (parliamo di circa 12-14 MB di materiale). A questo punto un primo risultato anche se orribile è stato ottenuto e cioé digitando l’indirizzo reale in rete:

non si vede nulla! Aiuto!

Tutto normale, infatti il codice HTML non vede le risorse statiche ad esso agganciate.

GESTIONE DEL CONTROLLER

A questo punto dobbiamo fare tutti gli aggiustamenti del caso. Per ragioni di Marketing visto che il progetto nasce in una località che turisticamente pur essendo bellissima di suo va rivitalizzata, decidiamo di creare un nuovo controller con un nome più appropiato che punta a una pagina più strategica come la classica index. Dopodichè abbiamo per comodità anche spostato la directory di lavoro e riaperto l’editor predispost puntando allanuova location, quindi alla fine il nuovocontroller che si chiamerà ColleNoceraUmbra punterà alla pagina index che non altro che la welcome_message rinominata:

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

class ColleNoceraUmbra extends CI_Controller {

	/**
	 * Index Page for this controller.
	 *
	 * Maps to the following URL
	 * 		http://example.com/index.php/welcome
	 *	- or -
	 * 		http://example.com/index.php/welcome/index
	 *	- or -
	 * Since this controller is set as the default controller in
	 * config/routes.php, it's displayed at http://example.com/
	 *
	 * So any other public methods not prefixed with an underscore will
	 * map to /index.php/welcome/<method_name>
	 * @see https://codeigniter.com/user_guide/general/urls.html
	 */
	public function index()
	{
		$this->load->view('index');
	}
}

A questo punto prima di ritornare a fare FTP dobbiamo andare sulla cartella CONFIG presente dentro APPLICATION e cambiare la ROUTE dal file routes.php del CONTROLLER, in quanto abbiamo deciso di sostituire quello di default per ragioni puramente di MARKETING (la prima lettera del controller per convenzione deve essere sempre MAIUSCOLA), file che quindi diventa:

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

/*
| -------------------------------------------------------------------------
| URI ROUTING
| -------------------------------------------------------------------------
| This file lets you re-map URI requests to specific controller functions.
|
| Typically there is a one-to-one relationship between a URL string
| and its corresponding controller class/method. The segments in a
| URL normally follow this pattern:
|
|	example.com/class/method/id/
|
| In some instances, however, you may want to remap this relationship
| so that a different class/function is called than the one
| corresponding to the URL.
|
| Please see the user guide for complete details:
|
|	https://codeigniter.com/user_guide/general/routing.html
|
| -------------------------------------------------------------------------
| RESERVED ROUTES
| -------------------------------------------------------------------------
|
| There are three reserved routes:
|
|	$route['default_controller'] = 'welcome';
|
| This route indicates which controller class should be loaded if the
| URI contains no data. In the above example, the "welcome" class
| would be loaded.
|
|	$route['404_override'] = 'errors/page_missing';
|
| This route will tell the Router which controller/method to use if those
| provided in the URL cannot be matched to a valid route.
|
|	$route['translate_uri_dashes'] = FALSE;
|
| This is not exactly a route, but allows you to automatically route
| controller and method names that contain dashes. '-' isn't a valid
| class or method name character, so it requires translation.
| When you set this option to TRUE, it will replace ALL dashes in the
| controller and method URI segments.
|
| Examples:	my-controller/index	-> my_controller/index
|		my-controller/my-method	-> my_controller/my_method
*/
$route['default_controller'] = 'ColleNoceraUmbra';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

Già che ci siamo facciamo ancora un’ altra cosa molto importante e cioé quella di andare nel file config.php presente dentro alla cartella APPLICATION/CONFIG per modificare il parametro base_url in modo da semplificarci la vita futura nella navigazione:

$config['base_url'] = '';

e trasformarlo in:

$config['base_url'] = 'http://umbriawayformazione.altervista.org/ci_project_glocal/';

A questo punto ci sono grandi aspettative, cosa vedrò quando porto in rete via FTP? Facciamolo:

Ancora? Ma non dovevamo vederci più?

Andando su http://umbriawayformazione.altervista.org/ci_project_glocal/ mi accorgo quindi che è cambiato poco rispetto a prima, nel senso che il mio problema di fondo rimane quello di linkare le risorse grafiche che sono presenti nel progetto ma non vengono viste nella index, che nel frattempo ha bisogno di diventare dinamica. Questo implica tutta una serie di operazioni che andremo ad affrontare successivamente, al momento abbiamo con successo inizializzato un nuovo progetto perchè come possiamo constatare la home http://umbriawayformazione.altervista.org/ci_project_glocal/ non ci sta dando nessun errore e la cosa buffa è che pur avendo fatto parecchio in termini di operazioni per ottenere questo fallimento visivo, di fatto non ci siamo ancora gratificati di nulla!