C:/Documents and Settings/robi ... - Tesi < Fabio's...

118
Indice 1 Introduzione 1 2 Modifica di contenuti ipertestuali 9 2.1 Gli obiettivi della ricerca ................ 9 2.2 Il sistema ipertestuale ................. 10 2.2.1 L’idea originale del sistema ipertestuale .... 10 2.2.2 Sviluppo e limiti dei sistemi ipertestuali ... 11 2.3 Esigenza di personalizzazione ............. 13 2.4 Soluzioni basate sull’ architettura proxy ....... 14 2.4.1 Vantaggi delle soluzioni proxy ......... 19 2.4.2 Svantaggi delle soluzioni proxy ......... 20 2.5 Soluzioni basate sull’ architettura client ........ 21 2.5.1 Vantaggi delle soluzioni client ......... 27 2.5.2 Svantaggi delle soluzioni client ......... 27 2.6 Meccanismi di estensione del browser ......... 28 2.6.1 Toolbar: navigare, monitorare e conoscere i siti Web ....................... 28 2.7 Conclusioni ....................... 34 3 La sidebar ISAWiki 35 3.1 Introduzione ....................... 35 3.2 Il progetto ISAWiki ................... 36 3.2.1 Content Management System ......... 36 3.2.2 Immediate Site Activator ............ 38 3.2.3 Wiki Wiki Web ................. 40 3.2.4 ISAWiki ..................... 41 3.3 Lo scopo del progetto .................. 43 3.4 La sidebar ISAWiki: una soluzione client-side .... 44 3.5 Comunicazione con la finestra del browser ...... 46 3.6 Comunicazione con l’editor ............... 47 3.6.1 Attivazione dell’editor ............. 48 3.6.2 Editazione di un nuovo documento ...... 49 3.6.3 Editazione di una pagina Web ......... 49 iii

Transcript of C:/Documents and Settings/robi ... - Tesi < Fabio's...

Page 1: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

Indice

1 Introduzione 1

2 Modifica di contenuti ipertestuali 92.1 Gli obiettivi della ricerca . . . . . . . . . . . . . . . . 92.2 Il sistema ipertestuale . . . . . . . . . . . . . . . . . 10

2.2.1 L’idea originale del sistema ipertestuale . . . . 102.2.2 Sviluppo e limiti dei sistemi ipertestuali . . . 11

2.3 Esigenza di personalizzazione . . . . . . . . . . . . . 132.4 Soluzioni basate sull’ architettura proxy . . . . . . . 14

2.4.1 Vantaggi delle soluzioni proxy . . . . . . . . . 192.4.2 Svantaggi delle soluzioni proxy . . . . . . . . . 20

2.5 Soluzioni basate sull’ architettura client . . . . . . . . 212.5.1 Vantaggi delle soluzioni client . . . . . . . . . 272.5.2 Svantaggi delle soluzioni client . . . . . . . . . 27

2.6 Meccanismi di estensione del browser . . . . . . . . . 282.6.1 Toolbar: navigare, monitorare e conoscere i siti

Web . . . . . . . . . . . . . . . . . . . . . . . 282.7 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . 34

3 La sidebar ISAWiki 353.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . 353.2 Il progetto ISAWiki . . . . . . . . . . . . . . . . . . . 36

3.2.1 Content Management System . . . . . . . . . 363.2.2 Immediate Site Activator . . . . . . . . . . . . 383.2.3 Wiki Wiki Web . . . . . . . . . . . . . . . . . 403.2.4 ISAWiki . . . . . . . . . . . . . . . . . . . . . 41

3.3 Lo scopo del progetto . . . . . . . . . . . . . . . . . . 433.4 La sidebar ISAWiki: una soluzione client-side . . . . 443.5 Comunicazione con la finestra del browser . . . . . . 463.6 Comunicazione con l’editor . . . . . . . . . . . . . . . 47

3.6.1 Attivazione dell’editor . . . . . . . . . . . . . 483.6.2 Editazione di un nuovo documento . . . . . . 493.6.3 Editazione di una pagina Web . . . . . . . . . 49

iii

Page 2: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

iv INDICE

3.6.4 Chiusura dell’editor . . . . . . . . . . . . . . . 513.7 Comunicazione con il server ISAWiki . . . . . . . . . 52

3.7.1 Richiesta di un nuovo documento . . . . . . . 533.7.2 Richiesta di un salvataggio . . . . . . . . . . . 543.7.3 Richiesta della lista delle versioni . . . . . . . 543.7.4 Richiesta di un particolare formato . . . . . . 553.7.5 Richiesta della pagina personalizzata . . . . . 56

3.8 Comunicazione con il server XLink . . . . . . . . . . 583.8.1 Creazione di una linkbase . . . . . . . . . . . 583.8.2 Cancellazione di una linkbase . . . . . . . . . 593.8.3 Creazione di un link . . . . . . . . . . . . . . 593.8.4 Salvataggio di un link . . . . . . . . . . . . . . 613.8.5 Inserimento di un link . . . . . . . . . . . . . 613.8.6 Editazione di un link . . . . . . . . . . . . . . 623.8.7 Rimozione di un link . . . . . . . . . . . . . . 63

3.9 Il framework . . . . . . . . . . . . . . . . . . . . . . . 63

4 Implementazione del progetto 654.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . 654.2 Architettura del sistema . . . . . . . . . . . . . . . . 654.3 Tecnologie utilizzate e requisiti per il funzionamento . 664.4 Configurazione del sistema . . . . . . . . . . . . . . . 67

4.4.1 Brevi accenni alla tecnologia COM . . . . . . 684.5 Realizzazione dell’oggetto Explorer Bar . . . . . . . . 704.6 Comunicazione con la finestra del browser . . . . . . 71

4.6.1 Oggetto IWebBrowser2 . . . . . . . . . . . . . 724.6.2 Meccanismo di callback . . . . . . . . . . . . . 724.6.3 Evento BeforeNavigate . . . . . . . . . . . . . 734.6.4 Evento DocumentComplete . . . . . . . . . . 74

4.7 Controlli della sidebar . . . . . . . . . . . . . . . . . 754.8 Comunicazione con l’editor . . . . . . . . . . . . . . . 77

4.8.1 Attivazione dell’editor . . . . . . . . . . . . . 774.8.2 Editazione di un documento del server ISAWiki 804.8.3 Editazione di un documento dell’origin server 804.8.4 Chiusura dell’editor . . . . . . . . . . . . . . . 814.8.5 Salvataggio di un documento . . . . . . . . . . 83

4.9 Comunicazione con il server ISAWiki . . . . . . . . . 844.9.1 Richiesta di un nuovo documento . . . . . . . 844.9.2 Richiesta di un salvataggio . . . . . . . . . . . 854.9.3 Richiesta della lista delle versioni . . . . . . . 874.9.4 Richiesta di un particolare formato . . . . . . 904.9.5 Richiesta della pagina personalizzata . . . . . 91

4.10 Comunicazione con il server XLink . . . . . . . . . . 92

Page 3: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

INDICE v

4.10.1 Il server XLink . . . . . . . . . . . . . . . . . 924.10.2 Protocollo di comunicazione client-server XLink 934.10.3 Lista delle linkbase . . . . . . . . . . . . . . . 944.10.4 Creazione di una linkbase . . . . . . . . . . . 944.10.5 Cancellazione di una linkbase . . . . . . . . . 954.10.6 Definizione di un XPointer . . . . . . . . . . . 964.10.7 Creazione di un XLink . . . . . . . . . . . . . 984.10.8 Salvataggio di un XLink . . . . . . . . . . . . 1004.10.9 Inserimento di un XLink . . . . . . . . . . . . 1004.10.10Editazione di un XLink . . . . . . . . . . . . . 1024.10.11Rimozione di un XLink . . . . . . . . . . . . . 102

4.11 Limiti implementativi . . . . . . . . . . . . . . . . . . 103

5 Conclusioni e sviluppi futuri 105

Bibliografia 107

Page 4: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

vi INDICE

Page 5: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

Capitolo 1

Introduzione

Nella presente dissertazione si parlera della realizzazione di

un sistema volto ad offrire all’utente un ambiente di navigazione

personalizzato, in grado di rispondere alle sue specifiche esigenze.

In questo capitolo viene presentata l’area di riferimento del

lavoro svolto, evidenziando il suo carattere innovativo rispetto

agli altri sistemi gia sviluppati in merito e, pur entrando

nel vivo dell’argomento, vi saranno mostrati solo gli aspetti

salienti rimandando il lettore ai capitoli successivi per dettagli ed

approfondimenti.

Questa ricerca nasce dall’esigenza di colmare alcune delle carenze

dell’attuale modello ipertestuale del World Wide Web grazie

all’aggiunta di nuove funzionalita. Dal 1990, il World Wide Web

ha raggiunto molteplici e differenziati sviluppi, tuttavia non riesce

ancora a sfruttare tutte le enormi potenzialita del suo modello

base, ossia l’ipertesto. Il concetto e la definizione di ipertesto fu

introdotto da Ted Nelson, che ne parla come di un’“organizzazione

non sequenziale dell’informazione in analogia ai meccanismi cognitivi

dell’essere umano” [Nel65]; dunque, uno strumento mediante il quale

l’utente puo organizzare le proprie idee in modo da non dover

piu essere legato alla usuale struttura lineare del testo; dunque,

un approccio alla gestione delle informazioni in cui i contenuti

sono memorizzati all’interno di una rete di nodi che, mediante

opportuni collegamenti, possono far riferimento gli uni con gli altri.

Nelson ipotizzo che i sistemi ipertestuali avrebbero dovuto riflettere

1

Page 6: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

2 CAPITOLO 1. INTRODUZIONE

l’“iperspazio” dei processi mentali dell’uomo.

Negli anni successivi, Nelson sviluppa lo studio del concetto

di ipertesto fino ad esaltarlo nel progetto Xanadu [Nel87], nel

quale propone il sistema ipertestuale come un unico, grande

deposito informativo in cui tutti gli utenti potevano aggiungere

materiale, correggere documenti altrui, aggiungere note e commenti,

organizzare, collezionare e pubblicare qualunque frammento

memorizzato nel sistema. Ogni utente poteva eseguire tali operazioni

contemporaneamente ad altri e senza violare i diritti degli autori

originali, grazie ad un complesso e completo meccanismo di

memorizzazione, indirizzamento e gestione dei permessi. Percio

Xanadu, oltre ad essere un sistema “ipertestuale”, era soprattutto

un sistema di “produzione ipertestuale collaborativa e pluralistica”.

Il World Wide Web ha realizzato molti degli aspetti dell’originaria

visione di Nelson diventando, in tempi sorprendentemente brevi, la

piu visibile manifestazione di un potente mezzo di comunicazione

la cui caretteristica piu importante e la “democraticita”. Ogni

giorno il Web raggiunge un numero sempre maggiore di utenti e

questo grazie anche alla sua semplice architettura e all’adozione di

standard che hanno reso possibile la diffusione di una cosı vasta

quantita di informazioni. Tuttavia proprio l’espansione e la mole di

nozioni che il World Wide Web fornisce ne hanno minato l’ulteriore

evoluzione facendo sı che restasse, per certi aspetti, un passo indietro

rispetto ad altri studi nell’ambito degli ipertesti. In particolare, i

browser pre-Web prevedevano sia un maggiore supporto per editor

per la modifica del contenuto dei documenti, sia un meccanismo

della gestione di collegamenti ipertestuali piu flessibile. Dunque,

World Wide Web e sı oggi un potente mezzo di comunicazione, ma la

vasta quantita d’informazione che vi passa attraverso spesso rischia

di disorientare i lettori richiedendo loro un grande sforzo cognitivo.

Inoltre, gli utenti spesso non riescono ad avere accesso ad una cosı

vasta quantita di informazione e finiscono col diventare dei “lettori

passivi”. Infatti, i moderni browser Web sono ancora caratterizzati

da una separazione troppo rigida tra il ruolo dei lettori e quello

degli autori. I lettori, solitamente, hanno a disposizione numerosi e

Page 7: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3

semplici tool per seguire i percorsi di lettura indicati esplicitamente

dagli autori ma non possono creare nuovi contenuti, link, o versioni

personalizzate delle pagine Web. Gli autori invece, benche abbiano

tutte le facolta per poter compiere queste operazioni di modifica sui

documenti, spesso hanno bisogno di conoscere ed avere a disposizione

un vasto numero di tecnologie e tool per potere creare delle pagine

soddisfacenti.

Molti sistemi sono stati sviluppati con l’obiettivo di trasformare gli

utenti in “lettori attivi”. Alcuni offrono un ambiente per la creazione

di link dinamici in un sistema collaborativo. Altri permettono

semplicemente la condivisione e lo scambio di informazioni o sistemi

per la generazione di annotazioni sulle pagine. Altri ancora,

come mailing-list, newsgroup, shared access ed interactive pages,

permettono meccanismi piu o meno complessi per la condivisione

di risorse, attraverso l’utilizzo di editor testuali. Tutti questi sistemi

sono volti ad offrire all’utente degli strumenti per poter accedere ai

contenuti e modificare le pagine, per soddisfare le proprie necessita,

ma nessuno di essi e stato ancora in grado di dar vita ad un sistema

ipertestuale completo. Ancora oggi la concezione di Nelson nel

progetto Xanadu resta dunque un influente esempio del modello su

cui un sistema ipertestuale dovrebbe basarsi.

L’obiettivo centrale di questo lavoro e quello di offrire all’utente

un sistema ipertestuale in grado di far fronte a molteplici esigenze

quali aggiungere parti all’ipertesto, personalizzarne il contenuto,

collegare e modificare il lavoro anche scritto da altri. Nel corso di

questa dissertazione viene dimostrato come sia possibile arricchire

di nuove funzionalita l’attuale sistema ipertestuale senza il bisogno

di rivoluzionare completamente l’architettura su cui si basa il

Web, ma semplicemente mediante l’utilizzo di tecnologie client-side.

In particolare, e stata realizzata un’estensione dell’interfaccia piu

ampiamente utilizzata, ovvero il browser. Il browser svolge un

ruolo centrale per l’interazione dell’utente con il Web durante la

navigazione, pertanto, per tenere vivo questo rapporto, e necessario

permettere all’utente di costruire un ambiente personalizzato secondo

Page 8: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4 CAPITOLO 1. INTRODUZIONE

le proprie necessita.

Il sistema realizzato nel corso di questa tesi e nato come sviluppo

del progetto ISAWiki [DV04] e si e poi evoluto con l’aggiunta di

altre funzionalita. ISAWiki e un progetto ideato da un team di

varie persone, presso il dipartimento di Informatica dell’Universita

di Bologna e ancora in via di sviluppo. ISAWiki nasce dalla

fusione di ISA [Vit03] e della filosofia dei wiki [Cun02]. ISA e

un’applicazione server-side che permette ad un utente di produrre

pagine Web complesse senza possedere alcuna conoscenza tecnica

particolare. La grande innovazione di ISA e quella di consentire la

generazione di contenuti e modelli grafici utilizzando software molti

diffusi e di semplice utilizzo. ISAWiki estende le funzionalita di ISA

integrando in esso le caratteristiche dei CMS ovvero le funzionalita

necessarie per l’automazione dei processi di creazione, revisione,

controllo, composizione e pubblicazione dei documenti. Vengono

inoltre implementate le funzionalita tipiche dei sistemi wiki. I wiki

sono strumenti collaborativi che permettono, tramite l’utilizzo dei

browser maggiormente diffusi, di visualizzare ed editare i documenti

in maniera semplice facendo uso di un linguaggio di markup molto

intuitivo. In tale sistema, pero, l’aspetto grafico non ha importanza

e viene quindi privilegiato il contenuto. ISAWiki eredita tutte le

caratteristiche piu significative e l’approccio innovativo di entrambe

le categorie proponendosi come strumento collaborativo che permette

la condivisione di documenti attraverso il Web e allo stesso tempo la

creazione di siti anche complessi.

Inizialmente il progetto ISAWiki si era sviluppato solamente come

applicazione server-side e offriva all’utente alcuni servizi quali

la memorizzazione dei documenti mediante un meccanismo di

versionamento, la conversione di un documento in diversi formati,

possibilita di associare ad un documento layout diversi, il supporto

per l’editazione dei documenti tramite modifica del codice HTML

o wiki della pagina, la ricerca di particolari pattern di testo nei

documenti memorizzati, la configurazione e il setup utente.

La mancanza di un’interfaccia client pero impediva all’utente di

Page 9: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

5

poter sfruttare pienamente tutte le potenzialita del server. Inoltre

era necessario anche arricchire il sistema di alcune funzionalita per

rendere la fase di creazione e di modifica dei documenti ancora piu

semplice per l’utente.

“customization is modifying a web site to suit the

needs of an individual user; customization necessitates

creating a large number of versions of the web site - one

for each user..” [EP00]

Il contributo offerto dal seguente lavoro, all’interno del progetto

ISAWiki, consiste nella realizzazione di un’interfaccia client tramite

la quale l’utente puo utilizzare oltre a tutti i servizi che il sistema

ISAWiki offre, anche altri servizi. Essa e rappresentata da una

sidebar, ovvero un’area di visualizzazione di alcune informazioni

all’interno del browser, che permette ad un utente di assumere un

ruolo di partecipante “attivo” durante la navigazione.

Tramite la sidebar e possibile visualizzare la lista di tutte le versioni

dei documenti presenti sul server e accedere ad ognuna di queste.

Inoltre, la sidebar effettua un meccanismo di monitoraggio sulla

navigazione dell’utente, mediante il quale l’utente, ogni volta che

richiede un documento tramite URL, nel caso in cui esistano delle

versioni personalizzate di questo documento oltre a quello presente

sull’origin server, viene sempre aggiornato con la versione piu recente

(a meno che non venga richiesta una versione particolare). La sidebar

permette anche di attivare una serie di funzionalita realizzate da

altri membri del progetto ISAWiki: tra queste, la piu importante

e quella di ospitare al suo interno un editor mediante il quale

l’utente puo creare e modificare in modo veloce il contenuto di una

pagina Web, direttamente dal browser. Rispetto all’editor testuale

offerto dal server, l’editor presente nella sidebar e in grado di editare

il documento in maniera strutturata, accedendo direttamente alla

risorsa (in place) e senza necessita di conoscere il codice HTML

della pagina. Dal momento che, durante lo sviluppo del progetto

Page 10: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

6 CAPITOLO 1. INTRODUZIONE

ISAWiki, si e ritenuto non interessante per l’utente modificare l’intera

pagina (i siti professionali sono composti da troppe strutture ed

elementi che rendono il codice complicato anche per una persona

esperta), e stato necessario realizzare uno strumento apposito per

l’analisi e la valutazione degli elementi in essa presenti. La sidebar

utilizza questo strumento per identificare le aree con il reale contenuto

del documento; successivamente rende editabili queste parti ed

attiva l’editor solo su queste zone. Tramite la sidebar e inoltre

possibile pubblicare sul Web i propri documenti, siano essi nuovi

o documenti personalizzati tramite l’editor, poter rivisualizzare le

pagine personalizzate ad una successiva richiesta dello stesso URL e

condividere le pagine personalizzate tra piu utenti.

Per mezzo di questa interfaccia viene fornita la funzionalita

aggiuntiva, rispetto ai servizi offerti solo lato server, di poter

modificare le proprieta delle versioni intermedie, quali la rinomina e

il cambio dei permessi in lettura e scrittura, eliminando la necessita

di creare una nuova versione ed essere obbligati a ridefinirli.

Inoltre dalla sidebar e possibile gestire delle linkbase esterne che

permettono la memorizzazione di informazioni ipertestuali da inserire

in fase di visualizzazione sul documento.

Queste funzionalita rendono il Web un ambiente di editing

collaborativo. Le informazioni aggiunte possono essere condivise,

pubblicate, navigate in maniera sincrona ed asincrona.

La sidebar e stata realizzata grazie ad un’applicazione scritta in C++

e ad un insieme di script Javascript.

I capitoli successivi sono organizzati nel modo seguente:

Nel capitolo 2 saranno discussi in modo approfondito i limiti del

World Wide Web dal punto di vista delle funzionalita ipertestuali, le

varie forme di personalizzazione finora sviluppate e le tecniche sulle

quali si sono basate.

Nel capitolo 3 saranno descritte le funzionalita della sidebar, le scelte

progettuali ed il funzionamento generale del sistema.

Nel capitolo 4 saranno analizzati i dettagli implementativi relativi

alla realizzazione del progetto.

Page 11: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

7

Nel capitolo 5 sara riesaminato il lavoro svolto e si delineera una

traccia per migliorare ed ampliare il framework realizzato.

Page 12: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

8 CAPITOLO 1. INTRODUZIONE

Page 13: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

Capitolo 2

Modifica di contenutiipertestuali

Uno degli obiettivi del World Wide Web e fare in modo che

tutti gli utenti abbiano accesso ad un vasto numero di informazioni.

Grazie all’infinita di pagine, il Web potrebbe apparire come il

luogo dove trovare informazioni riguardo ogni argomento. In realta,

anche se navigare il Web e semplice, non sempre l’utente riesce

a trovare cio di cui ha bisogno in una cosı vasta quantita di

informazioni. Molto tempo viene inutilmente speso nel tentativo

di cercare l’informazione desiderata e spesso ci si vede costretti ad

uscire dalle ricerche senza aver ottenuto risultati significativi. E

ampiamente riconosciuto [BMK97] che se l’utente potesse accedere

ad una versione personalizzata del Web, le sue attivita sarebbero

compiute in maniera piu semplice e piu veloce.

2.1 Gli obiettivi della ricerca

Un sistema ipertestuale completo deve permettere al lettore non

solo di navigare secondo le proprie esigenze e gusti ma anche di

aggiungere parti all’ipertesto, di personalizzarne il contenuto, di

commentare, migliorare, collegare e modificare anche il contenuto

scritto da altri. Tutto questo deve ovviamente avvenire senza violare

nessun permesso di scrittura o lettura, visto che chiunque dovrebbe

avere la possibilita di modificare qualunque pagina dell’ipertesto.

L’organizzazione impersonale dell’informazione sul Web ha alcune

9

Page 14: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

10 CAPITOLO 2. MODIFICA DI CONTENUTI IPERTESTUALI

conseguenze negative per gli utenti, di conseguenza semplici

agenti possono lavorare insieme per produrre nuove funzionalita

e intelligentemente ed automaticamente personalizzare il Web con

l’obiettivo di estendere l’attuale modello usufruendo dell’enorme

espressivita e delle capacita del sistema ipertestuale. Personalizzare

il Web significa aggiungere nuove funzionalita all’ambiente di

navigazione al fine di migliorare l’ordinaria interazione dell’utente

con il Web.

2.2 Il sistema ipertestuale

Prima di analizzare le caratteristiche del sistema ipertestuale e

necessario approfondire il concetto di ipertesto. L’ipertesto e visto

come un’organizzazione non sequenziale dell’informazione, suddivisa

in nodi di concetto e collegamento tra gli stessi. Il modello

ipertestuale e stato ideato infatti per rendere la lettura e la scrittura

piu vicina ai meccanismi cognitivi propri dell’essere umano: ogni

nostro pensiero e composto da elementi semplici, nodi di informazioni

che messi in relazione tra di loro realizzano significati anche molto

complessi. Il modello ipertestuale trova pero nel mezzo cartaceo

un ostacolo per la sua completa realizzazione, invece il formato

elettronico sembra essere lo strumento piu adatto in grado di dare vita

ad una completa gestione ipertestuale delle informazioni. L’ipertesto,

visto generalmente come un bene utile al sapere individuale perche

crea un modello di gestione dell’informazione vicino ai processi

mentali dell’uomo, non fornisce vantaggi solo dal punto di vista

del singolo, ma, collocandolo all’interno di un ambiente informativo

condiviso, costituisce uno strumento in grado di ampliare le capacita

umane nel campo della gestione collaborativa dell’informazione.

2.2.1 L’idea originale del sistema ipertestuale

I “pionieri dell’ipertesto”, Bush(1945) [Bus45], Nelson (1965)

[Nel65] e Engelbart(1984) [Eng84], avevano visto nei sistemi

ipertestuali un potente mezzo per l’apprendimento individuale, uno

Page 15: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

2.2. IL SISTEMA IPERTESTUALE 11

strumento per facilitare il lavoro collaborativo, un sistema per

condividere il proprio sapere al fine di sviluppare un’“intelligenza

collettiva”. Quando Nelson introdusse i due termini “hypertext”

e “hypermedia” la sua idea era quella di realizzare un universo

informativo, il docuverso, nel quale potesse trovare posto tutta

la produzione informativa umana; una rete mondiale, che potesse

essere utilizzata da centinaia di milioni di utenti simultaneamente,

costituita dagli insiemi degli scritti, delle immagini, dei dati

conservati in tutto il mondo. Nel 1987, Ted Nelson progetto Xanadu,

il sistema che avrebbe dovuto gestire la rete, permettendo di sfruttare

completamente il potere del sistema ipertestuale per reperire in

maniera facile ogni documento. Il progetto era basato sull’idea di

una comunita di utenti in grado di condividere risorse, interagire,

modificare le informazioni condivise (anche collegandole tra loro) e

pubblicarle (memorizzandole) in archivi ad accesso pubblico.

