LEZIONE 9 Continuando la lezione precedente analizziamo un altro oggetto software come il file: ogni file ha un insieme di Proprietà e di Metodi che lo caratterizzano ad esempio: Proprietà: Nome del file Estensione Dimensione Data di creazione Data di modifica Metodi: Rinomina Cancella Crea Sposta Apri Modifica E' interessante notare che un oggetto può contenere altri oggetti !! Nella lezione precedente abbiamo infatti analizzato brevemente l'oggetto Cartella ed abbiamo visto che può contenere dei file che sono a loro volta degli oggetti ! Riassumendo: Gli oggetti software sono dei componenti che hanno delle PROPRIETA' e dei METODI che ne descrivono le caratteristiche e i comportamenti. Fogli di stile costruiti dinamicamente Per gestire dinamicamente i CSS occorre introdurre brevemente alcuni Oggetti disponibili nella versione 3 di ASP (Active Server Page). Dal punto di vista della marcatura i file ASP processano tutto ciò che è incluso fra i seguenti TAG : <% codice ASP %> L'Oggetto REQUEST e l'Oggetto RESPONSE Gli oggetti che andremo ad analizzare sono: * Oggetto request : Questo oggetto viene utilizzato per recuperare dati dal browser dell'utente durante l'elaborazione * Oggetto response : Questo oggetto viene utilizzato per inviare dati al browser dell'utente durante l'elaborazione di pagine Asp. Esempio: Scriviamo due file, uno di raccolta dei dati - che chiameremo raccoltadati.asp - e uno di visualizzazione dei dati raccolti - che chiameremo visualizza.asp File raccoltadati.asp Raccolta dati


