Bugikorjausdokumentti



Samankaltaiset tiedostot
Käyttöohje. Anno3. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Käyttöohje. Mooan. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Yhteenvetodokumentti. Anno3. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Projektisuunnitelma. Anno3. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti Mooan

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Subversion-ohje. Linux Traffic Control-käyttöliittymä Ryhmä paketti2

Projektisuunnitelma Viulu

Testausraportti v.1.3

Käyttöohje. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Työssäoppimisen lomake Wilmaohje Turun ammatti-instituutti Sami Mäkelä

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Opus SMS tekstiviestipalvelu

Ylläpitodokumentti. Anno3. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausdokumentti. Sivu: 1 / 10. Ohjelmistotuotantoprojekti Sheeple Helsingin yliopisto. Versiohistoria

Convergence of messaging

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

T Testiraportti - integraatiotestaus

Ohje 1 (12) Maarit Hynninen-Ojala MOODLE PIKAOHJE. Kirjautuminen Moodleen ja työtilan valitseminen

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu KÄYTTÖOHJE. LiKe Liiketoiminnan kehityksen tukiprojekti

Google-dokumentit. Opetusteknologiakeskus Mediamylly

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

KYMP Webmail -palvelu

Testaussuunnitelma. Anno3. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Suvi Junes/Pauliina Munter Tampereen yliopisto / tietohallinto 2014

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

MOODLE-OHJE: Liitetiedoston lisääminen ja päivittäminen

Kurssin hallinta -työväline

TEHTÄVIEN PALAUTTAMINEN MOODLEEN

Suvi Junes Tietohallinto / Opetusteknologiapalvelut 2012

Ohjelmoinnin perusteet Y Python

Määrittelydokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Moodlen lohkot. Lohkojen lisääminen: Lohkojen muokkaaminen: Tampereen yliopisto/tietohallinto 2017 Suvi Junes

Moodlen lohkon käyttöohje

Tietokannan luominen:

Hirviö Järjestelmätestauksen testitapaukset ja suoritusloki I1

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

Fakta versio Forecast versio

Kotopro käyttäjän ohje

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

BLOGGER. ohjeita blogin pitämiseen Googlen Bloggerilla

Ohjelmoinnin perusteet Y Python

Käyttöohje. Versiohistoria: versio Mari Kommenttien perusteella korjattu versio

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

Projektisuunnitelma Nero-ryhmä

T Projektikatselmus

58160 Ohjelmoinnin harjoitustyö

ASENNUS JA KÄYTTÖOHJE

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Lohtu-projekti. Testaussuunnitelma

Microsoft Outlook Web Access. Pikaohje sähköpostin peruskäyttöön

Pauliina Munter / Suvi Junes Tampereen yliopisto/tietohallinto 2013

Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Karttapalvelun käyttöohjeet

T Testiraportti - integraatiotestaus

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Ohjelmoinnin perusteet Y Python

Webmailin käyttöohje. Ohjeen sisältö. Sähköpostin peruskäyttö. Lomavastaajan asettaminen sähköpostiin. Sähköpostin salasanan vaihtaminen

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

ARVI-järjestelmän ohje arvioinnin syöttäjälle

Eclipse ja JUnit-ohjelmoijatestit

Anno Vaatimusdokumentti

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Ohjelmoinnin perusteet Y Python

T Testiraportti - järjestelmätestaus

ohjeita kirjautumiseen ja käyttöön

Kuopio Testausraportti Kalenterimoduulin integraatio

Dokumentin nimi LOGO:) Tampereen teknillinen yliopisto. Ryhmä XXX: Projektiryhmän nimi Projektin nimi

Suoritusten kirjaaminen WinOodissa: Opintoneuvojan ohje

UTIFLEET-VARAUSJÄRJESTELMÄ KÄYTTÄJÄN OHJE. Gospel Flight ry

Tarina-tehtävän ratkaisu

