PDF Modul & Online Markedsføring



Relaterede dokumenter
ActiveBuilder Brugermanual

Vejledning i redigering af apotekets hjemmeside

Oktober Dokumentpakker

Lav din egen forside i webtrees

Manual til Dynamicweb Februar 2010

I denne manual kan du finde en hurtig introduktion til hvordan du:

Vejledning til opbygning af hjemmesider

My booking. Generelt. Forsiden. Version 9.0

MANUAL. Siteloom CMS

Manual til administration af online booking

Redaktørvejledning for Skriv en artikel

Dokumentering af umbraco artikeleksport:

IsenTekst Indhold til Internettet. Manual til Wordpress.

Vejledning til. LearnSpace

Mini-guide for opdatering af hjemmesiden for. SOIF

Formatering af tekst, JCE Editor, Joomla

Indhold. 1. Adgang og afslutning

Indholdsfortegnelse. EasyIQ IDM 5.4 Brugermanual

Active Builder - Brugermanual

Når du har logget dig ind, ser du Randers Kommunes byvåben midt på siden. I venstre side er der en række mapper:

Administration af subsites BRUGERVEJLEDNING FOR ADMINISTRATOREN

Miniguide for redaktører. Miniguide for redaktører. Leveret af DFF-EDB.dk

Vejledning til Kilometer Registrering

Easy Guide i GallupPC

Sorring.dk guide. Du kan finde mere information om WebsiteBaker her:

Brugermanual. - For intern entreprenør

Morten Skyt Eriksen Dansk manual (begynder) Side 1 af 11 BaZeN CMS v1.0. Manual til. Af Morten Skyt Eriksen

Manual Version 2. til oprettelse af hjemmesider for landsbyer i Rebild kommune

Indhold. Indholdsfortegnelse

Vejledning til formularmodul

Manual til WordPress CMS

Manual til Wordpress. 1. Log ind på din Wordpress-side. Indhold:

BRUGER KURSUS RAMBØLL HJEMMESIDE

Velkommen til MODx kursus

Indhold Login flexsignage... 1 Rediger eksisterende layout... 1 Oprette et layout - template... 1 Oprette et layout tomt... 2 Designe layout...

ViKoSys. Virksomheds Kontakt System

DDElibra H Å N D B O G

Fase Forklaring Navigation. Mappen skal indeholde alle elementer til dit site.

Større skriftlige opgaver i Microsoft Word 2007 Indhold

Indhold 1 Om Skolekvalitet.dk Vælg evalueringsmodel før du går i gang Overblik over siderne... 5

Introduktion til Indholdsredigering

BRUGERVEJLEDNING. Diabetesforeningens lokale hjemmesider

Sådan indlægges nyheder på DSqF s hjemmeside trin for trin

Redaktørmanual TYPO3 Version 6.2

Vejledning til opgraderet version af Danmarks Arealinformation

Kort om CoinDB (Mønt- og seddelsamling):

Dannelse af PDF-dokumenter

18/ Version 2.0 Side 1 af 36

Dannelse af PDF dokumenter

xgalleri Mulige filtyper Installation web-version

Formular modul. Sitecore Foundry juli Version 1.0

Med et filarkiv kan du give dine besøgende på din hjemmeside adgang til at hente dokumenter i Word, PDF, PowerPoint og Excel.

få en ny og bedre hjemmeside på få minutter Quick guide Del denne quick guide med alle som har glæde af en ny og bedre hjemmeside

Vejledning for metadatabasen

Vejledning. hjemmeside-opbygning. - DFIF - Vejledning til CMS: Dansk Firma Idrætsforbund

PHP kode til hjemmeside menu.

Kom godt i gang med. Gadstrup Fodbolds Hjemmeside. Udarbejdet af:

IDAP manual Emission

2. SEMESTER PROJEKT 3 INTERAKTIONSUDVIKLING

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

Brugervejledning til Design Manager Version 1.02

Vejledning i opbygning af Tillidszonen

Heldigvis har systemet indbygget en hjælp, som man kan benytte, hvis denne vejledning ikke berører det opståede problem.

Dynamicweb Quickguide

Jysk Online Medie ApS - Vestergade 32, 8600 Silkeborg - Tlf.:

Guide til Umbraco CMS

EasyIQ Opdatering > 5.4.0

Brugervejledning til InfoLand.dk skabelonen

Manual til Wordpress. 1. Log ind på din Wordpress-side. Indhold: Sådan opdaterer du din hjemmeside i Wordpress.

Installation af WeroShop 2.4 S

Spil og svar. Journal nr Et webbaseret værktøj udviklet af Programdatateket i Skive

GECKO Booking Vejledning til spørgeskema-modul. Læsevejledning. Indholdsfortegnelse

Funktions Manual. Skyhost WebPortal. Login (Bemærk: for at kunne bruge WebPortalen skal du have et aktivt abonnement fra Skyhost)

Rapport generator til Microsoft C5

Formular modul. Sitecore Foundry januar Version 1.0

