Ohessa Eemelin mulle lähettämästä mailista kopioitu kuvaus eri kielisivujen rakenteesta.

Juu, feed-outputti on ollut mullakin mielessä hoidetavana juttuna. Osittainen ratkaisu tähän on mulla jo päässä, en vain ole vielä toteuttanut. Tämän selitys viestin lopussa.

Dokumentointi on tosiaankin aika puutteellinen tällä hetkellä. Tässä seuraa koko systeemin lyhyt kuvaus, osin ulkomuistista joten toivottavasti ilman vakavampia virheitä. Aika paljon nojaa PmWikiin ja mun+muiden julkaisemiin sen lisäkomponentteihin. Mun komponenteista lista löytyy täältä <http://www.pmwiki.org/wiki/Profiles/EemeliAro>, noista on nyt päällä Sitemapper, FastCache, Attachtable, AutoThumber ja RedirectIntermap.

Apachen tasolla mod_rewrite-säännöt (~/www/.htacesss, ~/www/en/.htacesss, ~/www/wiki/.htacesss) pääsääntöisesti ohjaa osan osoitteista PmWikille, jolloin saadaan käyttöön siistimmät URLit. PmWikille menee ainakin kaikki isolla irjaimella alkavat ja /attach/-alkuiset osoitteet. Noi kommentoidut blokit on osa FastCache-moduulia, olen ne confanut ja testannut valmiiksi mutta jättänyt vielä pois päältä koska aiheuttavat vähän epäkäytännöllisyyttä sisään/uloskirjautuessa (pitää pakkopäivittää sivu). FastCache generoi staattisen välimuistin anonymous-käyttäjille; tällä hetkellä siitä luetaan PHP:ssa mutta lukemisen voi laittaa myös Apacheen jos päädytään Boing Boingiin tai jotain. Sen toiminnan pitäisi olla täysin läpinäkyvää.

Kieliversioiden mod_rewrite-säännöt on suomelle vähän erilaiset kun muille kielille koska se operoi suoraan webrootista. Lisäksi ainakin tällä hetkellä molemmat kieliversiot on kartoitettu käyttämään suomenkielisen wikin liitetiedostohakemistoa. Jos haluaa lisätä uuden kielen (esimerkkinä ruotsi), niin se toimii helpoiten kopioimalla ~/www/en -> ~/www/se ja muokkaa sen .htaccess- ja index.php-tiedostoja käytämään hakemistoa ~/pmwiki/finncon-se, joka pitää myös kopioida englanninkielisestä (+ tyhjentää sen work.d-hakemisto, mukaanlukien .pageindex, muokata local/config.php-tiedostoa ja poistaa tarpeettomat filut wiki.d-hakemistosta). Todennäköisesti kannattaisi laittaa wiki.d-hakemistosta yleisesti käytetyt sivut hakemistoon josta kaikki kieliversiot voisivat niitä lukea, mutta tämä on vielä tekemättä.

Suomen kielen primääriaseman haluaisin tässä pitää, koska niin suuri prosentti käyttäjistä on suomalaisia. Tämä ei kyllä estä etusivulla kieliversiolinkkien parempaa esille tuontia. Jos jonkinlainen heittosivu tehdään, niin mun mielestä se pitäisi ohittaa jos kävijä tulee suomalaisesta IP-osoitteesta tai jos hänelle on aikaisemmalla käynnillä kieli asetettu evästeellä. Jos on tästä parempi idea, mielellään sano.

PmWikin config-asetukset löytyy nyt kolmesta eri paikasta: ~/pmwiki/local/farmconfig.php, ~/pmwiki/finncon{,-en,-wiki}/local/config.php ja ~/pmwiki/local/authconfig.php. Näistä tuo farmconfig käsitellään ensin, sitten config ja siinä on kohta jossa sisällytetään tuo authconfig. Tämä siksi että suurin osa asetuksista on samat kaikille (farmconfig) ja osa muuten samoista asetuksista vaativat että käyttäjän autentikaatio on jo hoidettu (authconfig), joka riippuu wikin omista asetuksista (config).

Kieliversioiden toteutus erillisinä wikeinä (tarkemmin, huonosti suomennetulla PmWiki-jargonilla, meillä on kolme wikipeltoa yhdellä wikifarmilla) on tehty ihan tarkoituksella. Tässä menetetään osa monimutkaisemmista toiminnallisuuksista mutta sallitaan huomattavan helpompi conffaus koko systeemistä. Vielä pitää säätää (kopioida meidän laitoksen sivuilta) lisäpalikka jolla esim. suomenkielisellä sivulla voidaan sanoa joka laittaa sivulle linkin "In English" joka ohjaa osoitteeseen /en/Blah.