Il World Wide Web fu inizialmente sviluppato per essere un potente

mezzo ipertestuale, condivisibile e scrivibile.

2.2.2 Sviluppo e limiti dei sistemi ipertestuali

Nel 1972, in piena guerra fredda, si inizio a definire una rete

militare denominata DARPA che si sarebbe trasformata in pochi

anni in Internet e alla quale nel 1987 sarebbe stato collegato anche

il CERN (Laboratorio Europeo per lo Studio della Fisica delle

Particelle). Fu proprio presso il CERN che Tim Berners-Lee, insieme

a Robert Cailliau, propose uno strumento per la divulgazione e la

catalogazione in rete dei documenti scientifici. Il primo prototipo

del progetto di Berners-Lee che prese vita nel 1990 era costituito da

un insieme di server, in grado di memorizzare i documenti, e da un

browser in grado di visualizzarli, con la particolarita di comprendere

un potente meccanismo di editing costruito sul browser stesso. In

questo modo tutti gli utenti potevano, oltre che leggere, anche

pubblicare le pagine Web. Cosı fin dall’inizio il Web era un mezzo

completamente collaborativo. Tuttavia il primo browser di Tim

Berners-Lee non era portabile su piu piattaforme tanto che presto

Page 16: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

12 CAPITOLO 2. MODIFICA DI CONTENUTI IPERTESTUALI

nacque la necessita di trasformarlo in uno strumento che permettesse

di accedere ai documenti solo in lettura. Nel 1993, il NCSA Mosaic

“read only” divenne presto la predominante interfaccia del Web,

e formo le basi dei moderni browser Web. Mosaic fu prodotto

originariamente per ambienti X-Windows e successivamente fu reso

compatibile anche per altre piattaforme. Un browser universalmente

compatibile condusse ad una crescita esponenziale dell’informazione

on-line in modo tale da rendere il Web la piu visibile manifestazione

di un nuovo mezzo: l’ipertesto globale.

Dalla meta degli anni novanta, molti sforzi sono stati compiuti nel

tentativo di dare nuovamente all’utente la possibilita di modificare

direttamente le pagine dal browser, ma senza ottenere degli

effettivi risultati. L’utilizzo dell’infrastruttura standard del Web

(client-server), inducendo a creare materiale fuori dall’ambiente del

Web e a pubblicarlo solo successivamente su un server, non solo

associa all’informazione disponibile sul Web la caratteristica di essere

“read-only”, ma delle volte rende lungo e arduo il processo di

creazione di contenuti per il Web, per un utente non troppo esperto.

Ancora oggi resta considerevole il numero di applicazioni il cui ciclo

di vita sarebbe piu semplice se questo fosse supportato interamente

da un ambiente ipermediale.

I correnti browser Web forniscono un limitato supporto per

personalizzare il Web. La ricerca nell’ambito dei sistemi ipertestuali

ha portato a definire una serie di problemi, sia dal punto di

vista del modello sia dal punto di vista delle funzionalita, che

compromettono la funzionalita del World Wide Web. Esistono

alcuni aspetti che impediscono di rendere il Web un vero sistema

ipertestuale completo come: la mancanza di browser che permettano

la modifica e la pubblicazione del documento, la carenza di sistemi

che permettano la raccolta delle informazioni ipertestuali riguardo

il documento, la scarsa evoluzione dei meccanismi di linking. Uno

dei punti deboli del Web e indubbiamente il modello di linking,

per cui il W3C ha proposto uno standard per far evolvere tale

modello. Lo standard XLink [DMO01] definisce un meccanismo

che utilizza sintassi XML (Extensible Markup Language) [BPS04]

Page 17: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

2.3. ESIGENZA DI PERSONALIZZAZIONE 13

per definire link ipertestuali tra documenti XML. Tramite XLink

e possibile definire sia collegamenti ipertestuali interni che esterni.

Inoltre sono previsti link bidirezionali, link che collegano un numero

arbitrario di risorse ed e possibile definire un ruolo semantico delle

varie componenti. Tuttavia, sebbene il linguaggio XLink standard

sia potente e completo il supporto nei correnti browser e ancora

incompleto, dal momento che essi sono in grado solo di visualizzare

link HTML.

2.3 Esigenza di personalizzazione

Nasce l’esigenza di fare in modo che l’utente utilizzi il Web non

solo per avere accesso ad una grande quantita di informazioni ma

anche per pubblicare i propri documenti, per gestire i propri dati e

le proprie informazioni.

Si avverte [CHM03] dunque la necessita di provvedere un’ambiente

di manipolazione di contenuti integrato con il browser che abbia i

seguenti requisiti:

• Writable Web: gli utenti dovrebbero avere la possibilita sia

di aggiungere dei nuovi contenuti, delle annotazioni e dei

commenti alle pagine Web sia di condividere le informazioni;

dovrebbero diventare dei “lettori attivi”;

• Information Foraging : gli utenti dovrebbero avere la possibilita

di poter raccogliere e collezionare le informazioni per

poterle facilmente riutilizzare sfruttando tutti i benefici della

condivisione;

• Linkable Web: gli utenti dovrebbero avere la possibilita

di collegare le informazioni presenti all’interno delle pagine

secondo le proprie esigenze per poter avere un accesso piu veloce

ai contenuti di cui hanno bisogno.

In letteratura sono state effettuate molte ricerche per rendere

l’esperienza con il Web personalizzata e per sviluppare dei sistemi

di collaborazione delle risorse.

Page 18: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

14 CAPITOLO 2. MODIFICA DI CONTENUTI IPERTESTUALI

Molti sistemi usano meccanismi di filtro delle informazioni per

tenere traccia della storia della navigazione dell’utente allo scopo di

riconoscerne le abitudini: ripetute selezioni degli stessi link, tempo

speso su una particolare pagina, numero di accessi ad una specifica

informazione. Tutte queste informazioni vengono poi rielaborate allo

scopo di ottenere un utile modello basato sulle attuali interazioni

dell’utente con il Web durante la sua navigazione.

Questi sistemi possono essere chiamati anche “Web augumentation

tools” [Bou99] e possono essere classificati in base alle tecnologie

utilizzate per la modifica delle pagine e al metodo di integrazione

con il browser (parte del Web browser, plug-in, proxy, Web

server), in base al livello di collaborazione supportata (personale,

condivisibile, asincrona, sincrona), in base alle necessita di sistemi di

memorizzazione esterna (nessuna, locale, remota).

Vediamo di seguito alcuni di questi sistemi che si sono basati su

un’architettura di tipo proxy per raggiungere i loro obiettivi.

2.4 Soluzioni basate sull’ architettura

proxy

Il proxy e “un programma intermediario che agisce tanto come

un server quanto come un client al fine di soddisfare delle richieste

nell’interesse di altri client” [BFF99]. Il proxy si comporta come

un normale client che richiede il documento al server che possiede

l’informazione (origin server), elabora la richiesta in locale e si

collega come un client con un server (non necessariamente l’origin

server) o altro ancora, a seconda delle funzionalita che si sono volute

implementare nel proxy. Una volta stabilita la risposta, il proxy si

occupa di rinviarla al client che l’aveva richiesta.

In letteratura esistono molti sistemi che permettono un intervento

personale dell’utente sulle risorse esterne del World Wide Web

tramite l’utilizzo di un server proxy, che si occupa di modificare i

documenti e mandarli al client al posto di quelle originali. Di seguito

sono presentati alcuni di questi sistemi ritenuti interessanti ai fini di

questa ricerca.

Page 19: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

2.4. SOLUZIONI BASATE SULL’ ARCHITETTURA PROXY 15

Aquarelle

Il progetto europeo Aquarelle [Riz97] aveva lo scopo di fornire dei

meccanismi di accesso al particolare tipo di informazione utilizzata

per descrivere il patrimonio culturale europeo, che include pitture,

sculture, siti storici, monumenti e strumenti musicali. Esistono due

tipi di tale informazione: “primary data” e “secondary data”. Il

primo tipo indica l’informazione fornita dai musei, gallerie d’arte,

ed altre organizzazioni culturali che registrano i dettagli delle loro

collezioni. Il secondo e piuttosto un’informazione specialistica

riguardo le collezioni. I dati primari vengono memorizzati su

degli “archive servers” ed i dati secondari vengono memorizzati

su delle “structured folders”; queste ultime contengono riferimenti

agli item sugli archivi dei server e alle altre folder relative.

Aquarelle provvede un’accesso all’informazione mediante “querying”

e “hypertext navigation”. Il sistema permette all’utente di avere

accesso all’informazione, lo assiste nella formulazione delle query di

ricerca, gli suggerisce gli archivi piu rilevanti, comunica le query al

server e gli restituisce infine le corrette informazioni. I link vengono

gestiti con lo scopo di mantenere l’integrita delle informazioni tra le

folder del server e gli archivi, senza incorrere in problemi di “dangling

link”. Il cuore del sistema Aquarelle consiste nel proveddere una

connessione tra gli user client, gli “archive servers” e le “structured

folders”. Aquarelle si basa su un sistema di link server distribuito.

CritLink

Il sistema CritLink [Pin97], implementato da Ka Ping Yee, e un

proxy universale, grazie al quale ogni utente della rete puo aggiungere

annotazioni a qualunque pagina della rete stessa. La gestione delle

annotazioni avviene mediante un sistema di memorizzazione esterna.

Le pagine originali, infatti, sono caricate da qualunque server Web;

il proxy, in seconda fase, arricchisce tali pagine con i commenti degli

utenti registrati restituendo al browser la pagina arrichita con le

informazioni aggiunte.

Page 20: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

16 CAPITOLO 2. MODIFICA DI CONTENUTI IPERTESTUALI

Goate

Goate [AM02] e un proxy che supporta XLink e permette

l’inserimento di link ad alto livello all’interno di documenti HTML,

dando la possibilita di visualizzare tali link tramite browser. Tutti i

documenti richiesti passano attraverso il proxy che ha il compito di

alterare il documento e renderlo compatibile con il linguaggio HTML,

interpretabile dal browser. Goate mostra come possa essere utilizzata

una relazione unidirezionale tra le risorse per un piu complesso

sistema di linking. Lo scopo di Goate e quello di portare un sistema di

linking ad un alto livello di compatibilita con tutti i browser tramite

una semplice soluzione proxy. Se il ruolo del proxy fosse svolto dal

server si rischierebbe di avere un sistema dipendente dal server Web,

similmente se fosse svolto dal client. Sebbene l’iniziale scopo fosse

quello di estendere i browser con il supporto di XLink, il progetto

voleva poi andare oltre e si proiettava verso lo studio di possibili

implementazioni per l’inserimento di XLink anche in altri linguaggi,

come il C o il Java.

Microcosm

Il sistema Microcosm [DFH92], sviluppato presso l’Universita di

Southampton agli inizi degli anni novanta, offre gia la funzionalita

di creare collegamenti ipertestuali tra informazioni gestite da

applicazioni esterne al sistema stesso. Il sistema puo essere visto

come un ambiente a “ombrello” che permette all’utente di creare

link ipertestuali da un documento, aperto da un’applicazione, verso

un documento aperto in un’altra e, vista la sua flessibilita, e

stato utilizzato in diversi campi, da quello educativo a quello

di gestione di archivi di grandi dimensioni. Microcosm consiste

in una serie di processi autonomi che comunicano tra loro

mediante scambio di messaggi: le informazioni sui collegamenti sono

memorizzate esternamente alle risorse in appositi database (linkbase)

che mantengono informazioni riguardo all’ancora di partenza (se

presente) e a quella di destinazione, piu una serie di informazioni utili

per la descrizione del collegamento. Questo sistema e particolarmente

Page 21: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

2.4. SOLUZIONI BASATE SULL’ ARCHITETTURA PROXY 17

interessante dato che permette di avere dei diversi set di link per

la stessa risorsa, e di definire collegamenti memorizzati su supporti

read-only come CD-Rom e video disc. I link vengono riapplicati ad

ogni richiesta ed esiste un ben definito meccanismo di paternita delle

singole modifiche. Tale caratteristica, derivata da Xanadu, mira ad

unificare il processo di lettura e di personalizzazione di documenti

ipertestuali.

Open HyperMedia Protocol

Open HyperMedia Protocol [MMD00] e un meccanismo che

permette di esprimere link in maniera indipendente dal dominio

di appartenenza delle risorse. Il framework e definito FOHM,

Fundamental Open Hypertext Model, e propone un modello comune

di dati ed un’insieme di operazioni applicabili a tutti i domini. Tenere

le informazioni riguardanti i link separate dal documento permette

di definire strutture di linking molto potenti e anche multidirezionali.

FOHM estrapola la struttura degli ipertesti appartenenti a differenti

domini ipertestuali (“navigational”, “spatial”, “taxonomic”), senza il

bisogno di utilizzare applicazioni esterne aggiuntive per interpretare

la struttura del link. Il sistema, riconducendosi sempre allo stabilito

range di domini, e gia in grado di riconoscere alcune importanti

proprieta del link. Alternativamente vengono definiti nuovi domini,

sufficientemente generici, per memorizzare le strutture richieste dai

correnti domini e presumibilmente anche dai futuri domini. Nel

tentativo di individuare le caratteristiche comuni tra i domini, il

sistema minimizza anche i costi di esecuzione.

WebVise

Il sistema WebVise [GSO99] e un sistema che cerca di estendere

l’attuale modello ipertestuale con l’utilizzo di un “hypermedia

service” che e una sorta di “middleware” tra le varie applicazioni

che girano tra le workstation degli utenti ed i server. Il Webvise

Client e integrato con Internet Explorer e permette di creare link

ed annotazioni tra frammenti di pagine HTML senza utilizzare tag

Page 22: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

18 CAPITOLO 2. MODIFICA DI CONTENUTI IPERTESTUALI

HTML, e di condividere i link cosı definiti. Le strutture create

vengono poi memorizzate in linkbase esterne. Il proxy interroga

il WebVise server per ogni documento richiesto tramite il browser

con lo scopo di trovare potenziali strutture esterne da inserire nel

documento.

WebWriter

Il WebWriter II Editor [CCB97] e una diretta manipolazione di

un editor HTML collocato all’interno di un Web browser ed utilizza

entrambe tecnologie server-side e client-side allo scopo di acquisire

vantaggi da entrambe le architetture. L’editor WebWriter e realizzato

mediante un’applicazione CGI scritta in C++. L’interfaccia

utilizzata e basata su frame HTML ed include frame individuali per

la preview dei documenti. Supporta la costruzione di semplici ed

interattive applicazioni Web senza il bisogno di conoscere HTML

o programmazione CGI. Oltre all’editor, il Web Writer include il

“WebWriter Page Generator”, un’applicazione CGI che consente di

creare nuove pagine Web. Ogni volta che l’editor viene richiamato,

Web Writer genera una pagina che contiene un tag nascosto per

memorizzare le informazioni relative allo stato corrente della sessione

di editing. Questo elemento e necessario per permettere al CGI di

ristabilire lo stato di tutte le strutture dati che riguardano la fasi di

editing dando l’illusione che il programma sia sempre in esecuzione

per eseguire le modifiche richieste dall’utente.

XLinkProxy

XLinkProxy [CFR02] e un progetto sviluppato all’Universita di

Bologna con lo scopo di applicare lo standard XLink del W3C ai

browser esistenti, fornendovi un supporto per l’inserimento di link

esterni. XLinkProxy e basato sull’utilizzo di un non trasparent-proxy,

cioe un proxy a cui e permesso di modificare le risorse che passano

per il proxy stesso. Il non trasparent-proxy si occupa dell’inserimento

dei link esterni memorizzati su delle linkbase presenti sul server su

tutti i documenti di natura HTML o XML e provvede a mandare

Page 23: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

2.4. SOLUZIONI BASATE SULL’ ARCHITETTURA PROXY 19

il documento modificato al client. Pero per tutte le altre risorse di

natura diversa da HTML o XML, XLinkProxy si comporta come un

trasparent-proxy e questo fattore rappresenta uno dei limiti di questo

progetto.

2.4.1 Vantaggi delle soluzioni proxy

Nei paragrafi precedenti, abbiamo visto come i proxy vengono

utilizzati, oltre che per motivi di caching e di controllo per l’accesso

ad Internet, anche per alterare il contenuto della risorsa ricevuta dal

server. L’utilizzo di un server proxy e infatti un elemento ricorrente

per quei sistemi che hanno lo scopo di modificare i contenuti di pagine

Web.

Analizziamo di seguito i vantaggi dei proxy che hanno portato questi

sistemi alla scelta di tale approccio:

• le tecnologie server-side sono piu avanzate rispetto alle

tecnologie client-side, sono scalabili, multi-platform ed

indipendenti dal browser.

• la modifica del documento da restituire al client viene effettuata

in maniera piu veloce rispetto alle applicazioni client-side (e

sufficiente interrogare il server per verificare se ci sono delle

informazioni da associare alla risorsa richiesta dall’utente). Il

carico di lavoro per il browser e minimo dal momento che esso si

limita a ricevere degli ordinari documenti HTML (l’inserimento

delle informazioni esterne viene effettuato completamente sul

proxy).

• la modifica del documento e completamente trasparente per

l’utente, dal momento che nessun indizio viene fornito del

passaggio intermedio compiuto dal proxy. Per esempio, nel caso

di inserimento di link esterni, la pagina finale viene consegnata

solo dopo aver aggiunto i link e, l’utente riceve un documento

HTML dove i nuovi link sono indistinguibili da quelli originali.

• client differenti possono essere configurati per consultare lo

stesso proxy, cosı che il sistema di modifica dei documenti

Page 24: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

20 CAPITOLO 2. MODIFICA DI CONTENUTI IPERTESTUALI

esterni diviene completamente portabile ed indipendente dal

browser.

L’ultimo punto non e completamente vero dal momento che, per

esempio, l’interfaccia di XLinkProxy e supportata solo da Internet

Explorer e porta molti sistemi ad abbandonare la scelta di una

soluzione basata su questa architettura.

2.4.2 Svantaggi delle soluzioni proxy

Di seguito vengono mostrati alcuni limiti delle soluzioni basate

sull’utilizzo di un server proxy:

• anche se l’inserimento delle modifiche sulle pagine viene

compiuta dal proxy, la definizione di quali debbano essere le

modifiche necessita comunque di un’interfaccia utente rendendo

cosı il sistema dipendente da tecnologie client-side (come

XLinkProxy). Tra le soluzioni proposte, sono stati utilizzati

dei frame che hanno il compito di monitorare e comunicare

con la finestra principale, ma questo porta a due importanti

questioni: la gestione dell’URL e i problemi di sicurezza. Il

primo punto e un problema in quanto e in disaccordo con uno

delle linee guida del web riguardo la corrispondenza univoca tra

la risorsa e ed il suo relativo URL: utilizzando dei frame invece,

molte risorse vengono raggruppate sotto un’unico URL quello

del frameset. L’inconsistenza tra l’URL presente nella barra

degli indirizzi e quello della risorsa richiesta porta inoltre ad una

serie di difficolta per quanto riguarda la gestione dei bookmark

o la ricerca delle informazione. Poi, per quanto riguarda i

problemi inevitabili di sicurezza va detto che essi dipendono

dalla comunicazione tra i frame; oltretutto il significato dei

bottoni “Back” e “Forward” puo venir spesso confuso e non

interpretabile dal browser.

• quando viene caricato nel browser un documento locale il proxy

non viene contattato e non riesce, dunque, a svolgere la sua

funzione.

Page 25: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

2.5. SOLUZIONI BASATE SULL’ ARCHITETTURA CLIENT 21

• interponendo un proxy tra un browser e un server, e necessario

un numero doppio di connessioni per ogni risorsa richiesta dal

client. Chiaramente questo fattore rallenta i tempi di riposta

verso il client con il rischio che si verifichino timeout e problemi

di latenza.

• un proxy, che agisce come agente intermediario per la modifica

dei contenuti, non riesce a svolgere la sua funzione in quelle

situazioni in cui e presente un altro proxy con funzionalita di

firewall. La presenza di un firewall impedirebbe al client di

ricevere la versione modificata del documento dal proxy. Il

problema potrebbe essere risolto a livello di infrastrutture, con

una gestione esplicita delle rete di connessioni, convincendo

i manager di altri proxy a stabilire la giusta catena di

comunicazione che permetterebbe ad ogni proxy di assolvere le

proprie funzioni. Tale soluzione e pero di difficile realizzazione

dal momento che, solitamente, i firewall hanno proprio il

compito di proteggere le grandi organizzazioni dei grandi paesi,

e le trattative per un accordo potrebbero diventare difficili.

• il proxy non ha un diretto controllo sulle pagine caricate, non

ha accesso al DOM, quindi ogni volta che deve effettuare una

modifica deve compiere un’operazione di parsing su tutto il

documento per cercare il punto esatto da modificare. Tale

operazione non rende dunque semplice l’operazione di modifica

del documento.

2.5 Soluzioni basate sull’ architettura

client

Nei prossimi paragrafi vedremo come molte ricerche si sono basate

su un’architettura client, integrata con il browser, per superare i limiti

del proxy.

Page 26: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

22 CAPITOLO 2. MODIFICA DI CONTENUTI IPERTESTUALI

Amaya

Amaya [Ama96] e un progetto open source, scritto in Visual C++

v6.0 e nato nel 1996, con supporto ai principali standard del W3C.

Amaya e un browser che supporta il protocollo HTTP v1.1 e ospita

al suo interno un editor che produce codice HTML v4.01. Supporta

inoltre: XHTML, MATHML (per navigare ed editare le pagine che

contengono espressioni matematiche) e CSS. Amaya non e un vero

e proprio browser, ma un editor di pagine Web WYSIWYG. Amaya

incorpora con se entrambe le funzioni: editor e browser (cercando

di mettere in pratica una delle intenzioni di Tim Berners-Lee). Con

Amaya e possibile navigare il World Wide Web e modificare al volo

le pagine che si incontrano, salvarne e visualizzarne la struttura in

modo semplicissimo. Amaya e progettato per coloro che vogliono

scrivere codice compatibile con le specifiche ufficiali del W3C, di

conseguenza e anche un ottimo strumento per la divulgazione degli

standard del Web. Seppure uno strumento formidabile per la

progettazione di pagine Web, Amaya e un editor il cui uso e

circoscritto a pochissimi sviluppatori e non solo per la mancanza di

supporto commerciale. Amaya rimane, anche nelle ultime versioni,

un software di difficile utilizzo, a cio si aggiungono anche i vari errori

nell’esecuzione di alcuni comandi che spesso provocano perdita del

lavoro ed interruzioni varie. In conclusione, Amaya e considerato

un’ottimo strumento per chi vuole semplicemente scrivere o testare il

proprio lavoro, ma potrebbe rendere la vita molto difficile a chi invece

vorrebbe utilizzarlo come strumento base per costruire siti Web.

Annotea

Annotea [Koi01] e un sistema per le annotazioni condiviso che

sfrutta le esistenti tecnologie come RDF, XPointer [DDG02], XLink

a HTTP per permettere di associare ad ogni documento Web i

loro propri commenti o bookmarks. Per annotazioni si intendono

commenti, note, spiegazioni ed altri tipi di riferimenti esterni che

possono effettivamente essere attaccati al documento senza il bisogno

di modificarlo. Similmente anche i bookmark possono essere attaccati

Page 27: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

2.5. SOLUZIONI BASATE SULL’ ARCHITETTURA CLIENT 23

al documento per aiutare ad organizzare in categorie, per aiutare

a trovare il materiale relativo e poter utilizzare un bookmark che

filtra il materiale. Le annotazioni sono esterne alle pagine originali

e possono venir memorizzate in server prestabiliti. I client di

Annotea, richiedono le annotazioni espresse in sintassi RDF dai server

e le mostrano di fianco al documento non modificato. La prima

implementazione client di Annotea e Amaya, l’editor browser del

W3C, ma cio non implica che di estenderne la funzionalita anche

ad altri browser.

Annozilla

Annozilla [Ann02] e un sistema che permette di creare annotazioni

sulle pagine Web come definito dal progetto Annotea del W3C. L’idea

e quella di memorizzare le annotazioni in formato RDF su un server,

utilizzando la sintassi XPointer per identificare su quali regioni del

documento creare le annotazioni. L’intenzione di Annozilla e quella di

sfruttare le potenzialita del browser Mozilla per creare le annotazioni.

Il progetto Annozilla e ancora in fase di sviluppo per aggiungere

nuove funzionalita, incluso un supporto per un sistema distribuito

mediante l’utilizzo di piu server.

Hunter Gatherer

Hunter Gatherer [MSW02] e un tool integrato nel browser che

provvede una semplice interfaccia per selezionare dei frammenti

dalle pagine a cui si ha accesso, per memorizzare i frammenti

di questi documenti e per manipolare la collezione di queste

informazioni. Nessun contenuto viene copiato nelle collezioni che

sono solo composte di riferimenti ai frammenti originali attraverso

un meccanismo chiamato “Aggregated URLs”. Hunter Gatherer

non e un’applicazione stand-alone integrata sul browser ma e basata

sull’utilizzo di un server proxy; ogni volta che il client effettua una

richiesta la pagina viene processata server-side per convertirla dal

formato HTML ad XHTML. Una volta che la pagina ha acquisito

questa struttura, l’applicazione utilizza il Document Object Model