FORCE Inspect Online Manual v FORCE Inspect Online Manual. 1 af 18

Vejledning til at danne PDF-dokumenter

e-konto manual e-konto manual Side 1

Dannelse af PDF-dokumenter

Du kan hente siden ved at trykke på det lille hus i øverste venstre hjørne af skærmen og derefter finde frem til siden via forsiden.

Vejledning til: Mine aktiviteter (behandler)

Bogfunktionen eller Slægtsbogen i FTM

UMS Velkomst Byder nye brugere velkommen til skolen

Det nye husdyrgodkendelse.dk Sagsbehandlermodulet Fra ansøgning til godkendelse V /4 2011

Mini-guide til Retox Databasen er tilgængelig fra klik på linket

Indholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen...

GUIDE TIL OPRETTELSE AF SIDER OG INDHOLD I UMBRACO ONLINE BETJENING

Daglig brug af JitBesked 2.0

Galleri modul. Side 1 af 18

WELLPLOT VER. 3 BRUGERMANUAL

Brugerguide til FlexCMS

Opgave: Digitalisering af et dokument

Indholdsfortegnelse Opret engelsk version af hjemmesiden... 2

BRUGERMANUAL FLEXSCREEN

SecureAware Opfølgning Manual

BRUGERMANUAL TIL N-PDF

Transkript:

Danmarks Tekniske Universitet IMM 23. Januar 2009 PDF Modul & Online Markedsføring Af Frederik Christian Heerup-Larsson IMM-B.Eng-2009-53 Side 1

1. Abstract Denne rapport omhandler design og udvikling af to moduler til virksomheden Click-a-Site s web interface. PDF modulet tillader administratorer af hjemmesider at oprette samt redigere nye PDF filer, eller konvertere eksisterende hjemmesider i systemet til PDF format. Online Marketing modulet tillader besøgende på et website at downloade et PDF dokument der er baseret dels på emner de selv har valgt, og dels på emner som systemet har detekteret at brugeren har vist interesse for. Side 2

Indholdsfortegnelse 1. Abstract... 2 Indholdsfortegnelse... 3 2. Forord... 6 3. Indledning... 7 Introduktion til Click-a-Site systemet... 7 4. Problemformulering... 8 PDF... 8 Online Marketing... 8 5. Kravspecifikation... 8 PDF... 8 Funktionelle krav... 8 Ikke-funktionelle krav... 8 Online Marketing... 9 Funktionelle krav... 9 Ikke-funktionelle krav... 9 6. Analyse... 10 PDF Modul... 11 Use Case Diagram... 11 Use Cases... 12 Online Marketing... 13 Use Case... 14 Dynamisk Tracking... 14 Design... 15 Click-a-Site filstruktur.... 15 PDF Modul... 15 Tilkobling til systemet... 15 Generering af PDF fil... 16 Filstruktur... 18 Online Marketing Modul... 19 Tilkobling til systemet... 19 Administration... 19 Side 3

Registrering af fodspor... 19 Brochure Algoritme... 20 Filstruktur... 20 Database... 23 Beskrivelse af Tabeller... 25 7. Implementation... 26 Clik-a-Site Funktioner... 26 FDPF... 27 PDF Modul... 27 Generering af PDF fil... 28 Administration... 29 Andet... 30 Online Marketing... 30 Brochure generering... 30 Tracking af brugerens interesser... 31 Administration... 31 8. Test... 32 Teststrategi... 32 PDF Modul... 32 Generering af PDF fil... 32 Udseende af PDF... 33 Andet... 33 Online Marketing... 33 Brochure Generering... 33 Administration... 34 Test konklusion... 35 9. Konklusion... 36 Fremtidige forbedringer... 36 10. Bilag... 37 Use Case Beskrivelser... 38 Kildeliste... 39 Liste over kildekode... 40 Side 4

11. Kildekode... 41 PDF modul... 41 Config.mod... 41 uninstall.php... 41 copy.php... 41 edit.php... 42 popup_properties.php... 44 pdf_database.php... 46 om_generatebrochure.php... 48 pdf_enginefunctions.php... 49 pdf_show.php... 66 pdf_engine.php... 66 Online Marketing... 69 config.mod... 69 install.php... 69 uninstall.php... 69 Edit.php... 69 Edit_tags.php... 71 Listpages.php... 73 Om_adminfunctions.php... 74 Popup_add_tagpdf.php... 75 Popup_remove_tagpage.php... 76 Popup_setupom.php... 77 Popup_tags.php... 79 show.php... 80 Om_functions.php... 80 Om_database.php... 83 Om_include.php... 87 Side 5