SYÖTTÖPOHJA LUKUJEN SYÖTTÖÖN ERI TARKOITUKSIIN

Harjoitustyö: virtuaalikone

14. Hyvä ohjelmointitapa 14.1

1 Yleistä Kooste-objektista Käyttöönotto Kooste-objektin luominen Sisällön lisääminen Kooste objektiin Sivut...

Uuden työtilan luonti

Internet Explorer 7 & 8 pop-up asetukset

Testaussuunnitelma Labra

Tavallisen videomainoksen sijasta Ruudussa voidaan mainostauolla esittää dynaamisia spotteja.

Visma Approval Center. Versiosaate 1.3

Tekstiviestipalvelun rajapintakuvaus

Teknillinen korkeakoulu T Tietojenkäsittelyopin ohjelmatyö. Testausraportti Smartmeeting opponointi

Tulosta yrityksesi tuloslaskelma ja tase myöhempää tarkastusta varten. Ota varmuuskopio tilanteesta ennen tilimuunnosta.

Vaatimusmäärittelydokumentti

OPPILAAN/ OPISKELIJAN NÄKYMÄ

Pauliina Munter/Suvi Junes Tampereen yliopisto / Tietohallinto Valitse muokkaustila päälle kurssialueen etusivun oikean yläkulman painikkeesta.

KÄYTTÖOHJE. Servia. S solutions

ASENNUS- JA KÄYTTÖOHJE

Lyseopaneeli 2.0. Käyttäjän opas

CABAS. Perusominaisuuksien käyttö

Ohjeita Omapalvelun käyttöön

Asiointipalvelun ohje

CEM DT-3353 Pihtimittari

Moodle TurnitIN:n käyttöohje opiskelijalle

1. HARJOITUS harjoitus3_korjaus.doc

NUUO ETÄOHJELMA PIKAOPAS. Maahantuoja Dasys Oy Kaivolahdenkatu HELSINKI helpdesk@dasys.fi

Visma.net Approval. Versiosaate 1.40

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Transkriptio:

Bugikorjausdokumentti Anno3 Helsinki 6.5.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Jukka Huhta Juho Iso-Markku Jarno Laitinen Timo Myyryläinen Roger Sandström Miro Wikgren Asiakas Sami Palhomaa Johtoryhmä Juha Taina Jaakko Saaristo Kotisivu http://www.cs.helsinki.fi/group/anno3/ Versiohistoria Versio Päiväys Tehdyt muutokset 0.0 4.2.2007 Dokumenttipohja luotu 0.1 4.2.2007 Bugilistaus 0.2 20.2.2007 Korjattu bugilistaus 0.3 22.2.2007 Päivitetty bugilistaus 0.4 20.3.2007 Lisätty bugikorjaukset 0.5 28.3.2007 Päivitetty bugilistaus 0.6 2.4.2007 Johdanto ym. päivitetty 0.7 4.5.2007 Lopullinen bugilistaus 1.0 4.5.2007 Dokumentin jäädytys

Sisältö i 1 Johdanto 1 2 Sanasto 1 3 Kriittisten bugien lista 2 3.1 Kommentin tai viestin poisto........................ 2 3.2 Merkintöjen paikallaanpysyminen..................... 2 3.3 Ikkunoiden sijoitus sisällön suhteen.................... 3 3.4 Ikkunoiden sijoitus ruudulla........................ 3 3.5 Kommenttien merkistö........................... 3 3.6 Merkintöjen pilkkoutuminen osiin..................... 3 4 Arvio kriittisten bugien sijainnista ohjelmassa 3 4.1 Kommentin tai viestin poisto........................ 3 4.2 Merkintöjen paikallaanpysyminen..................... 3 4.3 Ikkunoiden sijoitus sisällön suhteen.................... 4 4.4 Ikkunoiden sijoitus ruudulla........................ 4 4.5 Kommenttien merkistö........................... 5 4.6 Merkintöjen pilkkoutuminen osiin..................... 5 5 Kriittisten bugien korjaus 5 5.1 Kommentin tai viestin poisto........................ 5 5.2 Merkintöjen paikallaanpysyminen..................... 5 5.3 Ikkunoiden sijoitus sisällön suhteen.................... 5 5.4 Ikkunoiden sijoitus ruudulla........................ 6 5.5 Kommenttien merkistö........................... 7 5.6 Merkintöjen pilkkoutuminen osiin..................... 7

