Harjoitustyö
WWW-sovellukset-kurssin voi suorittaa tekemällä viikkotehtävät tai tekemällä yksi vaativaa harjoitustyö. Kurssin suorittaminen harjoitustyöllä on tarkoitettu erityisesti niille joilla on jo aikaisempaa kokemusta WWW-sovelluksista. Harjoitustyön tekeminen edellyttää hyvää ohjelmointitaitoa ja WWW-tekniikoiden sekä tietokantojen tuntemusta. Jos olet hiemankaan epävarma taitojesi suhteen niin suorita kurssi viikkotehtävillä.
Vaatimukset toteuttavalla harjoitustyöllä saa kurssista arvosanaksi viisi (5). Vajaita toteutuksia ei arvostella vaan niitä täydennetään kunnes ne kattavat kaikki vaatimukset. Muita arvosanoja voi tavoitella tekemällä viikkotehtävät.
Harjoitustyöaihe
Harjoitustyönä toteutetaan keskustelufoorumi (vrt. usenet/google groups) seuraavilla vaatimuksilla (vrt. viikkotehtävät):
- Kaikki sovelluksen WWW-sivut ovat XHTML 1.0 strict -suosituksen mukaisesti valideja
- XHTML-elementtejä täytyy käyttää rakenteellisesti oikealla tavalla
- Sivuston ulkoasu toteutetaan CSS2:n avulla.
- Ulkoasun täytyy selvästi jakautua vähintään kolmeen osaan. esim. ylänavigointi, sivupalkki ja varsinainen sisältö
- Ulkoasun toteutukseen on käytettävä CSS:n positiointia (absolute tai fixed)
- Rekisteröitynyt käyttäjä voi valita sivuston ulkoasun vähintään kolmesta selkeästi toisistaan eroavasta ulkoasuvaihtoehdosta (kolme erilaista css-tiedostoa)
- Sovellus ohjelmoidaan PHP-kielellä (väh. v5.0)
- Sovelluksen on toimittava people.cc.jyu.fi- tai www.cc.jyu.fi-palvelimella
- Sovelluksessa pitää käyttää sessioita. Sovelluksen pitää toimia myös ilman evästeitä.
- Keskustelu tallennetaan SQLite3-tietokantaan käyttäen PHP:n PDO-rajapintaa. Tietokannan rakenne täytyy itse suunnitella
- Keskustelufoorumin etusivulta pitää löytyä reaaliaikainen Ajaxilla toteutettu chat
- Sovelluksen täytyy osata säilyttää ja jakaa sivuista staattisia versioita aina kun mahdollista
- Sovelluksen kaikille sivuille yhteiset osat (esim. navigointi) täytyy olla helposti vaihdettavissa pelkkää Apachen käsittelijää (handler) vaihtamalla
- Foorumin autentikointi täytyy toteuttaa apachen käsittelijän avulla kaikille sovelluksen sivuille.
- Autentikoinnin ohjelmakoodi tulee näin yhteen paikkaan ja parantaa tietoturvaa.
- Autentikoinnissa käytetään http-otsikkotietoja.
- Salattua yhteyttä ei tarvitse harjoitustyössä käyttää.
- Foorumia voi lukea kuka tahansa mutta kirjoittaa saa vain foorumiin rekisteröitynyt ja kirjautunut käyttäjä
- Keskustelufoorumiin voi sivuston ylläpitäjä luoda pääluokkia joiden alle keskustelut sijoitetaan
- Rekisteröityessä käyttäjältä pyydetään lempinimi, etunimi, sukunimi, sähköpostiosoite, kotisivun osoite ja kasvokuvan osoite. Käyttäjän tiedot tallennetaan tietokantaan. Kuva säilytetään tavallisena tiedostona.
- Sovellus muokkaa automaattisesti käyttäjän antaman kuvan haluttuun vakiokokoon. Kuva näytetään käyttäjän henkilötietosivulla kaikille rekisteröityneille käyttäjille.
- Sovelluksesta on löydyttävä sivu jolla rekisteröityneet käyttäjät saavat listan kaikista järjestelmään rekisteröityneistä käyttäjistä ja pääsevät edelleen tutkimaan haluamansa käyttäjän tietoja
- Pääluokkien alla voi olla useita keskustelusäikeitä. Rekisteröityneet käyttäjät voivat aloittaa uusia.
- Keskusteluun osallistuttaessa käyttäjä voi joko aloittaa uuden säikeen, lähettää uuden viestin vanhaan säikeeseen tai vastata vanhaan säikeeseen jonkun käyttäjän viestiin.
- Toisen viestiin vastatessa sovellus antaa mahdollisuuden lainata aiempaa viestiä
- Yhden säikeen viestit esitetään aikajärjestyksessä. kts. mallia google groupsista
- Jokaisen viestin yhteydessä pitää näkyä viestin lähettäneen henkilön lempinimi josta on rekisteröityneillä käyttäjillä linkki käyttäjän henkilötietosivulle. Rekisteröityneen käyttäjän Viedessä hiiri lempinimen päälle näytetään Ajaxilla toteutettuna hover-efektina thumbnail-versio käyttäjän kuvasta sekä käyttäjän oikea nimi
- Viestien lähettäminen pitää toteuttaa ajaxilla jos Javascript on käytössä. Lähettäminen pitää toimia myös ilman javascriptiä.
- Sivustolta täytyy löytyä perusnavigointi jolla voi aina siirtyä sivuston etusivulle, pääluokan sivulle, käyttäjälistaussivulle ja käyttäjän asetussivulle
- Kaikki Ajax-operaatiot pitää toteuttaa Mochikit- tai Prototype-kirjastojen avulla.
- Dokumentin sisällön dynaaminen muokkaaminen Javascript-kielellä pitää tehdä DOM-rajapinnan kautta. esim. innerHTML-metodin käyttäminen on kiellettyä.
- Sovelluksen pitää toimia Firefoxilla, Internet Explorerilla ja Operalla