2. Forord Denne rapport er skrevet af Diplom IT Ingeniør studerende Frederik Christian Heerup-Larsson (studienummer s042134) på Danmarks Tekniske Universitet (DTU). Rapporten er skrevet som det afsluttende eksamensprojekt for Diplom IT. Projektet er blevet udarbejdet i forlængelse af en 18 ugers praktikperiode I virksomheden Click-a-Site og projektformuleringen er udarbejdet i samarbejde med samme virksomhed. Projektforløbet har varet 18 uger, og har foregået sideløbende med kurser svarende til 10 ECTS points på DTU. Klaus Poul Thiesen har fungeret som DTU vejleder. Michael Sahl fra Click-a-Site har fungeret som virksomhedsvejleder. Michael har gennem forløbet hjulpet med spørgsmål og problemet i forhold til Click-a-Site systemet. Projektet er tiltænkt at blive videreudviklet som en printløsning, således at man vil kunne bestille en brochure sendt med posten. Denne brochure vil indeholde eventuelle valgte emner, samt emner som websitet har registreret at brugeren har vist interesse for. Side 6

3. Indledning Målet med dette projekt, er at udvikle to moduler til Click-a-Site. I løbet af denne rapport, vil jeg dokumentere hvordan projektet er blevet analyseret, designet og til sidst implementeret. Al udvikling af produktet er enten foregået i virksomheden, eller hjemme, med ftp adgang til systemet. I dette projekt bruges biblioteket FPDF til at generere selve PDF filen. Dette bibliotek er gratis til alle formål og kan hentes på http://www.fpdf.com Introduktion til Click-a-Site systemet Click-a-Site (CAS) er et integreret CMS system. Systemet vil ikke blive forklaret i detaljer i denne rapport, men benyttede funktioner og lignende vil blive forklaret. CAS består som udgangspunkt af en siteserver, og en admin server. Alt indhold på hjemmesiden (eksterne links, iframes osv. ekskluderet) ligger i siteserverens database i XML form. Hvert element på en hjemmeside er repræsenteret ved hjælp af en boks, der enten kan have indhold i form af HTML kode, eller et billede. Når et website vises, printer siteserveren et menusystem, samt indholdet fra den valgte default side. Herefter kan brugeren så klikke sig rundt på sitet, og alt indhold vil blive printet af siteserveren. I administrationen på siteserveren, kan websitets ejer redigere i filerne ved hjælp af en grafisk editor, som ligner en almindelig grafisk tekst editor, med knapper til at indsætte tekstbokse og billeder, skifte skrifttyper osv. Systemet er modulopbygget, i den forstand at man køber en grundpakke, som indeholder de almindelige ting som bruges til at lave en hjemmeside. Når man har grundpakken, kan man opgradere ved at tilkøbe diverse moduler. Blandt disse er der f.eks. webshop, nyhedsside, diskussionsfora, blogs osv. Modul opsætning foregår gennem administrationen på siteserveren, hvor man får en liste over alle installerede moduler, med links til opsætning, samt en liste over tilgængelige tilkøbsmoduler. Admin serveren er kun benyttet af Click-a-Site (virksomheden). Herinde kan man søge efter nyoprettede moduler, samt installere dem. Desuden kan man logge ind på alle kunders hjemmesider, gennem en admin bagdør til brug af support og lignende. I dette projekt, vil admin serveren kun benyttes til at opsætte nye moduler. Denne proces vil blive forklaret i implementationsafsnittet. Al udvikling i dette projekt foregår på en testserver, der er en kopi af hovedserveren. Side 7

4. Problemformulering Virksomheden Click-A-Site ønsker at få udviklet to moduler til deres integrerede webserver system af samme navn. Det drejer sig om de to moduler PDF og Online Marketing. PDF Dette modul skal give en website administrator mulighed for at oprette og redigere PDF dokument i systemet. PDF dokumenterne kan enten oprettes som en kopi af en eksisterende hjemmeside, samt som et nyt dokument. Dokumenterne redigeres ved hjælp af Click-a-Site systemets grafiske editor. Online Marketing Dette modul bygger direkte videre på PDF modulet. Online Marketing skal give en website administrator muligheden for at opsætte et system, således at en bruger kan gå ind på en hjemmeside og bestille en dynamisk brochure. Denne brochure består af emner, som er blevet bestemt, til dels af brugeren selv ved bestilling, og til dels ved at analysere hvordan brugeren har bevæget sig rundt på sitet. Det vil sige at modulet skal registrere brugerens interesser ud fra hvilke sider han/hun har besøgt. PDF 5. Kravspecifikation Funktionelle krav Website administratoren skal kunne oprette et dokument fra bunden, samt oprette det som kopi af en hjemmeside i systemet. Oprettede PDF dokumenter skal kunne redigeres. Der skal være en liste over alle PDF dokumenter for det pågældende website. Administratoren skal kunne slette oprettede PDF filer. Ikke-funktionelle krav PDF dokumentet skal tilnærmelsesvis ligne det man kan se i den grafiske editor. PDF modulet skal understøtte alle fonte og fontegenskaber i den grafiske editor, samt billeder. Det er ikke forventet at PDF modulet skal kunne læse færdigkompilerede PDF filer. Det er ikke forventet at PDF modulet kan konvertere websites uden for Click-a-Sites interne struktur til PDF format. Side 8