1 Johdanto 1 Anno3-ohjelmistotuotantoprojektin tarkoitus on tuottaa annotointityökalu, jota käytetään www-oppimisympäristö Moodlen kanssa. Annotointi tarkoittaa merkintöjen tekemistä ja kommenttien lisäämistä www-sivuihin ja muihin Moodlen dokumenttiformaatteihin muokkaamatta itse varsinaisen dokumentin sisältöä. Työkalua voidaan käyttää yhteisöllisen prosessikirjoittamisen ja palautteen antamisen apuvälineenä, jolla merkinnät voidaan tehdä suoraan kontekstiin eli oikeaan paikkaan dokumentissa. Anno3 jatkaa aiemman, Mooan-ohjelmistoprojektin työtä, joka jäi osittain keskeneräiseksi ja puutteelliseksi. Tehtävät muutokset painottuvat järjestelmän toiminnallisuuden korjaamiseen, parantamiseen ja lisäämiseen. Tämän sisäisen dokumentin tarkoitus on dokumentoida sekä aiemmin tiedossa olleita että Anno3-ryhmän löytämiä ohjelman virheitä, bugeja. Bugeista on dokumentoitu arvio niiden syistä sekä niiden korjaamiseksi tehdyt toimenpiteen ohjelmakoodiin ja asetuksiin. Bugit on jaettu Anno3-projektin toteuttamisen kannalta kriittisiin ja ei-kriittisiin bugeihin. Kriittiset bugit estävät Mooan-työkalun oikeellisen toiminnan tai vaikeuttavat voimakkaasti sen testaamista ja uusien toiminnallisuuksien toteuttamista. Kriittiset bugit pyritään korjaamaan ennen varsinaisen Anno3-projektin toteutusvaiheen aloittamista. Ei-kriittiset bugit eivät estä Mooan-työkalun testaamista, ja niiden korjaaminen suunnitellaan Anno3- projektissa vaatimusmäärittely- ja suunnitteluvaiheissa. 2 Sanasto Anno t. anno Järjestelmän nimi. Käytetään esimerkiksi ohjelmakoodissa tunnisteena. Anno3 Anno-järjestelmän tuottavan ohjelmistotuotantoprojektiryhmän nimi. Annotea, Annotea-palvelin Keskustelun tallennusalustana toimiva HTTP:lla käytettävä ulkoinen järjestelmä. annotointi (v.) Luokitellun merkinnän lisääminen. annotointi (s.) Dokumenttiin maalaamalla tehty merkintä, jonka yhteydessä on merkintään liittyviä kommentteja. dokumentti HTML-, XML, teksti- tai Wiki-sivu Moodle-oppimisalustalla. järjestelmä Ellei kontekstista muuta ilmene: projektin puitteissa toteutettava kommentointityökalu kokonaisuutena (Anno). Tähän ei lueta Moodlea eikä Annotea-palvelinta. keskustelu Merkintään liittyvät viestit, sekä kommentti että vastaukset. kommentti Annotointiin liittyvä yksi kommentti. kommenttinäkymä Näkymä, jossa voi lukea keskusteluja.

