Bookmarker, dokumentation - Gesällprovet ip3

Bookmarker har utvecklats av Henrik Johansson
som gesällprov för kursen ip3 på DSV, SU under VT-02

Bakgrund

Datorer har vi överallt, hemma och på skolan eller arbetsplatsen. Överallt vill vi använda internet för att utföra våra sysslor, varje dator kan vara utrustad med flera olika webläsare t.ex. mozilla och ie som används alternerande och dessutom kanske datorn är utrustad med flera operativsystem vilket ytterligare bygger på antalet läsare, som vi alla vet är informationsrymden oändlig och för att hitta tillbaka till våra favoritsidor (eller för att spara tangentbordet) lägger man upp bokmärken, överallt. Det bokmärke jag sparade i mozilla kommer jag inte åt från ie osv. Så kan vi inte ha det!

Som det borde funka

Bokmärken borde sparas på en plats som är lätt åtkomlig från alla webläsare och operativsystem, internet. Det finns några sidor på nätet för att spara undan sina bokmärken t.ex. yahoo, men de fungerar så krångligt att man inte orkar använda dem.

En central bokmärkeshanterare borde fungera som den lokala bokmärkeshanteraren i webläsaren, foldrar och bokmärken bör vara enkla att lägga till och ta bort samt att flytta i bokmärkesträdet. Administreration av bokmärkesträdet bör inte tvinga användaren att vandra mellan flera olika sidor utan enkelhet och snabbhet bör vara ledordet. Med detta i åtanke har jag skapat Bookmarker.

Boiokmarks sparar information om en användares bokmärkesträd i en centralt placerad databas, ett perlskript extraherar denna information och bygger upp en xhtml-sida, vars bokmärkesträd med hlälp av olika script snabbt och enkelt kan omformas. Sidan inefattar också en applet som sparar användarens eventuella updateringar i databasen.

Använda Bookmarker

Den enda adress användaren behöver komma ihåg är adressen till Bookmarker http://atlas.dsv.su.se/~henrik-j/ip3/u7/login.cgi?id=användarnamn där användarnamn logiskt nog byts ut mot användarnamnet. När bokmärkesträdet och appleten laddats kommer appleten att fråga efter användarens lösenord och kontrollera detta i databasen (figur 1)

figur 1, bild av passwordfönstret
figur 1

Om användaren anger ett felaktigt lösenord kommer en felsida upp, men annars finns alla Bookmarker funktioner enkelt tillgängliga på en enda sida (figur 2)

figur 2, bild av huvudfönstret
figur 2

  1. Nytt bokmärke, skriv in namn på och adressen för det nya bokmärket.
    Om en folder i bokmärkesträdet är markerad hamnar det nya bokmärket sist i denna, om det i stället är ett bokmärke som är markerat kommer det nya bokmärket att hamna direkt efter detta.
  2. Ny folder, en ruta som frågar efter namnet på den nya foldern kommer fram.
    Den nya foldern kommer att placeras i bokmärkesträdet på samma sätt som när man skapar ett nytt bokmärke (1)
  3. Klipp ut och klistra in, ett markerat bokmärke eller en folder med hela sitt innehåll kan klippas ut. När ett bokmärke eller en folder klippts ut kan det klistras in i bokmärkesträdet vid ett senare tillfälle. Det är bara det senast urklippta bokmärket eller foldern som kan klistras in. bokmärke eller folder kommer att klistras in på samma samma plats som ett motsvarande nytt bokmärke (1)
  4. Kontrollpanel för databasappleten
    När kontrollpanelen lyser grönt är bokmärkesträdet konsistent med databasen.
    När kontrollpanelen lyser gult behöver förändringar i bokmärkesträdet sparas i databasen.
    När kontrollpanelen lyser rött bör man undvika att göra några förändringar i bokmärkesträdet eftersom appleten antingen inte är redo att ta emot dessa eller håller på att spara tidigare förändringar.
  5. Spara eller ångra, sparar förändringar i bokmärkesträdet till databasen eller ångrar förändringar sedan bokmärkesträdet sparades förra gången. Som användare måste man spara eventuella förändringar manuellt för att dessa skall gälla.
  6. Flytta upp eller flytta ner, Flyttar markerat bokmärke eller folder upp eller ner ett steg i bokmärkesträdet.