Online Marketing Funktionelle krav Administratoren skal kunne tilføje emner til hjemmesider i systemet. Flere emner kan være tilknyttet til en hjemmeside. Administratoren skal kunne tilføje et emne til hver PDF fil i systemet. PDF filen gives så en prioritet, og der vælges om den skal være obligatorisk eller ej. Administratoren skal kunne vælge et ønsket antal sider. Administratoren skal kunne vælge en forside og en bagside. Systemet skal kunne registrere brugerens færden på websitet. Sider i brochuren der bliver bestilt skal indsættes i dokumentet efter følgende model. 1. Forside, hvis en sådan er valgt. 2. Alle obligatoriske PDF dokumenter inden for valgte emner sorteret efter prioritet først, normal, sidst. Hvis der er plads, indsættes al tillægsmateriale for valgte emner, sorteret efter prioritet først, normal, sidst. 3. Alle obligatoriske PDF dokumenter inden for detekterede emner sorteret efter prioritet først, normal, sidst, efterfulgt af tillægsmateriale sorteret efter prioritet først, normal, sidst indtil dokumentet har nået ønsket antal sider. 4. Bagside, hvis en sådan er valgt. Ikke-funktionelle krav Hvis der ikke er nok materiale til at opfylde sideantallet, sendes dokumentet til brugeren med det antal sider der er. Side 9

6. Analyse Da der er tale om to separate (men ikke uafhængige) produkter, vil analyse afsnittene blive delt op i sektioner for henholdsvis PDF og Online Marketing modulerne. Disse sektioner vil indeholde Use Case scenarier og generel analyse og overvejelser. Selve rapporten kommer ikke ind på samtlige Use Cases, kun dem der er vurderet vigtigst for behandling af opgaven. Der vil forelægge en mere generel beskrivelse af Use Cases i et bilag. Selve visningen af PDF filen til brugeren foregår gennem det eksisterende CAS-system. Dette gøres som hvis der skulle linkes til enhver anden fil. Der er tre aktører i systemet. En Website Bruger, en Website Administrator og en System Administrator. Bemærk, hvis der omtales en administrator, vil det med mindre andet er nævnt være Website administratoren. Website Administrator Website administratoren er en kunde hos Click-a-Site der har købt en website løsning. Administratorens primære tilgængelige funktion er at opsætte siden så brugeren kan benytte den. Website Bruger Brugeren er nederste led i hierarkiet, målgruppen for selve hjemmesiden. Brugeren kan sjældent redigere noget, men kan få adgang til elementer der er oprettet i systemet. System Administrator System Administratoren er typisk en ansat i Click-a-Site. Administratoren har adgang til al funktionalitet i systemet, og kan logge sig på alle sites gennem et administrator interface. Denne rapport vil generelt ikke omhandle System Administratorer, da produktet er tiltænkt Website Administratoren (og derigennem brugeren) Side 10

PDF Modul PDF Modulets primære funktion er at generere et PDF dokument ud fra et givent input. Dette input kan enten være data fra en hjemmeside i CAS-systemet, eller et dokument, der er generet fra bunden af. Det er ikke forventet at modulet kan læse kildematerialet i en PDF-fil der er lavet i forvejen, f.eks. med Adobe Acrobat. Det forventes ikke at den generede PDF fil er en 1:1 forekomst af kildematerialet. Dette skyldes blandt andre ting skalering og begrænsninger af font størrelser. Dette vil blive forklaret yderligere senere i rapporten. Bemærk: Selve redigeringsdelen af PDF-siderne foregår ved hjælp af den eksisterende grafisk editor og er derfor uden for omfanget af denne rapport. Når en side skal redigeres, bliver den grafiske editor instantieret og kan herefter gemmes som PDF fil ved hjælp af dette modul. Use Case Diagram Opret ny PDF «uses» «uses» Opret PDF ud fra side «uses» Website administrator «uses» «uses» Slet PDF Rediger PDF Kopier PDF Figure 1 Use Case diagram PDF Side 11

Følgende er en liste over de vigtigste use-case scenarier for PDF-modulet. Use Cases Website administrator ønsker at oprette et PDF dokument fra bunden. Primær Aktør: Website administrator. Website Administratoren ønsker at oprette og gemme et PDF dokument, eller redigere et eksisterende dokument Succes kriterium: PDF filen bliver oprettet og gemt, og ligner indholdet i den grafiske editor tilnærmelsesvis. PDF filen kan formidles til brugeren ligesom andre filer i filarkivet. Website administrator ønsker at oprette et PDF dokument som en kopi af en eksisterende hjemmeside i systemet.. Primær Aktør: Website administrator. Website Administratoren ønsker at oprette og gemme et PDF dokument ud fra en eksisterende hjemmeside i systemet. Succes kriterium: PDF filen bliver oprettet og gemt, og ligner kildehjemmesiden tilnærmelsesvis. PDF filen kan formidles til brugeren ligesom andre filer i CAS-systemets filarkiv. Selve visningen af PDF filen til brugeren foregår igennem det eksisterende CAS-system. Dette gøres som hvis der skulle linkes til enhver anden fil, og er uden for omfanget af denne rapport. Side 12