Page 28: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

24 CAPITOLO 2. MODIFICA DI CONTENUTI IPERTESTUALI

dell’albero XML del documento per ritrovare la locazione di un

particolare frammento selezionato dall’utente. Il sistema utilizza due

metodi per definire gli elementi che appartengono alla selezione: il

primo si basa sull’individuazione dei nomi degli elementi XHTML

corrispondenti ai tag HTML compresi nella selezione (ad esempio un

<P> o un <TD>); il secondo metodo e basato sull’utilizzo di XPath

per identificare le entita dentro gli elementi compresi nella selezione

(ad esempio: l’utente puo selezionare l’ultima occorrenza di una

particolare parte di testo all’interno di un nodo P). Dal momento che

le collezioni delle informazioni vengono memorizzate nei loro relativi

URL, esse possono essere facilmente condivisibili e modificabili.

Turquoise

Turquoise [MM97] e un browser intelligente che contiene un editor

WYSIWYG per il World Wide Web per permettere agli utenti

di creare pagine dinamiche senza il bisogno di conoscere linguaggi

di scripting. Turquoise propone un approccio alternativo grazie

all’utilizzo di euristiche che permettono di creare gli script “per

dimostrazione”. L’utente dimostra uno script navigando alla risorsa

desiderata ed usando “cut-and-paste” per costruire un esempio della

nuova pagina che intende creare. Dato questo singolo esempio, il

sistema genera uno script che rigenera la pagina automaticamente,

andando a reperire le informazioni piu recenti dai documenti originali.

Turquoise e composto di un “pattern matcher” che utilizza delle

“template” per rintracciare e ricostruire dai frammenti dei documenti

HTML selezionati le parti significative per l’utente.

Web Browser Intelligence

Web Browser Intelligence [BM98] e un sistema che agisce

come intermediario sulla workstation dell’utente per osservare

le azioni degli utenti, offrire attivamente assistenza, modificare

documenti Web, ed aggiungere nuove funzionalita. Esso provvede

un’architettura che si posiziona nello stream di comunicazione tra il

Web browser ed l’origin server. WBI e un proxy che intercetta http

Page 29: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

2.5. SOLUZIONI BASATE SULL’ ARCHITETTURA CLIENT 25

stream per l’osservazione e l’alterazione. In un WBI interagiscono

tre tipi di agent che manipolano lo stream request-response:

• un MONITOR che riceve una copia dell’intera transazione

request-response ma senza alterarla;

• un EDITOR AGENT che intercetta lo stream di comunicazione,

riceve l’informazione, modifica il contenuto e poi consegna la

versione modificata del documento richiesto;

• un GENERATORE che converte una richiesta in una risposta; e

un semplice programma che parsa la richiesta di un appropriato

Web server, riceve la risposta e la ripassa indietro al browser

(svolgendo il lavoro di un proxy HTTP).

Un WBI sostanzialmente, monitora l’attivita di un particolare utente,

classificando le pagine accedute, effettuando una ricerca sul Web di

pagine relative alla pagina che l’utente ha richiesto ed aggiungendo

successivamente link alle pagine accedute in modo tale da suggerire

all’utente quali sono le pagine inerenti lo stesso argomento ricercato.

Piu precisamente viene abiliato un monitor ogni volta che una

pagina contenente testo viene richiesta. Il monitor estrae le

keyword associate alla risorsa, memorizzando la sequenza di URL

visitati dall’utente. Un secondo agent effettua delle keyword query,

restituendo la lista delle pagine che l’utente ha precedentemente

visualizzato e informando l’utente quando tali informazioni sono

disponibili. Infine, l’utente puo scegliere se visualizzare la lista di

pagine correlate che possono venir esaminate. L’esperienza suggerisce

che spesso gli utenti richiedono la stessa sequenza di URL molte

volte ed, utilizzando WBI, e possibile velocizzare le sue operazioni

compiute abitualmente. La normale interazione con l’utente viene

mantenuta, ma nuove funzionalita vengono aggiunte.

Yawas

Yawas [DV00] e un altro sistema per aggiungere annotazioni; e

un prototipo sviluppato all’Universita di Savoia, che studia come le

annotazioni possano essere usate per migliorare i correnti bookmark.

Page 30: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

26 CAPITOLO 2. MODIFICA DI CONTENUTI IPERTESTUALI

L’approccio usato si basa sull’utilizzo di eventi interni al DOM senza

cambiare il markup della pagina. Yawas usa file locali per conservare

e ritrovare le annotazioni. I file di annotazione locali possono essere

spediti ad altri utenti solo via e-mail o copiati in altro modo. Il

sistema utilizza come client Internet Explorer.

Xspect

Xspect [CHB03] e un sistema molto recente basato su XSLT e

Javascript. Xspect ha due implementazioni, una server-side ed una

client-side. Entrambe le implementazioni forniscono un’interfaccia

per la creazione di annotazioni. Xspect utilizza XLink e, oltre a

supportare la navigazione sugli hypermedia, fornisce un’interfaccia

per guidare l’utente durante la navigazione e provvedere un sistema

di authoring per le annotazioni. Xspect fornisce un’interfaccia utente

per la navigazione e la visualizzazione delle linkbase piuttosto che

per la loro creazione ed il “surfing monitoring” come fanno Goate e

XLinkProxy.

XStandard

Xstandard [Sca04] e un plug-in ActiveX sviluppato per essere

integrato nel browser o per sistemi operativi di gestione di contenuti

basati su sistemi Windows. Il sistema crea un’area WYSIWYG

nella quale gli utenti possono gestire contenuti in qualsiasi lingua.

XStandard e il primo prodotto commerciale disponibile come editor

WYSIWYG che genera codice valido XHTML 1.1 senza elementi

(tag) deprecati. XHTML 1.1 e l’ultima raccomandazione del W3C

disponibile per la creazione di contenuti ed e significante in quanto

limita il ruolo degli elementi nella marcatura per la definizione

della struttura ed utilizza solamente fogli di stile a cascata (CSS)

per la formattazione. Il risultato e una netta “pulizia” del codice

con separazione dei dati dalla formattazione il che e essenziale

per il riutilizzo dei contenuti per sistemi diversi dai normali PC

Desktop e per le applicazioni legate all’accessibilta. Utilizzando

XStandard si riducono le procedure di “pulizia” del codice utilizzate

Page 31: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

2.5. SOLUZIONI BASATE SULL’ ARCHITETTURA CLIENT 27

per purificare il codice e rendere i contenuti accessibili, abbassando

quindi i costi di manutenzione e di pubblicazione. Questo modo di

procedere incrementa la velocita di creazione di contenuti, riduce

la possibilita di errori di formattazione ed aiuta a mantenere un

layout costante. Gli utenti commerciali possono inoltre applicare

degli elementi personalizzati a parole, a frasi o oggetti (come le

immagini), offrendo infinite opportunita di arricchire la semantica dei

propri dati. XStandard fornisce un’anteprima di visualizzazione, in

emulazione Screen Reader, che rende visibili i contenuti prima della

pubblicazione, velocizzando il ciclo di pubblicazione e riducendo i

costi.

2.5.1 Vantaggi delle soluzioni client

Le soluzioni client-side hanno i seguenti vantaggi:

• avendo accesso al DOM l’applicazione client puo facilmente

manipolare il contenuto di qualsiasi tipo di documento, non

solo HTML e XML.

• le applicazioni client-side di solito necessitano di pochi passi

per l’installazione e la configurazione;

• le applicazioni client possono incorporare al loro interno un

editor tramite il quale e possibile creare e modificare in modo

veloce il contenuto del sito Web direttamente dal browser,

evitando che l’utente incorra in cadute di attenzione dovute

al passaggio di applicazioni esterne;

• un’architettura client browser assicura brevi tempi di risposta

per l’interazione;

• le architetture client hanno semplici interfacce.

2.5.2 Svantaggi delle soluzioni client

Tuttavia anche le soluzioni client-side presentano alcuni limiti:

• sono dipendenti dal browser per il quale sono state progettate;

Page 32: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

28 CAPITOLO 2. MODIFICA DI CONTENUTI IPERTESTUALI

• impiegano di tempi piu lunghi per la modifica del DOM;

• la loro installazione (applicazioni sul browser) potrebbe

minacciare alcune politiche di sicurezza del sistema: di solito

viene richiesta l’installazione di plug-in che interagiscono con il

sistema stesso.

2.6 Meccanismi di estensione del browser

Alcuni dei sistemi studiati per rendere il processo di navigazione

piu consono alle esigenze dell’utente sono stati realizzati mediante

dei meccanismi di estensione del browser. Molti browser, infatti,

sono predisposti per l’aggiunta di alcuni oggetti che possono essere

utilizzati per la visualizzazione di alcune informazioni e per creare una

forma di interazione con l’utente durante il processo di navigazione.

Questi oggetti possono essere rappresentati da toolbar, barre verticali

o orizzontali e consistono in aree adiacenti la finestra principale del

browser. Essi vengono piu comunemente visualizzati come pannelli

verticali sul lato sinistro della finestra principale del browser ma

anche orizzontalmente. Alcune barre verticali standard, chiamate piu

comunemente “sidebar” sono ad esempio “Favorities” e “Search”.

Analizziamo di seguito alcuni dei meccanismi di estensione del

browser piu diffusi oggi in commercio ed i servizi che essi intendono

offrire all’utente per garantirgli un ambiente personalizzato.

2.6.1 Toolbar: navigare, monitorare e conoscerei siti Web

Oggi giorno tutti i piu importanti siti Web producono la propria

toolbar personalizzata tanto che sicuramente la sua presenza e

diventata anche un fattore di competizione. Piu che una moda,

tuttavia, la sua diffusione e dovuta sicuramente alla sua utilita.

Le toolbar permettono di accedere ai contenuti da qualsiasi parte

del Web e soprattutto in maniera integrata alle pagine che si stanno

visitando. Le toolbar sono degli strumenti messi a disposizione dai

motori di ricerca e oltre a fornire comodamente l’accesso diretto alle

Page 33: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

2.6. MECCANISMI DI ESTENSIONE DEL BROWSER 29

ricerche dal browser, mettono a disposizione una serie di utility che

offrono all’utente numerosi vantaggi per la ricerca e la navigazione

sul Web.

Analizziamo di seguito alcune tra le toolbar attualmente piu

utilizzate:

AltaVista toolbar La toolbar di Altavista [Alt04], progettata per

Internet Explorer come mostrato in figura 2.1, include dei servizi

come:

Figura 2.1: Altavista toolbar

• Ricerca nel Web: nella toolbar e presente un menu a discesa

contenente tutte le opzioni di ricerca disponibili di AltaVista

accanto alla casella di ricerca. Dopo aver inserito la richiesta,

e possibile cercare nell’indice indicato attualmente, o anche

selezionare un altro indice dal menu. La selezione della ricerca e

chiamata “adesiva”, nel senso che vengono sempre visualizzate

le ricerche in base all’ultimo indice selezionato, fin quando un

altro indice non viene indicato. La ricerca include anche una

ricerca per immagini.

• Evidenza: questo servizio mette in evidenza i termini della

casella di ricerca, laddove appaiono nella pagina attuale.

• Traduzione: nella toolbar e presente un pulsante chiamato

“Babel Fish” che permette di tradurre parole inserite nella

casella di ricerca, testi selezionati da una pagina Web o anche

pagine Web intere.

• Blocco dei popup: i siti Web spesso usano degli script Java per

caricare gli annunci pubblicitari mentre l’utente sta navigando

in una pagina. Questi script, una volta caricati, aprono

delle finestra popup, generalmente mentre si sta navigando o

Page 34: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

30 CAPITOLO 2. MODIFICA DI CONTENUTI IPERTESTUALI

quando si esce dalla pagina. Il blocco popup della toolbar di

Altavista permette di disattivare la maggior parte di questi

script, impedendo la comparsa delle finestre popup. Il blocco

popup e attivato per default, ma queste impostazioni possono

essere modificate dalla pagina di impostazioni della toolbar.

• Ultima ricerca: questo pulsante riporta all’ultima ricerca

effettuata, mostrando l’ultima pagina dei risultati che e stata

generata.

Alexa toolbar La toolbar di Alexa [Ale04], progettata per il

browser Internet Explorer come mostrato in figura 2.2, e una delle piu

Figura 2.2: Alexa toolbar

utilizzate tra quelle in circolazione sul Web. Ospita al suo interno

il motore di ricerca Google e fornisce informazioni molto utili sul

sito che si sta visualizzando, senza interrompere il Web browsing.

Fornisce anche un lista di link siti “correlati” a quello in cui ci si trova,

ovvero una lista dei siti piu visitati dagli altri visitatori dello stesso

sito. Inoltre e anche disponibile “Whois”, un servizio che permette

di vedere a chi e intestato il dominio del sito. Sono anche disponibili

informazioni dati sul traffico e servizi di condivisione delle opinioni

riguardo i siti tra gli utenti.

Arianna toolbar

La toolbar di Arianna [Ari04], progettata per il browser Internet

Explorer come mostrato in figura 2.3, permette di effettuare delle

Figura 2.3: Arianna toolbar

ricerche offrendo una vasta quantita di possibilita. Tra i servizi

Page 35: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

2.6. MECCANISMI DI ESTENSIONE DEL BROWSER 31

che offre ve ne sono alcuni particolarmente interessanti come

“Community”, mediante il quale e possibile partecipare a forum o

creare il proprio “Moblog”. Altri servizi utili sono, per esempio,

quelli che permettono di avere un accesso diretto alla propria casella

di posta e ai newsgroup, o di ricercare numeri di telefono ed altre

informazioni ad essi relative.

Google toolbar La toolbar di Google [Goo04], progettata per il

browser Internet Explorer come mostrato in figura 2.4, offre numerose

Figura 2.4: Google toolbar

opzioni per rendere la navigazione nel Web piu piacevole e produttiva.

La Google toolbar consente non solo di effettuare ricerche dirette

all’interno di Google, ma effettua anche il calcolo del “Page Rank”

che viene associato al sito che si sta visualizzando. Il “Page Rank”

equivale all’importanza che Google assegna alla pagina, in base ad un

calcolo automatico che tiene conto della struttura di collegamenti del

Web e molte altre variabili. L’algoritmo del “Page Rank” puo essere

utilizzato per creare “visioni personalizzate” del Web, definite in base

alle preferenze dell’utente. La presenza di questo servizio rappresenta

un fattore di distinzione rispetto alle altre toolbar offerte dagli altri

motori di ricerca. La Google toolbar permette di:

• poter utilizzare Google per eseguire ricerche sul Web da

qualunque sito;

• eliminare annunci popup;

• limitare la ricerca delle pagine ad un paese specifico;

• eseguire la ricerca solo all’interno delle pagine di un sito;

• evidenziare i termini di ricerca nella pagina;

Page 36: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

32 CAPITOLO 2. MODIFICA DI CONTENUTI IPERTESTUALI

• personalizzare il layout della toolbar.

Nell’interfaccia della toolbar e presente un menu a tendina che da

accesso ad alcuni utili servizi. Tra questi e interessante notare che

e presente anche una voce riguardante lo spazio di Google aperto

agli autori di Weblog (blog), un luogo in cui e possibile creare

pubblicazioni personali online gratuitamente. Inoltre la Google

toolbar si aggiorna automaticamente appena e disponibile una nuova

versione.

Groowe toolbar La Groowe toolbar [Gro04], progettata per il

browser Internet Explorer come mostrato in figura 2.5, permette

Figura 2.5: Groowe toolbar

all’utente di utilizzare molti motori di ricerca contemporaneamente:

Google, AltaVista, Yahoo, MSN Search, e AllTheWeb. Inoltre

permette di attivare delle ricerche in determinate categorie o

directory, rendendo il processo di ricerca piu semplice e veloce.

PrefBar toolbar La PrefBar [Pre04], progettata per il browser

Mozilla come mostrato in figura 2.6, rappresenta un’evoluzione della

Preference Bar di Mozilla che era stata disegnata per dare all’utente

piu controllo sulle pagine visualizzate e permettergli di utilizzare quel

browser con grande facilita ed efficienza. La PrefBar offre in piu,

tramite standard checkboxes, la possibilita di attivare e disattivare

Javascript, user agent spoofing, Web links, abilitare e disabilitare i

cookies.

Page 37: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

2.6. MECCANISMI DI ESTENSIONE DEL BROWSER 33

Figura 2.6: PrefBar toolbar

Teoma toolbar La Teoma toolbar [Teo04], progettata per il

browser Internet Explorer come mostrato in figura 2.7, oltre al motore

di ricerca offre la possibilita di di utilizzare un Dictionary per trovare

facilmente il significato delle parole quando se ne avesse bisogno, di

evidenziare i termini di ricerca ogni volta che essi appaiono nella

pagina e inviare via-mail ad un altro utente la pagina visualizzata.

Figura 2.7: Teoma toolbar

UltraBar toolbar UltraBar [Ult04], mostrata in figura 2.8, e un

prodotto studiato per semplificare le attivita di tutti coloro che

hanno bisogno di utilizzare il Web frequentemente a scopo di ricerca.

UltraBar permette di selezionare da un apposito menu i termini piu

frequentemente utilizzati o di aggiungerne altri per le future ricerche.

Questa toolbar puo essere personalizzata al fine di rendere le ricerche

agevoli ed immediate e comprende molte caratteristiche comuni alle

altre toolbar presenti in commercio.

Figura 2.8: Ultrabar toolbar

Page 38: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

34 CAPITOLO 2. MODIFICA DI CONTENUTI IPERTESTUALI

2.7 Conclusioni

In questo capitolo e stata presa in esame l’evoluzione del

modello ipertestuale nel tempo fino ai sistemi attuali. E stato

sottolineato come molti sistemi, il World Wide Web piuttosto che

una evoluzione abbia subito un involuzione, rispetto al progetto

originale. Si e cercato di delineare, quindi, gli elementi che mancano

a questo modello di ipertesto e le soluzioni proposte per superare tali

limiti. L’attenzione e stata focalizzata sull’importanza di rendere

il processo di navigazione dell’utente un’esperienza completamente

soddisfacente le proprie esigenze. Tuttavia i sistemi presentati finora,

non sembrano ancora essere riusciti a raggiungere completamente

questo obiettivo.

Page 39: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

Capitolo 3

La sidebar ISAWiki

Sebbene le potenzialita del World Wide Web siano davvero

notevoli, il modello ipertestuale sul quale esso si basa presenta ancora

alcune carenze. In particolare, i browser Web offrono un ambiente in

cui e ancora troppo rigida la distinzione tra il ruolo del lettore e quello

dell’autore. Infatti se da un lato, il lettore puo utilizzare semplici e

gratuiti tool ma solo per leggere i documenti esplicitamente forniti

dagli scrittori senza poter creare dei nuovi contenuti, link o versioni

personalizzate delle pagine Web, dall’altro, l’autore deve avere a

disposizione un vasto numero di tecnologie e tool spesso complessi

e costosi per poter pubblicare i propri documenti.

In questo capitolo verra illustrato un framework progettato con lo

scopo di mostrare come sia possibile incrementare le funzionalita

del Web, utilizzando gli standard attuali e senza rivoluzionarne

l’architettura corrente.

3.1 Introduzione

Prima di analizzare il progetto realizzato nel corso di questa tesi

e necessario fornire una visione del contesto nel quale tale progetto

si colloca.

Il motivo principale che ha portato alla nascita di questa tesi e

stato quello di fornire un supporto al server realizzato nell’ambito del

progetto ISAWiki, tramite il quale l’utente puo utilizzare al meglio ed

in una maniera ancora piu semplice tutte le funzionalita ed i servizi

35

Page 40: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

36 CAPITOLO 3. LA SIDEBAR ISAWIKI

che il server ISAWiki [Fan03] offre.

Di seguito viene fornita una descrizione del progetto ISAWiki da cui

la tesi e nata.

3.2 Il progetto ISAWiki

Il progetto ISAWiki, nasce dall’esigenza di permettere agli utenti

di utilizzare gli strumenti a loro piu familiari per produrre delle

pagine per il Web. Fornendo questa possibilita all’utente, oltre

a semplificare il lavoro di creazione di siti, si permette anche di

pubblicare i documenti gia nell’apposito formato per il Web, dal

momento che in questo modo la pubblicazione e possibile in maniera

automatica.

Il progetto ISAWiki nasce dal congiungimento di due progetti: ISA,

un progetto avviato nel 2003 dal professor Fabio Vitali, ed il Wiki

Wiki Web (comunemente chiamato wiki), nato nel 1994 da un’idea

di Ward Cunninghan. ISAWiki e un Content Management System

(CMS) derivato dal progetto ISA, in cui sono state integrate le

caratteristiche del Wiki Wiki Web. Di seguito, vengono spiegati

i sistemi dai quali il progetto si e evoluto al fine di comprendere

meglio le esigenze e le scelte fondamentali che hanno portato alla

realizzazione di questo progetto.

3.2.1 Content Management System

I sistemi denominati “Content Management System” (CMS) sono

stati la principale fonte di ispirazione per la realizzazione del progetto

ISAWiki.

Con il termine CMS non si indica un prodotto ben definito, ne

una particolare tecnologia, ma un vasto numero di processi che

riguardano la gestione di contenuti non solo relativi al Web; tuttavia,

i CMS forniscono l’automazione dei processi tipici di creazione

delle pagine Web. Lo scopo principale di un CMS e l’integrazione

dei processi di creazione, composizione, controllo, pubblicazione,

Page 41: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3.2. IL PROGETTO ISAWIKI 37

revisione e archiviazione dei documenti, piu eventuali servizi avanzati

che differiscono nelle varie implementazioni.

L’utilizzo di tali sistemi implica pero la presenza di utenti esperti

nelle varie fasi di creazioni di contenuti, di realizzazione dei layout

di presentazione e nella fase di assemblaggio del contenuto e del

layout. Infatti, i CMS sono adatti per la gestione di pagine Web

molto complesse e richiedono conoscenze avanzate, sia per la loro

installazione, sia per la loro configurazione. I Content Management

System dispongono di diverse funzionalita utili ad ottenere questo

scopo, ma difficilmente uno stesso software le integra tutte. Infatti,

poiche esistono innumerevoli tipi di contenuti, le aziende produttrici

offrono CMS con caratteristiche differenti, spesso con funzionalita

peculiari e specializzate per un particolare ambito di applicazione.

Le problematiche tecniche relative all’automatizzazione dei processi

di gestione e diffusione dei contenuti sono spesso legate alla necessita

di unire il contributo di differenti autori, che lavorano in maniera

sincrona o asincrona sui medesimi contenuti, condividendo alcune

risorse. Si rammenti infatti che il Web e stato inizialmente

progettato per consentire ad un gruppo di scienziati di utilizzare

le reti informatiche per collaborare tra loro, attraverso lo scambio

di documenti, la discussione, il coordinamento delle attivita, la

creazione e la pubblicazione dei contenuti. In altre parole, esso fu

ideato proprio per essere un supporto tecnico al lavoro di gruppo tra

le persone, anche geograficamente distanti.

La diffusione dei calcolatori e successivamente delle reti ha portato

ad un incremento notevole nella condivisione delle informazioni ed il

Web ne e divenuto in breve tempo, attraverso la rete Internet, uno

dei principali veicoli di diffusione.

E da questa necessita che sono nati i sistemi collaborativi (come il

Wiki Wiki Web di cui si parlera in seguito), che consentono di gestire

gruppi di persone che lavorano condividendo documenti e risorse.

In realta, la necessita di disporre di sistemi di collaborazione era

gia presente al momento dei primi sviluppi del Web. Seguendo

questa esigenza, nacquero dei sistemi piu o meno evoluti di scambio

di informazione tra gruppi di persone, quali: posta elettronica,

Page 42: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

38 CAPITOLO 3. LA SIDEBAR ISAWIKI

mailing-list e newsgroup, shared access, interactive Pages. Uno dei

piu significativi vantaggi derivanti dall’utilizzo di un moderno sistema

di condivisione e la possibilita di creare e gestire i documenti tramite

editor di semplice utilizzo, solitamente fruibili via Web.

Per potenziare le funzionalita del protocollo HTTP 1.1 e stata

realizzata un’estensione, nota con il nome di WebDav (Web

Distributed Authoring and Versioning) [CFG99]; essa consente di

inglobare meccanismi di collaborazione e condivisione delle risorse

basati, oltre che sul testo, anche su altri tipi di formato. Esso

rappresenta un utile tool per il Web authoring ma non e user-oriented;

inoltre, non provvede metodi per creare pagine linkate ma solo

meccanismi per memorizzarle e richiederle.

3.2.2 Immediate Site Activator

ISA (Immediate Site Activator) e un’applicazione server-side,

progettata per consentire di produrre pagine Web complesse senza

che l’utente necessiti di alcuna conoscenza tecnica particolare. ISA

puo essere definito come un CMS (Content Management System),

cioe un software costruito per l’automatizzazione e l’integrazione

dei processi di creazione, composizione, controllo, pubblicazione,

revisione e archiviazione delle informazioni. L’utilizzo dei normali

CMS e pero indicato per la creazione di siti molto complessi e richiede

conoscenze avanzate, sia per la loro installazione che per la loro

configurazione. Cio impone all’utente la necessita di apprendere

l’utilizzo e le funzionalita di tali strumenti, che sono spesso complessi,

