Open dezhidki opened 1 month ago
- Meneekö mitään rikki, jos getState hakisi pluginin tiedot ilman doc_id ja par_id -parametreja? Yllä olevat kaksi hakutapaa (answer_id tai task_id) riittävät jo tilan hakemiseksi
- Onko siis joku tapaus, jossa pluginin tila haluttaisiin hakea (doc_id, par_id)-kaksikolla? Ehkä jos ei jostain syystä tiedetä pluginin taskID, mutta tiedetään pluginin sijainti?
Eikös jompi kumpi (docid tai parid) tarvita aina kuitenkin käännöksiä varten? Siinä getStatessahan haetaan pluginin koko html. Jos tekee getState alkuperäiskielisessä dokumentissa, pluginin otsikot yms näkyy sillä kielellä. Sitten jos tekee getState käännösdokumentissa niin pitäisi saada siinä html:ssä käännetyt otsikot yms.
- Meneekö mitään rikki, jos getState hakisi pluginin tiedot ilman doc_id ja par_id -parametreja? Yllä olevat kaksi hakutapaa (answer_id tai task_id) riittävät jo tilan hakemiseksi
- Onko siis joku tapaus, jossa pluginin tila haluttaisiin hakea (doc_id, par_id)-kaksikolla? Ehkä jos ei jostain syystä tiedetä pluginin taskID, mutta tiedetään pluginin sijainti?
Eikös jompi kumpi (docid tai parid) tarvita aina kuitenkin käännöksiä varten? Siinä getStatessahan haetaan pluginin koko html. Jos tekee getState alkuperäiskielisessä dokumentissa, pluginin otsikot yms näkyy sillä kielellä. Sitten jos tekee getState käännösdokumentissa niin pitäisi saada siinä html:ssä käännetyt otsikot yms.
Eikun nyt kun tutkin niin noita varten tuolla getStatessa meneekin tuo ref_from_doc_id ja ref_from_par_id, joiden perusteella haetaan se käännöksen html. Ja nopeasti katsottuna getState heittää poikkeuksen, jos ei anna answerId:tä (josta kaivetaan taskId) tai taskId:tä. Eli ei pitäisi olla tilannetta jossa tiedetään pluginin sijainti mutta ei taskId:tä.
Joskus oli toiveena että samanniminen plugin voisi olla dokumentissa kaksi kertaa, esim yhtä arvonsyöttökenttää voisi olla kiva toistaa useampaan kohtaan (sitä varten text/numericfieldissä on se duplicates
-kohta), ja siihen tuo par_id voisi olla hyödyllinen jos kentillä on eri asetuksia ulkoasua tms varten. Mutta tuo on niin huonosti tuettu ominaisuus että mieluummin vaan poistaisi tuon doc_id ja par_id -parametrit kokonaan
Toistovaiheet
Luo dokumentti
1
ja siihen pluginTee dokumentille
1
käännösdokumentti2
ja määritä siihen käännös:Tee dokumentti
3
ja lisää siihen viite dokumentin1
tehtävälohkoon:Tee dokumentille
3
käännösdokumentti4
ja muuta syntynyttä käännöslohkoa viittaamaan käännösdokumentin2
käännöslohkoon:Lisää vastaus pluginiin käännösdokumentissa
2
Mene käännösdokumenttiin
4
ja yritä katsoa tehtävän sisältöä.Yllä olevassa esimerkissä virheeksi voi jossain vaiheessa tulla
missä
XXX
on dokumentin1
nimi.Virheen lähde on:
https://github.com/TIM-JYU/TIM/blob/da205908c9bb88da7c2842869c1fdf4e1fcc9dd5/timApp/plugin/plugin.py#L1028-L1068
Virhe tapahtuu, kun AnswerBrowser tekee pyynnön
/getState
.Virheen todennäköisin syy on se, että vaiheessa 6 AB tekee seuraavanlaisen pyynnön:
Tällöin tapahtuu seuraavat asiat
/getState
-polussa:1.suttu
1.suttu.pgfF5CsENLCU
1.suttu.pgfF5CsENLCU
. Tätä ei löydy, koskapgfF5CsENLCU
on käännösdokumentin lohko ID, mutta nyt haetaan data dokumentista1
(eli alkuperäinen).Olennainen huomio: tällä hetkellä
/getState
-polku ei käytä parametrina annettuadoc_id
tä!Korjaus siis vaatisi
doc_id
-parametrin huomioimista. Vähintään, jos se on annettu, niin taskIDhen asetetaan parametrina annettudoc_id
. Tämä kuitenkin pitää testata hyvin tarkasti, sillä tämä voi rikkoa oikeaa logiikkaa. Pitäisi ottaa huomioon ainakin seuraavia asioita:doc_id
liittyy jollain tavalla vastaukseen tallenettuun taskIDhen. Ehkä tarkistus, ettädoc_id
on käännösdokumentti?answer_id
), jolloin pluginin tiedot haetaan vastaukseen tallenetun taskID:n perusteellatask_id
), jolloin pluginin tiedot haetaan taskID:n perusteellapar_id
käytetään, jos se on annettu ja se käytetään vain lisämään saniteettitarkistusta. Pitäisikö olla kolmas tapa hakea plugin: (doc_id
,par_id
) -yhdistelmäpar_id
:lle?par_id
käytetään vain saniteettitarkistusta vartendoc_id
japar_id
-parametreja? Yllä olevat kaksi hakutapaa (answer_id tai task_id) riittävät jo tilan hakemiseksidoc_id
,par_id
)-kaksikolla? Ehkä jos ei jostain syystä tiedetä pluginin taskID, mutta tiedetään pluginin sijainti?