Det är viktigt att notera att eventuella förändringar i bokmärkesträdet inte sparas undan i databasträdet utan att man trycker på sparaknappen (5)

funktionalitetskrav

Bookmarker har testats och fungerar med Mozilla 1.0 samt Microsoft IE 6.0
För att använda Bookmarker måste man ha ett konto, För närvarande och troligen för alltid finns ingen möjlighet att skaffa sig ett sådant direkt på nätet, om någon skulle vilja ha ett konto till Bookmarker kan man dock maila mig med ett förslag på användarnamn.

Så funkar det

Bookmarkers funktionalitet kan delas in i några olika delar

databasen

Databasen har två tabeller en för användarinformation, användarnamn och lösenord, samt en för bokmärken och foldrar som innehåller information om typ (bokmärke eller folder), namn, eventuell adress, föregående och efterkommande bokmärke eller folder samt en koppling till vilken användare som lagt till raden.

cgi-script och templates

login.cgi skapar genom att sammanställa information för aktuell användare i databasen och föra in den i templaten u7.template Bookmarkers användarsida.
error.cgi skapar om användaren inte finns i databasen eller om användaren angivit ett felaktigt lösenord en sida med felinformation genom att använda templaten error.template.

javascript

Bookmarkers javascriptfunktioner finns samlade i filen u7.js. De flesta funktionerna reagerar om användaren klickar någonstans i bokmärkesträdet eller använder någon av Bookmarkers funktioner, om användaren t.ex klickar på ett bokmärke kommer funktionen selectBookmark(evt) att anropas vilken i sin tur kommer att avmarkera tidigare markerat bokmärke eller folder för att sedan markera bokmärket, dessutom kommer den globala variabeln selected att uppdateras så att den håller det nu valda bokmärket. På motsvarande sätt finns det funktioner som ser till att användaren kan öppna och stänga foldrar, markera foldrar, lägga till nya foldrar eller bokmärken, avlägsna foldrar eller bokmärken, klistra in senast avlägsnade folder eller bokmärke, spara eller ångra förändringar i bokmärkesträdet samt flytta tidigare markerad folder eller bokmärke upp eller ner ett steg i bokmärkesträdet. Förutom dessa händelsefunktioner finns några hjälpfunktioner t.ex. getId() som returnerar ett idvärde som är unikt för detta bokmärkesträd.

Då bokmärkesträdet är dynamiskt till sin natur, dels för att det kan förändras över tiden och dels för att Bookmarker kan hantera flera olika användare simultant, uppstår frågan om hur man skall koppla händelser till olika många foldrar och bokmärken varje gång en sida genereras. Det finns två svar på frågan, om man använder inlinescript kan man låta cgi-scriptet som genererar sidan lägga till kodrader till scriptet som utför denna koppling dynamiskt, eftersom inlinescript är av ondo är detta dock inget alternativ. Det andra och slutliga svaret blir då att låta scriptet gå igenom bokmärkesträdet när sidan laddats i webläsaren och i samband med detta lägga till de kopplingar som är tillämpliga när antingen ett bokmärke ellr en folder påträffas. Detta sker genom att anropa funktionen setEventHandlers(id) med värdet för id satt till 'root', eftersom man vill starta vid bokmärkesträdets rot.

css

css-filen u7.css definierar Bookmarkers utseende.

applet

Appletens uppgift består av komunikation med databasen. Detta sker dels i form av att kontrollera att användaren är den hon upger sig vara och dels i form av att uppdatera databasen med de förändringar av bokmärkesträdet spm användaren utfört.
Appleten består av tre klasser.

Vad som återstår

För att Bookmarker skall fungera optimalt krävs yttrligare arbete, bland det viktigaste är:

Henrik Johansson

Valid XHTML 1.1!