Online Marketing Online Marketing modulet skal sammensætte indholdet af flere PDF filer ud fra forskellige kriterier. Disse kriterier er bl.a. valgte forsider og bagsider, samt brugerens valgte interesse kategorier og registrerede fodspor på diverse hjemmesider. Online Marketing bygger direkte videre på PDF modulet, og kan derfor ikke benyttes uden dette modul. I stedet for bare at lave et enkelt dokument, skal systemet sammensætte en brochure ud fra enkelte pdf filer, der er genereret med PDF-Modulet. Opret Emne «uses» Slet/slet Emne «uses» Bestil Brochure «uses» «uses» «uses» «uses» Rediger indstillinger for Online Marketing Website Bruger Website administrator Tilknyt emne til PDF Tilknyt emne til side Figure 2 Use Case Diagram Online Marketing Hvis en bruger bestiller en brochure, skal der oprettes en liste over de pågældende sider, og sammensætte PDF filen og levere den til kunden. Side 13

Use Case Bestilling af brochure Primær aktør: Website Bruger Brugeren ønsker at få en brochure og vælger passende interesse emner. Succes kriterium: Systemet opbygger en PDF fil, med sider der er sammensat ifølge kravspecifikationen. Denne PDF fil bliver givet til brugeren som fil download. Tilknyt emner til side Primær aktør: Website Administrator Administratoren ønsker at tilknytte et emne til en side Succes kriterium: Emnet bliver tilknyttet, og når en bruger indlæser en side, registrerer systemet hvilket emne der er tale om og gemmer det til senere brug. Alt andet i Online Marketing omhandler opsætning fra Website Administratorens side. Dette gælder oprettelse og redigering af emner, samt tilknytning af emner til PDF-dokumenter og lignende. Alt dette foregår relativt trivielt og vil blive dækket i kommende sektioner. Dynamisk Tracking Systemet skal holde styr på hvordan brugeren færdes på websitet. Hvis en bruger f.eks. går ind på en side der omhandler Grækenland, skal trackeren holde styr på hvilke emner der er associeret med denne side. Det kunne i dette tilfælde dreje som om emnerne Europa og Grækenland. Herefter skal disse emner registreres, således at systemet holder styr på hvor mange gange der er blevet besøgt sider med disse emner. Side 14

Design Da produktet udvikles i PHP, er det svært at opretholde lagdeling som i en traditionel 3-lags model, hvor bruger grænsefladen er helt adskilt fra logik laget, som er helt adskilt fra database (fysisk) laget. Alligevel vil jeg forsøge at opretholde en slags usynlige grænser, så logik sider ikke direkte kan foretage database kald. Der bliver primært arbejdet i logik laget, da alle hjemmeside visninger i CAS foregår gennem systemet. Generelt set bliver HTML (og PDF filer) skrevet af funktioner der bliver kaldt, hvilket medfører at logik siderne teknisk set ikke skriver noget direkte ud til browseren, men kalder andre funktioner der gør. Denne løse lagdeling skyldes delvist begrænsningerne i at arbejde i et stort integreret system som CAS med egne konventioner og funktioner, og delvist PHP syntaksen der gør det meget let at skrive direkte HTML direkte ud på skærmen. Click-a-Site filstruktur. I CAS systemet, ligger alle modulerne i mappen /htdocs/sys6_site/modules. Hvert modul har sin egen mappe. I denne mappe er der en config.mod fil, som systemet automatisk detetekterer, hvorefter det installerer modulet. Denne config fil indeholder information om modulets navn, beskrivelse, type (obligatorisk, tilkøb osv.) og registrering af sider. Meningen med de registrerede sider er, at man f.eks. kan bestemme hvordan filerne er linket til systemet. Desuden indeholder den opsætning af databasen. Tabeller, default data osv. kan indsættes i mysql forespørgsler. I modulets rod kan der også placeres filerne install.php og uninstall.php. Disse filer bliver inkluderet når en website administrator henholdsvis installerer eller afinstallerer modulet. Meningen med disse, er at rydde op i diverse databaser og lignende efter data der var knyttet til den pågældende side (afinstaller) eller sætte startværdier ind ved installation. PDF Modul Tilkobling til systemet Der er nogle forskellige metoder i CAS systemet hvorpå man kan tilkoble(linke) et modul til et site. Man kan lave en actionbox, dvs. en boks der bliver vist på hjemmesiden, med prædefineret indhold. Man kan også lave en speciel sidetype, ligeledes med prædefineret indhold. Disse er dog ikke specielt anvendelige i forhold til PDF modulet, da de henvender sig mest til website brugeren, og ikke så meget til administratoren, som er den primære bruger af dette modul. Da den grafiske editor bruges til at designe PDF dokumentet, vil det være hensigtsmæssigt at man kan gemme materialet direkte som PDF. Dvs. at man når man er i gang med at redigere en hjemmeside kan vælge at gemme den som PDF. Dermed kan man også konvertere en eksisterende hjemmeside til PDF format. Side 15