poco “user friendly” e di utilizzo tutt’altro che immediato. Inoltre,

nella maggior parte dei casi, colui che realizza il layout e limitato dalle

notevoli rigidita del sistema. La forza di ISA e quella di permettere

all’utente di utilizzare gli strumenti che preferisce nell’ambito di un

vasto numero di programmi commerciali molto diffusi (per esempio

e possibile realizzare il layout con Adobe Photoshop, MacroMedia

Fireworks e scrivere i contenuti con Microsoft Word). Al momento

della richiesta del documento, l’applicazione si occupera di ricostruire

la pagina finale senza che l’utente necessiti di altre operazioni.

Page 43: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3.2. IL PROGETTO ISAWIKI 39

Inoltre non e necessaria alcuna conoscenza per l’installazione e la

configurazione del server. Utilizzando ISA viene quindi modificato

il processo di produzione delle pagine Web. Tale processo e infatti

solitamente composto dalle seguenti fasi:

• Produzione del contenuto: autori esperti scrivono e strutturano

il contenuto utilizzando editor standard;

• Creazione del layout : esperti di grafica preparano layout

generici, utilizzando strumenti professionali come Adobe

Photoshop o Macromedia Fireworks;

• Fusione delle due componenti : esperti di tecnologie Web

fondono le due parti nei documenti finali, con strumenti

professionali come GoLive, Dreamweaver o FrontPage.

Mentre con i normali CMS la prima fase fa uso di editor standard

forniti dai CMS stessi e le ultime due fasi devono essere eseguite

da persone esperte nell’utilizzo di strumenti adatti, utilizzando ISA

questo processo diventa piu semplice. Infatti, il contenuto viene

creato dall’utente utilizzando un programma specifico per scrivere dei

documenti di contenuto, come Microsoft Word, il layout viene creato

da persone esperte di grafica, ma la fusione delle due componeneti

viene creata da persone esperte di grafica utilizzando il motore

implementato in ISA. L’applicazione ISA realizza tale integrazione

tramite l’utilizzo di un foglio di stile XSLT. Pertanto i principali

vantaggi nella scelta del sistema ISA sono:

• minore necessita di conoscenze tecniche specifiche;

• possibilita di utilizzare strumenti molto diffusi e di uso comune;

• semplicita di utilizzo, congiunta a notevole flessibilita.

Pertanto l’autore si preoccupa solo della redazione del documento

con le informazioni che desidera pubblicare, e puo trascurare

completamente gli aspetti grafici della presentazione. Questi ultimi

possono essere suddivisi in due tipologie: “decorativi” e “semantici”.

Gli aspetti “decorativi” rappresentano gli aspetti prettamente grafici

Page 44: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

40 CAPITOLO 3. LA SIDEBAR ISAWIKI

propri del layout ed indipendenti dal contenuto (sfondi, immagini

esterne, bottoni, font, colori ecc.). Gli elementi “semantici ” sono

invece quelli utilizzati per enfatizzare alcune parti del discorso

(caratteri in corsivo o grassetto) o necessari per illustrarle o

esemplificarle (immagini o tabelle). Tale distinzione si riflette nella

separazione tra lo stile del documento e il suo contenuto. E necessario

che l’autore disponga del pieno controllo degli aspetti semantici, ed

e per questa ragione che il motore di ISA conserva questi elementi

esattamente come vengono inseriti in Microsoft Word.

3.2.3 Wiki Wiki Web

L’enorme aumento del numero degli utenti del World Wide

Web ha portato ad un incremento notevole della condivisione delle

informazioni e ad una collaborazione tra diversi utenti del Web.

Il Wiki Wiki Web, piu comunemente chiamato wiki, e uno dei

sistemi collaborativi di ultima nascita e di sicuro successo. L’idea

su cui si basa tale sistema e molto semplice. Esso permette,

tramite l’utilizzo dei browser maggiormente diffusi di visualizzare e

di editare documenti, facendo uso di un linguaggio molto semplice.

Tale linguaggio viene espresso in base ad un nuovo formato: il

formato wiki. Esso eredita alcune funzionalita di base dell’HTML,

pur rimanendo molto piu elementare rispetto ad esso e permette di

creare semplici pagine Web utilizzando un markup molto intuitivo che

riproduce gia di per se gli aspetti grafici della formattazione. In tale

sistema, naturalmente, l’aspetto grafico non ha grande importanza

ma viene privilegiato il contenuto. Un wiki puo essere definito

come una “collezione espandibile di pagine Web collegate fra loro,

cioe un sistema ipertestuale per la memorizzazione e la modifica di

informazioni, in pratica un database dove ciascuna pagina e editabile

da ogni utente che ha a disposizione un browser”. L’essenza del wiki

puo essere riassunta dai seguenti punti:

• e un ambiente collaborativo e completamente libero;

• e un ambiente democratico, in cui ogni utente ha esattamente

Page 45: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3.2. IL PROGETTO ISAWIKI 41

le stesse possibilita degli altri, e dove non esistono sistemi di

autenticazione;

• permette di modificare e creare contenuti usando solo un

semplice browser;

• fornisce un meccanismo intuitivo per creare link tra le varie

pagine e controlla automaticamente l’esistenza del documento

collegato;

• invita l’utente a partecipare in maniera assidua e attiva,

dandogli la possibilita di contribuire all’evoluzione del sito

stesso.

Ogni pagina contiene un collegamento per mezzo del quale e possibile

editarne il contenuto, che viene posto all’interno di una textarea

HTML, nella quale e possibile scrivere il contenuto in formato wiki o

HTML.

Il maggiore beneficio risultante dall’impiego del formato wiki consiste

nella notevole semplicita di utilizzo. Gli utenti possono creare e

modificare pagine Web pur non avendo alcuna conoscenza tecnica,

neppure di HTML. La filosofia alla base del formato dati wiki,

infatti, e quella di rappresentare il documento come se l’utente

stesse scrivendo su di un foglio di carta: la sintassi da utilizzare per

realizzare le formattazioni e autodescrittiva e riproduce graficamente

l’effetto della formattazione stessa.

Tuttavia il principale svantaggio del mondo collaborativo e la poverta

delle interfacce per l’utente. Poverta che, d’altra parte, permette ai

sistemi collaborativi di essere piu semplici e piu accessibili ai vari

membri.

3.2.4 ISAWiki

ISAWiki e un’applicazione client-server che nasce dall’integrazione

e dall’ampliamento delle proprieta di ISA e dei wiki, rappresentando

un’evoluzione dei sistemi fino ad ora descritti. Piu precisamente,

il progetto ISAWiki intende inglobare ed estendere le principali

Page 46: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

42 CAPITOLO 3. LA SIDEBAR ISAWIKI

funzionalita di entrambe le suddette categorie, ed inoltre rispondere

ad altri requisiti dettati dalla necessita di rendere l’applicazione

di semplice installazione e configurazione, e portabile su piu

piattaforme.

ISAWiki si propone di essere uno strumento collaborativo che

permette la condivisione di documenti attraverso il Web e, allo stesso

tempo, la creazione di siti anche complessi. Il sistema offre una serie

di servizi disponibili sia sul client che sul server. I servizi localizzabili

sul server sono:

• Memorizzazione: ogni volta che un documento, sia esso locale

o remoto, viene salvato sul server, viene memorizzato in una

apposita directory e viene generato un file per ogni versione del

documento. Ogni versione e caratterizzata da alcune proprieta:

numero di versione, nome dell’autore, formato e permessi di

accesso in scrittura ed in lettura.

• Conversione: ogni documento viene memorizzato in uno

specifico formato. Il modulo di conversione e in grado di

trasformare ogni documento da un qualsiasi formato ad un

altro qualsiasi formato facendo uso di un formato generico nel

quale ogni documento di tipo testuale puo venire mappato.

Attualmente i formati gia supportati sono: HTML, XML, HTM

(HTML prodotto da MS Word), doc e wiki.

• Presentazione: quando un documento viene richiesto in

formato HTML, vi viene applicato un layout tra quelli presenti

sul server, quello scelto dall’utente o quello di default.

• Versionamento: e possibile mantenere tutti i delta che

determinano i cambiamenti di un documento. Visto che

le diverse versioni possono essere in diversi formati, la

determinazione di tali delta viene fatta convertendo prima

le versioni nel formato generale. I delta possono poi venire

utilizzati per creare versioni compatte di lunghi alberi di

versione o per visualizzare le differenze tra una o piu versioni

susseguenti.

Page 47: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3.3. LO SCOPO DEL PROGETTO 43

• Supporto nell’editazione: quando un utente che possiede i

permessi di lettura e scrittura chiede di poter creare o editare

un documento, l’applicazione provvede a presentare un form

HTML, che puo essere vuoto nel caso in cui il documento non

esista, o contenere il testo del documento nel caso in cui questo

sia gia presente sul server.

• Motore di ricerca: permette di ottenere la lista dei documenti

che soddisfano almeno una volta i criteri richiesti. Per ogni

risultato viene mostrato il contesto cioe una porzione del

documento nel quale si e verificato il soddisfacimento dei criteri

di ricerca.

• Recent Changes: questo servizio consente di conoscere

rapidamente quali siano i documenti modificati recentemente.

• Configurazione e setup utente: l’utente puo settare diverse

opzioni per il server (ad esempio puo definire il layout di default

da utilizzare per la presentazione). E inoltre possibile definire

le impostazioni di accesso ai documenti locali.

Il client e composto da una sidebar preinstallata sul browser

dell’utente. La parte client, poiche e stata sviluppata nel corso di

questa tesi, viene descritta dettagliatamente nei paragrafi seguenti.

3.3 Lo scopo del progetto

L’obiettivo principale del progetto e la realizzazione di un

framework per dimostrare come sia possibile, semplicemente

mediante tecnologie client-side, offrire un sistema di modifica dei

contenuti Web direttamente dal browser e senza l’utilizzo di un server

proxy.

Per raggiungere questo obiettivo e stata sviluppata un’estensione

del browser per arricchirlo di alcune funzionalita. I maggiori

browser esistenti della corrente generazione possono essere estesi

con oggetti indipendenti come toolbar, sidebar, menu ecc. Il

framework, realizzato nell’ambito di questa tesi, e rappresentato

Page 48: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

44 CAPITOLO 3. LA SIDEBAR ISAWIKI

da una sidebar, cioe una sezione verticale che risiede all’interno

della finestra principale del browser. A causa delle differenze

nell’implementazione di questi oggetti tra i principali browser

esistenti e stato necessario concentrarsi, nell’ambito di questa tesi,

su uno in particolare: Microsoft Internet Explorer. Implementazioni

di questo stesso progetto sono gia in via di sviluppo per il browser

Mozilla. Comunque, anche se le implementazioni di questi oggetti

sono diverse a seconda dei browser, i protocolli che gestiscono le

comunicazioni con le altre applicazioni relative al progetto ISAWiki,

ed il server che permette la memorizzazione degli XLink, sono

fondamentalmente le stesse anche tra browser differenti.

3.4 La sidebar ISAWiki: una soluzione

client-side

La sidebar e l’interfaccia client del progetto ISAWiki. La

sidebar mette a disposizione una serie di tecnologie e tool che

permettono all’utente tramite un serie di interfacce, di personalizzare

direttamente dal browser i contenuti delle pagine Web; essa e

attivabile dall’apposita voce di menu di Internet Explorer, come

mostrato in figura 3.1. L’integrazione di queste funzionalita

Figura 3.1: Apertura della sidebar

all’interno del browser offre un ambiente dal quale l’utente puo avere

Page 49: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3.4. LA SIDEBAR ISAWIKI: UNA SOLUZIONE CLIENT-SIDE45

un semplice accesso alle informazioni di cui ha bisogno e condividere

le informazioni con gli altri utenti, senza la necessita di disporre

di particolari permessi in scrittura. La sidebar, oltre ad attivare

una serie di servizi client-side, sviluppati nell’ambito di altre tesi

da altri membri del progetto ISAWiki, sviluppa anche delle proprie

funzionalita.

La funzione principale della sidebar e quella di fungere da monitor

per qualsiasi operazione che l’utente chieda di compiere utilizzando

il browser durante la sua normale navigazione. Quello che la sidebar

vuole offrire e un ambiente integrato con il browser che permetta di:

• gestire gli eventi che accadono nella finestra principale, tenendo

continuamente aggiornato l’utente, ogni volta che una nuova

operazione e stata compiuta;

• poter accedere e modificare il contenuto della pagina che

l’utente sta visualizzando;

• attivare un editor WYSIWYG specifico per l’editazione dei

contenuti dei documenti Web;

• utilizzare delle linkbase esterne per la memorizzazione di link

su ogni pagina durante il browsing, anche su quelle su cui non

si hanno permessi di modifica;

• pubblicare sul Web i propri documenti, siano essi documenti

nuovi o personalizzati tramite l’editor;

• poter rivisualizzare le proprie pagine personalizzate ad una

successiva visita dello stesso URL;

• condividere tra piu utenti le pagine modificate ed avere accesso

alle varie versioni create di un documento.

Per offrire queste funzionalita, la sidebar ha il vantaggio di utilizzare

sempre lo stesso gestore degli eventi e di utilizzare solo tecnologie

client-side. Infatti, non viene infatti utilizzato nessun agente

intermediario tra il client ed il server. Le applicazioni server-side

vengono utilizzate per effettuare le operazioni di modifica dei

Page 50: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

46 CAPITOLO 3. LA SIDEBAR ISAWIKI

documenti, come sistemi di memorizzazione e gestione delle risorse

esterne: il server ISAWiki contiene le versioni dei documenti e il

server XLink contiene le linkbase esterne. La sidebar e un agente che

funge da mediatore tra applicazioni diverse in quanto deve gestire la:

• comunicazione con la finestra del browser;

• comunicazione con l’editor;

• comunicazione con il server ISAWiki;

• comunicazione con il server XLink.

E possibile, in qualsiasi momento, disabilitare il meccanismo di

“callback”, tramite il quale il monitor chiama il gestore degli eventi

lasciando l’utente in grado di continuare il processo di navigazione

senza utilizzare i servizi della sidebar.

3.5 Comunicazione con la finestra del

browser

Poiche la sidebar e un oggetto completamente indipendente dalla

finestra principale del browser, e stato necessario studiare un sistema

che permettesse di poter stabilire una comunicazione con la finestra

principale di Internet Explorer. Tale sistema doveva essere in grado

di poter accedere ad una serie di informazioni relative al documento

richiesto dall’utente tramite URL, indipendentemente dal dominio al

quale tale URL apparteneva, superando problemi di comunicazione,

interazione e sicurezza. Dopo una fase di ricerca, la soluzione

proposta, per superare questo problema e stata quella di realizzare la

sidebar come un’estensione del browser. In questo modo la sidebar,

sebbene sia un oggetto indipendente, risiedendo direttamente dentro

il browser, e in grado di comunicare con esso. Per gestire poi la

comunicazione con la finestra principale del browser e stato realizzato

un monitor che rappresenta il “cuore” della sidebar. Esso viene usato

per:

Page 51: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3.6. COMUNICAZIONE CON L’EDITOR 47

• notificare al client ogni evento che avviene nella finestra

principale del browser;

• riuscire ad intercettare l’URL non appena il documento viene

richiesto al browser e avere un completo accesso all’oggetto

Document Object Model del documento caricato nel browser;

• avere un completo controllo sulla navigazione dell’utente

mostrando all’utente le proprie pagine modificate.

Il monitor ha il compito di selezionare un event handler per ogni

determinato evento, ed attivarlo.

Il gestore degli eventi riceve la notifica dal browser stesso ogni volta

che un nuovo URL viene richiesto, prima ancora che venga eseguito il

download del documento, e ogni volta che il download del documento

e stato eseguito. In realta, il monitor riceve la notifica anche di

altri eventi relativi ad ogni cambiamento dello stato del documento

mentre viene caricato, ma nel contesto di questo progetto non e stata

avvertita la necessita di gestirli.

3.6 Comunicazione con l’editor

Il sistema ISAWiki offre un ambiente integrato con il browser

tramite il quale e possibile modificare le pagine Web senza il bisogno

di utilizzare programmi specifici per l’editazione e poi preoccuparsi di

studiare il modo per pubblicare i documenti creati, con il bisogno di

convertirli nell’apposito formato per il Web. A questo scopo e stato

sviluppato da un altro componente del progetto ISAWiki un editor

[Ors03] HTML specifico per creare dei documenti gia con l’apposito

formato per il Web e per modificarli.

La caratteristica piu importante di questo sistema di editazione e

quella di dare all’utente la possibilita di editare direttamente in place

i contenuti delle pagine Web senza modificare lo stile ed il layout delle

pagine. In questo modo, l’utente ha subito il riscontro di come le sue

operazioni modificano il documento senza il bisogno di utilizzare altri

tool esterni ma adoperando solamente il browser.

Page 52: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

48 CAPITOLO 3. LA SIDEBAR ISAWIKI

La comunicazione tra la sidebar e l’editor avviene quando l’utente

seleziona il bottone “New” o quando seleziona il bottone “Edit”,

entrambi i quali sono presenti sulla sidebar. Questi comandi

provocano l’apertura dell’editor direttamente sulla finestra del

browser. L’editor e rappresentato da una piccola toolbar contenente

al suo interno una serie di funzionalita per modificare i documenti.

Per offrire questo ambiente di editazione integrato con il browser,

inizialmente si era pensato che la sidebar dovesse compiere

un’“iniezione” dell’editor all’interno del DOM del documento, come

se l’editor facesse gia parte del documento stesso e, una volta

attivato, andasse a modificare il DOM all’interno del quale risiedeva,

ma successivamente e stata studiata una nuova soluzione. La

soluzione proposta, nell’ambito di questa tesi, prevede una completa

integrazione dell’editor all’interno della sidebar. In questo modo

l’editor viene semplicemente richiamato dalla sidebar in fase di

editazione, senza necessita di modificare ulteriormente il DOM della

pagina originale, inserendo degli script al suo interno. L’architettura

scelta prevede che l’editor operi sullo stesso DOM a cui la sidebar ha

accesso. Tale soluzione ha risolto anche problemi di comunicazione

tra window appartenti a domini diversi: la window dei documenti

visualizzati nel browser, che possono appartenere a qualsiasi dominio,

la window dell’editor e quella della sidebar.

3.6.1 Attivazione dell’editor

Un’aspetto importante del progetto ISAWiki e decidere quali parti

del documento devono essere considerate editabili; infatti, piuttosto

che permettere l’editazione della pagina Web completa, il progetto

ISAWiki segue il principio di mantenere viva la separazione tra le

aree di “contenuto” da quelle puramente ornamentali, stilistiche o di

navigazione.

Poiche l’editor del progetto ISAWiki agisce sul contenuto del

documento, e importante attivare un meccanismo per differenziare

le parti di contenuto dalle parti presentazionali della pagina. In

particolare, ogni volta che viene effettuata la richiesta di editazione

Page 53: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3.6. COMUNICAZIONE CON L’EDITOR 49

di un documento, tramite il bottone “Edit”, la sidebar attiva

un processo di analisi della pagina chiamato Extraction of Layout

Information via Structural Analysis [VCa03], che si basa su delle

euristiche sviluppate da un altro membro del progetto ISAWiki.

Questa analisi si propone di individuare il ruolo dei vari componenti

della pagina all’interno della stessa. Il risultato di questa analisi

permette di identificare quali elementi riguardano il contenuto e quali

lo stile. La sidebar riceve il risultato di tale analisi, si preoccupa di

rendere editabili gli elementi segnalati, ed evidenzia graficamente le

zone editabili in modo che vengano identificate dall’utente.

L’editor viene attivato sia quando un utente intende creare un nuovo

documento sia quando intende editarne uno gia esistente nella rete

con lo scopo di modificarlo.

3.6.2 Editazione di un nuovo documento

Dalla sidebar e possibile scegliere di creare un nuovo documento,

selezionando il bottone “New”.

Il nuovo documento viene creato a partire da un layout fornito

dal server. Dal momento che le aree per il contenuto vengono

separate da quelle presentazionali al momento della creazione del

layout stesso, per editare un nuovo documento non e necessario

attivare il meccanismo di analisi della pagina. Le zone destinate

al contenuto sono gli elementi “fvblock” del layout di ISA. L’editor

agisce solamente in queste zone editabili, evidenziate con dei bordi di

colore rosso, come mostrato nella figura 3.2. Durante la creazione di

un nuovo documento i bottoni “New” ed “Edit” vengono disabilitati.

3.6.3 Editazione di una pagina Web

Dalla sidebar e possibile richiedere l’editazione di una pagina Web

selezionando il bottone “Edit”.

L’editazione di una pagina Web, a differenza dell’editazione di un

nuovo documento, necessita del meccanismo di analisi della pagina.

Questa analisi e un processo abbastanza complesso dal momento

Page 54: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

50 CAPITOLO 3. LA SIDEBAR ISAWIKI

Figura 3.2: Editazione di un nuovo documento

che la ricerca delle parti di contenuto viene effettuta su DOM di

documenti HTML anche mal formati. Le zone editabili potranno

non esistere affatto in una pagina senza contenuto, potranno essere

molteplici o addirittura consistere in tutto il corpo del documento

nel caso in cui il documento sia completamente testuale.

Quando viene editata una pagina Web, la sidebar compie un passo

ulteriore: richiama una funzionalita implementata dall’editor per

conferire alle zone editabili, indicate dal meccanismo elISA, la stessa

struttura supportata dall’editor. Successivamente la sidebar procede

con l’attivazione e l’apertura della finestra dell’editor. Il risultato

dell’attivazione dell’editor, nel caso dell’editazione di una pagina

Web, e mostrato in figura 3.3, nella quale le zone editabili sono

evidenziate con dei bordi di colore rosso. Durante l’editazione il

bottone “Edit” viene disabilitato.

Page 55: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3.6. COMUNICAZIONE CON L’EDITOR 51

Figura 3.3: La sidebar e l’editor ISAWiki

3.6.4 Chiusura dell’editor

Dal momento che l’editor e rappresentato da una finestra sempre

attiva sul browser, la sua chiusura puo avvenire in momenti

molteplici, a seconda delle azioni compiute dall’utente, in particolare

quando:

• l’utente richiede di salvare il documento selezionando il bottone

“Save”: in questo caso la sidebar apre la finestra di salvataggio,

contenente dei campi di testo mediante i quali e possibile

specificare alcune informazioni da associare al documento.

• l’utente richiede di creare un nuovo documento selezionando il

Page 56: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

52 CAPITOLO 3. LA SIDEBAR ISAWIKI

bottone “New”: in questo caso la sidebar apre una finestra di

dialogo chiedendo semplicemente all’utente se desidera salvare

i cambiamenti prima di creare un nuovo documento. In caso

di risposta affermativa, il salvataggio viene effettuato senza

richiedere nuovamente all’utente di specificare le informazioni

da associare alla versione del documento (cioe senza aprire

nuovamente la finestra di salvataggio) ma utilizzando le

informazioni gia associate ad esso.

• l’utente richiede un nuovo URL: anche in questo caso la

sidebar apre la stessa finestra indicata nel punto precedente,

effettuando il salvataggio solo se richiesto dall’utente e

procedendo a caricare il documento richiesto dalla barra degli

indirizzi.

• l’utente chiude appositamente la finestra dell’editor: in questo

caso, si apre una finestra differente da quella indicata nei punti

precedenti. Tramite questa interfaccia, selezionando “Cancel”

viene semplicemente data all’utente la possibilita di annullare

l’operazione di chiusura dell’editor e di continuare l’editazione.

La gestione della chiusura dell’editor segue sempre i punti sopra

indicati ma nel caso in cui l’utente stia editando un nuovo documento,

invece che uno gia esistente, e stato scelto nell’ambito di questa

tesi, di effettuare l’operazione di salvataggio solo se il nuovo layout

subisce effettivamente un’operazione di modifica, altrimenti l’utente

viene rimandato all’home page del progetto ISAWiki, interpretando

il gesto come se l’utente intendesse semplicemente chiudere l’editor e

continuare la sua navigazione.

3.7 Comunicazione con il server ISAWiki

Selezionando “ISAWiki Bar” dall’apposito menu viene abilitata la

comunicazione con il server ISAWiki, offrendo all’utente la possibilita

di compiere, oltre che in maniera piu semplice i servizi offerti dal

server ISAWiki, anche alcune operazioni aggiuntive.

Page 57: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3.7. COMUNICAZIONE CON IL SERVER ISAWIKI 53

3.7.1 Richiesta di un nuovo documento

Uno dei momenti in cui la sidebar comunica con il server e

durante il processo di creazione di nuovi documenti in quanto il server

ISAWiki offre la possibilita di associare un layout al documento al

fine di creare una pagina Web completa. Quando l’utente seleziona

il bottone “New”, la sidebar apre una finestra di dialogo contenente

al suo interno un menu a tendina dal quale e possibile selezionare il

layout desiderato che verra applicato al contenuto della nuova pagina

Web. Per permettere all’utente di effettuare una scelta che soddisfi

sicuramente le sue esigenze, la sidebar richiede al server la lista delle

“Preview” disponibili, corrispondenti ai layout presenti sul server.

L’utente puo semplicemente scegliere, da questa interfaccia, il layout