File visualizza.asp Visualizza <%Response.Write("Ecco i dati che hai inserito")%>
<%Response.Write(Request.Form("Nome"))%>
<%Response.Write(Request.Form("Cognome"))%> Il file raccolta.asp presenta un form con due campi (nome e cognome) la cui azione invierà i dati al file visualizza.asp. Il file visualizza.asp utilizza il metodo WRITE dell'oggetto RESPONSE per scrivere "Ecco i dati che hai inserito". In seguito utilizza ancora il metodo WRITE dell'oggetto RESPONSE per scrivere ciò che ha ricevuto dal file raccoltadati.asp. Per far ciò viene utilizzata la proprietà FORM dell'oggetto REQUEST esplicitando il campo di cui si vuole vedere il valore. I Cookies I cookies sono dei piccoli file che un web server può scrivere sul computer del visitatore del sito per tener traccia di elementi che potranno tornare utili durante i successivi accessi al sito. Utilizzeremo questa tecnica per gestire dinamicamente i CSS. L'idea di base è la seguente: * un utente che accede al nostro sito avrà un CSS di default (quello che noi considereremo standard). * L'utente potrà scegliere quale CSS utilizzare tramite una apposita pagina che scriverà sul computer dell'utente un cookie con il nome del CSS scelto. In questo modo la volta successiva che l'utente accederà al nostro sito gli verrà assegnato il CSS il cui nome è scritto nel cookie. I Cookies in ASP Per gestire i Cookies in ASP abbiamo a disposizione la proprietà COOKIES sia dell'oggetto request (che useremo per leggere il cookie) sia dell'oggetto response (che useremo per scrivere il cookie). Per scrivere o leggere un cookie dobbiamo dargli un nome: Esempio: Il seguente codice scrive nella variabile css_scelto il valore del cookies il cui nome è "NomeCSS" <% css_scelto = Request.Cookies("NomeCSS")%> Il seguente codice scrive il cookie il cui nome è "NomeCSS" <% Response.Cookies("NomeCSS") = "CSS1.css"%> Scelta Dinamica di un CSS Ammettiamo di avere a disposizione 4 file CSS con la stessa classe ma con attributi diversi Esempio: standard.css .testo { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 1em; } CSS2.css .testo { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 3em; } CSS1.css .testo { font-family: Arial, Helvetica, sans-serif; font-size: 5em; } CSS1.css .testo { font-family: Arial, Helvetica, sans-serif; font-size: 7em; } Come abbiamo imparato nella lezione 6 e 7 per collegare un foglio di stile css ad un file html dobbiamo aggiungere nell' HEAD del documento html il riferimento al file css che, per ipotesi, si trova nella cartella css_folder Esempio: homepage.asp Il mio file html Cerchiamo ora di gestire dinamicamente questo collegamento tramite i cookies. Come fa il web server ha scrivere nel codice html il collegamento al file CSS che abbiamo scelto ? Al posto di "standard.css" nel codice dovrò scrivere il concetto di "prendi il nome del CSS dal cookie, precedentemente salvato." Questo concetto viene scritto in linguaggio ASP: " rel="stylesheet" type="text/css"> Ora sorge il problema di gestire il caso in cui l'utente non abbia mai visitato il nostro sito e non abbia quindi definito il cookie relativo al CSS scelto. Il valore di un cookie non definito nel browser del visitatore è pari ad una stringa nulla di caratteri. Esempio: valore_cookie = Request.Cookies("test") la veriabile valore_cookie sarà uguale a "" cioè ad una stringa nulla di caratteri Riprendiamo la gestione dinamica dei CSS. Scrivendo il codice come sopra " rel="stylesheet" type="text/css"> il web server processerà la pagina ASP e restituirà una pagina HTML la cui sezione relativa al collegamento del file CSS sarà: la pagina html non verrà collegata a nessun file css in quanto il valore del cookie è nullo Vediamo allora come gestire questo caso: Come abbiamo detto in precedenza consideriamo che all'utente "non personalizzato" vogliamo assegnare il standard.css. Faremo uso di una variabile che sarà inizializzata, prima del TAG HEAD del file html, con il valore "standard.css" e varierà nel caso l'utente abbia il definito il cookie. Vediamo come in questo esempio: homepage.asp <% css_scelto = "standard.css" if Request.Cookies("NomeCSS") <> "" then css_scelto = Request.Cookies("NomeCSS") end if %> Il mio file html Tramite questo piccolo stratagemma avrò sempre un valore valido nella variabile css_scelto infatti il codice assegna alla variabile css_scelto il valore "standard.css" poi se il cookie non è nullo la variabile css_scelto assumerà il valore del cookie altrimenti rimarrà del valore precedentemente assegnato LE PAGINE PER LA SCELTA DEL CSS Ora sappiamo come assegnare alla pagina il css che si trova nel cookie dell'utente e sappiamo anche come gestire il caso in cui l'utente non abbia il cookie. A questo punto ci preoccuperemo di scrivere le pagine per far scegliere all'utente il css che preferisce. Dobbiamo fare in modo di scrivere il cookie nel computer dell'utente. Scriveremo due pagine asp: * una che raccoglie la scelta dell'utente * una che scrive il cookie con la scelta effettuata dall'utente. Di seguito troviamo il primo file, Sceglicss.asp, che presenterà un form con un menu a discesa per la scelta del css ed il pulsante di invio dei dati. Sceglicss.asp Scegli il tuo css
Alla pressione del pulsante "Imposta CSS" i dati raccoglie il file Sceglicss.asp saranno inviati al file scrivicookie.asp che si occuperà di scrivere il cookie. scrivicookie.asp <% response.Cookies("NomeCSS") = Request.Form("css") response.Cookies("NomeCSS").Expires = 200 response.Redirect("homepage.asp") %> Osserviamo che: * Il file scrivicookie.asp non sarà mai visualizzato ma serve solo per scrivere il cookie * La seconda riga del codice serve per manterere il cookie per 200 giorni * L'ultima istruzione reindirizzerà il browser alla pagina "homepage.asp" che andrà a leggere il cookie scelto e lo collegherà all'html come visto in precedenza Considerazioni finali Ora siamo i grado di gestire dinamicamente il collegamento al file css. Ovviamente i 4 file css che abbiamo visto contengono solo una classe ma la metodologia si può estendere anche a file css evoluti, con molte classi La soluzione proposta NON è la sola. Il linguaggio ASP permette di gestire il problema affrontato tramite altre soluzioni. Quella che si è voluta dare è solo un'idea di come può funzionare l'assegnazione dinamica di un css tramite ASP. La stessa soluzione potrebbe essere sviluppata in altri tipi di linguaggio come PHP (linguaggio di scripting orientato agli oggetti tipico delle piattaforma UNIX - Linux - Mac OSX, ma disponibile anche per piattaforme windows) o JS (linguaggio di scripting orientato agli oggetti tipico delle piattaforma UNIX SUN, ma disponibile anche per piattaforme windows)