Desuden skal der instantieres en neddroslet version af den grafiske editor til brug ved redigering af PDF filer. Denne kan dog ikke gemme en side som hjemmeside. Denne editor bliver ikke dækket i denne rapport, da den er instantieret af Johnny Elvers fra Click-a-Site. Generering af PDF fil Alle hjemmesider i CAS er repræsenteret i form af en XML struktur. Derfor er det oplagt at bruge samme struktur til at repræsentere PDF filer. Dette medfører at den grafiske editor som udgangspunkt kan læse og redigere kilden til en PDF fil uden større modificeringer. XML strukturen i systemet er som følgende: <element> Beskriver et element. Dette kan være en tekst boks eller et billede. Parametre: Type beskriver typen af element Left og top beskriver x og y koordinater. Width og height beskriver boksens dimensioner. backgroundcolor beskriver baggrundsfarven. BorderWidth og border type beskriver stregen omkring boksen. <text> Beskriver indholdet i tilfælde af tekst (HTML). PDF bibliotek Til at kompilere selve PDF filen, benyttes det gratis bibliotek FPDF. Da FPDF ikke understøtter en form for tekstboks der passer udseendemæssigt med dette projekt, skal hver tekstboks tegnes som en normal kasse, evt. farvet eller med baggrundsbillede, hvorefter al tekst bliver tegnet direkte ud fra koordinater oven på kassen. Herefter kan der evt. tegnes en ramme, hvis sådan en forefindes i XML en. Repræsentation af boks data Da tekstboksen er repræsenteret i HTML skal der laves en funktion der parser denne kode og organiserer indholdet på en fornuftig måde. Dette gøres ved at sætte al indholdet ind i et array på følgende måde. Hver boks er repræsenteret ved et array. På første plads (indeks 0) er en liste over alle parametrene for boksen (position, størrelse osv.). På alle indicer herefter repræsenteres linjer i boksen. På indeks 0 findes bredden af linjen, samt tekstjusteringen (højre, venstre, centrer, justify). Herefter repræsenteres hvert ord eller billede (da html også kan indeholde billeder) på hvert indeks, beskrevet ved et array med font, font egenskaber, højde (billede), billedekilde osv. Alle bokse placeres i endnu et array, kaldet page. Sidedeling Sidedelingen foregår ved at se på den valgte sidetypes højde, og undersøge hvilke bokse der falder inden for denne grænse. Hefter sættes de på siden, hvorefter der bliver sat et offset på fremtidige sider, Side 16

som er lig med sidehøjden. På side 2 skal alle bokse der falder inden for sidehøjden + højdeoffsettet tegnes, hvorefter sidehøjden igen bliver lagt til offsettet osv. Bemærk: I online marketing skal der kun tages en side pr dokument, så da regnekraft ikke i dette tilfælde er et problem, sættes alle boksene på første side (kun dem der er inden for sidehøjden vil være synlige), og der bliver tilføjet en ny side per PDF dokument. Når en boks skal tilføjes siden, skal al data tages ud af arrayet og tilføjes. Tilføjelse af data til PDF Når en boks bliver tegnet, benyttes koordinaterne til at beregne hvor første linje tekst skal stå. Font data, tekst farve, font egenskaber (fed, kursiv, understreget) og andre ting hives ud af arrayet og strengen (eller billedet)bliver placeret på siden gennem FPDF. Herefter lægges et horisontalt offset til, der svarer til længden tekststrengen, så systemet ved hvor den næste tekststreng skal placeres. Herefter rykkes højdeoffsettet for boksen til næste linje, osv. Når al data er tilføjet, kan selve PDF filen genereres. Herefter skal filen tilføjes til filserveren via CAS systemets fil API. Filer der ligger i fil arkivet kan linkes til på hjemmesider osv. Side 17

Filstruktur Dette afsnit omhandler filstrukturen for PDF modulet, samt hvilke funktioner de forskellige filer skal indeholde. Følgende graf giver et overblik over hvordan filerne skal placeres, samt de vigtigste funktioner filen indeholder. Figure 3 Filstruktur Admin Da PDF modulet kun er tilgængeligt for Websitets ejer, er det oplagt at opsætningen og kreeringen af PDF dokumenter foregår i edit.php, som er den fil der bliver linket til når man går ind i administration for modulet. Herinde skal man kunne se en liste over alle genererede PDF filer, samt oprette nye eller redigere i de eksisterende. Popup_properties.php indeholder opsætning af PDF filen (papir størrelse og navn), samt link til PDF editoren. Pdf_engine Side 18