kommenttityyppi-ikkuna Käyttöliittymän osa, jossa valitaan, onko kyseessä oikeinkirjoitusvai sisältökommentti. käsittelijämoduuli Palvelimella suoritettava järjestelmän varsinainen toimintalogiikka. Toteutettu PHP:lla. Engl. handler module. käyttäjämoduuli Selaimella suoritettava osa järjestelmää, joka on toteutettu JavaScriptilla ja tyylimäärittelyin. Engl. user module. merkintä Korostettu kohta tekstissä, vrt. annotointi merkintäkategoria Merkinnän luokka, esim. oikeinkirjoitus- tai sisältömerkintä. muokkausnäkymä Näkymä, josta voi lukea ja kirjoittaa kommentteja sekä vastauksia. opasteikkuna Pieni ikkuna dokumentin ylälaidassa, joka kertoo annotointiominaisuudesta ja mahdollistaa sen päälle- ja poiskytkemisen. päällekkäisyysalue Alue tekstissä, jonka sisällä on voimassa sama joukko päällekkäisiä merkintöjä. Mikäli merkintä loppuu tai alkaa, päällekkäisyysalue vaihtuu. tiedosto Käsittelijä- tai käyttäjämoduulin osa, jossa on joku toiminnallinen kokonaisuus. vastaus Vastaus kommenttiin, ja sikäli myös kommentti. väli-ikkuna Käyttöliittymän elementti, jossa valitaan joku päällekkäisistä annotoinneista tarkasteltavaksi. 2 3 Kriittisten bugien lista Anno3-projekti määritti lyhyen testausvaiheen jälkeen Mooan-työkalusta 6 kriittistä bugia. Bugit on listattu tässä kappaleessa. Arvio bugien syistä ja korjaamistoimenpiteet on listattu seuraavissa kappaleissa. 3.1 Kommentin tai viestin poisto Mooan-työkalulla ei voida poistaa kommentteja ja viestejä. Poistopainike on oikeassa paikassa ja se reagoi hiirellä painamiseen, mutta kommentti tai viesti ei poistu. 3.2 Merkintöjen paikallaanpysyminen Kommenttien merkinnät eivät aina tule niille paikoille joihin ne on maalattu, vaan saattavat siirtyä satunnaiselta tuntuvaan paikkaan. Joskus uusi merkintä saattaa rikkoa loppudokumentin, jolloin teksti katkeaa tähän paikkaan. Kommenttimerkinnät tuntuvat siirtyvän samaan kohtaan maalatessa aina samalla tavalla. Siirtyminen tapahtuu heti dokumentin ja merkinnän ensimmäisen näyttämisen yhteydessä.

3 3.3 Ikkunoiden sijoitus sisällön suhteen Kommenttinäkymä aukeaa liian lähelle hiiren osoitinta kommentin merkintää osoitettaessa. Näkymä saattaa tällöin peittää osan valitun kommentin merkinnästä. 3.4 Ikkunoiden sijoitus ruudulla Kommenttinäkymä tai kommenttityypin valintaikkuna aukeavat hiiren osoittimen oikealle alapuolelle. Jos hiiren osoitin on lähellä ruudun oikeaa- tai alareunaa, aukeaa ikkuna ruudun ulkopuolelle. 3.5 Kommenttien merkistö Ääkköset ja muut erikoisemmat merkit eivät aina näy oikein kommentteissa. 3.6 Merkintöjen pilkkoutuminen osiin Joskus merkinnät pilkkoutuvat useaan osaan ja osa mekinnän alueesta jää kokonaan merkitsemättä. 4 Arvio kriittisten bugien sijainnista ohjelmassa Seuraavassa esitetään edellisessä kappaleessa esiteltyjen bugien syyt samassa järjestyksessä. 4.1 Kommentin tai viestin poisto Bugi johtuu vanhan Annotea-palvelimen sisältämästä bugista. Mooan-ryhmä on informoinut asiasta Annotean kehittäjää. 4.2 Merkintöjen paikallaanpysyminen Bugi esiintyy järjestelmällisesti erikoismerkkien jälkeen siten, että Mooan-järjestelmä tulkitsee erikoismerkit useamman merkin mittaisiksi. Tällöin merkintä saattaa siirtyä osittain tekstielementtien ulkopuolelle ja rikkoa dokumentin XHTML-rakenteen. Vika johtuu PHP:n ominaisuudesta, jonka mukaan merkki on yhden tavun mittainen, eli useammalla tavulla merkkejä esittävä UTF-8 on täysin rikki useimpien string-funktioiden osalta. Rikkinäisiä funktioita kutsutaan ainakin seuraavista funktioista:

