Coma - Sovellusprojekti
Tietotekniikan Sovellusprojekti
Sovellussuunnitelma 1.0
21.4.2004
JYVÄSKYLÄN YLIOPISTO
TIETOTEKNIIKAN LAITOS
Tekijät: Hanna Alm, Kari Arkko, Pentti Nakari, Lassi Paavolainen
Työn nimi: Sovellussuunnitelma
Työ: Coma-Sovellusprojekti
Sivumäärä: 45
Tilaaja: Jyväskylän yliopisto, tietotekniikan laitos
Tiivistelmä: Tämä
dokumentti on Coma-projektin Sovellussuunnitelma, jossa kuvataan toteutettavien
sovelluksien arkkitehtuuria ja käyttöliittymää. Dokumenttiin on kuvattu
projektiin liittyvien sovelluksien ja tietokannan tekninen toteutus.
Avainsanat: ECCOMAS2004,
käyttöliittymä, proceedings, sekvenssikaavio
Versiohistoria
Versio |
Pvm |
Kuvaus |
Tekijä |
0.1 |
19.02.2004 |
Rakenteen
hahmottaminen |
PN, KA |
0.2 |
16.03.2004 |
v0.1 Sisältöä |
KA, HA |
0.3 |
18.03.2004 |
v0.2 Tietokanta englanniksi, julkaisun sivurakenne lisätty, sisältöä, hakemistorakenteen generointia |
HA, KA, LP |
0.4 |
24.03.2004 |
v0.3 dokumentin rakenteen korjaus, sisältöä |
HA, LP |
0.5 |
26.03.2004 |
v0.4 kirjoitusasu |
HA |
0.6 |
29.03.2004 |
v0.5 sisältöä luvut 4, 6 ja 7 |
KA, LP |
0.7 |
02.04.2004 |
v0.6 oikeinkirjoitusta, kokouksessa esille tulleet korjausehdotukset, tietokannan päivitys, luvun 7 päivitystä |
KA, HA |
0.8 |
05.04.2004 |
v0.7 lisätty template lukuun 7, sisältö lukuun 5.2 ja 8.2 |
LP, PN, HA, KA |
0.9 |
07.04.2004 |
v0.8 kokouksessa esille tulleet korjausehdotukset |
HA |
0.10 |
13.04.2004 |
v0.9 viimeistely |
KA, LP, HA |
1.0 |
21.04.2004 |
hyväksytty |
HA |
Tekijät
HA – Hanna Alm
KA – Kari Arkko
PN – Pentti
Nakari
LP – Lassi
Paavolainen
Coma-projekti
Projektiryhmä: Hanna Alm haalm@cc.jyu.fi
Kari
Arkko ktarkko@cc.jyu.fi
Pentti
Nakari pjen@cc.jyu.fi
Lassi
Paavolainen lopaavol@cc.jyu.fi
Tilaaja: Jyväskylän yliopisto, Tietotekniikan laitos
Kirsi
Majava majkir@mit.jyu.fi
Pekka
Neittaanmäki pn@mit.jyu.fi
Tuomo
Rossi tro@mit.jyu.fi
Vastaava ohjaaja: Markus
Inkeroinen marink@mit.jyu.fi
Tekninen ohjaaja: Tero
Toivonen tero.toivonen@cc.jyu.fi
Visuaalinen konsultti: Jaana
Rannanpää jaelrann@cc.jyu.fi
Käytettävyyskonsultti: Katja Kaario kaario@mit.jyu.fi
Työtila: Huone AgC 223.4, p. 014-260 4966
Kotisivu: http://sovellusprojektit.it.jyu.fi/coma/
Sähköposti: coma@korppi.jyu.fi
Laitteet: Neljä PC-konetta, joissa kahdessa on käyttöjärjestelmänä Windows XP professional, ja kahdessa Linux.
Tiivistelmä: Coma-projekti on Jyväskylän yliopiston tietotekniikan laitoksella kevään 2004 aikana toteutettava Sovellusprojekti. Coma-projekti suunnittelee ja toteuttaa ECCOMAS2004-proceedingsin CD-ROM-muotoisena sekä yleiskäyttöisen sovelluksen konferenssi-proceedingsien tekemiseen.
Sisällys
3.2. Hakemistorakenteen
parseroiva skripti
3.4. Kokoomajulkaisun
generoiva sovellus
5. Hakemistorakenteen
parseroiva skripti
5.1. Hakemistorakenteesta
tietokantaan
5.2. Tietokannasta
hakemistorakenteeseen
6.1. Käyttäjien
hallinta ja tunnistus
6.2.1. Aihealueet
ja sessiotyypit
6.2.3. Artikkeleiden
liittäminen sessioihin
7. Kokoomajulkaisun
generoiva sovellus
7.1. Hakemistorakenteen
generointi
7.2.1. Conference
Mainpage -sivu
7.2.2. General Information -sivu(t)
7.2.3. Proceedings Mainpage -sivu
Taulukko 2. Parametrit skripteille.
Taulu 11.
Author relation-table.
Taulu 12.
Present relation-table.
Taulu 13.
Associate relation-table.
Taulu 14.
Organizer relation-table.
Kuva
1. Projektin tuottama kokonaisuus.
Kuva 2. Tietokannan ER-kaavio.
Kuva 3. Käyttäjän tunnistus sivu.
Kuva 4. Järjestelijän käyttöliittymän etusivu.
Kuva 7. Articles in Sessions -sivu.
Kuva 13. Kokoomajulkaisun generoivan sovelluksen generoima
hakemistorakenne.
Kuva 14. Sovelluksen generoima sivurakenne.
Liite 1. Kokoomajulkaisun generoivan sovelluksen
sekvenssikaavio.
Liite 2. main.cgi-pääsivun ja
topics_or_sessiotypes.pm-moduulin välinen sekvenssikaavio.
Liite 3. main.cgi-pääsivun ja session.pm-moduulin välinen sekvenssikaavio.
Liite 4. main.cgi-pääsivun ja disk.pm-moduulin välinen sekvenssikaavio.
Liite 5. main.cgi-pääsivun ja partition.pm-moduulin
välinen sekvenssikaavio.
Coma-projekti toteuttaa kevään 2004 aikana Jyväskylässä 24–28.7
järjestettävään ECCOMAS2004 (European Congress on Computational Methods in
Applied Sciences and Engineering) -konferenssiin liittyvän kokoomajulkaisun eli
proceedingsin CD-ROM-muotoisena. Lisäksi projektin on tarkoitus luoda
konferenssisovellus, jota voidaan käyttää tulevaisuudessa
konferenssi-proceedingsien tekemisessä. CD-ROM-proceedingsin on valmistuttava
viimeistään heinäkuuhun mennessä, jotta se voidaan jakaa konferenssin aikana
siihen osallistuville painettavan tiivistelmäjulkaisun välissä.
Projekti on aloitettu tilaajan tarpeesta saada kesän ECCOMAS2004-konferenssin kokoomajulkaisu eli proceedings CD-ROM-muotoisena. Samalla on mietitty voisiko projektin yhteydessä tehdä yleiskäyttöisen sovelluksen, jonka avulla proceedingsit voitaisiin luoda myös tulevaisuudessa järjestettävistä konferens-seista ja tapahtumista melko helposti. Tämän takia projektiryhmältä on tilattu ECCOMAS2004-konferenssin CD-ROM-proceedings sekä konferenssisovellus.
Tässä dokumentissa kuvataan projektin vaatimusmäärittelyssä [1]
määriteltyjen sovelluksien ominaisuuksien teknisen toteutuksen yksityiskohtia.
Sovellussuunnitelman luvussa 2 käydään läpi projektiin liittyviä oleellisia
termejä. Luvussa 3 luodaan yleiskatsaus projektin tuottamiin sovelluksiin. Luku
4 käsittää tietokannan rakenteen ja kenttien tyypit. Projektin tuottamien
sovelluksien sisältämiä toiminnallisia osia käsitellään luvuissa 5, 6 ja 7.
Projektin käyttämiä ohjelmakoodin kommentointitapoja selvitetään luvussa 8 ja
sovelluksien testauksesta mainitaan luvussa 9.
Luvussa
esitellään projektin kannalta keskeisiä termejä.
CSS Cascading Style Sheets, menetelmä ja kieli HTML-dokumenttien ulkoasun määrittelyyn niin, että ulkoasu ja dokumenttien sisältö voidaan pitää erillään toisistaan. [5]
ECCOMAS European Community on Computational Methods in Applied Sciences.
HTML HyperText
Markup Language, SGML-pohjainen kuvauskieli hypertekstidokumenttien laatimiseen. [4]
PDF Portable
document format, dokumenttimuoto joka on helppo siirtää eri
koneympäristöjen välillä. [4]
Konferenssisovellukseen liittyviä termejä
http HyperText Transfer Protocol, protokolla WWW-asiakkaan ja -palvelimen
keskinäiseen viestimiseen. [4]
Perl Practical
Extraction and Report Language, ajettaessa käännettävä vapaa
ohjelmointikieli, joka sopii teksti-tiedostojen tiedonhakuun, käsittelyyn ja
raportointiin. [4]
PostgreSQL Avoin relaatiotietokantapalvelin.
SQL Structured
Query Language, standardoitu kieli tietokantojen käsittelyyn. [5]
Template Sivumalli,
WWW-ohjelmoinnin perustekniikka jolla saadaan ulkoasuun yhtenäinen rakenne. [6]
Tämä luku kuvaa yleisesti toteutettavia sovelluksia. Projektissa
suunnitellaan ja toteutetaan sovelluksien käyttöön tietokanta,
ECCOMAS2004-konferenssin hakemistorakenteen ja tietokannan välille tietojen
siirtosovellus, konferenssijulkaisun generoiva sovellus sekä käyttöliittymä
konferenssin hallintaan. Projektin tuottamaa kokonaisuutta on kuvattu kuvassa, Kuva 1.
Kuva 1. Projektin tuottama kokonaisuus.
Tietokanta pitää sisällään kaiken
konferenssiin liittyvän tiedon. Tietokantaan on tallennettu tiedot
artikkeleista, eri aihealueista, sessiotyypeistä sekä sessioista. Lisäksi
tietokannassa on eri käyttäjiin liittyvät tiedot sekä kokoomajulkaisun
levyjako.
Datan siirtäminen nykyisestä hakemistorakenteesta tietokantaan ja takaisin
toteutetaan skriptien avulla. Sovellus tarkistaa ja korjaa siirrettävän datan
erikoismerkkien ja välilyöntien varalta. Ratkaisu on väliaikainen ja käytetään
vain ECCOMAS2004-konferenssin yhteydessä. Tulevien konferenssien data kerätään
suoraan tietokantaan.
Käyttöliittymän kautta hallitaan konferenssin aihealueiden, sessioiden,
artikkelien ja muiden oleellisten tietojen syöttöä ja muokkausta. Levyjaon teko
ja levyjen luominen tapahtuu käyttöliittymän kautta. Samalla voidaan valita
levyille tuleva julkaisun ulkoasu.
Käyttöliittymällä on useita eri käyttäjäryhmiä, jotka omaavat eri
oikeuksia. Käyttäjäryhmiä on hahmoteltuna viisi; Administrator, Organizer,
Contact person, Reviewer ja Author. Näistä ainoastaan Author-ryhmään
kuuluvat eivät käytä käyttöliittymää.
Sovellus generoi CD-ROM-levy(i)lle tulevan hakemistorakenteen tietokannan
tiedoista. Hakemistorakenteeseen jaotellaan käyttöliittymältä annetun levyjaon
mukaisesti artikkelit omiin hakemistoihinsa. Artikkeleiden lisäksi hakemistoon
generoituu HTML-sivut, joissa on artikkelien selaukseen tarvittavat tiedot.
Tässä luvussa kuvataan projektin sovelluksiin liittyvä tietokanta, sen
sisältämät taulut, taulujen väliset suhteet, kentät ja kenttien tyypit.
Tietokantapalvelimeksi on valittu PostgreSQL. Se on ominaisuuksiltaan
parhaiten projektin käyttöön sopiva avoin tietokantapalvelin. Tietokanta
luodaan käyttämällä SQL-lauseita.
Kuvassa, Kuva 2, on
esitetty tietokannan ER-kaavio. Kaaviosta selviää tietokannan taulut 1-10,
niiden kentät sekä taulujen väliset suhteet.
Kuva 2. Tietokannan ER-kaavio.
Tässä luvussa kuvataan tietokannan
tauluja.
Property |
Datatype |
Mandatory |
Default |
Limits |
SessiontypeID |
Serial |
Yes |
|
Every Sessiontype has to have Unique ID |
Title |
Text |
Yes |
|
|
Collecting_page |
Text |
|
|
|
Serial_number |
Integer |
Yes |
|
|
Taulu 1. Sessiontype-table.
Property |
Datatype |
Mandatory |
Default |
Limits |
SessionID |
Serial |
Yes |
|
Every Session has to have Unique ID |
Title |
Text |
Yes |
|
|
Start |
Timestamp |
|
|
|
Finish |
Timestamp |
|
|
|
Room |
Text |
|
|
|
Type |
Integer |
|
|
Only values on Sessiontype-table SessiontypeID-field will do here.
|
Belongs |
Integer |
|
|
Only values on Schedule-table ScheduleID-field will do here.
|
Chairman |
Integer |
|
|
Only values on Users-table UserID-field will do here.
|
Taulu 2. Session-table.
Property |
Datatype |
Mandatory |
Default |
Limits |
TopicID
|
Serial |
Yes |
|
Every Topic has to have Unique ID |
Title |
Text |
Yes |
|
|
Serial_number |
Integer |
Yes |
|
|
Taulu 3. Topic-table.
Property |
Datatype |
Mandatory |
Default |
Limits |
ArticleID
|
Integer |
Yes |
|
Every Article has to have Unique ID |
Abstract |
Text |
|
|
|
Title |
Text |
Yes |
|
|
On_topic |
Integer |
Yes |
|
Only values on Topic-table TopicID-field will do here.
|
Included_in |
Integer |
Yes |
|
Only values on Sessiontype-table SessiontypeID-field will do here. (UPDATE CASCADE), (DELETE RESTRICT) |
Approved |
Boolean |
|
FALSE |
|
Article |
Text |
|
|
If approved is True (Reference) |
Size |
Integer |
|
|
|
Duration |
Time |
|
|
|
Comments |
Text |
|
|
|
Running_number |
Integer |
|
|
Can’t be same as any other article on
session |
Presented_in |
Integer |
|
|
Only values on Session-table SessionID-field will do here.
|
Belongs_in |
Integer |
|
|
Only values on Disk-table Disknumber-field will do here.
|
Contact |
Integer |
|
|
Only values on Users-table UserID-field will do here.
|
Taulu 4. Article-table.
Property |
Datatype |
Mandatory |
Default |
Limits |
UserID
|
Integer |
Yes |
|
Every User has to have Unique ID |
First_name |
Text |
Yes |
|
|
Last_name |
Text |
Yes |
|
|
Organisation |
Text |
Yes |
|
|
Country |
Text |
Yes |
|
|
Email |
Text |
Yes |
|
|
Department |
Text |
|
|
|
Phone_number |
Text |
|
|
|
Fax_number |
Text |
|
|
|
Street_address |
Text |
|
|
|
Postal_code_City |
Text |
|
|
|
Username
|
Text |
|
NULL |
Every User has to have Unique Username |
Password |
Text |
|
NULL |
|
Belongs_to |
Integer |
|
|
Only values on Usergroup-table GroupID-field will do here.
|
Taulu 5. Users-table.
Property |
Datatype |
Mandatory |
Default |
Limits |
Disknumber
|
Serial |
Yes |
|
Every Disk has to have Unique Disknumber |
Name
|
Text |
Yes |
|
|
Appearance |
Text |
Yes |
|
|
Taulu 6. Disk-table.
Property |
Datatype |
Mandatory |
Default |
Limits |
KeywordID
|
Serial |
Yes |
|
Every Keyword has to have Unique ID |
Keyword |
Text |
Yes |
|
|
Taulu 7. Keyword-table.
Property |
Datatype |
Mandatory |
Default |
Limits |
GroupID
|
Serial |
Yes |
|
Every Usergroup has to have Unique ID |
Title |
Text |
Yes |
|
|
Rights |
Text |
Yes |
|
|
Taulu 8. Usergroup-table.
Property |
Datatype |
Mandatory |
Default |
Limits |
HTTPID
|
Text |
Yes |
|
Every HTTPsession has to have Unique ID |
UserID |
Integer |
Yes |
|
Only values on Users-table UserID-field will do here.
|
Taulu 9. HTTPsessions-table.
Property |
Datatype |
Mandatory |
Default |
Limits |
ScheduleID
|
Serial |
Yes |
|
Every part of schedule has to have Unique
ID |
Title |
Text |
Yes |
|
|
Start |
Timestamp |
Yes |
|
|
Finish |
Timestamp |
Yes |
|
|
Taulu 10. Schedule-table.
Property |
Datatype |
Mandatory |
Default |
Limits |
UserID
|
Integer |
Yes |
|
Only values on Users-table UserID-field will do here.
|
Article
|
Integer |
Yes |
|
Only values on Article-table ArticleID-field will do here.
|
Taulu 11. Author relation-table.
Property |
Datatype |
Mandatory |
Default |
Limits |
UserID
|
Integer |
Yes |
|
Only values on Users-table UserID-field will do here. (UPDATE CASCADE), (DELETE RESTRICT) |
Article
|
Integer |
Yes |
|
Only values on Article-table ArticleID-field will do here. (UPDATE CASCADE), (DELETE RESTRICT) |
Taulu 12. Present relation-table.
Property |
Datatype |
Mandatory |
Default |
Limits |
Keyword
|
Integer |
Yes |
|
Only values on Keyword-table KeywordID-field will do here. (UPDATE CASCADE), (DELETE RESTRICT) |
Article
|
Integer |
Yes |
|
Only values on Article-table ArticleID-field will do here.
|
Taulu 13. Associate relation-table.
Property |
Datatype |
Mandatory |
Default |
Limits |
UserID
|
Integer |
Yes |
|
Only values on Users-table UserID-field will do here.
|
Session
|
Integer |
Yes |
|
Only values on Session-table SessionID-field will do here.
|
Taulu 14. Organizer relation-table.
Tässä luvussa kuvataan tietokannan taulujen välisiä suhteita.
1. Author – Kirjoittaa
Artikkelilla täytyy olla yksi tai useampi käyttäjä, jotka ovat
kirjoittaneet artikkelin. Käyttäjän ei tarvitse välttämättä kirjoittaa yhtään
artikkelia, tällainen käyttäjä voi olla esimerkiksi ylläpitäjä.
Artikkeli sisältyy yhteen sessiotyyppiin ja sessiotyyppiin voi sisältyä
nolla tai useampi artikkeli.
Artikkeliin liittyy nolla tai useampi avainsana. Avainsana voi liittyä
yhteen tai useampaan artikkeliin.
Artikkeli esitetään yhdessä sessiossa tai sitten ei ollenkaan. Sessiossa
voidaan esittää nolla tai useampi artikkeli.
Artikkeli on yhdestä aihealueesta ja yhdessä aihealueessa voi olla nolla
tai useampi artikkeli.
Artikkeli kuuluu yhdelle levylle tai ei millekään levylle. Levylle kuuluu
nolla tai useampi artikkeli.
Käyttäjä voi kuulua yhteen käyttäjäryhmään. Ryhmään voi kuulua nolla tai
useampia käyttäjiä.
Käyttäjä voi esittää yhden tai useita artikkeleita. Artikkelin voi esittää
yksi tai useampi käyttäjä.
9. Type – Tyyppiä
Sessio voi olla vain yhtä sessiotyyppiä. Yhdestä sessiotyypistä voi olla
monta sessiota.
10. User – Käyttäjä
Yhdellä HTTP-istunnolla voi olla vain yksi käyttäjä. Yhdellä käyttäjällä
voi olla nolla tai useampi HTTP-istunto.
11. Belongs – Kuuluu
Yksi sessio kuuluu yhteen aikatauluun. Yhteen aikatauluun voi kuulua nolla
tai useampi sessio.
12. Chairman – Puheenjohtaja
Sessiolla voi olla nolla tai yksi käyttäjä puheenjohtajana. Käyttäjä voi
olla puheenjohtajana nollassa tai useassa sessiossa.
13. Organizer – Järjestelijä
Sessiolla voi olla yksi tai useampi käyttäjä järjestelijänä, toimii vain
ulkoistettujen sessioiden osalta. Käyttäjä voi olla järjestelijänä nollassa tai
useassa sessiossa.
14. Contact – Yhteyshenkilö
Artikkelilla on vain yksi
yhteyshenkilö, mutta henkilö voi olla yhteyshenkilönä monessa artikkelissa.
Ylläpitäjä luo tietokannan komennolla:
createdb -U
username databasename.
Ylläpitäjä luo kuvan, Kuva 2,
mukaisen tietokannan taulut komennolla:
psql -U
username -f path\comadb.sql databasename.
Tiedostossa comadb.sql sijaitsevat tietokannan luomiseen
käytettävät SQL-lauseet.
Lopuksi ylläpitäjän täytyy luoda tiedosto conn.ini, jossa ovat seuraavat tiedot:
databasename= #
Tietokannan nimi, johon otetaan yhteys käyttöliittymällä.
host= #
Palvelimen nimi
port= #
Portti
user= #
Käyttäjätunnus
password= #
Salasana
Tiedostossa on tieto=arvo pareja. Esimerkkitiedosto:
databasename=comadb
host=localhost
port=1234
user=coma
password=f83E3e
Database.pm-moduuli olettaa että conn.ini-tiedosto on samassa hakemistossa.
Luku käsittelee hakemistorakenteen parseroivan skriptin toimintaa.
Parseri käy läpi artikkelihakemistot sisältävän hakemistorakenteen ja
käsittelee kaikki saved_[0-9]+-muotoa olevat alihakemistot, jotka eivät
ole tyhjiä.
Jos alihakemistosta löytyy finish.txt-tiedosto, sen sisältö luetaan. Mikäli
artikkeli on yhteyshenkilön hyväksymä (tiedoston sisältö accepted=1), luetaan myös topic.txt-tiedosto jos se on olemassa. Jos
ensimmäinen author-tiedosto (author_1.txt) löytyy, etsitään silmukalla myös
mahdolliset muut author-tiedostot (author_n.txt saakka). Puuttuvista tiedostoista tulostetaan virheilmoitus ajon aikana
terminaaliin.
Artikkelin ja kirjoittajien ID-numerot generoidaan parserilla, lopuksi
ID-numeroiden automaattiset sekvenssit asetetaan alkamaan seuraavasta
numerosta, jolloin jälkikäteen lisätyt artikkelit ja kirjoittajat saavat
ID-numeron automaattisesti.
Tiedoissa olevat erikoismerkit, isoilla kirjaimilla kirjoitetut nimet,
TeX-koodit ja muut poikkeamat korjataan. Tämän jälkeen tehdään vielä muita
tarkistuksia ja lisätään arvot tietokantaan.
Tietokannassa
olevista tiedoista luodaan hakemistorakenne levylle käymällä tietokanta
järjestyksessä artikkeleittain läpi ja luomalla jokaiselle artikkelille
hakemisto. Hakemistonnimi on muotoa saved_1234 ja nimi saadaan tietokannan kentästä Article.Article. Kaikki tietokannassa mukana olevat
artikkelit ovat hyväksyttyjä, joten tähän hakemistoon luodaan tekstitiedosto finish.txt sisältönä yhdellä rivillä "accepted=1".
Artikkelin esitystiedot kirjoitetaan tekstitiedostoon topic.txt. Tiedosto sisältää rivit, joiden arvot saadaan artikkelin tietojen mukaisesti kentistä Article.On_topic, Article.Included_in ja Article.Title, avaimia vastaavat arvot saadaan tauluista Sessiontype ja Topics. Alla esimerkki:
presentationmode=contributedpaper
contributedpapertopic=1.
Computational Solid and Structural Mechanics
abstracttitle=Otsikko
Artikkelin
esittäjien ja muiden kirjoittajien tiedot löytyvät tietokannasta Article.Write ja Article.Present-tauluista artikkelin ArticleID:n avulla. Kirjoittajat tallennetaan UserID:n mukaisessa järjestyksessä tiedostoihin author_1.txt ... author_n.txt. Mikäli kyseessä on esittäjä,
kirjoitetaan author_1.txt-tiedoston ensimmäinen rivi muodossa
"presentingauthor_1=yes", muussa tapauksessa "presentingauthor_1=no". Tiedot tallentuvat seuraavassa
muodossa:
presentingauthor_1=yes
lastname_1=Meikäläinen
firstname_1=Matti
institution_1=University
of Technology of Mattila
country_1=France
email_1=matti.meika@dd.fi
department_1=
street_1=12 Meikäläisen katu 3 c 1234
postcode_1=1234 Mattila
phonenumber_1=1234567890
faxnumber_1=11234567890
Mikäli
tieto puuttuu tietokannasta, kirjoitetaan pelkkä avainsana. Avainsanojen
perässä oleva numero vastaa tiedostonimen perässä olevaa numeroa (author_1.txt tiedostossa presentingauthor_1 jne.).
Luvussa käsitellään käyttöliittymän toteutusta käyttäjien ja konferenssin
hallinnan osalta.
Artikkelin yhteyshenkilö, Contact person, syöttää käyttäjätunnuksen
ja sähköpostiosoitteen, jonka jälkeen yhteyshenkilölle lähetetään salasana
sovellukseen. Muille käyttäjille salasanan lähettää järjestelijä, Organizer.
Käyttäjäryhmän perusteella valitaan mitkä toiminnot käyttäjälle annetaan. Käyttäjäryhmiä ovat Administrator, Organizer, Contact
person, Reviewer ja Author. Jokaiselle käyttäjäryhmälle on oma
käyttöliittymänsä.
Käyttäjän tunnistus sivulla, Kuva
3, käyttäjä antaa tunnuksensa ja salasanansa.
Painamalla Log in -painiketta käyttäjä pääsee käyttöliittymän etusivulle
edellyttäen, että käyttäjä tunnistetaan tunnuksen ja salasanan perusteella.
Käyttäjän selaimelle lähetetään eväste, jolla käyttäjä tunnistetaan
myöhemmin saman istunnon aikana. Jos käyttäjää ei tunnisteta, niin palautetaan
virheestä viesti ja kysytään uudelleen käyttäjä tunnusta ja salasanaa.
Käyttäjän selaimen tulee tukea evästeitä.
Kuva 3. Käyttäjän tunnistus sivu.
Järjestelijän käyttöliittymän etusivulta, Kuva 4,
löytyvät linkit Topic, Sessiontype,
Session, Schedule, Layout, Disks, Move Article ja Articles and Sessions.
Järjestelijän käyttöliittymä main.cgi keskustelee moduuleiden kanssa, jotka
palauttavat HTML-koodia. main.cgi luo perusrakenteen, kuten käyttöliittymän
menun ja generoi moduuleiden avulla käyttäjän haluamat tiedot näkyviin. main.cgi tarkistaa myös käyttäjän evästeiden avulla.
Kuva 4. Järjestelijän käyttöliittymän etusivu.
Sekä Topic- että Sessiontype-sivulta
löytyvät linkit Alphabetic, Serial number, Add, Update ja Remove.
Molemmat sivut ovat saman näköisiä ja toimivat samoin, Topic-sivu on
esitettynä alla, Kuva 5 .
Topics_or_sessiontypes.pm-moduulille viedään parametrina tieto
siitä onko kyseessä aihealue vai sessiotyyppi. Aihealueen tapauksessa moduuli
hakee tietokannasta kaikki aihealueet. Moduuli generoi kuvan, Kuva 5,
mukaisen HTML-koodin.
Alphabetic- ja Serial number -painikkeilla voidaan
valita listautuuko aihealueet aakkosjärjestyksen vai järjestysnumeron
mukaisesti. Aihealueen järjestysnumero listautuu aihealueen nimen eteen
alasvetovalikossa. Valikosta voi tarvittaessa myös muuttaa järjestysnumeroa.
Kahdella aihealueella ei voi olla samaa järjestysnumeroa.
Tekstikenttään voidaan syöttää uuden aihealueen nimi ja Add-painikella se lisätään tietokantaan.
Lisäys tulee heti näkyviin. Lisättäessä tarkistetaan onko kyseinen aihealue
olemassa, jos aihealue on olemassa, huomautetaan käyttäjää ja evätään lisäys.
Sovellus antaa automaattisesti lisäyksen yhteydessä aihealueelle seuraavan
vapaana olevan järjestysnumeron.
Radionappulalla voidaan valita muutettava aihealue ja tekstikenttään
syötetään teksti, jolla korvataan aikaisempi aihealueen nimi. Muokkaus tulee
voimaan Update-painikeella.
Tarkistetaan onko kyseiseen aihealueeseen
viitteitä, jos on niin huomautetaan käyttäjää ja kysytään haluaako
käyttäjä että muutos tulee voimaan.
Valintanappulalla valitaan poistettavat aihealueet ja Remove-painikeella valitut aihealueet poistetaan. Tarkistetaan onko
poistettaviin aihealueisiin viitteitä, jos on niin huomautetaan käyttäjää ja
evätään poisto. main.cgi-pääsivun ja Topics_or_sessiontypes.pm-moduulin välinen sekvenssikaavio liitteenä, Liite 2.
Session-sivulle, Kuva 6, listautuu jo luodut
sessiot, niiden esityspaikka, päivä, alku- ja loppuaika sekä sessiotyyppi.
Lisäksi sivulla on Add-, Update- ja Remove-painikkeet.
Session.pm-moduuli hakee tietokannasta sessiot ja
niiden tiedot sekä kaikki sessiotyypit. Moduuli generoi kuvan, Kuva 6,
mukaisen HTML-koodin ja palauttaa sen. Moduuli osaa myös lisätä, päivittää ja
poistaa sessioita.
Sessio voidaan lisätä syöttämällä sivun kenttiin tarvittavat tiedot ja
painamalla Add-painiketta. Sessiota ei voi lisätä jos jollakin toisella
sessiolla on sama esityspaikka, päivä ja aika. Pakolliset tiedot ovat session
nimi ja sessiontyyppi. Moduuli tarkistaa onko annetut tiedot oikeassa muodossa.
Jos tiedot eivät ole oikeassa muodossa, käyttäjää huomautetaan ja ilmoitetaan
oikea muoto. Muut tiedot tallennetaan tietokantaan.
Session muokkaus onnistuu valitsemalla muokattava sessio
radiovalintanappulalla sivun listauksesta ja täyttämällä kenttien tiedot
uudelleen. Tämän jälkeen tiedot päivittyy Update-painikkeella.
Session voi poistaa valitsemalla poistettava sessio valintanappulalla sivun
listauksesta ja painamalla Remove-painiketta. Tarkistetaan onko
poistettavaan sessioon viitteitä, jos on niin huomautetaan käyttäjää ja evätään
poisto. main.cgi-pääsivun ja Session.pm-moduulin välinen sekvenssikaavio liitteenä, Liite 3.
Articles in Sessions -sivulta, Kuva 7,
voi valita sessiotyypin nimensä mukaisella painikkeella.
Sivun alalaitaan listautuu valittuun sessiotyyppiin kuuluvat artikkelit ja
sessiot.
Artikkelin liittäminen tiettyyn sessioon tapahtuu alasvetovalikolla ja
jokaisen artikkelin pitää kuulua johonkin sessioon. Sivu päivittyy Update-painikkeella.
Kuva 7.
Articles in Sessions -sivu.
Articles_in_sessions.pm-moduulille viedään parametrina tieto siitä mihin sessiotyyppiin kuuluvia sessioita ja artikkeleita halutaan käsitellä. Moduuli hakee tietokannasta valitun tyyppiset artikkelit ja sessiot. Moduuli generoi ja palauttaa kuvan, Kuva 7, mukaisen HTML-koodin. Moduuli osaa myös päivittää artikkelien ja sessioiden välisiä linkkejä.
Schedule-sivulle, Kuva 8, hahmottuu sen hetkinen aikataulu. Käyttäjä voi
lisätä aikatauluun tauluja syöttämällä nimen, alkamisajan sekä loppumisajan ja
painamalla Add-painiketta.
Schedule.pm tarkistaa ettei aikatauluun tule
päällekkäisyyksiä. Päällekkäisyyksistä ilmoitetaan käyttäjälle ja evätään
lisäys.
Layout-sivulta, Kuva 9,
avautuu WWW-lomake jolla määritellään ulkoasu. Sovelluksessa tulee olemaan
valmiina muutamia vaihtoehtoja, joissa on mahdollisuus syöttää ulkoasuun
konferenssin logo. Tyylin voi valita alasvetovalikolla ja logon saa haettua Browse-painikkeella.
Tiedot päivittyvät Update-painikkeella, jonka jälkeen halutessaan tyyliä
voi muokata ja tallentaa uudella nimellä. Ulkoasun esikatselu, Preview-painike,
generoi levyille tulevat sivustot, joista nähdään levyjen ulkoasu sekä
sivustojen viemä levytila. Tyylin muokkaamisessa auttavia vinkkejä löytyy Help
with CSS -painikkeella avautuvalta sivulta.
Sivujen rakenne tehdään template-tekniikalla ja ulkoasu määritellään
CSS-tyylitiedostolla.
Disks-sivulla, Kuva 10, on
tiedot levyjaoista ja valintanappulat sekä Add
disk-, Remove disk- ja Update disk -painikkeet.
Lisäksi sivulla on Diskpartition- ja Create disks -painikkeet.
Disks.pm-moduuli hakee tietokannasta kaikkien levyjen
tiedot ja laskee niille määrättyjen artikkeleiden määrän, artikkeleiden
vaatiman levytilan, sivustojen vaatiman levytilan sekä yhteenlasketun tilan.
Moduuli generoi kuvan, Kuva 10,
mukaisen HTML-koodin ja palauttaa sen.
Remove disk -painike poistaa valitun levyn, valinta
tapahtuu checkbox-nappulalla. Tarkistetaan onko levyyn viittauksia, jos on niin
siitä ilmoitetaan käyttäjälle ja evätään poisto.
Add disk -painike lisää tekstikenttään syötetyn
levyn.
Update disk -painike muokkaa radionappulalla valitun levyn
nimen tekstikenttään annetun tekstin mukaiseksi.
Create Disks -painike luo levyjen hakemistorakenteen
tietokannan tietojen perusteella. Liitteenä, Liite 4, main.cgi-pääsivun ja Disks.pm-moduulin välinen
sekvenssikaavio.
Diskpartition-sivulla, Kuva 11, on
listaus artikkeleista tietoineen ja valintanappula, jolla valitaan levyille
tulevat artikkelit. Levyjaon nopeuttamiseksi käyttäjä voi valita levylle
tulevia artikkeleita suurempina kokonaisuuksina, aihealueen, session tai
sessiotyypin mukaan. Sivun listauksen voi päivittää Article-, Sessiontype-,
Topic- tai Session-painikkeella. Artikkeleista näytettäviä
tietoja ovat nimi, sessiotyyppi, aihealue, sessio ja artikkelin koko. Update-painikkeella
päivitetään levyjako ja Remove-painikkeella poistetaan levyjako.
Partition.pm-moduulille viedään parametrina tieto
miten artikkelit lajitellaan. Moduuli hakee tietokannasta kaikki levyt ja tekee
niille määrätyn levyjaon. Moduuli generoi kuvan, Kuva 11,
mukaisen HTML-koodin ja palauttaa sen, jos artikkelit lajitellaan
aakkosjärjetyksessä. Update-painikkeella Partition.pm-moduuli lisää tietokantaan muutetun levyjaon ja generoi sen jälkeen kuvan,
Kuva 11,
mukaisen HTML-koodin. Jos lajittelu on artikkeleittain, niin listataan kaikki
artikkelit aakkosjärjestyksessä. Jos lajittelu on valittu sessioittain,
aihealueittain tai sessiotyypeittäin, niin käyttäjä voi lisätä kaikki valittuun
lajittelutyyppiin kuuluvat artikkelit yhdellä kertaa haluamalleen levylle. main.cgi-pääsivun ja Partition.pm-moduulin välinen
sekvenssikaavio liitteenä, Liite 5.
Move Article -sivulla, Kuva 12, valitaan siirretäänkö artikkeli sessiotyypistä
tai aihealueesta toiseen.
Sivulla on listaus artikkeleista ja perässä
alasvetovalikot, joilla voi valita mihin aihealueeseen tai sessiotyyppiin
artikkeli kuuluu. Sivulla voi valita artikkeleiden listauksen joko
aakkosjärjestyksen, sessiotyypin tai aihealueen mukaan. Tekemänsä muokkauksen
saa päivitettyä Update-painikkeella.
Kokoomajulkaisun generoiva sovellus
luo konferenssin proceedings-levyjen hakemistorakenteen. Sovellus luo
jokaiselle luotavalle levylle oman hakemiston, joihin generoidaan HTML-sivut ja
kopioidaan artikkelit PDF-muodossa. Hakemistoista luodaan CD-ROM-levyjen
image-tiedostot.
Sovellus suorittaa ensin hakemistorakenteen generoinnin. Sovellus luo
käyttäjän syöttämän hakemiston alle oman alihakemiston jokaiselle levylle, ja
nimeää ne levyn nimen mukaan. Jokaisen levyn hakemistoon luodaan Conference
Mainpage -HTML-sivu nimellä index.html
sekä alihakemisto proceedings, johon tallennetaan proceedingsiin liittyvä materiaali. Proceedings-hakemiston alle luodaan hakemisto pdf, johon kopioidaan kaikki kyseiselle
levylle tulevat artikkelit. Artikkelit nimetään artikkelin id-numeron mukaan
muotoon ”#.pdf
” eli
esimerkiksi 51.pdf
. Tämän jälkeen luodaan vielä jokaista eri selausmahdollisuutta varten oma
hakemisto. Hakemistojen nimet on kuvattu luvussa 7.3.4. Kuvassa, Kuva 13, on
esitetty generoitava hakemistorakenne.
Kuva 13. Kokoomajulkaisun
generoivan sovelluksen generoima hakemistorakenne.
Hakemistorakenteen generoinnin jälkeen suoritetaan sivujen generointi.
Kuvassa, Kuva 14, on
esitetty levyille generoitava sivurakenne. Sivujen väliset linkit on esitetty
nuolina. Lisäksi jokaiselta proceedings-sivulta päästään Proceedings Mainpage -sivulle, kuvassa
nuolet on jätetty pois selkeyden säilyttämiseksi.
Kuva 14. Sovelluksen generoima sivurakenne.
Conference Mainpage
-sivu on ensimmäinen sivu, joka aukaistaan levyltä. Sivulla tulee olemaan
linkit Proceedings Mainpage -sivulle sekä General Information
–sivu(i)lle.
General Information
–sivu(t) sisältävät yleistä tietoa ECCOMAS2004-konferenssista. Sivu(i)lla on
muun muassa:
Sivut nimetään info1, info2… nimisiksi
html-tiedostoksi.
Proceedings Mainpage -sivu on proceedings-julkaisun pääsivu. Tälle
sivulle tulee linkit kaikkiin selausmahdollisuuksiin.
Article listing -sivuille toteutetaan artikkeleiden selaus
aihealueen mukaan.
Sivuille tulee kaksi palkkia, joista ensimmäinen sisältää aihealueen
valinnan ja toisesta valitaan listataanko kaikki aihealueen artikkelit vai
pelkästään tiettyyn sessiotyyppiin kuuluvat artikkelit.
Sisältöosassa on artikkelit listattu nimen mukaan aakkosjärjestykseen.
Artikkelista mainitaan myös esityssessio sekä kirjoittajat, joista esittäjä on
merkitty tähdellä. Artikkelin nimestä on linkki, josta aukeaa artikkeli
pdf-muodossa ja sessiosta on linkki kyseisen session omalle sivulle. Jossakin
kohtaa mainitaan mitä tähti kirjoittajan edessä tarkoittaa.
Article listing -sivut nimetään siten, että alkuun tulee
”article”, jonka perässä aihealueen numero ja lopuksi vielä tyypin numero tai 0
mikäli sivulla listattu kaikki artikkelit. Aihealueen ja tyypin välissä on
t-merkki erotinmerkkinä. Esimerkiksi sivu, jolla on listattu aihealueen 1
tyyppiä 3 olevat artikkelit on muotoa article1t3.html
.
Author listing -sivuille toteutetaan artikkeleiden selaus
kirjoittajan mukaan.
Sivuille tulee palkki, jossa on aakkoset lueteltuna kirjain kirjaimelta.
Kirjaimesta on linkki sivulle, jolla on listattu kaikki vastaavalla kirjaimella
alkavat artikkelien kirjoittajien sukunimet.
Sisältöosassa on kirjoittajan nimi, jonka jälkeen on lueteltuna hänen
kirjoittamansa artikkelit. Jokaisesta artikkelista on mainittu nimen lisäksi
esityssessio sekä muiden kirjoittajien nimet. Muissa kirjoittajissa on
esittäjän nimen eteen merkattu tähti, jonka merkitys kerrotaan myös sivulla.
Mikäli kyseinen kirjoittaja on itse myös esittänyt artikkelin, tähteä ei
merkitä ollenkaan. Muiden kirjoittajien mainitseminen saatetaan jättää pois.
Artikkelin nimestä on linkki, josta aukeaa artikkeli pdf-muodossa ja sessiosta
on linkki kyseisen session omalle sivulle.
Author listing -sivut nimetään siten, että alkuun tulee
”author”, jonka perään kyseinen alkukirjain. Esimerkiksi A:lla alkavien
kirjoittajien listaussivu on muotoa authorA.html
.
Schedule-sivulle toteutetaan konferenssin aikataulu, kuten
ECCOMAS2004-verkkosivuilla. Sivu toteutetaan mikäli projektiryhmällä jää aikaa.
Aikataulu esitetään taulukossa. Jokaisesta taulukon ruudusta on linkki
kyseiselle Date and Time -sivulle.
Schedule-sivu nimetään schedule.html
:ksi.
Session listing -sivuille toteutetaan sessioiden selaus aihealueen mukaan.
Sivuille tulee kaksi palkkia, joista ensimmäinen sisältää aihealueen
valinnan ja toisesta valitaan listataanko kaikki aihealueen sessiot vai vaan
tietyn tyyppiset.
Sisältöosassa sessiot on listattu aakkosjärjestyksessä nimen mukaan.
Sessiosta on esitetty nimi sekä mahdollisesti milloin se pidetään. Session
nimestä on linkki kyseisen session sivulle. Session järjestysajankohdasta on
linkki kyseiselle Date and Time -sivulle, mikäli aikataulu toteutetaan.
Session listing -sivut nimetään siten, että ensin tulee
”sessionl”, jonka perään aihealueen numero ja tyypin numero. Aihealueen ja
tyypin numerot erotetaan toisistaan t-merkillä. Mikäli listataan kaikki sessiot
piittaamatta tyypistä, niin tyypin numeroksi tulee 0. Esimerkiksi sivu, jolla
listataan aihealueen 3 kaikki sessiot on muotoa sessionl3t0.html
.
Date and Time -sivuille toteutetaan tiettyyn aikaan pidettyjen
sessioiden listaus. Sivut toteutetaan vain mikäli konferenssin aikataulu
toteutetaan julkaisuun.
Sivuilla kerrotaan mistä päivästä ja aikavälistä on kyse. Tämän jälkeen
listataan kyseiseen aikaan pidetyt sessiot. Sessiosta ilmoitetaan nimi ja
pitoaika. Session nimestä on linkki kyseisen session sivulle.
Date and Time -sivut nimetään siten, että ensin tulee ”dt”,
jonka perään päivämäärä kuusinumeroisena lukuna muodossa pp-kk-vv, ja tämän
jälkeen alku- ja loppuaika muodossa hhmm-hhmm. Esimerkiksi sivu, jolla on
listattuna kaikki sessiot, jotka on esitetty 24.07.2004 aikavälillä
12:00–15:00, on muotoa dt24-07-04-1200-1500.html
.
Session-sivulla esitetään kyseisen session tiedot.
Sessiosta on mainittu nimi sekä mahdollisesti pitoaika. Pitoajasta on
linkki kyseiselle Date and Time -sivulle, mikäli ne toteutetaan. Tämän
jälkeen on listattu session artikkelit esitysjärjestyksessä. Artikkelista on
mainittu otsikon lisäksi kirjoittajat, joista esittäjä on merkitty tähdellä.
Artikkelin otsikosta on linkki, josta aukeaa artikkeli pdf-muodossa. Jossakin
kohtaa sivua on selitys mitä tähti tarkoittaa kirjoittajien yhteydessä.
Session-sivut nimetään siten, että ensin tulee ”session”, jonka perään
kyseisen session id-numero. Esimerkiksi session 5 sivu tulee olemaan muotoa session5.html
.
Hakemistorakenteen ja HTML-sivujen generointi toteutetaan skriptien ja
template-sivujen avulla. Tarvittavia skriptejä on lueteltu seuraavassa:
article.pl
, luo
Article listing -sivut.
daati.pl
, luo Date
and time -sivut (jos ryhmä ehtii toteuttaa).generate.pl
, hallinnoi koko hakemistorakenteen luontia.proceed.pl
, luo
Proceedings Mainpage -sivun.schedule.pl
, luo Schedule-sivun
(jos ryhmä ehtii toteuttaa).
Kaikille edellä mainituille skripteille voidaan viedä samoja parametreja.
Taulukossa, Taulukko 2, on
kuvattu parametrien merkitys skripteille.
Parametri |
Kuvaus |
Ei mitään |
Luodaan
oletushakemistoon kyseinen sivu ja kaikki eri selausmahdollisuudet. |
Hakemistopolku |
Kyseinen sivu luodaan parametrin määrittämään hakemistoon kaikilla eri selausmahdollisuuksilla. |
1 |
Luodaan Article
listing -sivut. |
2 |
Luodaan Author
listing -sivut. |
3 |
Luodaan Session
listing -sivut. |
4 |
Luodaan Session-sivut. |
5 |
Luodaan Schedule-sivu. |
6 |
Luodaan Date and Time -sivut. |
Taulukko 2. Parametrit skripteille.
Eri parametreja voidaan myös yhdistää, jolloin voidaan esimerkiksi luoda
haluttuun hakemistoon proceedings-pääsivu sekä tietyt selaussivut. Tällöin on
aina määriteltävä hakemistopolku. Skriptien eri kutsumismuodot on kuvattu seuraavassa
listassa käyttäen esimerkkinä generate.pl-skriptiä:
Generoitaessa hakemistorakenne ja HTML-sivut, kutsutaan ensin generate.pl-skriptiä, jolle viedään halutut
parametrit. Tämä puolestaan kutsuu muita skriptejä ja vie niille parametreissa
tiedot hakemistopolusta sekä selausmahdollisuuksista. Liitteessä, Liite 1, on
kuvattu kokoomajulkaisun generoivan sovelluksen sekvenssikaavio.
Skriptit generoivat HTML-sivut template-tekniikkaa hyväksikäyttäen. Tällöin
skripti tuottaa itse enintään joitain linkkejä. HTML-dokumentti tehdään
erilliseen template-tiedostoon, johon lisätään tarvittaviin paikkoihin
template-tagit. Tagit korvataan skriptistä saatavilla muuttujilla lopulliseen
HTML-dokumenttiin. Näin ollen sivun rakennetta voidaan muokata ilman, että
tarvitsisi muuttaa skriptejä. Kokoomajulkaisun generoivan sovelluksen skriptit
käyttävät hyväkseen HTML::Template-modulia HTML-sivujen generointiin.
Kaikkia muita skriptejä, paitsi generate.pl, varten luodaan oma template-sivu.
Kyseiset sivut nimetään kuten skriptit, mutta .tmpl-päätteellä.
Skripti generoi Article listing -sivut parametrina tuotuun
hakemistoon käyttäen apunaan article.tmpl-tiedostoa.
Skripti hakee tietokannasta
konferenssin aihealueet sekä sessiotyypit ja tallentaa nämä omiin
taulukoihinsa. Tämän jälkeen luodaan jokaista aihealue-sessiotyyppi-yhdistelmää
varten oma sivu.
Aihealueet viedään template-tiedostolle taulukossa nimeltä topics
sekä sessiotyypit taulukossa sessiontypes. Taulukoissa on sijoitettu hajautustaulun
avaimen title perään kyseinen aihealueen tai sessiotyypin nimi.
Sessiontypes-tauluun lisätään alkuun alkio, jonka title-kentän
arvo on All.
Sisältöosaa varten haetaan tietokannasta kyseisen aihealueen ja
sessiotyypin artikkeleiden tiedot. Nämä tallennetaan omaan taulukkoonsa.
Lisäksi haetaan omiin taulukoihinsa kyseisen artikkelin kirjoittajien ja esityssession
tiedot.
Sisältöosa viedään template-tiedostolle taulukossa nimeltä articles, jonka jokainen alkio sisältää hajautustaulussa seuraavat avaimet:
Skripti generoi Author listing -sivut parametrina tuotuun
hakemistoon. Skripti luo yhtä monta HTML-sivua kuin eri kirjaimella alkavia
kirjoittajia löytyy. Generoinnissa käytetään hyväksi template-tiedostoa author.tmpl.
Skripti hakee tietokannasta kaikkien kirjoittajien nimet. Tämän jälkeen
luodaan taulukko, johon sijoitetaan kaikki löytyneet erilaiset sukunimen
alkukirjaimet aakkosjärjestyksessä. Taulukon jokaisessa alkiossa on avaimen alphabet takana kyseinen aakkonen. Kyseinen taulukko viedään template-tiedostolle
nimellä alphabets. Taulukko käydään läpi ja jokaista alkiota varten
luodaan oma HTML-sivu.
Sisältöosaa varten skripti hakee tietokannasta kirjoittajien kirjoittamat
artikkelit, näiden esityssessiot sekä artikkeleiden muut kirjoittajat. Nämä
tiedot viedään templatelle taulukossa nimeltä authors, jonka jokainen alkio sisältää seuraavat avaimet:
Skripti generoi Date and Time -sivut parametrina tuotuun hakemistoon
käyttäen apuna template-tiedostoa daati.tmpl.
Skripti hakee tietokannasta konferenssin aikataulun ja luo jokaista
aikataulun osaa varten oman HTML-sivun.
Template-tiedostolle viedään yleiset tiedot seuraavan nimisissä
muuttujissa:
start
, ajankohdan alkuaika.
Tämän lisäksi haetaan tietokannasta kyseisellä ajankohdalla esitetyt
sessiot. Sessioiden tiedot viedään template-tiedostolle taulukossa nimeltä sessions. Taulukon jokainen alkio sisältää kyseisen session nimen title-avaimen
takana.
Skripti hallinnoi koko proceedings-julkaisun luomisprosessia.
Skripti hakee ensin tietokannasta tiedot kuinka monta eri levyä luodaan.
Tämän jälkeen luodaan ensimmäiselle levylle oma alihakemisto. Kyseiseen
alihakemistoon luodaan proceedings
-hakemisto ja tähän hakemistoon edelleen
alihakemisto nimeltä pdf
, johon kopioidaan kaikki kyseiselle levylle tulevat artikkelit. Artikkelit
nimetään artikkelin id-numeron mukaan muotoon #.pdf
eli esimerkiksi 51.pdf
. Seuraavaksi luodaan vielä parametrien
perusteella hakemistot selausmahdollisuuksia varten. Seuraavassa listassa on
lueteltu hakemistot, joihin eri selausmahdollisuudet luodaan:
/proceedings/article
, hakemistoon article listing -sivut.
/proceedings/author
, hakemistoon author listing -sivut.
/proceedings/daati
, hakemistoon date and time -sivut.
/proceedings/schedule
, hakemistoon schedule-sivun.
/proceedings/session
, hakemistoon session-sivut.
/proceedings/sessionl
, hakemistoon session listing -sivut.
Lopuksi kutsutaan muita skriptejä saatujen parametrien perusteella.
Skripteille viedään parametrina edellä mainitussa listassa oleva hakemisto sekä
tieto mitä muita selausmahdollisuuksia luodaan. Ainoa skripti jota kutsutaan
parametreista välittämättä on proceed.pl
, joka luo proceedings-julkaisun pääsivun.
Skriptien kutsumisen järjestyksellä ei ole väliä.
Skripti generoi Proceedings Mainpage -sivun parametrina tuotuun
hakemistoon. Tämän lisäksi tutkitaan muut parametrit, joiden perusteella
luodaan sivulle linkit eri selausmahdollisuuksiin.
Template-tiedostolle viedään eri selausmahdollisuudet seuraavissa
muuttujissa:
Skripti tarkastaa luotavien levyjen määrän ja luo jokaiselle levylle oman
ilmoitussivun. Sivulla on sisältönä
ilmoitus; The Article is in Disk number/name. Luotaessa selaussivuja artikkeleiden, jotka eivät
sijaitse juuri luotavan levyn hakemistossa, kohdalta linkitetään näihin
ilmoitussivuihin.
Skripti generoi Schedule-sivun parametrina tuotuun hakemistoon,
käyttäen apunaan template-tiedostoa schedule.tmpl.
Skripti hakee tietokannasta konferenssin rakenteen ja tallentaa taulukon
jokaiseen alkioon yhden päivän tiedot. Taulukon alkio pitää sisällään kyseisen
päivämäärän date-avaimen takana sekä aikataululaatikot taulukossa
avaimen parts takana. Tämän taulukon jokainen alkio sisältää
tietoja seuravien avaimien takana:
Skripti
generoi Session-sivut parametrina tuotuun hakemistoon. Skripti luo
jokaiselle sessiolle oman HTML-sivun. Luonnin yhteydessä käytetään
template-tiedostoa session.tmpl.
Skripti luo ensin taulukon, johon
haetaan tietokannasta kaikki sessiot. Jokaiselle sessiolle luodaan HTML-sivu
käymällä kaikki taulukon alkiot läpi.
Sessiota
varten haetaan tietokannasta sessiossa esitettyjen artikkeleiden otsikot sekä
jokaisen artikkelin kirjoittajien nimet. Session nimi viedään
template-tiedostolle muuttujassa title ja session alku ja loppuaika muuttujissa start ja finish. Näiden lisäksi sessiossa esitetyt
artikkelit viedään template-tiedostolle taulukossa articles, jossa jokainen alkio sisältää tiedot
seuraavien avaimien takana:
Skripti generoi Session listing -sivut parametrina tuotuun
hakemistoon. Skripti luo oman HTML-sivun jokaista
aihealue-sessiotyyppi-yhdistelmää varten. HTML-sivujen luonnissa käytetään
apuna template-tiedostoa sessionl.tmpl.
Skripti hakee ensin tietokannasta kaikki aihealueet ja sessiotyypit ja
tallentaa ne omiin taulukoihinsa. Tämän jälkeen luodaan jokaista
aihealue-sessiotyyppi-yhdistelmää varten oma sivu.
Aihealueet viedään template-tiedostolle taulukossa nimeltä topics
sekä sessiotyypit taulukossa sessiontypes. Taulukoissa on sijoitettu hajautustaulun
avaimen title perään kyseinen aihealueen tai sessiotyypin nimi.
Sessiontypes-tauluun lisätään alkuun alkio, jonka title-kentän
arvo on All.
Sisältöosaa varten haetaan tietokannasta kyseisen aihealueen ja
sessiotyypin sessioiden nimet ja pitoajat. Nämä tallennetaan omaan taulukkoon.
Sisältöosa viedään template-tiedostolle taulukossa nimeltä sessions, jonka jokainen alkio sisältää hajautustaulussa seuraavat avaimet:
Kappaleessa määritellään Perl- ja
HTML-koodaustyyli, muuttujien nimeäminen ja
sisennykset.
Ohjelmointikielenä on Perl. Kaikki ohjelmakoodit ja kommentit kirjoitetaan
ainakin englanniksi. Lisäksi kommentit voidaan kirjoittaa myös suomeksi.
Ohjelman muuttujat nimetään selkeästi ja kuvaavasti.
Tiedoston alkuun tulee sijoittaa kommentti, joka kertoo mikä tiedosto on kyseessä, tekijä ja
päivämäärä. Ohjelman alussa tulee olla lyhyt (mutta riittävä) kuvaus siitä,
mitä ohjelma tekee. Lisäksi alussa tulisi näkyä ohjelman tarvitsemat osat,
versionumerointi ja lyhyt kuvaus mitä kulloiseenkin versioon on lisätty.
Versiohistoria liitetään tiedostoihin CVS:n avulla.
########################################################################
#
parser.pl, <pjen@cc.jyu.fi>, 2004-02-26T13:06:00. #
#
#
# Parser.pl transfers data from directory to
database, and do some #
# corrections. #
# Parseri parsii hakemistorakennetta.
#
#
#
# Program needs these parts #
# Ohjelman
tarvitsemat osat #
#
#
# Version history: #
# v0.1, 2004-02-26T13:06:00, Pentti
Nakari #
# Basic frame #
# v0.2, 2004-03-02T13:09:00, Pentti Nakari #
# Topic-file #
########################################################################
Tiedostossa tulee kommentoida
muuttujat ja parametrilista. Mihin niitä käytetään, muuttuvatko ne ja muita
tärkeitä tietoja. Lisäksi voidaan kirjoittaa selventävä esimerkki.
Tiedostossa tulee kertoa välikommentein isompien kokonaisuuksien tehtävä
tai algoritmi.
########################################################################
# PostgreSQL-database
connection #
########################################################################
Lisäksi tulee kommentoida
ohjelmakoodia väliin pienemmissä kokonaisuuksissa.
# Author-files
if ($line =~ /author_[0-9].txt/) {
}
#
Topic-files
if ($line =~ /topic.txt/) {
}
$i=5;
$j=3; # start loop in middle
Kommentointi tehdään, jos käytetyn koodin merkitys algoritmissa ei ole
itsestään selvää.
Käytettävä
HTML-koodi on HTML 4.01 Transitional -standardin[3] mukaista ja validoidaan
World Wide Web Consortiumin validaattorilla. [8]
HTML-tiedostojen
pakolliset osat ovat:
<!DOCTYPE
HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>
Sivun otsikko</title>
<LINK
REL="STYLESHEET" HREF="style.css"
TYPE="text/css">
<META
HTTP-EQUIV="Content-Type" CONTENT="text/html;
CHARSET=ISO-8859-1">
</head>
<body>
Tähän väliin tulee sivun sisältö.
</body>
</html>
Seuraavat
määritykset header-osioon ovat optionaalisia:
<!--
Logo/icon to browsers addressbar and bookmarks-->
<!--
Logo/ikoni selaimen osoitepalkkiin ja bookmarkkeihin -->
<LINK
REL="SHORTCUT ICON" HREF="logo.ico">
<!-- All commercial
tags,which have been generated by MS Explorer,off-->
<!-- MS Explorering
generoimat mainostagit pois -->
<META
NAME="MSSmartTagsPreventParsing" CONTENT="TRUE">
<!-- Language
definition, not mandatory, for search engines -->
<!--
Kielimääritys, ei pakollinen, lähinnä hakukoneita varten -->
<META
NAME="language" CONTENT="English">
<!-- Description, not
mandatory, for search engines -->
<!--
Kuvaus, ei pakollinen, lähinnä hakukoneita varten -->
<META
NAME="description" CONTENT="Proceedings CD-ROM">
Template HTML-tiedostoihin
kirjoitetaan kommentteina tiedoston tekijän ja editoijien tiedot seuraavasti:
<!--
----------------------------------------------------------- -->
<!-- page_top.html -
Page top template
-->
<!-- Valid HTML 4.01
Transitional - W3C Validation Service
-->
<!--
2004-04-01T16:12:00, Pentti Nakari, <pjen@cc.jyu.fi> -->
<!--
----------------------------------------------------------- -->
Ajon aikana täydennettävät kohdat sivuista merkitään prosenttimerkkien
väliin sijoitetuilla avainsanoilla: %author_list%.
HTML-sivujen tyyli määritellään CSS Level 2 -standardin[2] mukaisilla
CSS-tyylitiedostoilla. CSS-koodi validoidaan World Wide Web Consortiumin
validaattorilla.[7]
CSS-tiedostojen alkuun kirjoitetaan kommentteina tiedoston tekijän ja
editoijien tiedot seuraavasti:
/* example.css - CSS
example
* 2004-03-30:18:26:00, Pentti Nakari,
<pjen@cc.jyu.fi>
*
Valid CSS Level 2 - W3C CSS Validation Service
*/
Tyylitiedoston osat erotellaan toisistaan
kommenttiriveillä:
/****** Edit this to change the main
title font ******/
Sisennyskäytäntö on seuraava:
font.title, h1
{
font-family: Verdana, Arial, Helvetica,
Sans-Serif;
font-size: 22px;
font-weight: bold;
color: #006600;
background-color: #eeffee;
width: 98%;
border: 1px solid black;
margin-left: 10px;
margin-right: 10px;
margin-top: 10px;
margin-bottom: 10px;
padding-left: 6px;
padding-right: 2px;
padding-top: 2px;
padding-bottom: 2px;
}
Testaus suoritetaan projektissa
erikseen laadittavan Testaussuunnitelman mukaisesti.
Tämä dokumentti sisältää
Coma-projektin tuottamien sovellusten
teknisen suunnittelun yksityiskohtia. Projektiin liittyvät sovellukset
tulee toteuttaa dokumentin kuvaamalla tavalla.
[1] Alm
Hanna, Arkko Kari, Nakari Pentti ja Paavolainen Lassi, Vaatimusmäärittely,
Jyväskylän yliopiston tietotekniikan laitos, Jyväskylä, 2004.
[2] Cascading
Style Sheets, level 2 Specification <URL: http://www.w3.org/TR/CSS2/
>, 5.4.2004.
[3] HTML 4.01
Specification <URL: http://www.w3.org/TR/html401/
>, 5.4.2004.
[4]
Jaakohuhta Hannu, Suuri
tietotekniikan tietosanakirja käsitteistö ja sanasto, Suomen Atk-kustannus Oy, Helsinki, 1999.
[5] Jaakohuhta
Hannu, IT Ensyklopedia, Edita Oyj, Helsinki, 2001.
[6] Rahkila
Martti, WWW-ohjelmoinnin perustekniikoita, saatavilla WWW-muodossa
<URL: http://www.acoustics.hut.fi/u/mara/doc/hype/ohjelmointi.html
>, 13.2.2003.
[7] W3C CSS
Validation Service <URL: http://jigsaw.w3.org/css-validator/
>, 5.4.2004.
[8] W3C MarkUp
Validation Service <URL: http://validator.w3.org/
>, 5.4.2004.
Liite 1. Kokoomajulkaisun generoivan sovelluksen sekvenssikaavio.
Liite 2. main.cgi-pääsivun ja topics_or_sessiotypes.pm-moduulin välinen sekvenssikaavio.
Liite 3. main.cgi-pääsivun ja session.pm-moduulin välinen sekvenssikaavio.
Liite 4. main.cgi-pääsivun ja disk.pm-moduulin välinen sekvenssikaavio.
Liite 5. main.cgi-pääsivun ja partition.pm-moduulin välinen sekvenssikaavio.