I denne mappe foregår selve genereringen af PDF filen. Pdfengine.php tager sig af dette, og inkluderer filen pdf_enginefunctions.php (som er i en separat fil, da online marketing også skal bruge disse funktioner), der samler pdf filen. I denne fil bliver der lavet et FPDF objekt. Arrangebox(xml) sætter bokse fra XML strukturen ind i arrays som tidligere beskrevet. Når den støder på html, kalder den funktionen Parsehtml(html, box), som sætter de relevante data ind i boksen. Boksen sættes på en (eller flere) sider, dette indtil der ikke er flere bokse. Herefter kaldes addpages(), som opretter alle siderne i PDF objektet. Indholdet af hver boks bliver tilføjet til PDF obektet med funktionen drawbox(box). Til sidst opretter pdfengine.php PDF filen ved hjælp af FPDF og gemmer den i filarkivet ved hjælpe af fil systemets fil API. Database Pdf_database.php indeholder alle database kald. Online Marketing Modul Tilkobling til systemet Da Online Marketing modulet er tiltænkt brugeren, kobles det på systemet ved at oprette en speciel sidetype. På denne måde vil en website administrator kunne oprette en ny side i systemet, hvor en bruger kan bestille en brochure. Denne side kan så linkes til i sidens menu og andre steder hvor man kan linke til normale sider. Administration Hovedsiden i administrationen opbygges ligesom den fra PDF modulet, men med flere tilføjelser. Der udskrives en liste over PDF filerne i systemet. Men her, kan der også ses hvilket emne (tag), hvis noget, der er koblet til filen. Der skal være en knap hvor man kan gå ind og tilføje tags til sider i systemet. Desuden skal der også være en knap der linker en side hvor der kan oprettes tags og slettes tags. Desuden skal der være et link til opsætning af indstillingerne for selve modulet. Disse indeholder Forside, bagside, sidestørrelse og antal sider. Registrering af fodspor Der skal oprettes en fil, som registrerer brugerens færden på siden i form af en sessionsvariabel. Denne information bygges op i form af et array, som har tag id som indeks, og antal besøg som værdi. Hver gang en side bliver indlæst, findes dens tilsvarende tag(s), som så bliver talt op i arrayet. Denne fil inkluderes i systemets index.php fil, så den bliver kørt ved hver sidevisning. Side 19

Brochure Algoritme Når en brochure bliver genereret, skal den samles ud fra prædefinerede PDF filer. Dette gøres i henhold til kravspecifikationen. Der skal udvikles en algoritme, der samler en liste over de sider der skal udvælges. Dette gøres ud fra to lister, henholdsvis valgte tags og tags der er blevet detekteret af trackeren. Filstruktur Dette afsnit omhandler den planlagte filstruktur i Online Marketing modulet. Figur 4 viser et overblik over filstrukturen i designet. Massive pile viser at filerne er i samme mappe, og stiplede linjer viser at filen afhænger af en fil i en anden mappe. En fil der har en massiv pil til en anden fil, viser at den linker til denne eller inkluderer den. Side 20

Admin Figure 4 Filstruktur for online markedsføring Edit.php fungerer som beskrevet i administrationsafsnittet i denne sektion. Popup_tags viser en liste over hjemmesidens tags. Her kan man vælge at oprette et nyt, ændre navnet på- eller slette et eksisterende. Listpages er ligesom edit siden, men med en liste over sider i stedet for PDF filer. Her kan man markere et antal sider og tilføje et tag til dem. Siderne kan have flere tags. Popup_setupom.php indeholder grundopsætning for online marketing modulet. Dvs. forside, bagside samt antal sider. Side 21

Order_Brochure Show.php er den side der bliver vist når en website administrator laver en side til brochure bestilling. Den skal vise en liste over mulige tags, som man kan tilvælge og bestille brochuren. Om_functions indeholder funktioner til at udvælge sider der skal genereres ved bestilling af brochure. Funktionen get_omarray(selectedtags) returnerer en liste med PDF id er på de sider der skal skrives i brochuren. Selectedtags er de tags brugeren valgte da han/hun bestilte brochuren. Tracker Om_include.php er den fil der skal inkluderes i systemets index fil. Den sætter tags tilsvarende til de sider brugeren har besøgt ind i et array som en sessionsvariabel. Tags er repræsenteret ved at array, med tagid som indeks og antal besøg som værdi. Pdf/engine Om_generate_brochure opretter PDF objektet, og fungerer generelt på samme måde som beskrevet i PDF afsnittet. Forskellen er, at her skal der oprettes en side pr. PDF der bliver udvalgt af get_omarray(). Den generede liste køres igennem, og for hver fil køres PDF funktionerne, og boksene bliver tilføjet til siden. I stedet for at gemme PDF filen, bliver den leveret direkte som download til brugeren. Om_generate_brochure ligger i PDF modulets mappe, fordi det generelt set bruger funktionalitet fra dette modul. Side 22