4 Tiedosto anno_annotea_lib.php anno_handle_request.php anno_moodle_interface.php anno_x_pointer_lib.php Funktio anno_get_comment_base_data() anno_modify_page() anno_create_top_banner() anno_add_new_comment_view() anno_add_reply_view() anno_add_javascript() anno_add_init() anno_create_header_rows() anno_create_comment_type_selector() anno_create_indicator() anno_create_view_pane() anno_parse_user_id() anno_do_rangeto() anno_do_stringrange() Tarkempi dokumentaatio rikkinäisistä PHP-funktioista löytyy www-sivulta <http://www.phpwact.org/php/i18n/utf-8>. 4.3 Ikkunoiden sijoitus sisällön suhteen Bugi johtuu avattavan ikkunan koordinaattien määrittelyn viasta ohjelman ui_modulessa anno_event_handlers.js -tiedostossa avattavan ikkunan sijainti määritellään riveillä 41-42 seuraavasti: var x = event.pagex - 20; var y = event.pagey - 20; 4.4 Ikkunoiden sijoitus ruudulla Bugi on dokumentoitu mooanin ohjelmakoodiin. Se johtuu siitä, ettei mooan tarkasta avattavan ikkunan sijaintia ruudulla muuten kuin x=0 -akselin suhteen (anno_event_handlers.js, rivit 41-46): var x = event.pagex - 20; var y = event.pagey - 20; if(x < 0) { x = 0;

5 4.5 Kommenttien merkistö Ongelma johtuu siitä, että javascript-funktio koodaa palvelimelle lähettämänsä uudet kommentit UTF-8 muotoon. Kun kommentit näytetään käyttäjälle, kaikki merkit eivät näy oikein jos itse dokumentin merkistö on muu kuin UTF-8 (esim. ISO-8859-1). HTML-speksi ei tue useamman merkistön käyttämistä samassa dokumentissa. 4.6 Merkintöjen pilkkoutuminen osiin Ongelman aiheuttaa merkintöjen lisäämisen bugi, joka koskee range-to tyyppisiä merkintöjä. anno_x_pointer_lib.php tiedostossa anno_do_rangeto funktio jakaa merkinnän span-elementteihin oikein elementtirajojen mukaan, mutta merkitsee merkinnän viimeisestä elementistä vain viimeisen text-solmun. Valinta tehdään rivillä 234 lauseessa if ($foundstart && $handledstart &&!$foundend). Jos merkinnän viimeisessä elementissä on alielementtejä (esim. i-, b- ja a-elementit p-elementin sisällä) ennen merkinnän päättymistä, ei näihin lisätä merkinnän span-elementtiä. 5 Kriittisten bugien korjaus Seuraavaksi esitetään bugien korjaamiseksi tehdyt toimenpiteet ja muutokset ohjelmakoodiin. Kaikki bugit on saatu näillä korjauksilla alustavien testien mukaan korjattua. 5.1 Kommentin tai viestin poisto Korjataan asentamalla Annotea-palvelimesta uudempi korjattu versio. Anno3-ryhmän käyttämässä Bakunin Annotea-palvelimen versiossa 0.7 bugi on korjattu. 5.2 Merkintöjen paikallaanpysyminen Korvataan PHP:n string-funktiot oikein toimivilla, UTF-8:a tukevilla versioilla. Esim. substr() -> utf8_substr(). Nämä funktiot kuuluvat ulkopuoliseen phputf8-kirjastoon, joka on saatavissa osoitteesta <http://phputf8.sourceforge.net/>. 5.3 Ikkunoiden sijoitus sisällön suhteen Ongelma korjataan siirtämällä avattavaa ikkunaa alemmas. Alustavasti ongelma korjattiin muuttamalla anno_event_handlers.js -tiedoston rivi 42 muotoon: var y = event.pagey + 15; Ongelman lopullinen ratkaisu suunnitellaan anno3-projektissa ohjelman käyttöliittymän suunnittelun yhteydessä.