preferito, come mostrato in figura 3.4. A questo punto la sidebar

Figura 3.4: Interfaccia per la scelta dei layout

Page 58: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

54 CAPITOLO 3. LA SIDEBAR ISAWIKI

chiede al server il layout scelto dall’utente, carica il layout nella

finestra del browser, evidenzia le parti dove l’utente puo aggiungere

il contenuto ed attiva l’editor che andra a modificare il DOM del

documento corrispondenti a queste aree.

3.7.2 Richiesta di un salvataggio

Dopo aver creato o modificato la propria pagina Web, l’utente

ha la possibilita di salvare le modifiche effettuate. In questa fase,

l’utente puo specificare una serie di metainformazioni da associare al

documento da salvare quali:

• il nome;

• l’autore;

• la lista degli utenti che hanno i permessi in lettura;

• la lista degli utenti che hanno i permessi in scrittura;

• il layout da associare al documento da salvare.

L’utente puo inserire queste metainformazioni tramite un’apposita

finestra di salvataggio, come mostrato in figura 3.5.

Il server si occupa di salvare il documento nell’apposita directory e di

modificare i dati relativi alla nuova versione del documento appena

creata.

Tramite la sidebar viene fornita la funzionalita aggiuntiva rispetto

ai servizi offerti solo lato server di poter modificare le proprieta

delle versioni intermedie, quali la rinomina e il cambio dei permessi

in lettura e scrittura, eliminando la necessita di creare una nuova

versione ed essere obbligati a ridefinirli.

3.7.3 Richiesta della lista delle versioni

Mentre l’utente sta navigando, nel caso in cui esistano delle

versioni salvate sul server della pagina richiesta dalla barra degli

indirizzi, la sidebar visualizza la lista delle versioni tramite un

Page 59: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3.7. COMUNICAZIONE CON IL SERVER ISAWIKI 55

Figura 3.5: Interfaccia per il salvataggio di un documento

apposito menu a tendina. Dato il numero infinito di versioni che

puo essere creato per ogni documento, sul menu viene indicata

solo l’ultima versione e le relative versioni “padre” fino alla prima

versione, come mostrato in figura 3.6. Se esistono altre versioni

oltre a quelle mostrate nel menu, e sempre possibile visualizzarne

la lista completa selezionando, sempre dal menu, la voce “more...”,

tramite la quale viene mostrata una rappresentazione grafica della

lista completa delle versioni sotto forma di albero; in questo modo,

oltre ad avere una chiara visione della genealogia del documento,

l’utente puo anche accedere alle versioni non mostrate nell’apposito

menu a tendina.

3.7.4 Richiesta di un particolare formato

Poiche il server ISAWiki ospita al suo interno un motore

di conversione [Nan03] che permette la trasformazione di un

documento in diversi formati, dalla sidebar e possibile utilizzare

questa funzionalita per richiedere la visualizzazione di una particolare

versione di un documento in un particolare formato. Tuttavia,

poiche e prevista solo l’editazione di documenti in formato HTML,

se viene richiesta l’editazione di un formato diverso da questo, la

sidebar provvede ad aprire l’editor sul rispettivo formato HTML

del documento richiesto. La richiesta del documento in un formato

Page 60: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

56 CAPITOLO 3. LA SIDEBAR ISAWIKI

Figura 3.6: Lista delle versioni

diverso da HTML e supportata solo per i documenti “interni” al

server, cioe quei documenti il cui URL appartiene allo stesso dominio

del server.

3.7.5 Richiesta della pagina personalizzata

Dopo aver creato, modificato e salvato un nuovo documento,

l’utente puo visualizzare la pagina personalizzata richiedendola

tramite URL. La comunicazione con il server ISAWiki avviene ogni

volta che un nuovo URL viene richiesto dall’utente. Intercettando

questo evento, la sidebar avvia un processo indipendente che agisce

parallelamente al normale download del documento. Questo processo

Page 61: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3.7. COMUNICAZIONE CON IL SERVER ISAWIKI 57

si occupa di interrogare il server ISAWiki per verificare se esiste

qualche versione della risorsa richiesta salvata precedentemente su

di esso. E’ stata scelta questa soluzione di esecuzione parallela,

proprio per rendere il sistema piu usabile da parte dell’utente, cioe

per evitare che possibili ritardi nella risposta del server o qualsiasi

altro fattore di rallentamento nella rete, possano mettere l’utente

in attesa della visualizzazione della pagina e rallentare cosı il suo

processo naturale di navigazione. Il server ISAWiki, nel caso in cui

disponga di almeno una versione del documento richiesto, interroga

l’origin server per verificare se su questo e stata eseguita qualche

modifica o aggiornamento successivamente al momento in cui tale

documento e stato personalizzato dall’utente. La risposta del server

viene analizzata dalla sidebar. Se tale documento non e presente sul

server la sidebar rimarra “silent”, altrimenti si preoccupera di far

visualizzare all’utente sempre la versione piu recente del documento

corrispondente all’URL richiesto, come mostrato nella figura 3.7. Se

Figura 3.7: Visualizzazione della pagina personalizzata

Page 62: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

58 CAPITOLO 3. LA SIDEBAR ISAWIKI

la versione piu recente e quella sul server ISAWiki, dalla sidebar

sara sempre possibile visualizzare quali sono le altre versioni del

documento e richiedere di avere accesso di nuovo ad una particolare

versione per avere eventualmente la possibilita di modificarle di

nuovo. In caso contrario dalla sidebar sara sempre possibile richiedere

la visualizzazione della pagina originale, tramite la voce “origin

server” presente nel menu a tendina.

3.8 Comunicazione con il server XLink

Selezionando dal menu presente sulla sidebar la voce “XLinkExplo

rer Bar”, e possibile accedere all’interfaccia che permette all’utente

di definire dei link multidirezionali e multidestinazione, poi visibili

anche da altri utenti, su qualunque documento pubblicato sul Web.

Le funzionalita client-side offerte dal sistema si basano sull’utilizzo

di un server esterno, che si occupa della memorizzazione degli XLink

in apposite linkbase e della restituzione di un insieme di link esterni

associati ad un particolare URL.

Analizziamo ora il set di funzionalita fornite dal sistema all’utente.

Sulla sidebar sono presenti due voci di menu distinte: una che

si occupa della gestione delle “Linkbase”, e l’altra della gestione

dell’“XLink”. Accedendo ad ognuna di queste e possibile utilizzare

delle funzionalita specifiche.

3.8.1 Creazione di una linkbase

Una linkbase e essenzialmente un file XML, risiedente sul server

XLink ed esterna all’aplicazione client, che contiene una lista

di unita di linking e di informazioni che permettono il corretto

funzionamento del sistema. Selezionando dal menu presente sulla

sidebar la voce “Create Linkbase” e possibile creare una linkbase,

che puo essere condivisa tra piu utenti. Per rendere possibile questa

operazione, la sidebar apre una finestra di dialogo contenente dei

campi di testo, come mostrato nella figura 3.8, tramite i quali e

possibile specificare il nome della linkbase, l’autore della linkbase

Page 63: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3.8. COMUNICAZIONE CON IL SERVER XLINK 59

Figura 3.8: Interfaccia per la creazione di una linkbase

ed un eventuale descrizione da associare alla linkbase per una piu

significativa organizzazione dei link.

3.8.2 Cancellazione di una linkbase

Selezionando dal menu presente sulla sidebar la voce “Delete

Linkbase” e possibile cancellare una linkbase esterna dalla lista delle

linkbase presenti sul server. L’operazione avviene sempre tramite una

finestra di dialogo, dalla quale l’utente puo selezionare il nome della

linkbase da eliminare e di conseguenza di tutti i link in essa definiti.

3.8.3 Creazione di un link

La fase di definizione di un nuovo link inizia selezionando un

frammento del testo presente nel documento ed attivando la voce “Set

StartPoint DestinationPoint” da un “context menu” appositamente

realizzato per la definizione degli XLink, come mostrato nella

figura 3.9. Per ogni ancora selezionata e possibile scegliere il

ruolo dell’ancora all’interno del link, cioe se il frammento della

parte selezionata dovra rappresentare un punto di partenza o di

destinazione in fase di attraversamento del link stesso. L’utente

puo effettuare questa scelta semplicemente selezionando quali devono

essere le ancore di partenza tra quelle elencate nella tabella presente

nella sidebar. Le altre, per esclusione, diventeranno automaticamente

delle destinazioni per il link.

Page 64: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

60 CAPITOLO 3. LA SIDEBAR ISAWIKI

Figura 3.9: Interfaccia per la creazione di un link

Definizione degli XPointer

Per poter identificare la posizione in cui le ancore debbano essere

collocate, lo standard XLink prevede l’utilizzo di una sintassi in

grado di specificare qualsiasi parte (o sottoparte) di un documento

XML. Questa sintassi e definita dallo standard W3C XPointer.

La sintassi offre un meccanismo di definizione di frammenti di un

documento molto potente e supporta sia tecniche di conteggio sia

meccanismi di ricerca. Gli XPointer possono essere utilizzati nella

parte fragment di un URL per definire una locazione all’interno

della risorsa identificata dall’URL. L’utilizzo di XPointer e di vitale

importanza per la realizzazione dei link e diventa pertanto necessario

per il corretto funzionamento del sistema. Per quanto riguarda la

forma di XPointer utilizzata in questo progetto si rimanda il lettore

al capitolo quattro.

Page 65: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3.8. COMUNICAZIONE CON IL SERVER XLINK 61

Preview di un link

Selezionando dal menu presente sulla sidebar la voce “Preview

Link” e possibile richiedere la visualizzazione della preview di un link

appena creato. Selezionando questa voce viene aperta una finestra

che mostra il file XML dell’XLink creato secondo lo standard XLink

del W3C.

3.8.4 Salvataggio di un link

L’operazione di salvataggio di un link con tutte le relative

informazioni, puo avvenire sia selezionando l’item “Save Link”

dal menu relativo alla gestione dell’XLink, sia direttamente

dall’interfaccia della sidebar, selezionando il bottone “Save”. In

entrambi i casi il salvataggio avviene sulla linkbase corrente, cioe

sulla linkbase attiva sul menu a tendina, contenente la lista della

linkbase, presente sulla sidebar.

Le informazioni riguardo gli XLink creati, tramite questo sistema

di memorizzazione esterna, saranno poi rese disponibili dal server

quando verranno richieste al momento dell’inserimento dei link nel

documento.

3.8.5 Inserimento di un link

Ogni volta che un documento viene caricato, se il monitor e

abilitato, l’applicazione client interroga il server XLink che effettua

una ricerca all’interno delle linkbase di tutti quegli XLink il cui valore

dell’attributo “from” degli elementi “locator” (secondo lo standard

del W3C), ha come valore lo stesso URL del documento richiesto.

In fase di inserimento delle ancore, vengono risolti alcuni problemi al

fine di rendere consistente il processo di definizione dei link:

• conteggio del numero di ancore da inserire all’interno della

stessa risorsa;

• gestione di eventuali sovrapposizioni delle ancore;

• gestione di eventuali link innestati.

Page 66: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

62 CAPITOLO 3. LA SIDEBAR ISAWIKI

Figura 3.10: Menu visibile in fase di visualizzazione del link

E in questo momento che l’applicazione client cerca di estendere

la debolezza del modello HTML, andando ad aggiungere dei link

multidestinazione all’interno di una pagina Web su cui non si hanno

permessi in scrittura.

Quando l’applicazione client provvede all’inserimento di un link, si

occupa anche di generare un menu dinamico che diventera visibile

nel momento in cui l’utente tentera di attraversare il link definito

mediante questo framework, come mostrato in figura 3.10. Tale menu

contiene al suo interno diversi item: il titolo del link, il titolo di tutte

le altre aventuali destinazioni e le voci “Edit Link” e “Remove Link”

che saranno utilizzate dall’utente rispettivamente per l’editazione di

un link e per la sua rimozione. Nel caso in cui il titolo del link

non e stato definito, sul menu apparira la voce “No Title”. In fase

di generazione dei menu, l’applicazione verifica anche la presenza di

eventuali elementi inline gia presenti nel documento. In questo caso

le voci “Edit Link” e “Remove Link” saranno disabilitate.

3.8.6 Editazione di un link

Selezionando l’item “Edit Link” dal menu che appare quando si

vuole attraversare un link, e possibile sia modificare gli archi che

costituiscono il link, sia modificarne le proprieta di attraversamento.

Tutti le informazioni riguardo il link editato sono visibili sulla sidebar.

Ogni ancora corrisponde ad un elemento locator definito dallo

standard XLink del W3C. Per ogni locator viene indicato se questo

e un punto di partenza oppure e una destinazione. L’utente puo

definire nuovi archi, modificare quelli gia esistenti, oppure rimuoverne

Page 67: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

3.9. IL FRAMEWORK 63

alcuni, tramite l’eliminazione di alcune locator. Per ogni locator e

possibile utilizzare il “context menu”, appositamente realizzato, dal

quale e possibile, selezionando la voce “EditLocator..”, modificare le

informazioni associate al locator. L’utente puo modificare il locator

tramite un interfaccia in cui sono presenti: il titolo del link a cui

il locator appartiene, la label che identifica il locator, l’URL della

risorsa che identifica il locator, la regola di attraversamento dell’arco

e la lista degli altri locator che costituiscono l’XLink. Sono selezionati

quei locator che rappresentano una destinazione rispetto al locator

corrente. Per ognuno di questi locator e possibile modificare le

proprieta “Show”(che definisce come debba essere visualizzato il link)

e “Actuate” (che ha la funzione di definire il momento in cui il locator

debba venire attivato).

3.8.7 Rimozione di un link

Selezionando l’item “Remove Link” dal menu che appare quando

si vuole attraversare un link, il link verra rimosso dalla relativa

linkbase e l’applicazione client provvede ad aggiornare la pagina.

3.9 Il framework

I concetti descritti fino a questo momento mostrano come sia

effettivamente possibile realizzare il sistema progettato. Nella figura

3.11 e possibile vedere il sistema nel suo complesso. La sidebar,

monitorando il processo di navigazione mantiene sempre aggiornato

il DOM del documento caricato nella finestra principale tramite

tecnologie client-side. In particolare, il client ogni volta che un nuovo

URL viene richiesto:

• inizia a caricare la risorsa dall’origin server;

• interroga il server ISAWiki chiedendo se esistono delle versioni

personalizzate della risorsa richiesta. Se esiste almeno una

versione, il server ISAWiki controlla il tempo dell’ultima

modifica del documento richiesto dall’utente sull’origin server

Page 68: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

64 CAPITOLO 3. LA SIDEBAR ISAWIKI

Figura 3.11: Il framework

e lo comunica al client. Se il documento sull’origin server ha

subito delle modifiche dopo che la pagina e stata personalizzata

dall’utente, il client lascia che venga visualizzata la pagina

originale, altrimenti si preoccupa di fornire all’utente la pagina

personalizzata, mostrando in questo modo sempre la versione

piu recente del documento richiesto tramite URL;

• interroga il server XLink per controllare se esistono dei link

associati a quel documento. Nel caso in cui essi siano presenti,

il server XLink risponde con la lista dei link da associare al

documento e il client modifica il DOM HTML del documento

in modo opportuno.

L’integrazione di queste funzionalita all’interno del browser ha il

vantaggio di offrire un ambiente integrato che consente all’utente di

accedere ai contenuti e di editare direttamente in place le pagine Web,

utilizzando il browser, senza l’intervento di un server proxy.

In questo capitolo l’attenzione e stata focalizzata principalmente

sulle scelte progettuali del sistema; sono state inoltre discusse le

singole parti che lo compongono e la loro integrazione. Nel capitolo

successivo verranno descritti tutti i dettagli implementativi e le

problematiche sorte durante la fase di realizzazione.

Page 69: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

Capitolo 4

Implementazione delprogetto

4.1 Introduzione

Dopo aver analizzato la struttura e i princıpi sui quali il progetto

si basa, in questo capitolo vengono riportati i dettagli relativi

all’implementazione, concentrandosi sugli aspetti piu importanti.

Poiche il framework, realizzato nel corso di questo lavoro, e

costituito da varie parti integrate tra loro per offrire un ambiente

di modifica e personalizzazione dei contenuti Web, il capitolo

analizza una ad una le varie parti. Viene fornita una spiegazione

completa dell’architettura e per ogni funzionalita viene data una

descrizione degli strumenti, degli algoritmi e dei protocolli usati per

la realizzazione. Nella sezione conclusiva vengono evidenziati infine i

limiti implementativi di questa versione.

4.2 Architettura del sistema

Il sistema realizzato si basa su un’architettura client, ed e

costituito fondamentalmente da due parti: la prima e un’applicazione

che si occupa della comunicazione con la finestra principale del

browser, la seconda e costituita da una serie di script che si

occupano della comunicazione con l’editor, con il server ISAWiki e

con il server XLink. Le due parti sono fortemente dipendenti l’una

dall’altra. Non e possibile utilizzare l’editor, il server ISAWiki ed

65

Page 70: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

66 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

il server XLink, direttamente dal browser senza la comunicazione

con la finestra principale e nello stesso tempo, la comunicazione

con la finestra principale fine a se stessa non avrebbe senso di

esistere. L’applicazione fornisce l’interfaccia attraverso la quale

queste stesse funzionalita client possono essere attivate direttamente

dal browser. Ai fini di una migliore comprensione del sistema, e

importante puntualizzare qual e sul nucleo del funzionamento del

sistema e come le parti interagiscono all’interno dell’applicazione. La

sidebar comunica con la finestra principale del browser, riuscendo ad

intercettare gli eventi ed accedendo al DOM del documento caricato;

essa e rappresentata da un’interfaccia HTML e da una serie di script

Javascript che le permettono di comunicare con l’editor, con il server

ISAWiki ed il server XLink. Nel corso del capitolo viene analizzato

ogni singolo modulo del sistema.

4.3 Tecnologie utilizzate e requisiti per

il funzionamento

L’applicazione e stata realizzata mediante l’implementazione

di una Dynamic Link Libraries (DLL) scritta in Visual C++

6.0 per il browser Microsoft Internet Explorer. Essa consiste

nell’implementazione di un Explorer Bar. L’applicazione ha

un’interfaccia che, oltre a permettere la comunicazione con la finestra

principale di Internet Explorer, offre anche una serie di funzionalita

realizzate sfruttando tecnologie client-side attraverso il linguaggio

Javascript con l’ausilio delle librerie offerte dal parser Microsoft

MSXML 4.0.

Di seguito vengono indicati i programmi richiesti per poter utilizzare

tutte le funzionalita offerte dal sistema:

• versione 5.5 di Microsoft Internet Explorer;

• parser MSXML 4.0;

• server ISAWiki installato su un Web server;

• server XLink installato su un Web server.

Page 71: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.4. CONFIGURAZIONE DEL SISTEMA 67

I requisiti per l’installazione il server ISAWiki ed il server XLink, non

sono argomento di questa tesi.

4.4 Configurazione del sistema

Il sistema, implementato nel corso di questa tesi, e costituito

da una directory Sidebar contenente al suo interno un’applicazione

Sidebar.dll piu una serie di directory quante sono le funzionalita

offerte dal sistema. Vediamo nel dettaglio quali sono le directory

presenti all’interno della directory Sidebar :

• sISAWiki : rappresenta la directory contenente l’interfaccia

della sidebar per il sistema ISAWiki piu una serie di script

Javascript e file in formato HTML che implementano le varie

funzionalita per il sistema ISAWiki;

• sXLink : rappresenta la directory contenente l’interfaccia della

sidebar per il sistema XLink piu una serie di script Javascript

e file in formato HTML che implementano le varie funzionalita

per il sistema XLink;

• editor : rappresenta la directory contenente gli script dell’editor

per il sistema ISAWiki;

• elISA: rappresenta la directory contenente gli script ed i fogli di

stile XSL per il sistema di Extraction of Layout Information via

Structural Analysis utilizzato all’interno del sistema ISAWiki.

Sidebar.dll e l’applicazione all’interno della quale e stato

implementato l’oggetto Explorer Bar e il monitor. L’applicazione

e stata implementata in maniera da essere indipendente dalle risorse

HTML che possono venir caricate all’interno della finestra della

sidebar. Inizialmente viene caricata la sidebar per il sistema ISAWiki,

in seguito da un apposito menu e possibile selezionare e caricare la

sidebar per il sistema XLink. Ciascuna interfaccia e rappresentata

da un file HTML e un serie di script Javascript. Le due interfacce

condividono solo il monitor implementato in C++.

Page 72: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

68 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

Dopo la fase di installazione/registrazione della dll, l’applicazione

provvedera ad aggiungere una voce alla lista delle Explorer Bar

gia registrate nel browser. L’utente puo cosı attivare la sidebar

selezionandola dal sotto menu Explorer Bar di “View” menu presente

in Internet Explorer. L’applicazione e registrata con il nome

“ISAWiki”.

4.4.1 Brevi accenni alla tecnologia COM

Il seguente paragrafo non vuole fornire una descrizione completa

della tecnologia COM, ma solo introdurre il contesto su cui la

parte relativa l’implementazione della dll si basa. Il fine e quello

di spiegare alcuni concetti che rendano possibile la comprensione

dell’implementazione, e poter indirizzare eventuali altri studi che

proseguiranno questa ricerca.

COM e l’acronimo di Component Object Model ed e la proposta

di Microsoft per sviluppare ed utilizzare componenti. COM e

soprattutto una specifica che indica in che modo vanno costruiti

vari componenti dinamicamente intercambiabili. I componenti COM

sono costuiti da un codice eseguibile distribuito sotto forma di

dll, o sotto forma di file eseguibile (.exe), entrambi per Win32,

e si collegano in modo dinamico. In COM un oggetto puo

supportare molte interfacce. I controlli ActiveX, che si basano

su COM, supportano una serie di specifiche interfacce, la maggior

parte delle quali standard. Per permettere ad un componente di

supportare un’interfaccia e necessario implementare ogni funzione

dell’interfaccia. Per questo motivo la Microsoft ha sviluppato dei

tool e delle classi che semplificano questa operazione: la Microsoft

Foundation Class (MFC) e soprattutto le Active Template Library

(ATL). Le Active Template Library, conosciute come “parametrized

classes”, sono una collezione di template incluse in Visual C++ a

partire dalla versione 4.0.

Un oggetto COM e il suo client devono avere un modo comune

per descrivere un’interfaccia, devono cioe definire i metodi che

l’interfaccia contiene e i relativi parametri. COM mette a

Page 73: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.4. CONFIGURAZIONE DEL SISTEMA 69

disposizione un modo standard per farlo tramite l’utilizzo di un

Interface Definition Language (IDL). Questo linguaggio permette

di definire completamente un’interfaccia supportata da un’oggetto.

COM distingue nettamente l’interfaccia dalla sua implementazione.

Per permettere la comunicazione tra il componente COM e

l’applicazione client, viene utilizzato il metodo dell’Automation

(OLE). L’Automation non e separata da COM, ma e costruita su di

esso. Un server Automation e un componente COM che implementa

l’interfaccia standard IDispatch. L’Automazione rende possibile

l’interazione tra controlli e contenitori. Un controller Automation

e un client COM che comunica con il server Automation attraverso

la sua interfaccia IDispatch. Il client non richiama direttamente le

funzioni implementate dal server, ma utilizza le funzioni membro

dell’interfaccia IDispatch per richiamare indirettamente le funzioni

del componente. I controlli ActiveX esportano una serie di

proprieta e metodi, attraverso questa speciale interfaccia, che sono

accessibili dalle applicazioni client. La tecnologia ActiveX si basa

principalmente sull’OLE Automation e su COM, che consente

di risolvere tutti i problemi riguardanti l’integrazione tra piu

oggetti, permettendo l’inserzione in una pagina HTML di oggetti

di diverso tipo, come componenti OLE. Un interfaccia COM viene

implementata utilizzando una vtable, cioe una tabella di puntatori.

Di conseguenza per invocare un metodo di queste interfacce e

necessario che un client attraversi la catena di tutti i puntatori inclusi

nella tabella. L’interfaccia standard di COM, IDispatch, semplifica

questo processo e diversamente dalle altre interfacce include un

metodo chiamato Invoke(), che viene invocato dall’applicazione

client per richiamare un qualunque altro metodo dell’oggetto. I

metodi che possono essere invocati sono definiti in una dispatch

interface, chiamata comunemente dispinterface o interfaccia disp.

Una dispinterface, non e altro che un gruppo di metodi che possono

essere invocati usando IDispatch::Invoke() ai quali viene assegnato

un identificativo univoco chiamato dispatch identifier (DISPID). Il

DISPID identifica una funzione, ma non e univoco, se non in una

specifica implementazione di IDispatch. Il metodo Invoke() viene

Page 74: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

70 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

invocato per ogni istanza di documento caricato nel browser Internet

Explorer. Esso permette all’applicazione client di interfacciarsi con

gli eventi che vengono gestiti in base al DISPID.

Di seguito sara descritto come l’Explorer Bar utilizza le tecnologie

brevemente spiegate in questo paragrafo.

4.5 Realizzazione dell’oggetto Explorer

Bar

L’applicazione e stata realizzata mediante l’utilizzo delle Active

Template Library. La realizzazione dell’oggetto Explorer Bar

provvede l’implementazione e la registrazione di un band object. I