Database I dette afsnit bliver designet af databasen forklaret. Følgende diagram viser relationerne mellem de forskellige tabeller. Databasediagrammet dækker begge moduler, da de har relationer imellem hinanden. Bemært at siteid refererer til siteid i systemets Structure tabel, som ikke er med i diagrammet. pdf_documents online_marketing om_pdfsintags PK pdfid siteid tagid obligatory priority 0..1 1 PK id siteid name xml creationdate design papersize 1 0..1 PK siteid pagesize numpages frontpage backpage * 1 PK om_tags id * * om_pagesintags PK PK pageid tagid siteid name siteid Figure 5 Side 23

Normalisering Databasen er normaliseret til tredje normalform (3NF). For at være dette, skal den først overholde kravene for 1NF og 2NF. Databasen er normaliseret til første normalform, da alle elementer kan defineres entydigt ud fra en nøgle. Man kan argumentere for om XML sætningen i en database opfylder dette krav, da der er en mængde data i et enkelt felt. I denne opgave vælger jeg at se XML delen som ét element, da det som helhed skal bruges af systemet. Databasen er normaliseret til anden normalform, da hvert ikke-nøgle element er afhængigt af nøglen. I den tabel der bruger sammensatte nøgler (om_pagesintags), kan man kun finde frem til et element ved at bruge hele den sammensatte nøgle. Databasen er normaliseret til tredje normalform, da hvert ikke-nøgle element KUN er afhængigt af primærnøglen. Dette vil sige at man ikke kan finde frem til noget element i databasen ved at søge på et felt som ikke er en nøgleværdi. Side 24

Beskrivelse af Tabeller Alle tabellerne indeholder et siteid felt. Siteid er det id systemet har knyttet til hvert website. Dette fortæller systemet hvilket website den givne række skal associeres med. Pdf_documents Pdf_documents beskriver alle PDF dokumenterne for alle sites. Hvert af disse indeholder et navn, en XML struktur, der beskriver indholdet, en creationdate, der beskriver hvornår det er oprettet, et design (der ikke bruges i denne rapport, men som skal bruges på et senere tidspunkt) og en papirstørrelse. Relationen til CAS systemet er, Structure 1 - * pdf_documents. Online_marketing Denne tabel beskriver opsætningen af Online Marketing modulet for det pågældende site (siteid). Da siteid er et entydigt id, er det ikke nødvendigt at give Online Marketing et selvstændigt id. Her findes information om forside, bagside, papirstørrelse og sideantal. Bemærk at papirstørrelse ikke bliver dækket i denne rapport, men er der til fremtidig brug. Frontpage og Backpage refererer til id i PDF documents. Om_tags Om_tags beskriver de emner der er oprettet i systemet til det pågældende site (hvert website har sine egne tags). Disse er defineret ved et tagid. Om_pdfsintags Denne tabel beskriver tilknytningen mellem PDF dokumenter og tags for det pågældende site. Desuden indeholder den også informationer om hvorvidt det er en obligatorisk fil, og filens prioritet. Der kan kun være et tag pr PDF. Om_pagesintags Denne tabel er holder styr på hvilke tags der er tilknyttet hvilke sider. Der kan være et vilkårligt antal tags pr side. Side 25

7. Implementation I dette afsnit vil produktet af dette projekt blive beskrevet. Løsningen er udviklet i PHP, da det er det sprog resten af systemet er udviklet i, og det derfor er et krav for at serveren kan forstå modulerne. Til kompilering af PDF filer, er benyttet det gratis FPDF bibliotek (fpdf.org). I koden er benyttet nogle funktioner, som er en del af CAS systemet. Brugen af disse funktioner vil blive beskrevet, men jeg vil ikke gå i dybden med hvordan de teknisk fungerer. I hver fil er der inkluderet en række system filer. Disse virker måske ikke nødvendige umiddelbart, men skal være der for at systemet virker. F.eks. kan sitesec.php include, som tester om man har administrator adgang til siden ikke fungere uden at inkludere database.php også. Dette kan virke klodset, men er en del af CAS systemet, og derfor ude af mine hænder. Jeg vil ikke komme ind på hvad hver af disse inkluderede filer gør, men i de fleste tilfælde er det selvforklarende. Clik-a-Site Funktioner _( string ) Denne funktion bruger systemet for at skrive til hjemmesiden. Det er i princippet en videreudvikling af print() som benytter sidens design, og desuden kan oversætte sætninger til andre sprog hvis dette ønskes. bs($titel, $overskrift) Denne funktion laver en såkaldt Big Select. Dette er en liste hvor hver linje har en checkbox. Hvis der klikkes på en submit knap, genindlæses siden, hvor indholdet af de afkrydsede linjer bliver videresendt som $bsid. Bs_head($overskrifter[]) Navne til de forskellige data på linjerne. Som f.eks Navn id Eksempel 12 Bs_line($bsid, $data) Printer en linje information ud med en checkbox i venstre side. $data er en liste af strenge, som stemmer overens med overskriterne for bs_head(). Bs_action($title,$action), bs_popup($title, $url), bs_link($title, $url), bs_select($title, $name, $tags, $selected) Side 26