6 5.4 Ikkunoiden sijoitus ruudulla Bugi korjataan tarkastamalla ikkunan avaamisen yhteydessä myös, ettei se mene muiden näytön reunojen ulkopuolelle. Bugin korjaava ohjelma on esimerkiksi: if (parseint(navigator.appversion)>3) { if (navigator.appname=="netscape") { winw = window.innerwidth; if(winw > 16) { winw = winw-16; winh = window.innerheight; if(winh > 16) { winh = winh-16; if (navigator.appname.indexof("microsoft")!=-1) { winw = document.body.offsetwidth; if(winw > 20) { winw = winw-20; winh = document.body.offsetheight; if(winh > 20) { winh = winh-20; var pos = anno_anno_util_mousecoordinates(e); var x = pos.x; var y = pos.y+15; var element_dimensions = anno_anno_util_dynamicwidthheight(e, "kommenttinakyma"); var commentwidth = 400; var commentheight = 70; if( commentwidth + x > winw){ x = winw-commentwidth; if(x < 0) { x = 0; if(y - commentheight < 0){

7 y = pos.y - commentheight - 15; 5.5 Kommenttien merkistö Mahdollisia ratkaisuvaihtoehtoja ovat: 1. pakotetaan kaikki dokumentit käyttämään UTF-8 merkistöä. Tämä tavallaan uusi ympäristövaatimus, asiakas ei välttämättä hyväksyisi tätä ratkaisua. 2. tehdään oma javascript-funktio joka koodaa kommentit samaan merkistöön kuin mitä dokumentissa käytetään. Mutta mitä tehdään jos dokumentin merkistö ei tue merkkejä joita kommentissa on käytetty? 3. sama kuin 2., mutta merkistömuutos tehdään palvelimen päässä (joko ennen kuin kommentti talletetaan tietokantaan, tai sen jälkeen kun se on luettu tietokannasta). Aiheuttaa saman ongelman kuin 2. 4. muutetaan kommentin teksti HTML-entiteeteiksi joissain vaiheessa. Tekstin tallettaminen HTML-entiteetteinä tietokantaan ei ole hyvä idea, joten muutos kannattaa tehdä vasta siinä vaiheessa kun kommentit aiotaan näyttää käyttäjälle (joko palvelimen tai asiakkaan päässä). Näistä vaihtoehdoista toteutettiin vaihtoehto 4 palvelimella. Korjaus on toteutettu lisäämällä anno_handle_request.php -tiedostoon uusi funktio utf2html, joka ottaa parametrina UTF-8 muotoisen merkkijonon ja palauttaa vastaavan merkkijonon jossa kaikki merkit joiden numeroarvo >= 192 on muutettu HTMLentiteeteiksi (&#xxxxx;-muoto). Valmis funktio tähän löytyi internetistä, ja se on julkaistu mitä ilmeisemmin public domainiin (lähetetty www.php.net:n sivulle). Funktiota kutsutaan test_create_comment_view -funktiosta, joka on samassa php-tiedostossa. 5.6 Merkintöjen pilkkoutuminen osiin Bugi korjataan käsittelemällä myös merkinnän viimeisen p-elementin alielementit. anno_x_pointer_lib.php tiedoston anno_do_rangeto funktion rivit 234-268 korjataan noudattamaan seuraavaa rakennetta: if ($foundstart && $handledstart) { if ($foundend &&!$handledend && $params[ end_offset ] <= $totallen + $currentnode->length) { merkinnän lopetus else { merkinnän span-elementtien lisäys elementtiin

8