Tapahtumakalenteri & Jäsentietojärjestelmä Toteutus Henri Kinnunen, Seppo Tompuri, Tero Malkki, Matti Heiskanen, Tommi Rönkönharju, Tuomas Valkeapää Sisällysluettelo 1. Alkusanat...2 2. Käyttötapaukset...2 3. Käyttönäkymät...3 4. Toteutustekniikat...3 5. Tiedostoarkkitehtuuri...4 6. Käytetyt valmiit komponentit...4 6.1 CAPTCHA...4 6.2 Datepicker...5 7. Vanhat staattiset sivut...5
1. Alkusanat Trojan projekti suoritettiin Helsingin yliopiston Tietojenkäsittelytieteiden laitoksen Ohjelmistoprojekti kurssin yhteydessä. Projektin tavoite oli toteuttaa jäsenrekisterijärjestelmä ja tapahtumakalenteri Troijan Hevonen ratsastusseuran verkkosivuille. Tämän dokumentin tarkoitus on esitellä Trojan projektin toteutustapaa ja toteutukseen käytettyjä tekniikoita. 2. Käyttötapaukset Troijan järjestelmässä on seuraavat käyttäjä: 1. Kirjautumaton käyttäjä 2. Perusjäsen 3. Toimihenkilö 4. Jäsenvastaava 5. Admin (=järjestelmävalvoja) Jäsenillä on järjestelmässä seuraavanlaiset käyttötapaukset:
3. Käyttönäkymät Käyttönäkymäkaaviossa esitetään eri käyttönäkymien toisiinsa liittyminen. Tarkoittaen mihin näkymään mistäkin näkymästä pystyy siirtymään. 4. Toteutustekniikat Teknisessä toteutuksessa päätettiin käyttää cakephp framework alustaa, jonka kirjastojen avulla moni tekninen toteutus helpottuu huomattavasti, esimerkiksi sisäänkirjautumisen toteutus, sekä moni asia hoituu automaattisesti CakePHP:n toimesta, esimerkiksi kenttien validointi. CakePHP:n rinnalla toteutuksessa käytettiin muita web-ohjelmoinnissa yleisiä tekniikoita, JavaScript komentosarjakieltä, PHP ohjelmointikieltä ja HTML kuvauskieltä. Tietokannat Trojan järjestelmässä on toteutettu MySQL-pohjaisesti. Tekninen toteutus tehtiin seuraavilla tekniikoilla: CakePHP PHP JavaScript HTML MySQL
5. Tiedostoarkkitehtuuri CakePHP määrittelemässä tiedostorakenteessa tiedostot jaetaan kolmeen pääryhmään 1. Kontrollerit a. <ROOT>\app\controllers 2. Mallit a. <ROOT>\app\models 3. Näkymät a. <ROOT>\app\views\<Tietokantataulun nimi> Kontrollerit ovat tiedostoja, joissa määritellään tietokantahaut ja jotain automatiikkaa. Mallit esittävät tietokantataulua, ja niissä määritellään tietokantayhteydet. Näkymät ovat käyttäjälle näkyvät näkymät, eli ns. web-sivut, jotka sisältävät CakePHP, Javascript ja PHP kieliä. Jokaiselle tietokantataululle on oma näkymä-alikansio Views kansiossa. Muita kehityksessä tarvittavia kansioita ovat: ns. Runkosivu, jolle sivun muut elementit sijoittuvat o <ROOT>\app\views\layouts\default.ctp Kuvat ovat kansiossa o <ROOT>\app\webroot\img\ Tyylitiedostot ovat kansiossa o <ROOT>\app\webroot\css\ Käytetyt javascript-tiedostot o <ROOT>\app\webroot\js\ Sivulla käytettävät elementit o <ROOT>\app\views\elements\ CakePHP ulkopuoliset skriptit (mm. testiskriptit ja captchaan liittyvät) o <ROOT>\vendors\ Käytetyt komponentit (captcha) o <ROOT>\controllers\components\ Testauksessa käytetty simpletest o <ROOT>\vendors\simpletest\ 6. Käytetyt valmiit komponentit 6.1 CAPTCHA "Completely Automated Public Turing test to tell Computers and Humans Apart" (-Wikipedia, 29.11.2010) Kuvavarmennus on menetelmä jolla voidaan varmistaa että palvelun käyttäjä on ihminen. (-Wikipedia, 29.11.2010)
Trojan projektissa käytetään kuvanvarmennusta julkiseen tapahtumaan ilmoittautumisessa varmistamaan, että palvelun käyttäjä on ihminen. Kun kirjautumaton käyttäjä menee ilmoittautumissivulle, hän näkee tekstilaatikon, joka täyttyy satunnaisesti luoduilla kirjaimilla/numeroilla. CAPTCHAN toteutuskoodi sijaitsee x paikassa. Controllers/components/ -kansiossa sijaitsee varsinainen (php) koodi. Vendors/securimage -kansiossa sijaitsee kuvavarmistuksen käyttämät tiedostot kuvan luomiseen. 6.2 Datepicker Järjestelmässä käytetään kalenteripäivien valitsemiseen apuvälinettä Datepicker, joka luo minikalenterin helpottamaan päivämäärään valitsemista. Kalenterin toteutus on valikoitu valmiina pakettina netistä, ainoina muokkauksen kohteina kuukausien nimien suomentaminen ja pienen koodipätkän lisääminen korjaamaan bugi, joka tuli esille niiden kuukausien nimen kodalla, jotka sisältävät kirjainyhdistelmän mm (tammikuu). Toteutuskoodi sijaitsee: 1. webroot/js JavaScript koodi 2. webroot/css Datepicker tyylitiedosto Datepickeriä käytetää tapahtumien (events) add.ctp ja edit.ctp sivuilla. 7. Vanhat staattiset sivut Trojan projektin toteuttama jäsenrekisteri ja tapahtumakalenteri on implementoitu vanhojen Troijan Hevosen nettisivujen sisään. Kaikki vanhat staattiset sivut on konvertoitu CakePHP ymmärtämään muotoon. Vanhat sivut löytyvät tiedostoarkkitehtuurista: - Vanhojen sivujen kontrolleri = <ROOT>\controllers\pages_controller.php - Vanhojen sivujen näkymät = <ROOT>\views\pages\ - Vanhojen sivujen tyylitiedosto = <ROOT>\webroot\css\main.css