band object sono oggetti COM che esistono dentro un container.

Con il termine container vengono indicate le window che contengono

gli ActiveX. Il container dipende specificatamente dal tipo al quale

il band object appartiene. In questo caso il container e Internet

Explorer. I band object sono sono caratterizzati dal modo in cui

sono registrati e dall’interfaccia che essi espongono. La registrazione

dei componenti si basa sulla possibilita di identificarli univocamente.

I band object devono essere registrati secondo il loro appropriato

component category. La categoria determina il tipo di oggetto ed

il suo container. La Vertical Explorer Bar richiede una registrazione

di tipo CATID InfoBand. L’interfaccia e composta da una sezione

che risiede all’interno della finestra del browser.

L’Explorer Bar e stata implementata seguendo le specifiche

fornite da Microsoft Internet Explorer, pertanto la descrizione

dettagliata e completa dell’implementazione puo essere trovata in

[MSDN04a][MSDN04c]. Nei prossimi paragrafi, viene fornita una

descrizione di come e in quali punti si e riusciti ad integrare,

all’interno dell’oggetto Explorer Bar, le funzionalita relative questo

progetto.

Page 75: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.6. COMUNICAZIONE CON LA FINESTRA DEL BROWSER71

4.6 Comunicazione con la finestra del

browser

La comunicazione con la finestra principale del browser e resa

possibile dal fatto che l’applicazione ospita al suo interno il Web

Browser Control che e il principale componente usato da Internet

Explorer e rappresenta un potente tool per aggiungere funzionalita

di “Internet browsing” e per accedere al DHTML Object Model di

Microsoft Internet Explorer. Il Web Browser Control e presente

nell’applicazione sotto forma di un DHTML control ed e definito

mediante l’utilizzo delle librerie ATL. L’inserimento di un DHTML

control comporta la creazione di una risorsa HTML (che rappresenta

il file HTML della sidebar) e di un interfaccia (User Interface) che

permette la comunicazione dalla risorsa HTML creata verso il codice

C++. La risorsa HTML puo chiamare alcuni metodi, implementati

nel codice C++, tramite questa User Interface, accedendovi mediante

l’oggetto "window.external" del linguaggio Javascript. Tuttavia

per realizzare le funzionalita richieste in questa tesi, e stato necessario

studiare ed utilizzare soprattutto la comunicazione dal codice C++

al codice Javascript. Questa comunicazione ha permesso di reperire

alcune informazioni e accedere ad alcune strutture che, altrimenti,

non sarebbe stato possibile recuperare utilizzando semplicemente

Javascript. Le informazioni di cui l’applicazione ha bisogno sono

infatti presenti nella struttura disparams gestita dalla funzione

Invoke(). L’Explorer Bar prima si registra al browser con lo scopo di

ricevere una notifica degli eventi relativi al download del documento,

successivamente, ogni nuova istanza di Internet Explorer lancera

un’istanza di questo oggetto ActiveX, accedendo all’interfaccia DOM

di qualsiasi documento successivamente caricato.

La notifica degli eventi e l’accesso al DOM del documento avviene

mediante il metodo Invoke() dell’interfaccia IDispatch. Tale metodo

viene invocato ogni volta che un documento viene richiesto al browser

Internet Explorer. Tale metodo utilizza un’istruzione case per

ogni DISPID associato al Web Browser Control. Ogni DISPID e

relativo ad un evento del documento. Quando l’evento avviene,

Page 76: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

72 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

un’ apposita funzione Javascript viene invocata dal codice C++ per

gestire l’evento. Gli eventi BeforeNavigate e DocumentComplete sono

gli unici eventi gestiti in quanto ritenuti piu importanti ai fini di

questo sistema di modifica dei documenti.

4.6.1 Oggetto IWebBrowser2

IWebBrowser2 e l’interfaccia tramite la quale l’applicazione

Sidebar.dll puo controllare e ricevere notifica degli eventi

che accadono nella finestra principale. Ad ogni istanza di

Internet Explorer, l’applicazione lancia un’istanza di IWebBrowser2.

Attraverso quest’interfaccia e possibile monitorare l’attivita del

browser e compiere determinate operazioni sul documento caricato

nella finestra principale del browser. IWebBrowser2 contiene utili

metodi, proprieta ed eventi che permettono all’applicazione di

accedere all’oggetto DOM del documento caricato nella finestra

principale. Il puntatore a quest’interfaccia, usato all’interno

dell’applicazione, e definito da pWB.

4.6.2 Meccanismo di callback

Il meccanismo di callback e il procedimento mediante il quale, al

verificarsi di un evento, notificato dal metodo Invoke(), l’applicazione

invoca l’apposito gestore dell’evento, rappresentato da una funzione

Javascript presente all’interno della risorsa HTML della sidebar. Il

procedimento e possibile poiche l’applicazione, ospitando un Web

Browser Control, riesce a richiamare una funzione script presente

all’interno di una pagina Web. Visto che i gestori degli eventi

hanno bisogno di alcune informazioni a cui non e possibile accedere

tramite Javascript, l’applicazione in C++ deve fornire loro queste

informazioni mediante il passaggio di alcuni parametri dal codice

C++ al codice Javascript. Per poter effettuare questa operazione e

necessario:

• reperire il puntatore (m spBrowser) al DOM della risorsa

HTML della sidebar per poter invocare una sua apposita

funzione;

Page 77: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.6. COMUNICAZIONE CON LA FINESTRA DEL BROWSER73

• invocare il metodo IDispatch::GetIDsOfNames(), per accedere

ad una tabella di nomi di funzioni e recuperare l’id della

funzione script da eseguire;

• invocare il metodo InvokeHelper() per eseguire la funzione

passandogli le opportune informazioni necessarie per poter

gestire l’evento.

Il sistema e organizzato in modo che, per ogni evento, venga sempre

chiamata la funzione Javascript CallBack() che prende in input il

nome dell’evento e restituisce il nome dell’event handler alla funzione

implementata nel codice C++. La funzione CallBack() recupera

queste informazioni dalla struttura struct event, mediante la quale

viene mantenuta l’associazione tra il nome dell’evento e il nome del

rispettivo gestore. A questo punto dal codice C++ viene invocato

l’event handler passandogli gli oppurtuni parametri di cui ha bisogno

per gestire l’evento.

4.6.3 Evento BeforeNavigate

In realta, l’uso di BeforeNavigate e deprecato poiche dalla

versione 4.0 di Internet Explorer la Microsoft ha introdotto il termine

BeforeNavigate2 per indicare lo stesso evento; fino a questo momento

e stato utilizzato il vecchio termine solo per dare piu importanza

al significato dell’evento in se, ma da questo punto in poi il nome

dell’evento verra indicato con il suo nome preciso.

Quando si verifica l’evento BeforeNavigate2, l’applicazione chiama

l’apposito gestore dell’evento. Le funzioni che vengono invocate sono

le funzioni changeUrl() e ReadUrl(). Tutte e due le funzioni prendono

in input url BeforeNavigate2 che rappresenta l’URL del documento

richiesto dall’utente. La funzione changeUrl() e stata implementata

per cambiare direttamente l’URL del documento richiesto, nel caso in

cui venga richiesta l’editazione di un documento per mezzo dell’editor

testuale. L’utilita di questa funzione sara chiarita piu avanti nei

paragrafi relativi l’editazione.

La funzione ReadUrl() e invece fondamentale per quanto riguarda

Page 78: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

74 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

il ruolo della sidebar all’interno del progetto ISAWiki. Non appena

un nuovo URL viene richiesto, invece di attendere che il documento

venga restituito dall’origin server, la sidebar inizia a richiedere

al server ISAWiki se esistono versioni salvate riguardo l’URL

richiesto, tramite la funzione get last version(), e nel frattempo

lascia avvenire il normale download del documento. Per “simulare”

l’esecuzione di un thread indipendente la funzione get last version()

viene richiamata mediante il metodo "setTimeout()" fornito

dal linguaggio Javascript. Tale metodo attiva un processo

quasi indipendente, dal momento che il linguaggio Javascript

non e un linguaggio multithreading; tuttavia, usando il metodo

"setTimeout()" viene permesso alla sidebar di effettuare la richiesta

al server, senza bloccare il normale flusso dell’applicazione, in pratica,

senza interrompere il processo di navigazione dell’utente. Invece,

quando il tipo di documento richiesto e un documento “interno”

al server ISAWiki, la funzione get last version() non viene chiamata

tramite il metodo "setTimeout()". Un documento viene considerato

“interno” se non esiste una corrispondente versione con lo stesso nome

presente sulla rete (ad esempio: per un documento che si chiama

“tesi.html” l’unica versione esistente e quella sul server ISAWiki). La

funzione get last version() verra descritta nella sezione riguardante la

comunicazione verso il server ISAWiki.

4.6.4 Evento DocumentComplete

Quando si verifica l’evento DocumentComplete, l’applicazione

chiama l’apposito gestore dell’evento rappresentato dalla funzione

DocumentComplete(). La funzione prende in input ie che rappresenta

l’oggetto Microsoft Internet Explorer corrispondente all’interfaccia

IWebBrowser2. Utilizzando questo oggetto e possibile accedere

ai suoi metodi ed alle sue proprieta, in particolare: Document

corrisponde al Document Object Model, parentWindow rappresenta

l’oggetto window della finestra principale, LocationURL rappresenta

l’URL del documento richiesto ed il metodo Navigate() permette

di dirigere la navigazione verso una determinata risorsa. Tali

Page 79: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.7. CONTROLLI DELLA SIDEBAR 75

informazioni sono memorizzate in variabili globali. Il Document

Object Model viene memorizzato nella variabile IEdocument ; tale

oggetto corrisponde all’oggetto document di Javascript, ma in piu

mette a disposizione dei metodi e delle proprieta aggiuntive ereditate

dall’interfaccia IWebBrowser2.

Nel caso in cui il documento contenga dei frame, la variabile

IEdocument contiene un’istanza per ogni DOM di ciascun frame.

4.7 Controlli della sidebar

Sebbene le funzionalita offerte dalla sidebar, prese singolarmente

siano di semplice implementazione, tuttavia la gestione dell’aggiorna-

mento costante delle informazioni presenti sulla sidebar e del monitor

e stato un processo leggermente piu delicato.

Dal momento che il “ritmo” di funzionamento della sidebar viene

scandito dagli eventi che accadono nella finestra principale, legati

al download del documento, e di conseguenza dagli event handler

che vengono richiamati, e stato necessario, per quanto riguarda la

realizzazione della sidebar ISAWiki, utilizzare alcune variabili globali

booleane per mantenere lo stato del controllo ad ogni operazione

richiesta. La maggior parte di queste variabili sono state introdotte

per gestire la chiusura della toolbar dell’editor.

Di seguito vengono spiegate quali sono quelle piu importanti ed in

quali punti del programma sono state utilizzate ai fini di una migliore

comprensione dei dettagli implementativi:

• change format : utilizzata per non eseguire nuovamente

l’interrogazione al server della lista delle versioni nel caso in

cui viene semplicemente richiesto un altro formato;

• change version: utilizzata per non eseguire nuovamente

l’interrogazione al server della lista delle versioni nel caso in

cui viene semplicemente richiesto un altra versione;

• controlled : utilizzata per non eseguire nuovamente l’interrogazione

al server dopo che la pagina personalizzata viene caricata al

posto della versione presente sull’origin server;

Page 80: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

76 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

• cntrl : utilizzata nella comunicazione con il codice C++ per

gestire la presenza di frame nel documento, sincronizzando

gli eventi BeforeNavigate2 e DocumentComplete. Infatti, nel

caso di un documento con frame, al verificarsi dell’evento

BeforeNavigate2 il programma C++ non e in grado di

distinguere l’URL del frameset da quello dei singoli frame.

Per questo motivo, quando viene letto l’URL del frameset

(e il primo ad essere letto), la variabile cntrl viene settata

al valore “1”, impedendo di chiamare ulteriormente l’handler

dell’evento BeforeNavigate2 anche per i singoli frame. Al

verificarsi dell’evento DocumentComplete invece, la sidebar,

riuscendo a distinguere tra le istanze del frameset e quelle

dei singoli frame (tramite la proprieta IEwindow.top), quando

avviene il download del frameset, riassegna alla variabile cntrl

il valore “0”. In questo modo il processo di lettura dell’URL

avviene correttamente, poiche al download del frameset, che si

verifica per ultimo, la sidebar riassegna alla variabile cntrl il

valore originale, rendendo possibile continuare a leggere l’URL

dei documenti successivi;

• ed : utilizzata per controllare l’apertura e la chiusura dell’editor;

• edit layout : utilizzata per indicare se si sta effettuando

l’editazione su un documento memorizzato sul server che ha

una propria struttura di layout gia definita;

• iw url : indica se l’URL corrente appartiene al dominio del

server ISAWiki, ed in tale caso assume valore “true”. Serve

per identificare il tipo di documento richiesto, distinguendolo

da un documento presente sull’origin server;

• list ver : utilizzata per indicare se un documento ha delle

versioni associate presenti sul server;

Page 81: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.8. COMUNICAZIONE CON L’EDITOR 77

4.8 Comunicazione con l’editor

Per quanto riguarda la comunicazione con l’editor, la soluzione

proposta e gia stata accennata nel capitolo precedente, ma in questo

paragrafo sara spiegata nel dettaglio descrivendo anche come e stata

implementata.

L’editor e costituito da alcuni file Javascript inclusi nel HTML

della sidebar ed esso manipola il DOM del documento usando

l’oggetto IEdocument visto dalla sidebar. In questo modo l’editor

riesce ad accedere al documento caricato nella finestra principale.

Inoltre, nel caso in cui un documento contenga dei frame, l’editor

ha accesso anche ai singoli frame, indipendentemente dal dominio

del documento, ma in questo caso e stato necessario risolvere un

problema di accesso alle window dei singoli frame. Infatti, sebbene

la sidebar, riesca ad accedere ad ogni possibile istanza del DOM di

ogni frame, la stessa cosa non avviene per l’oggetto window. Al

verificarsi di qualche evento (come "onclick" per esempio), l’editor

non riusciva a riconoscere in quale window l’evento avveniva, non

potendo utilizzare la proprieta "window.event.srcElement". Per

risolvere questo problema, tramite la funzione ricorsiva add my id()

viene assegnato un attributo frameId ad ogni frame presente

nel documento. In questo modo l’editor, tramite la funzione

set active element() e in grado di ritrovare il frame attivo ogni

volta che si verifica l’evento "onclick", sfruttando ora la proprieta

"activeElement" di Javascript che basa la ricerca del frame attivo

sull’utilizzo dell’oggetto document invece che window. Il frame puo

dunque essere identificato dal frameId, precedentemente inserito.

4.8.1 Attivazione dell’editor

L’editor viene attivato mediante la funzione Edit(). Esistono

due modi per rendere editabile un documento, a secondo del tipo

di documento da editare: tramite la funzione EditLayout() oppure

tramite la funzione EditOriginServer(). L’editazione di una pagina

HTML e resa possibile utilizzando la proprieta "contentEditable"

disponibile dalla versione 5.5 del browser Microsoft Internet Explorer.

Page 82: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

78 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

Le parti del documento da editare vengono inserite all’interno di

elementi <SPAN contentEditable="true">.

L’attivazione dell’editor prevede le seguenti fasi:

• analisi della pagina;

• trasformazione di determinati elementi in elementi editabili;

• apertura dell’editor.

Analisi della pagina

Per determinare quali sono gli elementi da rendere editabili

all’interno del documento, viene attivato il meccanismo di analisi

della pagina, di cui si e parlato nel capitolo precedente. Il

meccanismo di analisi della pagina viene attivato invocando la

funzione elISAstart(). Questa funzione, prende in input il DOM

del documento da analizzare e restituisce un array costituito da

due elementi. Per poter effettuare tale analisi, il meccanismo

elISA ha bisogno di trasformare il DOM del documento originale

in un DOM ben formato secondo le regole XML. Tale DOM viene

memorizzato nella prima posizione della struttura restituita dalla

funzione elISAstart() alla sidebar. Nella seconda posizione invece,

la funzione elISAstart() memorizza una struttura che permette alla

sidebar, in fase di scansione del documento, di identificare quali

sono gli elementi da rendere editabili. La struttura restituita dal

meccanismo elISA e memorizzato nella variabile elISA list. Tale

struttura e un array bidimensionale in cui per ogni elemento vengono

memorizzate le seguenti informazioni:

• numero identificativo del nodo all’interno del documento: in

fase di analisi il meccanismo setta un attributo "N" per

identificare in modo univoco ogni elemento di tipo nodo

all’interno del DOM;

• nome del tag del nodo di cui alcuni figli devono essere resi

editabili;

• indice del primo figlio del nodo che deve essere reso editabile;

Page 83: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.8. COMUNICAZIONE CON L’EDITOR 79

• indice dell’ultimo figlio del nodo che deve essere reso editabile.

Gli ultimi due punti permettono di identificare il range di nodi che

devono essere resi editabili.

Trasformazione di determinati elementi in elementi editabili

Di seguito viene mostrato un esempio di come viene utilizzata la

struttura elISA list :

[10, TD, 3, 5]

[10, TD, 8, 13]

L’esempio indica che, prima e necessario identificare l’elemento:

<TD N="10">

Successivamente i suoi figli, dal terzo al quinto (estremi compresi),

devono essere inseriti all’interno di un elemento di questo tipo:

<SPAN contentEditable="true">.

Tale elemento SPAN deve essere poi inserito nella terza posizione,

rispetto alla “collection” dei figli del nodo TD, mentre i figli 3, 4 e

5 del nodo TD sono ora all’interno del nodo SPAN e non piu diretti

figli di TD. Lo stesso algoritmo viene utilizzato per rendere editabili

dall’ottavo al tredicesimo figlio come indicato nella struttura, tenendo

presente pero che l’inserimento dello SPAN precedente ha modificato

la lista dei figli del nodo TD. Tale algoritmo e implementato nella

funzione insertSpan cE().

Prima di poter considerare gli elementi indicati dal meccanismo

elISA effettivamente editabili, viene compiuta un’altra operazione

dalla sidebar, cioe quella di richiamare una funzionalita dell’editor

mediante la quale viene attivato un processo di conversione degli

elementi in un formato supportato dall’editor. Quest’ultima fase

viene sempre compiuta entro la stessa scansione del documento e

viene attivata mediante la funzione converti().

Apertura dell’editor

L’editor ISAWiki e rappresentato da una toolbar che consente

all’utente di utilizzare alcune funzionalita. L’editor viene attivato

richiamando le funzioni initEditor() e eventEditor(). Queste funzioni

Page 84: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

80 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

sono implementate all’interno degli script Javascript dell’editor, ma

al fine di una migliore comprensione del funzionamento del sistema,

mi limito a spiegare che la prima delle due funzioni provvede

all’apertura ed al caricamento dell’editor e la seconda associa agli

eventi del documento (ad esempio "onclick", "onkeypress") i

rispettivi handler. E per questo motivo che se all’interno di un

documento sono presenti dei frame, la sidebar richiama la funzione

initEditor() una sola volta su tutto il documento, e la funzione

eventEditor() su ogni frame.

4.8.2 Editazione di un documento del server

ISAWiki

Un documento salvato sul server ISAWiki ha associato uno dei

layout del server, scelto dall’utente. L’editazione di questo tipo di

documenti avviene tramite la funzione EditLayout().

L’identificazione delle zone editabili e molto semplice dal momento

che sfrutta il principio su cui si basa il sistema stesso della separazione

tra il layout ed il contenuto insita nella struttura del documento di

ISAWiki. I documenti salvati sul server, infatti, contengono degli

elementi di tipo DIV con attributo "type" con valore "fvblock"

creati appositamente per contenere le parti di contenuto della pagina.

Dunque, la funzione EditLayout(), si limita ad inserire gli elementi

<SPAN contentEditable="true"> all’interno di questi specifici

DIV, in modo tale da rendere tutto il loro contenuto editabile, a meno

di alcuni elementi DIV con attributo "id" con valore "userMenu"

o "adminMenu", creati appositamente dal sistema per scopi diversi

dall’editazione.

4.8.3 Editazione di un documento dell’originserver

L’editazione di un documento presente nella rete e stata

implementata nella funzione EditOriginServer().

L’algoritmo eseguito da questa funzione e esattamente quello

descritto nel paragrafo 4.8.1. Una volta effettuato il salvataggio

Page 85: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.8. COMUNICAZIONE CON L’EDITOR 81

sul server, al documento viene associato uno dei layout di ISAWiki

e, ad una successiva rieditazione, le zone editabili saranno quelle

corrispondenti alle zone "fvblock".

4.8.4 Chiusura dell’editor

Ogni volta che la window dell’editor viene chiusa, viene provocato

l’evento "onunload" e viene sempre richiamata la funzione closeIt()

ad esso associata.

Tale funzione, dopo aver effettuato opportuni controlli, richiama la

funzione closeIt editor() solo nel caso in cui la window dell’editor

viene esplicitamente chiusa dall’utente. Nei casi in cui, invece,

l’utente richiede di effettuare altre operazioni senza aver prima

provveduto a chiudere l’editor, e la sidebar che si preoccupa

di gestire la chiusura dell’editor, permettendo poi all’utente di

continuare a svolgere le operazioni richieste. Ogni volta che l’editor

viene aperto viene mantenuto un riferimento alla sua window, che

viene memorizzato nella variabile ed. Tale variabile e dunque

sufficiente per indicare se l’editor e aperto o meno, anche se e

stato necessario introdurre altre variabili per controllare le varie

situazioni in cui l’editor viene chiuso. La funzione closeIt editor()

utilizza un’istruzione case per distinguere il caso in cui (“new”)

l’editor e stato aperto per creare un nuovo documento, dal caso in

cui (“document”) l’editor e stato aperto dall’utente per modificare

una versione del documento precedentemente salvata sul server o

una pagina Web presente nella rete. In entrambi i casi, viene

aperta la finestra di dialogo “closeEditor1.html”, assumendo dei

comportamenti diversi a seconda del verificarsi di uno dei due casi

precedenti. Mediante la finestra di dialogo l’utente puo scegliere di:

• salvare le modifiche al documento: nel caso della creazione di

un nuovo documento, viene attivata la fase di salvataggio, solo

nel caso in cui vengano apportate delle modifiche al layout,

aggiungendo del contenuto, altrimenti, in ambito di questa tesi

e stato ritenuto non significativo permettere anche il salvataggio

di layout vuoti, dal momento che essi sono gia disponibili sul

Page 86: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

82 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

server (la funzione title new() e stata implementata a questo

scopo). Invece, quando viene editata una versione precedente

o un documento dalla rete, viene richiamata la funzione

Save(), che provvede al salvataggio e alla visualizzazione del

documento appena salvato, mediante la maschera della finestra

di salvataggio;

• non salvare le modifiche al documento: nel caso della

creazione di un nuovo documento, viene richiamata la funzione

DefaultPage(), che rimanda l’utente all’home page principale

del progetto ISAWiki. In questo modo vengono riattivati i

bottoni della sidebar e viene permesso all’utente di continuare

la sua navigazione. Nel caso di editazione di una versione

precedente o di un documento della rete viene richiamata

la funzione NotSave() che provvede invece a ricaricare il

documento, senza salvare le modifiche;

• annullare l’operazione di chiusura dell’editor: viene richiamata

la funzione reload editor(), implementata dall’editor, che

provvede a riaprire l’editor ed a riportarlo allo stato precedente

la sua chiusura.

Nei casi in cui l’operazione della chiusura dell’editor non venga

effettuata esplicitamente dall’utente, ma e la sidebar che si preoccupa

di provvedere alla sua chiusura, la funzione closeIt editor() non viene

richiamata. Sono state implementate altre funzioni a tal proposito

che tengono sempre conto del tipo di documento che l’utente stava

editando, un nuovo documento, oppure un documento esistente.

Di seguito vengono indicate le diverse operazioni che l’utente puo

compiere dopo aver richiesto la creazione di un documento:

• chiedere esplicitamente di salvare il documento mediante

l’apposito bottone: in questo caso il documento viene salvato

mediante la funzione Save() e subito rivisualizzato;

• chiedere un nuovo URL dalla barra degli indirizzi: in questo

caso nella funzione ReadUrl(), tramite il valore della variabile

Page 87: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.8. COMUNICAZIONE CON L’EDITOR 83

open ed new, verra chiamata la funzione closeIt hidden() che

provvedera a chiudere l’editor e a richiedere all’utente se intende

o meno salvare il documento creato precedentemente, tramite la

finestra di dialogo “closeEditor2.html”. In caso di salvataggio

il documento modificato non viene visualizzato nella finestra

principale, all’interno della quale viene invece caricato il nuovo

documento.

Nel caso in cui invece l’utente stava editando un documento gia

esistente, l’utente, oltre che compiere le due azioni descritte nei punti

precedenti, puo anche eseguire le seguenti operazioni:

• chiedere di creare un nuovo documento;

• chiedere, dall’apposito menu a discesa (nel caso in cui questa

funzionalita sia supportata dal server per il tipo di documento

corrente), la visualizzazione del documento in un altro formato;

• chiedere, dall’apposito menu a discesa, la visualizzazione di

un’altra versione del documento.

Anche in questi casi, la sidebar presenta la stessa finestra di dialogo

