Harjoitustyö
WWW-sovellukset-kurssin voi suorittaa tekemällä viikkotehtävät tai tekemällä yksi vaativa harjoitustyö. Kurssin suorittaminen harjoitustyöllä on tarkoitettu erityisesti niille, joilla on jo aikaisempaa kokemusta WWW-sovelluksista. Harjoitustyössä tarvitaan lähes kaikkia kurssilla opetettuja asioita. Harjoitustyön tekeminen edellyttää myös hyvää ohjelmointitaitoa ja WWW-tekniikoiden sekä tietokantojen tuntemusta. Jos olet hiemankaan epävarma taitojesi suhteen, niin suorita kurssi viikkotehtävillä.
Vaatimukset toteuttavalla harjoitustyöllä kurssista saa 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:
Yleiset vaatimukset
- 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 position-ominaisuutta (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)
- Sovelluksen pitää toimia Internet Explorer 7, Firefox 2 ja Opera 9 -selaimilla.
- Sovellus ohjelmoidaan PHP-kielellä (väh. v5.0).
- Sovelluksen on toimittava users.jyu.fi-palvelimella.
- 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ä.
Sivupohja ja välimuisti
- 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.
- 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.
Käyttäjätunnistus
- 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.
- 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.
- Kuva säilytetään tavallisena tiedostona.
- Sovelluksessa pitää käyttää sessioita. Sovelluksen pitää toimia myös ilman evästeitä.
- 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ää.
- 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.
Keskustelufoorumi
- Keskustelut tallennetaan SQLite3-tietokantaan käyttäen PHP:n PDO-rajapintaa. Tietokannan rakenne täytyy itse suunnitella.
- Keskustelufoorumissa voi olla useita erilaisia aihealueita (=pääluokat). Pääluokkien alla voi olla useita keskustelusäikeitä. Yhteen keskustelusäikeeseen voi liittyä useita viestejä.
- Yhden säikeen viestit esitetään aikajärjestyksessä. kts. mallia Google Groups -palvelusta.
- Keskusteluun osallistuttaessa rekisteröitynyt 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.
- 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.
- Toisen viestiin vastatessa sovellus antaa mahdollisuuden lainata aiempaa viestiä.
- Viestien lähettäminen ja lukeminen pitää toteuttaa Ajaxilla, jos Javascript on käytössä. Lähettäminen ja lukeminen pitää toimia myös ilman Javascriptiä.
Chat
- Keskustelufoorumin etusivulta pitää löytyä reaaliaikainen Ajaxilla toteutettu Chat.
- 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ä hiiren lempinimen päälle näytetään Ajaxilla toteutettuna hover-efektinä thumbnail-versio käyttäjän kuvasta sekä käyttäjän oikea nimi.
Käyttäjien kommentit