Kunhan joskus ehdin nin olisin koodaamassa PmWikiin lisäpalikan jolla tämmöiset sisarwikit saadaan vielä paremmin toimimaan yhdessä. Tämä on mahdollista koska yksi wiki voi lukea (ja kirjoittaa) useampaan sivutietokantaan (PageStore) eli ei pitäisi olla liian vaikeaa sallia esim. suomenkielisen wikin lukea dataa englanninkielisiltä sivuilta.

Wikin sisällä toimintaa ohjataan neljällä eri tasolla: käsky ("action"), sivu, sivuryhmä, koko wiki. Eli esimerkkinä, osoite "/Blogi" ohjaa lukemaan sivua "Blogi.Blogi". Koska ne löytyvät, niin tuon alkuun ja loppuun lisätään sivujen "Blogi.GroupHeader" ja "Blogi.GroupFooter" sisällöt. Koska osoitteessa ei ole lopussa GET-parametria "action" niin oletetaan että halutaan katsoa sivun sisältöä ("browse"). Tähän tarvittavaa "read"-oikeutta ei ole sivulla suoraan määritelty eikä ryhmällekään (olisi sivulla Blogi.GroupAttributes) joten käytetään sivuston default-arvoa joka ei vaadi mitään salasanaa tai esim. käyttäjäryhmään kulumista. Kyseinen default-arvo voitaisiin asettaa tiedostossa ~/pmwiki/finncon/local/config.php. Tuosta hakemistosta tarkastetaan myös että löytyykö scriptiä "Blogi.Blogi.php" (ei) ja tämän jälken "Blogi.php" (kyllä), jotka suoritetaan jos ne löytyvät. Kyseisessä "Blogi.php"-scriptissä mm. asetetaan blogimerkinnöille normaalista poikkeava template-tiedosto (Site.BlogEditForm) jonka pohjalta generoidaan "edit"-käskyn näkymä.

Johon kaikkeen perustuen ehdotan että uskalla vaan rohkeasti muokata tota live-serveriä, kunhan teet sen hallitusti ja rajoitetusti. Elikkä rajaa muutoksesi vain jollekin tietylle sivulle ja/tai tietyn käskyn taakse. Esimerkkinä, mene osoitteeseen <2009.finncon.org/Test/Juha> ja luo tuo sivu. Sitemapper ei löydä sivukartasta (Sitemap.Sitemap) tuota sivua tai sivua Test.Test, joten se laittaa sen sivun Site.Uncategorized alle josta normikävijät eivät sitä helpolla löydä. Sivun luotuasi koska sulla on admin-oikeudet niin alareunasta pitäisi löytyä linkki "Oikeudet" josta voit laittaa tuolle Test.Juha-sivulle "Set new read password"-kenttään esim. "id:*" tai "@admin". Sitten lisää serverille tiedosto ~/pmwiki/finncon/local/Test.Juha.php jossa voit tehdä mitä vaan koodausvirheitä ilman että muut sivut kuin tuo menee rikki. Kopioi vaikka tuo Test.Eemeli.php. Olettaen että et siis lähde koodillasi kirjoittamaan mitään muille sivuille tai muuta hullua. Jos pitää väliaikaisia tiedostoja käyttää, niin laita ne jotenkin identifioivasti hakemistoon ~/pmwiki/finncon/work.d, johon PHP-muuttuja $WorkDir osoittaa.

Niin, niistä RSS-feedeistä. Ajattelin laittaa webrootiin hakemiston /feeds/ jonka alta löytyisi mitä vaan tarvitaan PmWikiin koodatun erillisen sivun tai käskyn kautta, joka voisi lukea sisältönsä sivulta Blogi.Blogi mutta asettaa customoidun $skin-muuttujan ja vaihtaa PmWikin Wikimarkup > HTML sääntöjä niin että tuottavat oikean muotoista feed-dataa. PmWikissä tulee siis mukana ~/pmwiki/scripts/feeds.php josta voisi lähteä liikkeelle.

Huoh. Sori, tuli vähän pidempi tarina. Suurimman osan sain kirjoitettua tylsän työkonferenssin aikana kun en enään jaksanut koodata. Mmmmm, multitasking.