descritta precedentemente, comportandosi poi in modo diverso a

seconda dei casi descritti: salvare e caricare un nuovo documento

oppure salvare, visualizzare il documento salvato e poi aprire la

finestra per la scelta del layout.

4.8.5 Salvataggio di un documento

Prima di effettuare il salvataggio di un documento creato con

l’editor sul server ISAWiki, vengono rimossi alcuni elementi e

attributi introdotti in fase di editazione, dalla sidebar dal meccanismo

elISA e dall’editor. Per poter effettuare questa operazione, la sidebar

effettua una scansione di tutto il documento ed in particolare,

mediante la funzione remove ed layout() vengono eliminati i seguenti

elementi e attributi che hanno attivato il processo di editazione:

• elemento <SPAN contentEditable="true">: introdotto dalla

sidebar per poter conferire l’editabilita ai nodi;

Page 88: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

84 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

• attributo "N": introdotto dal meccanismo elISA per identificare

quali sono i nodi editabili.

Mediante la funzione remove ed elements(), invece, vengono eliminati

gli elementi introdotti dall’editor per poter manipolare il contenuto

degli SPAN editabili. La funzione remove ed elements() viene

richiamata solo all’interno degli SPAN editabili. L’editor introduce

alcuni elementi solo nella creazione e modifica degli elementi di tipo

“table”e “record” (la descrizione di questo tipo di oggetti non e

ambito di questa tesi). Gli elementi introdotti in queste due strutture

sono ulteriori SPAN con l’attributo "contentEditable" settato a

“true” o a “false” a seconda dei casi per effettuare l’editazione degli

oggetti di tipo “table” e degli oggetti di tipo “record”.

All’interno delle celle di entrambi queste due strutture, viene

inoltre richiamata la funzione update tag name() che si preoccupa

di conferire al contentuto di tipo testuale delle celle un formato

accettabile dal motore di conversione del server ISAWiki.

4.9 Comunicazione con il server ISAWiki

La comunicazione con il server ISAWiki permette di utilizzare

molti servizi del server.

4.9.1 Richiesta di un nuovo documento

Quando l’utente vuole creare un nuovo documento, viene richiesta

al server la lista dei layout disponibili, tramite la funzione NewDoc(),

mediante una GET con la seguente sintassi:

http://serverISAWiki/isawiki.php?Styles

indicando con “serverISAWiki” il dominio dove il server ISAWiki

(“isawiki.php”) risiede. L’output della richiesta e un documento in

formato XML contenente la lista dei nomi dei layout.

Tramite la finestra di dialogo fornita dal file “Layouts.html” viene

fatta una richiesta al server delle preview dei layout disponibili. La

Page 89: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.9. COMUNICAZIONE CON IL SERVER ISAWIKI 85

richiesta viene effettuata nella funzione view layout().

La sintassi utilizzata per questo tipo di richiesta e del seguente tipo:

http://serverISAWiki/ files/Styles/Preview/nomeLayout pre

view.formato

Dal momento che la visualizzazione delle preview e una funzionalita

nuova offerta dalla sidebar, si e stabilito, sviluppando questo

progetto, che il nome della preview associata al layout e costituito dal

nome del layout e dalla parola "preview", separati dal carattere " ".

Per il momento le preview sono disponibili solo in formato “bmp”

ma sicuramente il sistema verra esteso per supportare anche altri

formati.

Una volta selezionato un layout dall’utente, la visualizzazione del

layout avviene mediante una richiesta al server del tipo seguente:

http://serverISAWiki/EMPTYDOC/nomeLayout

La presenza del termine "EMPTYDOC", indica all’applicazione che

si desidera creare un documento vuoto. L’applicazione provvede

dunque alla visualizzazione del layout richiesto mediante il metodo

Navigate() dell’oggetto IWebBrowser2. La sidebar riconosce,

tramite la funzione parseUrl() che il documento caricato e un

layout del server, pertanto non compie nessuna azione nell’evento

BeforeNavigate2 ma provvede solo a rendere editabile il layout

dopo che esso e stato caricato cioe al verificarsi dell’evento

DocumentComplete.

4.9.2 Richiesta di un salvataggio

La richiesta di salvataggio di un documento viene implementata

mediante la funzione Save(). Il salvataggio viene effettuato mediante

un POST HTTP al server ISAWiki, tramite un form HTML di

tipo “hidden”. Il campo "action" del form e dato dall’URL del

documento stesso.

Page 90: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

86 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

Il form deve contenere la variabile POST Editor che viene utilizzata

dal server per ricevere la richiesta via POST HTTP e compiere

il servizio di salvataggio di un documento. Inoltre il form deve

contenere le seguenti variabili:

• POST Editor docname: rappresenta il nome del documento da

salvare;

• POST Editor author : contiene l’autore della modifica, nel caso

in cui non sia specificato il server considera come autore del

documento il possessore del file system;

• POST Editor readperm: rappresenta la lista degli utenti che

potranno accedere in lettura al documento. E formata da un

elenco di nomi separati da una virgola;

• POST Editor writeperm: rappresenta la lista degli utenti che

potranno accedere in scrittura al documento. E formata da un

elenco di nomi separati da una virgola;

• POST Editor content : rappresenta il contenuto del documento

in formato HTML;

• POST version number : rappresenta il numero della versione a

partire dal quale deve essere calcolato il numero della nuova

versione da creare;

• POST Editor layout : indica il nome del layout con il quale

viene salvato il documento.

I valori di queste variabili sono tutti modificabili mediante la

mascherina di salvataggio che viene mostrata all’utente, ad eccezione

naturalmente del campo POST version number che viene utilizzato

dal server per calcolare il numero corretto della versione da creare.

Esso e dato dal numero di versione che l’utente sta correntemente

visualizzando.

Le informazioni mostrate all’utente nella mascherina di salvataggio

vengono recuperate dalla sidebar dal file XML contenente le

informazioni riguardo la corrente versione del documento richiesto.

Page 91: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.9. COMUNICAZIONE CON IL SERVER ISAWIKI 87

Nel caso in cui l’utente non stia modificando una versione gia

esistente ma stia salvando un nuovo documento, tali campi saranno

vuoti e l’utente puo provvedere ad inserirne di nuove. La funzione

Save() utilizza un’istruzione case per distinguere i casi nei quali

il documento appena salvato deve subito essere visualizzato nella

finestra principale, dagli altri nei quali il documento appena salvato

non viene rivisualizzato all’utente. Nel primo caso, la funzione

Save() provvede ad aprire la finestra di dialogo “SaveInfo.html”

contenente la mascherina delle informazioni. I valori delle variabili

relative alle informazioni per il salvataggio vengono spediti al server

mediante la funzione Save post r(). Il documento salvato viene

visualizzato nella window principale il cui valore dell’attributo

"name" e “browser window”. In questo caso il server risponde

con la visualizzazione del documento appena salvato. Nel secondo

caso invece, i dati vengono spediti al server mediante la funzione

Save Post h(). Cosı facendo viene permesso all’utente di effettuare

il salvataggio e di continuare la sua navigazione o effettuare altre

operazioni (come ad esempio la creazione di un nuovo documento).

4.9.3 Richiesta della lista delle versioni

Non appena un nuovo URL viene richiesto dall’utente, la sidebar,

tramite la funzione parseUrl() controlla il tipo di URL richiesto

dall’utente. Dal tipo di URL e possibile riconoscere la provenienza

del documento. Il documento puo essere stato creato direttamente

all’interno di ISAWiki oppure modificando un documento dalla rete.

In questo secondo caso esiste nella rete un documento con lo stesso

nome di quello salvato sul server. Nel primo caso, la variabile globale

iw url viene settata a “true”. Nel secondo caso, invece, la sidebar

interroga il server ISAWiki, tramite la funzione get last version(),

richiamata mediante il metodo "setTimeout()" di DHTML. La

funzione get last version() interroga il server ISAWiki mediante la

seguente sintassi:

Page 92: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

88 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

http://serverISAWiki/isawiki.php?doc req=documento.html

&Versions

La risposta ricevuta dal server e in formato XML, ed e del seguente

tipo:

<?xml version="1.0" ?>

<versions file="file/tesi.html" id="405444257f198"

author="Roberta Zeppilli">

<last version="1.0" />

<readPerm value="Roberta Zeppilli, Angelo Di Iorio" />

<writePerm value="Roberta Zeppilli" />

<version date="Sun, 8 Mar 2004 12:38:13 +0100"

format="html" version="1.0" author="Roberta Zeppilli"

p="3" q="1">

<version date="Sun, 8 Mar 2004 12:49:43 +0100"

format="html" version="2.0" author="Roberta Zeppilli"

p="4" q="1" />

<version date="Sun, 8 Mar 2004 12:49:52 +0100"

format="html" version="2.1" author="Roberta Zeppilli"

p="7" q="2" />

</version>

</versions>

Solo il nodo <version> contiene dati specifici di una versione, gli

altri contengono informazioni globali al documento. Le proprieta

globali del documento sono rappresentate dai valori dei seguenti

attributi:

• file (del nodo <versions>): rappresenta il nome del

documento;

• id (del nodo <versions>): rappresenta l’identificativo

univoco associato al documento;

• author (del nodo <versions>): rappresenta l’autore della

prima versione;

Page 93: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.9. COMUNICAZIONE CON IL SERVER ISAWIKI 89

• version(del nodo <last>): rappresenta il numero della

versione settata come predefinita;

• value (del nodo <lastPerm>): rappresenta la lista di coloro

che hanno permessi di lettura;

• value (del nodo <writePerm>): rappresenta la lista di coloro

che hanno permessi di scrittura.

La sidebar recupera tali informazioni mediante la funzione

file Versions(). Semplicemente leggendo il valore dell’attributo file

del nodo <versions> e possibile verificare se sul server esiste qualche

versione del documento richiesto dall’utente. Se tale attributo ha

valore uguale al vuoto significa che il server ISAWiki non ha nessuna

versione del documento, altrimenti da questo valore e possibile

estrapolare, oltre che il nome, anche il tipo del documento. Una

volta ricavate queste informazioni, viene settata la variabile list ver

al valore “true” se il documento ha versioni associate, al valore

“false” altrimenti. Le informazioni riguardo il nome ed il tipo del

documento vengono memorizzate in un’apposita struttura info file.

In particolare i campi di questa struttura contengono:

• info file[0]: valore originale dell’attributo "file";

• info file[1]: il tipo di documento;

• info file[2]: il nome del documento;

• info file[3]: il nome del documento senza formato;

• info file[4]: il formato del documento richiesto.

Per quanto riguarda il tipo di documento, il server ISAWiki indica

di tipo “file” quei documenti creati internamente al sistema e

risiedenti nel deposito “file” del sistema. Invece il server tratta

come di tipo “http” quei documenti ottenuti modificando qualche

documento dalla rete, ed il nome del protocollo usato (“http”)

appare nel nome del documento stesso. Nel caso in cui esistano

versioni sul server del documento richiesto, viene costruita la

Page 94: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

90 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

lista delle versioni che verra visualizzata in un apposito menu a

tendina, tramite la funzione update sel versions(). La funzione

permette solo la visualizzazione di un sottoinsieme dei numeri delle

versioni dei documenti. La visualizzazione dell’albero completo

delle versioni e realizzata mediante l’applicazione di un foglio di

stile XSL al file XML delle versioni. Quando viene richiesta

una particolare versione, nell’URL appare tale numero di versione,

in quanto l’URL termina con un " " seguito dal numero della

versione del documento richiesto. L’assenza di tale informazione

nell’URL, indica che la versione richiesta e l’ultima versione del

documento. La funzione get version format() si preoccupa di reperire

tali informazioni dall’URL.

4.9.4 Richiesta di un particolare formato

L’utente puo selezionare dall’apposito menu a tendina il formato

richiesto e l’applicazione mediante la funzione convert() che effettua

una richiesta di tipo GET al server. E il server poi che si occupa

di eseguire la conversione nel formato richiesto dall’utente. La

richiesta rispetta il numero di versione che l’utente sta attualmente

visualizzando e viene effettuata mediante la seguente sintassi:

http://serverISAWiki/documento.formato versione

Nel caso in cui il numero di versione non venga specificato verra

visualizzata l’ultima versione creata del documento.

Editazione di un particolare formato

In fase di editazione, quando viene richiamata la funzione Edit(),

viene controllato che il formato del documento di cui e stata richiesta

l’editazione. Infatti, poiche l’editor presente nella sidebar e un editor

di pagine HTML, se viene richiesta l’editazione di un documento

in un formato diverso dall’HTML, la sidebar provvede a caricare

il rispettivo formato HTML, tramite la funzione convertToHtml()

Page 95: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.9. COMUNICAZIONE CON IL SERVER ISAWIKI 91

e dopo che il download del formato HTML e stato completato la

sidebar provvede a caricare l’editor.

4.9.5 Richiesta della pagina personalizzata

Ogni volta che un nuovo documento viene richiesto, la sidebar ha

il compito di mostrare all’utente sempre l’ultima versione. La ricerca

dell’ultima versione viene effettuata solo per i documenti presenti

nella rete, per verificare se esiste una versione piu recente rispetto

alla pagina personalizzata salvata dall’utente. Per individuare tale

informazione e necessario accedere alle proprieta specificate per ogni

nodo <version>. Oltre agli attributi classici del nodo relativo

ad una versione puo essere presente anche un attributo ulteriore

"extern" con valore “true”, come nell’esempio seguente:

<version date="Sun, 8 Mar 2004 12:10:05 GMT" format="html"

version="1.1" author="Unknown" extern="true" />

In questo caso, la sidebar carica la pagina dall’origin server, al posto

di quella personalizzata. Nel caso contrario, la sidebar provvede

a visualizzare l’ultima tra le pagine personalizzate dall’utente,

mediante la funzione rewrite content(). Tale controllo viene

implementato nella funzione req versions() che ha il compito anche

di aggiungere al menu a tendina delle versioni anche il collegamento

alla pagina sull’orgin server. In questo modo, quando avviene

l’evento DocumentComplete, la sidebar aggiorna il display mostrando

all’utente la versione piu recente del documento personalizzato,

oppure rimane inattiva nel caso in cui non esistano versioni di quel

documento salvate sul server. Dal momento che la comunicazione

client-server inizia all’evento BeforeNavigate2, se questa e molto

veloce e se non si verificano ritardi, la sidebar e gia in grado di fornire

l’ultima versione senza aggiornamenti del display.

Page 96: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

92 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

4.10 Comunicazione con il server XLink

Il progetto realizzato fornisce un’interfaccia tramite la quale

e possibile creare link multipartenza e link multidestinazione. E

possibile accedere a tale interfaccia selezionando dal menu “Open”

presente nella sidebar la voce “XLinkExplorer Bar”. L’interfaccia

e rappresentata dal file “sidebar xlink.html”. All’interno di questa

risorsa HTML, sono inclusi una serie di script Javascript mediante

i quali sono state implementate le funzionalita del sistema che

utilizzano un determinato protocollo di comunicazione con il server

XLink.

La sidebar per la creazione degli XLink, utilizza la stessa applicazione

per la gestione degli eventi che accadono nella finestra principale della

sidebar ISAWiki. Per questo motivo, dal momento che i princıpi di

funzionamento sono sostanzialmente gli stessi tra le due sidebar, si

e cercato di riutilizzare il piu possibile i nomi di alcune variabili

globali, di alcune strutture e degli event handler attribuendo loro

precisamente lo stesso significato attribuito per la sidebar ISAWiki,

proprio per mantenere il sistema coerente e consistente.

4.10.1 Il server XLink

L’applicazione client utilizza un server esterno per la memorizzazio

ne degli XLink e la gestione delle linkbase, denominato

“XLinkserver”. XLinkserver [Mon04] e stato implementato mediante

il linguaggio PERL ed e rappresentato dal modulo “xlinkserver.pl”

risiedente in una directory del Web-server.

Il server XLink permette la gestione di una o piu linkbase.

Il modulo e costituito dai seguenti componenti:

• lo script che costituisce il server vero e proprio (“xlinkserver.pl”);

• le linkbase vere e proprie, in formato XML;

• la linkbase-list, una lista in formato XML di tutte le linkbase

gestite dal server.

Page 97: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.10. COMUNICAZIONE CON IL SERVER XLINK 93

Il server ha solo la funzionalita di gestire il “database” degli XLink,

ed e l’applicazione client che si occupa della modificare del DOM del

documento. -

4.10.2 Protocollo di comunicazione client-server

XLink

Il protocollo di comunicazione con il server XLink si basa

sull’utilizzo di query-string mediante le quali vengono specificati il

tipo di operazioni da eseguire ed i parametri dati in input.

La sidebar effettua le seguenti operazioni che sono gestite dal server

e che vengono specificate nella query-string tramite il optype:

• append : permette di aggiungere un link ad una linkbase o di

aggiornarne uno precedentemente inserito;

• query : restituisce tutti gli XLink contenuti in una certa

linkbase relativi ad un determinato URL;

• remove: elimina dalla linkbase un XLink specifico;

• getlink : restituisce un dato XLink selezionandolo tramite il suo

identificativo;

• newlb: crea una nuova linkbase vuota;

• remlb: rimuove dal server una determinata linkbase;

• getlb: restituisce una data linkbase dal server selezionato;

• linkbase: restituisce la lista delle linkbase.

La sintassi utilizzata per la comunicazione verso il server e la

seguente:

http://../xlinkserver.pl?<query-string>

Il client deve specificare, tramite <query-string>, il tipo di

operazione da eseguire.

Page 98: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

94 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

4.10.3 Lista delle linkbase

Il sistema non prevede l’esistenza di una linkbase unica, ma

puo memorizzarne un numero arbitrario. La “linkbaselist” e un

documento XML che mantiene un’entrata (elemento linkbase) per

ogni linkbase memorizzata. La linkbaselist viene creata e gestita

automaticamente dal server. La linkbaselist ha un attributo nextId

che identifica la linkbaselist univocamente.

4.10.4 Creazione di una linkbase

La linkbase e un file XML identificato da un attributo lbref che

identifica l’id della linkbase e coincide con l’attributo id del nodo

linkbase all’interno della linkbaselist.

La creazione di una linkbase avviene mediante una richiesta al server.

La query-string utilizzata segue la seguente sintassi:

optype=newlb&name=lbname&author=authorname

dove "lbname" e "authorname" indicano rispettivamente il nome

della linkbase specificato dall’utente e l’autore della linkbase da

creare.

Richiesta del client

Il client deve fornire i seguenti parametri attraverso la

query-string da inviare al server, nel caso della creazione della

linkbase:

• newlb: valore da specificare per la querystring optype per

indicare al server il tipo di operazione da eseguire;

• name: nome mnemonico della linkbase (parametro obbligatorio);

• author : autore della linkbase (parametro obbligatorio);

• desc: descrizione della linkbase (parametro facoltativo).

Page 99: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.10. COMUNICAZIONE CON IL SERVER XLINK 95

La creazione della linkbase, viene effettuata mediante la funzione

CreateLinkBase(). Questa funzione, provvede ad aprire la finestra di

dialogo “CreateLinkBase.html”, tramite la quale vengono recuperate

le informazioni dall’utente; successivamente viene effettuato l’invio

dei dati al server tramite query-string, mediante la funzione

postXML().

Risposta del server

Il server risponde con un documento XML, contenente la linkbase

vuota aggiunta; l’attributo lbref di tale linkbase rappresenta il

linkbaseId con cui il client potra successivamente referenziare la

linkbase. Il documento viene arricchito di un attributo context con

valore newlb.

Il client, nella funzione postXML(), controlla che l’operazione di

creazione della linkbase venga effettuata correttamente.

4.10.5 Cancellazione di una linkbase

La cancellazione di una linkbase avviene mediante una richiesta

al server utilizzando la seguente sintassi:

optype=rmlb&linkbaseId=Idlinkbase

dove "Idlinkbase" indica l’identificativo della linkbase da eliminare.

Richiesta del client

Il client deve fornire i seguenti parametri attraverso la

query-string da inviare al server:

• rmlb: valore per la query-string optype mediante il quale viene

specificata la richiesta di rimozione di una linkbase;

• linkbaseId : valore relativo il numero della linkbaseId da

eliminare.

Il client effettua la cancellazione della linkbase mediante la funzione

DeleteLinkbase(). Questa funzione, provvede ad aprire la finestra di

Page 100: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

96 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

dialogo “DeleteLinkBase.html”, tramite la quale vengono recuperate

le informazioni dall’utente per poter effettuare la cancellazione;

successivamente viene effettuato l’invio dei dati al server tramite

query-string, mediante la funzione postXML().

Risposta del server

Il server risponde con un documento XML, contenente la linkbase

rimossa. Viene aggiunto un attributo context con valore rmlb.

Il client verifica, mediante la risposta del server, che l’operazione

di cancellazione della linkbase e stata eseguita correttamente,

verificando che il valore dell’attributo context, sia diverso da

“invalidLinkbase”.

4.10.6 Definizione di un XPointer

L’implementazione di un sistema basato sull’utilizzo di XLink

necessita di un sistema di puntamento per definire una qualunque

locazione (un nodo, un punto o un range) che identifichi in maniera

efficace un qualsiasi frammento di documento. Tale sistema sistema

viene poi utilizzato per identificare nuovamente in maniera esatta la

posizione del frammento su cui deve essere inserita l’unita di linking.

XPointer e il linguaggio proposto dal W3C ideato appositamente

a questo scopo. Tuttavia XPointer, al contrario di XLink, non e

ancora una Recomandation, per questo motivo, non esistono ancora

implementazioni complete. Inoltre per il browser Internet Explorer,

non sono disponibili delle librerie che permettano di generare degli

XPointer, a partire da dei frammenti di un documento HTML.

Nel progetto XLinkProxy, il suo ideatore Federico Folli, aveva gia

implementato delle librerie che cercassero il piu possibile di sfruttare

tutte le potenzialita offerte riguardo le specifiche proposte dal W3C.

Tuttavia il progetto XLinkProxy, lavorando su documenti XML,

rende piu semplice la definizione di XPointer secondo le specifiche

del W3C. Nell’ambito di questa tesi, si vuole offrire la possibilita di

poter manipolare qualsiasi tipo di documento, anche mal formato,

utilizzando un sistema di definizione degli XPointer efficace per

Page 101: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.10. COMUNICAZIONE CON IL SERVER XLINK 97

definire delle possibili unita di linking. Tuttavia, dal momento che

uno degli scopi di questa tesi e quello di offrire un ambiente di

linking distribuito, si e preferito concentrare le energie su questa

problematica, piuttosto che sviluppare una libreria full-compliant con

le specifiche del W3C. La sintassi di XPointer e molto potente e

supporta sia tecniche di conteggio sia meccanismi di ricerca, per cui

e estremamente adatta a questo scopo. Il prototipo implementato in

questa tesi, quindi, cerca di sfruttare al massimo tutta la potenza del

linguaggio XPointer ma utilizza una sintassi molto semplificata.

Il calcolo degli XPointer

Tra le possibili forme di XPointer definite dal W3C, il progetto

realizzato nell’ambito di questo lavoro, ne utilizza uno in particolare

in quanto e quello considerato abbastanza espressivo per definire le

locazioni dove inserire l’XLink all’interno di documenti HTML, anche

mal formati. La forma di XPointer utilizzata e la forma string-range,

che permette di indentificare un intervallo all’interno di un particolare

nodo o insiemi di nodi. Questa funzione ha la seguente sintassi

secondo le specifiche del W3C:

string-range(location-set, string, number?, number? )

il parametro location-set indica i nodi da analizzare, string permette

di specificare la stringa da ricercare ed il terzo ed il quarto parametro

vengono utilizzati per identificare gli estremi degli intervalli.

In particolare: string-range identifica il range calcolando la locazione

di una data stringa letterale all’interno di un testo o di qualche

nodo. Il terzo argomento indica la posizione del primo carattere nella

stringa risultante, relativamente all’inizio del match della stringa nel

documento. Il valore di default e “1”, e fa in modo che il range

inizi immediatamente prima del primo carattere della stringa da

identificare. Il quarto argomento indica il numero di caratteri nel

range: il valore di default e “1” che estende il range alla fine della

stringa con cui fare match.

Page 102: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

98 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

Dal momento che il browser Internet Explorer non e provvisto di una

libreria che permetta di definizione degli XPointer, e stato necessario

implementare alcune funzioni per poter utilizzare lo standard XLink.

Di seguito viene mostrato un esempio della forma di XPointer

utilizzata nell’ambito di questa tesi:

#xpointer(/html[1]/body[1]/p[3], "", 10, 7)

l’esempio indica che l’ancora del link e localizzata nel terzo nodo p

figlio del nodo body, figlio a sua volta della radice. Inoltre il terzo ed il

quarto parametro forniscono un’identificazione precisa del frammento

di documento che deve essere inserito all’interno di un’ancora del

link. Il range di definizione, in questo caso, inizia al decimo punto

dall’inizio della stringa contenuta all’interno del nodo p ed e lungo

sette caratteri.

Le funzioni relative la generazione dello XPointer sono:

• getXpath(): una funzione ricorsiva che dato il nodo padre della

selezione restituisce l’XPath dalla radice al nodo dato in input;

• getXpointer(): una funzione che prende in input il range della

selezione e restituisce il punto di inizio della selezione e la

lunghezza della selezione.

l’XPointer completo viene poi costruito a partire dall’URL del

documento corrente con l’aggiunta dell’XPointer calcolato mediante

le funzioni precedenti.

4.10.7 Creazione di un XLink

L’utente puo iniziare la fase di creazione di un nuovo XLink

selezionando dall’apposito menu la voce “NewLink”. Questa

operazione attiva la chiamata alla funzione NewLink(), mediante la

quale, vengono eliminati dalla tabella presente sulla sidebar, tutte le

ancore precedentemente inserite. Viene inoltre compiuta una fase di

inizializzazione di alcune strutture da utilizzare per la gestione degli

Page 103: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.10. COMUNICAZIONE CON IL SERVER XLINK 99

XLink.

Prima di costruire l’XLink sotto forma di documento XML, viene

richiamata la funzione buildArcList() mediante la quale viene

costruita la lista degli archi dopo aver definito quali sono le ancore

di partenza e quali quelle di destinazione. La generazione dell’XLink

avviene mediante l’implementazioni delle seguenti funzioni:

• XLinkExt(): funzione che costruisce l’elemento extended in

formato XML, contenente la lista degli elementi locator e degli

elementi arc. Per ogni elemento extended vengono settati i

seguenti attributi: type, role, title. Il valore dell’attributo type e

necessariamente “extended” per gli elementi extended e locator

per gli elementi di tipo locator ;

• XLinkArc(): funzione che costruisce la lista degli elementi di

tipo arc in formato XML. Per ogni arco vengono settati i

seguenti attributi: type, arcrole, title, show, actuate, from, to;

• XLinkAppend(): funzione che costruisce l’XLink da spedire al

server.

Il documento XML non e altro che una mini-linkbase, senza attributi

nextId e lbref dalla quale saranno estratti i nodi extended (e relativi

figli) e saranno appesi nella linkbase identificata dal parametro

linkbaseId. Il server inserisce nella linkbase specificata tramite

query-string tutti i nodi contenuti nella linkbase passata tramite

POST. I nodi extended posso avere valorizzato un attributo id,

in tal caso l’elemento extended non viene inserito nella linkbase

ma sovrascrive l’elemento extended contenuto nella linkbase avente

quel determinato id. Qualora l’elemento extended non abbia

l’Id valorizzato il sistema si preoccupa di generarne uno univoco

all’interno della linkbase specificata e procedere ad appendere il link

alla linkbase.

Preview di un XLink

Quando l’utente seleziona dall’apposito menu la voce “PreviewLink”,

il client chiama la funzione PreviewLink(). Tale funzione genera un

Page 104: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

100 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

XLink, a partire dalla lista degli archi e visualizza l’XLink mediante

la finestra di dialogo “PreviewLink.html”.

4.10.8 Salvataggio di un XLink

L’inserimento di un XLink creato nella linkbase indicata avviene

mediante una richiesta al server utilizzando la seguente sintassi:

optype=append&linkbaseId=Idlinkbase

dove "Idlinkbase" indica l’id della linkbase dove inserire l’XLink.

Richiesta del client

Il client deve fornire i seguenti parametri attraverso la

query-string da inviare al server:

• append : valore per la query-string optype mediante il quale

viene specificato la richiesta di inserimento di un link;

• linkbaseID : valore relativo il numero della linkbase sulla quale

effettuare l’operazione di “append”;

• XLink: il link da inserire essere passati tramite http POST

sotto forma di documento XML.

Risposta del server

Il server, oltre a modificare la linkbase inserendo il link spedito

tramite POST HTTP, ritorna un documento XML, contenente i

soli link aggiunti (un sottoinsieme della linkbase contente i soli

nodi extended aggiunti o sovrascritti). La linkbase ritornata viene

arricchita di un attributo “context=append ” per comunicare al client

a che tipo di richiesta e relativa la risposta ricevuta dal server.

4.10.9 Inserimento di un XLink

L’inserimento dei link esterni nel documento prevede le seguenti

fasi:

Page 105: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.10. COMUNICAZIONE CON IL SERVER XLINK 101

• interrogazione delle linkbase;

• creazione della lista dei link;

• inserimento delle ancore.

Quando il client recupera la risorsa dall’origin server, effettua

delle interrogazione al server XLink per verificare se sulle linkbase ci

sono dei link relativi la risorsa richiesta.

Il client invia la richiesta al server secondo la seguente sintassi:

optype=query&linkbaseId=Idlinkbase&url=startUrl

dove "Idlinkbase" indica l’identificativo della linkbase su cui

effettuare la query e "startUrl" indica l’URL per il quale vengono

ricercati i link da inserire al suo interno.

Richiesta del client

L’interrogazione al server XLink viene effettuata mediante la

funzione query(). Per ogni arco il valore dell’attributo “from” e

uguale all’URL richiesto dall’utente viene

Risposta del server

Il server risponde con un documento XML contenente i soli

link aggiunti (un sottoinsieme della linkbase contenente i soli nodi

extended aggiunti o sovrascritti). La linkbase ritornata viene

arricchita di un attributo “context” con valore “append” per

comunicare al client a che tipo di richiesta e relativa la risposta del

server.

Inserimento delle ancore

La fase dell’inserimento delle ancore prevede la trasformazione

dell’informazione memorizzata sugli XLink in un link o in un insieme

di link che siano interpretabili dal browser. E necessario pertanto,

prima costruire la lista dei link da inserite e memorizzarli in delle

strurre apposite. La lista dei link viene costruita a partire dalla

Page 106: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

102 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

funzione CreateListLinks(). Successivamente viene chiamata la

funzione getXptr(), per pettere di ritrovvare il frammento della risrsa

definito mediante l’utilizzo di Xpointer().

La mancanza di librerie per la manipolazione degli Xpointer e

stata avvertita anche in questa fase. Infatti e stato necessario

implementare la funzione getRange() che dato l’XPointer permette di

calcolare il range a cui fa riferimento. Dopo aver calcolato eventuali

sovrapposizioni delle ancore con la funzione IntersectRange(), si

procede con l’inserimento dei link nella risorsa mediante la funzione

InsertLink().

4.10.10 Editazione di un XLink

L’editazione di un link avviene mediante le funzione EditLink()

che permette di attivare l’editazione dei vari elementi locator che

costituiscono il link e anche di aggiungere altri elementi locator ai

link precedentemente definiti.

4.10.11 Rimozione di un XLink

Il client invia la richiesta al server per la rimozione di un Xlink

secondo la seguente sintassi:

optype=remove&linkbaseId=Idlinkbase&linkId=Idlink

dove "Idlinkbase" indica l’identificativo della linkbase da cui

rimuovere il link e "Idlink" indica l’identificativo del link da

rimuovere.

Richiesta del client

Oltre i dati nella query string relativi ad optype, lo script prende

in input:

• linkId : specifica l’id del link (nodo extended) da rimuovere/editare;

• linkbaseId : specifica l’id della linkbase che contiene il sopra

indicato link.

Page 107: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

4.11. LIMITI IMPLEMENTATIVI 103

Risposta del server

Lo script ritorna in output un documento Xlink, sempre

sottoforma di linkbase con un attributo aggiuntivo “context=remove”,

contenente i nodi extended aventi l’Id specificato (nel caso di

REMOVE il server procedere anche alla rimozione del nodo dalla

linkbase). Nel caso in cui il linkId non venga trovato nella linkbase

specificata viene ritornata una linkbase vuota, che il client potra

interpretare come “linkId - non trovato”.

La rimozione di un XLink avviene mediante la funzione

RemoveLink() che provvede alla rimozione di un XLink e a ricaricare

il documento dall’origin server e provvede al calcolo degli XLink

ancora presenti nel documento.

4.11 Limiti implementativi

In questo paragrafo verranno discussi i limiti implementativi

riscontrati durante la fase di implementazione e test del sistema. Essi

possono essere cosı schematizzati:

• si potrebbe cercare di velocizzare il piu possibile la fase di

interrogazione del server ISAWiki, per evitare che l’utente si

trovi di fronte ad un aggiornamento del display quando viene

visualizzata la risorsa personalizzata invece che quella originale;

• la fase di inserimento e di editazione dei link multidestinazione

non e pienamente supportata. La mancanza di librerie

per la gestione degli XPointer per Internet Explorer e la

caratteristica di lavorare con documenti mal formati rendono

questa operazione particolarmente delicata e necessita dunque

di una revisione.

Page 108: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

104 CAPITOLO 4. IMPLEMENTAZIONE DEL PROGETTO

Page 109: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

Capitolo 5

Conclusioni e sviluppi futuri

Sebbene il World Wide Web sia un sistema in continua evoluzione,

esso presenta ancora delle carenze che impediscono il pieno

sfruttamento delle proprie potenzialita e non permettono all’utente

di poter soddisfare ogni propria esigenza e/o necessita. L’enorme

quantita d’informazioni che passa attraverso il Web avrebbe bisogno

di essere gestita meglio, e questo porta a sviluppare negli utenti un

bisogno di condivisione. Molte ricerche si sono preposte l’obiettivo di

far fronte a questi limiti, tuttavia nessuna di esse e riuscita ad offrire

all’utente un sistema ipertestuale completo.

Si vuole fare in modo che l’utente utilizzi il Web non solo come

semplice mezzo di pubblicazione, ma anche come mezzo di gestione

ed organizzazione dei propri dati e documenti personali. Tuttavia

per dare forma a questa avanzata visione del Web, sarebbe sbagliato

pensare di realizzare ex-novo un sistema alternativo, da sostituire

a quello gia esistente: questa evoluzione e possibile semplicemente

sfruttando la corrente architettura del World Wide Web, i protocolli

ed i tool gia esistenti. In ragione di cio, questo lavoro e stato

realizzato aggiungendo semplicemente delle funzionalita al browser,

tramite semplici interfacce e senza ricorrere all’utilizzo di agenti

intermediari che potrebbero interferire con il naturale processo di

navigazione dell’utente.

Riteniamo che il prototipo proposto in questa dissertazione possa

essere largamente diffuso visto che puo essere utilizzato in modo

semplice e, quel che piu conta, non richiede all’utente conoscenze

105

Page 110: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

106 CAPITOLO 5. CONCLUSIONI E SVILUPPI FUTURI

di strumenti che vadano al di la di quelle di base.

Durante lo svolgimento di questo lavoro sono venuti alla luce molti

aspetti che potrebbero essere sviluppati in futuro:

• sarebbe interessante poter integrare i sistemi di memorizzazione

esterna utilizzati per la modifica dei documenti, in modo

tale che il client possa avere accesso ad un unico server

per la gestione dei documenti e delle linkbase. Questo

sistema permetterebbe all’utente anche di creare dei link esterni

sulle varie versioni personalizzate offrendo al client un unica

interfaccia per la personalizzazione dei contenuti

• il sistema prevede l’utilizzo di un’applicazione monitor comune

alle interfacce presenti nella sidebar, mediante la quale, ogni

volta che si verifica un determinato evento, viene ricercato

e richiamato il suo apposito gestore. Il sistema andrebbe

riprogettato per fare in modo che la fase di registrazione degli

event handler avvenga solamente nella fase di inizializzazione

dell’applicazione. In questo modo, conoscendo gia quale

event handler richiamare, l’applicazione sarebbe piu veloce e

portabile per l’utilizzo di altri gestori degli eventi presenti in

altre eventuali interfacce della sidebar.

• attualmente, se la finestra della sidebar viene chiusa, la sidebar

continua a monitorare la navigazione solo entro la stessa istanza

di Internet Explorer. Dal momento che la sidebar, o le toolbar

in generale, occupano una porzione dello schermo rispetto

al contenuto della pagina, sarebbe necessario ridurre il piu

possibile lo spazio occupato da questi oggetti per aumentare

quello del contenuto della pagina vero e proprio. Una soluzione

potrebbe essere quella di fare in modo che la toolbar continui

a svolgere le sue funzionalita ma rimanendo nascosta per

aumentare lo spazio di visualizzazione della finestra del browser.

• per estendere le funzionalita di modifica dei documenti si

Page 111: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

107

potrebbe inserire anche un meccanismo per creare delle

annotazioni sulle pagine.

• sarebbe interessante studiare un sistema tale per cui, tenendo

nota degli URL piu richiesti dall’utente, vengano aggiunti

del link sulla sidebar; una sorta di “generazione automatica

di bookmark” che possa essere utilizzata dall’utente per

avere accesso immediato alle informazioni utilizzate piu

frequentemente.

• attualmente, per la definizione delle ancore di partenza e di

destinazione dei link e stato realizzato un “context menu”

apposito che permette di gestire le parti di documento

selezionate. Sarebbe utile integrare questa funzionalita

all’interno del “context menu” di Internet Explorer proprio per

completare il processo di integrazione del sistema con il browser

stesso e poter utilizzare entrambi i menu contemporaneamente.

Considero il lavoro svolto molto interessante poiche il framework

realizzato potrebbe aiutare gli utenti a strutturare le proprie attivita

quotidiane ed a facilitare la navigazione, stimolando anche i meno

esperti ad avvicinarsi all’uso delle tecnologie informatiche. Inoltre,

ritengo che continuare questo trend di sviluppo di tool standard

usabili per tutti sia cruciale per un futuro progresso del Web.

Page 112: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

108 CAPITOLO 5. CONCLUSIONI E SVILUPPI FUTURI

Page 113: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

Bibliografia

[Alt04] “AltaVista toolbar”, 2004,http://www.altavista.com/toolbar/, ultima visita: 9 marzo 2004.

[Ale04] “Alexa toolbar”, 2004, http://www.alexatoolbar.com/,ultima visita: 9 marzo 2004.

[Ama96] “Amaya”, W3C, 1996, http://www.w3.org/Amaya/, ultimavisita: 9 marzo 2004.

[Ann02] “Annozilla (Annotea on Mozilla)”, W3C, 2002,http://annozilla.mozdev.org/, ultima visita: 9 marzo2004.

[Ari04] “Arianna toolbar”, 2004, http://arianna.libero.it/toolbar/,ultima visita: 9 marzo 2004.

[AM02] Ashman H., Martin D., “Goate: XLink and beyond”, in:Proceedings of the thirteenth ACM conference on Hypertextand Hypermedia, College Park, Maryland, USA, ACM, 2002,142-143.

[BFF99] Berners-Lee T., Fielding R., Frystyk H., Gettys J.,Leach P., Mogul J.C., Masinter L., “Hypertext TransferProtocol–HTTP/1.1”, Request for Comments 2616, 1999,http://www.ietf.org/rfc/rfc2626.txt.

[BKM97] Barrett R., Kellem C.D., Maglio P.P., “How to Personalizethe Web”, in: Proceedings of the SIGCHI conference onHuman factors in computing systems, Atlanta, Georgia,United States, ACM, 1997, 75-82.

[BM98] Barrett R., Maglio P.P., “Intermediaries: New Places forproducing and manipulating Web Content”, in: Proceedingsof the Seventh International World Wide Web Conference(WWW7), Brisbane, Australia, Elsevier, 1998.

[BPS04] Bray T., Paoli J., Sperberg-McQueen C. M., MalerE., Yergeau F., “World Wide Web Consortium:Exstensibile Markup Language (XML) 1.0 (Third

109

Page 114: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

110 BIBLIOGRAFIA

Edition)”, W3C Recommendation 4 febbraio 2004,http://www.w3.org/TR/REC-xml.

[Bou99] Bouvin N.O., “Unifying strategies for Web Augmentation”,in: Proceedings of the tenth ACM Conference on Hypertextand Hypermedia: returning to our diverse roots, Darmstadt,Germany, ACM, 1999, 91-100.

[BVA97] Vitali F., Bieber M., Ashman H., Balasubramanian V.,Oinas-Kukkonen H., in: “Fourth Generation Hypermedia:Some Missing Links for the World Wide Web”, InternationalJournal of Human-Computer Studies, 47, Academic Press,1997, 31-65.

[Bus45] Bush V., “As We May Think”, The Atlantic Monthly,176(1), 1945, 101-108.

[CCB97] Crespo A., Chang B.W., Bier E.A.,“Responsive Interactionfor a Large Web Application: The Meteor ShowerArchitecture in the WebWriter II Editor”, in: Selected papersfrom the sixth international conference on World Wide Web,Santa Clara, California, United States, Elsevier SciencePublishers Ltd., 1997, 1507-1517.

[Cha02] Charalampos V.D., “The process of personalizing webcontent: techniques, workflow and evaluation”, 2002,http://citeseer.ist.psu.edu/538278.html.

[CHB03] Christen B.G., Hansen F.A., Bouvin N.O., “Xspect:bridging open hypermedia and XLink”, in: Proceedings ofthe twelfth international conference on World Wide Web,Budapest, Hungary, ACM, 2003, 490-499.

[CFG99] Carter S., Faizi A., Goland Y., Jensen D., WhiteheadE., “HTTP Extensions for Distributed Authoring- WEBDAV”, Request for Comments 2518, 1999,http://www.ietf.org/rfc/rfc2518.txt.

[CFR02] Vitali F., Ciancarini P., Folli F., Rossi D.,“XLinkProxy:external linkbases with XLink”, in: Proceedings of the2002 ACM symposium on Document Engineering, McLean,Virginia, USA, ACM, 2002, 57-65.

[CHM03] Carr L., Miles-Board T., Hall W., Kampa S., “SupportingManagement Reporting: a Writable Web Case Study”, in:Proceedings of the twelfth international conference on WorldWide Web, Budapest, Ungary, ACM, 2003, 234-243.

Page 115: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

BIBLIOGRAFIA 111

[Cun02] Cunningham W., The Wiki Way: Collaboration and Sharingon the Internet, New York, Pearson Education, 2002.

[DFH92] Davis H.C., Fountain A.M., Hall W., Heath I.,“MICROCOSM: An Open Hypermedia Environmentfor Information Integration”, in: Hypertext: concepts,systems and applications, Cambrige University Press, 1992,298-311.

[DDG02] De Rose S., Daniel R., Grosso P., Maler E., Marsh J., WalshN.,, “XML Pointer Language (XPointer) ”, W3C WorkingDraft, 16 agosto 2002, http://www.w3.org/TR/xptr/.

[DMO01] De Rose S., Maler E., Orchard D., “XML Linking Language(XLink) Version 1.0”, W3C Recommendation, 27 giugno2001, http://www.w3.org/TR/xlink/.

[DMV04] Vitali F., Di Iorio A., Montemari G., “Beyond proxies:XLink support in the browser”, 2004, submitted forpubblication.

[DV00] Denoue L., Vignollet L., “An annotation tool for Webbrowsers and its applicaions to informal retrieval”, in:Actes de RIAO2000 Recherche d’information assistee parordinateur, Paris, France, 2000, 180-195.

[DV04] Di Iorio A., Vitali F., “Writing the Web”, in: Journal ofDigital Information, 2004, accepted for publication.

[DVV04] Vitali F., Di Iorio A., Ventura C.E., “Rule-based structuralanalysis of web pages”, 2004, submitted for publication.

[EP00] Etzioni O., Perkowitz M., “Towards Adaptive WebSites: Conceptual Framework and Case Study”, ArtificialIntelligence, 118(1-2), Elsevier Science Publishers Ltd.,2000, 245-275.

[Eng68] Engelbart D.C., “A Research Center for Augmenting HumanIntellect”, in: Proceedings of the Fall Joint ComputerConference (IFJC), 33, Arlington (VA), IEEE, 1968,395-410.

[EV03] Eirinaki M., Vazirgiannis M., “Web Mining for WebPersonalization”, in: ACM Transactions on InternetTechnology, 3(1), ACM, 2003, 1-27.

[Fan03] Fantini G., Editing Collaborativo: Architettura e Servizi,Tesi di Laurea in Informatica, Universita di Bologna, Isessione 2003.

Page 116: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

112 BIBLIOGRAFIA

[Goo04] “Google toolbar”, 2004, http://toolbar.google.com/, ultimavisita: 9 marzo 2004.

[GSO99] Grønbæk K., Sloth L., Ørbæk P., “Webvise: Browserand proxy support for open Hypermedia structuringmechanisms on the World Wide Web”, in: Proceedings of theEighth International World Wide Web Conference, Boston,Toronto, Canada, Elsevier North-Holland, 1999, 1331-1345.

[Her03] Herder E., “Modeling User Navigation”, in: Proceedings ofthe 9th International Conference on User Modeling (UM2003), 2702, Johnstown, PA, USA, 2003, 417-419.

[HB04] “HotBot toolbar”, 2004, http://www.hotbot.com/tools/,ultima visita: 9 marzo 2004.

[Koi01] Koivunen M.R., “The Annotea Project”, in: Proceedingsof the tenth international conference on World Wide Web,Hong Kong, ACM, 2001, 623-632.

[MMD00] Millard D.E., Moreau L., Davis H.C., Siegfried R.,“FOHM:a Fundamental Open Hypertext Model for InvestigatingInteroperability between HyperText Domains”, in:Proceedings of the eleventh ACM on Hypertext andhypermedia, San Antonio, Texas, United States, ACM,2000, 93-102.

[Mon04] Montemari G., Progetto e implementazione di un sistemadi linking distribuito per Mozilla basato su XLink, Tesi diLaurea in Informatica, Universita di Bologna, III sessione2004.

[MM97] Miller R., Myers B.A.,Creating Dynamic World Wide WebPages By Demostration, Carnegie MellonUniversity Schoolof Computer Science, CMU-CS-97-131 e CMU-HCII-97-101,1997.

[MSDN04a] Microsoft Corp., “Adding Explorer Bars”, MS DeveloperNetwork, 2004, http://msdn.microsoft.com/library/workshop/browser/ext/tutorials/explorer.asp.

[MSDN04b] Microsoft Corp., “Explorer Bar Style Guide”, MS DeveloperNetwork, 2004, http://msdn.microsoft.com/library/workshop/browser/ext/overview/explorer bar style.asp.

[MSDN04c] Microsoft Corp., “Creating Custom Explorer Bars, ToolBands, and Desk Bands”, MS Developer Network, 2004,http://msdn.microsoft.com/library/enus/shellcc/platform/Shell/programmersguide/shell adv/bands.asp

Page 117: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

BIBLIOGRAFIA 113

[MSW02] Modjeska D., Schraefel M.C., Wigdor D., Zhao S., Zhu Y.,“Hunter Gatherer: Interaction Support for the Creationand Management of Within-Web-Page Collections”, in:Proceedings of the eleventh international conference onWorld Wide Web, Honolulu, Hawai, USA, ACM, 2002,172-181.

[Nan03] Nanni P., Editing Collaborativo: Motore di Conversione,Tesi di Laurea in Informatica, Universita di Bologna, IIsessione 2003.

[Nel65] Nelson T.H., “A File Structure of the Complex, theChanging, and the Indeterminate”, in: Proceedings of the20th National ACM Conference, Cleveland (OH), ACM,1965, 84-100.

[Nel87] Nelson T.H., Literary Machines, Sausalito (CA), USA,Mindful Press, 1987.

[Nel99] Nelson T.H., “Xanalogical Structure, Needed Now Morethan Ever: Parallel Documents, Deep Links to Content,Deep Versioning, and Deep Re-Use”, in: ACM ComputingSurveys, 31(4), ACM Press, 1999, 1-33.

[Ors03] Orselli S., Editor strutturato per documenti HTMLintegrato in un Content Management System: Progetto edImplementazione, Tesi di Laurea in Informatica, Universitadi Bologna, III sessione 2003.

[Pre04] “Preference toolbar”, 2004, http://www.xulplanet.com/downloads/prefbar/, ultima visita: 9 marzo 2004.

[Pin97] Ping K.Y., “CritLink Mediator”, Foresight Institute,http://crit.org/, 1997.

[Rada91] Rada R., Hypertext: From Text to Expertext, McGraw HillPublishers, 1991.

[Ree01] Rees M.J.,“Evolving the Browser Towards a Standard UserInterface Architecture”, in: Third Australasian conferenceon User interfaces, Melbourne, Australian ComputerSociety, 7, 2002, 1-7.

[Riz97] Rizk A., Sutcliffe D., “Distributed Link Service in theAquarelle project”, in: Proceedings of the eighth ACMconference on Hypertext, Southampton, United Kingdom,ACM, 1997, 208-209.

[Sca04] Scano R., “XStandard”, 2004, http://xstandard.com, ultimavisita: 9 marzo 2004.

Page 118: C:/Documents and Settings/robi ... - Tesi < Fabio's Wikitesi.fabio.web.cs.unibo.it/twiki/pub/Tesi/SidebarInternetExplorer/... · 2.6 Meccanismi di estensione del browser ..... 28

114 BIBLIOGRAFIA

[Teo04] “Teoma toolbar”, 2004, http://sp.ask.com/docs/teoma/toolbar/, ultima visita: 9 marzo 2004.

[Ult04] “UltraBar toolbar”, 2004, http://www.ultrabar.com/,ultima visita: 9 marzo 2004.

[VCa03] Ventura Campori E., Estrazione di informazioni di layoutattraverso analisi strutturale nelle pagina HTML, Tesi diLaurea in Informatica, Universita di Bologna, III sessione2003.

[Vit03] Vitali F., “Created sophisticated Web sites using well-knowninterfaces”, in: HCI International 2003 Conference, Creta(Grecia), 2003.