TIM-JYU / TIM

TIM (The Interactive Material) is an open-source cloud-based platform for creating interactive learning documents.
https://tim.education/view/about/en-US
MIT License
14 stars 4 forks source link

Mallivastausten näyttämien ja tehtävän lukitseminen #2638

Open dezhidki opened 2 years ago

dezhidki commented 2 years ago

In GitLab by @vesal on Jun 7, 2022, 11:32

Tarvitaan tapa näyttää mallivastaus ja lukita tehtävä

Dokumentissa:

on tähän liittyviä esimerkkejä.

Käyttötapauksia:

Miten saisi helposti niin, että ohjelmatehtävissä mallivastauksen voisi ajaa ilman että siitä tulee oma vastaus (vrt Mallivastaus-käyttäjä) DrawIO-tehtävissä ja esim matikan käsinkirjoitustehtävissä haasteita mallivastauksen antamisessa kun se ei ole tekstiä. Siinä mielessä mallivastauksen antaminen Mallivastaus-käyttäjänä on kätevää. Sen haitta on kuitenkin työläs kopiointi vuodesta toiseen. Suoraan tehtävään kiinnitetty mallivastaus kopioituu automaattisesti.

Vaiheet

Aivan alkuun:

Sitten:

dezhidki commented 2 years ago

In GitLab by @vesal on Jun 7, 2022, 11:33

Tätä tarvitaan viimeistään elokuun 10 kun alkaa Avoimen aikatauluttamaton versio Ohj1:stä.

Nyt kun mietin, niin ehkä helpoin ja yleiskäyttöisin olisi seuraava (yhdistelen tähän edellsiten postien ajatuksia).

On JS-runner (siisteyden vuoksi ehkä ulkoasuna linkki mieluummin kuin painike)

Mallivastaus

Runnerin parametrina on edellä olevan tehtävän #-id.

Sen luentomonisteessa painaminen tarkistaa että onko tehtävää yritetty n kertaa (saako selville runnerissa?) Jos on, niin se printtaa mallivastauksen. Minkälaisella html kentällä pitää olla varustettu että tulee kielenmukainen väritys? Eli joka kerta kun mallivastauksen haluaa katsoa, pitää painaa tuota.

Demoissa taas runneri tarkastaa että onko "Lukittu" field päällä. "Lukittu"-fieldejä voidaan tehdä joko tehtäväkohtaisesti tai yksi/dokumentti. Tehtäväkohtaisella olisi käyttöä siinä mielessä, että jos demoista tehdään kahdet eri versiot:

Tällöin mallivastauksen voi haluta katsoa tuolla asiasällön mukaisessa dokumentissa ja silloin tehtävä pitäisi lukkiintua.

Tuollaisten tekemisessä on aika paljon työtä jos jokaiselle tehtävälle luo erikseen "Lukittu"-fieldin, ja jsrunnerin. Herääkin kysymys että voisiko kaikkiin plugineihin lisätä attribuutin

modelAnswer: |!! Console.WriteLine("Hello World"); !!

jolloin plugin hoitaisi itse tuon lukituksen ja laittaisi niin, että lukituksen jälkeiset vastaukset ovat invalid. Plugin itse laittaisi linkkitekstin "Mallivastaus" ja sen painaminen muista attribuuteista riippuen tarkistaisi luentomonisteessa että yrityksiä on riittävästi ja demoissa että onko lukitus jo päällä. Ja jos on, niin tulostaa vastauksen. Jos demoissa lukitus ei ole päällä, kysyy että haluaako todella lukita tehtävän.

Tässä on vielä pieni epäyhteensopivuus demojen pisteiden hakemiseen: Varsinaiset pisteet saa kun hakee validit vastaukset (ei lukitut). Mutta sitten invalid-vastauksia ei tällä hetkellä (???) taida voida hakea samassa runnerisssa. Nythän haetaan sitten myös korjatut pisteet, eli vastauksen katsomisen jälkeen oma vastaus tulee korjata ja kokeilla. Ja lukitsemisen jälkeen se olisi invalid.

Nyt on oikeastaan AJ:n ja Juhan mietittävä asia että lukitaanko viikkotehtävä-tyyppisissä dokumenteissa tehtävä kerrallaan vai dokumentti-kerrallaan. Dokumentti-kerrallaan tehtävä lukitus voitaisiin varmaan hoitaa (?) yhdellä jsrunnerilla, joka käy lukitsemassa kaikki dokumentin tehtävät. Ehkä jopa multisave saattaisi taipua (??) tähän.

Sitten on se Aallon tekemä versio, joka näyttää menupalkissa kunkin tehdyn tehtävän pisteet. Jos jotenkin yhdellä tehtävien luettelemisella saisi kaikki nuo ominaisuudet:

niin helpottaisi noiden yläpitoa. Tämä viimeinen toive tuottaa eniten koodausta, eli se voi olla oma korttinsa.

Mutta tuohon "minimiin" pääsemikseksi tarvittaisiin

Ihan alkuun uutta koodia:

Sitten:

Normaalissa aikataulutetussa kurssissa voisi olla niin, että muuten toimitaan samalla tavalla, mutta Mallivastaus-linkki tulee kun palautusaika päättyy ja se ei lukitse vastausta. pisteet haetaan takarajan perusteella, jolloin lukitusta ei tarvita).

On Tue, 7 Jun 2022, Denis Zhidkikh wrote:

On 06/06/2022 20.15, Vesa Lappalainen wrote:

Ei huono idea, mutta yhteensopivuus vanhoihin pitänee säilyttää tai tehdä hirveästi sitten muutoksia.

Joo, alkuun olisi varmaan kummatkin käytössä. Mutta eipä tälläkään ajatuksella ole kiire. Kunhan tuli vaan mieleen, että tällaisia vastausoikeutta rajoittavia attribuutteja alkaa jo kertyä.

Dokumenttitason näyttämisessä ei kai. Pitäsi varmaan olla oma ryhmä kullekin demokerralla, johon henkilö lisätään kun pyytää vastausoikeuden ("lukittu" menee päälle). Tuossa o n vaan se este (vielä) että JSRunner ei taida kyetä tekemään tuota lisäystä käyttäjän ajamana (View oikeus dokumenttiin)?

Ajattelin myös tuon (ja se olisi helpoin), mutta näitä ryhmiä alkaisi sitten kertyä aika paljon. Oikeuden lisääminen ei sinänsä ole ihan mahdoton asia, kunhan sen tekee (esim. niin, että antaa Logged-in usersille tai opiskelijoiden ryhmälle sopivat oikeudet "demoryhmiin").

Mutta en vielä keksinyt muuta teknisesti helppoa tapaa, joka kävisi yllä olevan fieldin kaveriksi. En ole ehtinyt perehtyä vertaisarviointiin, mutta olisiko eräs vaihtoehto laittaa vertaisarviointi päälle nykyisen käyttäjän ja Mallivastaus-käyttäjän välille? Nykyään ei taida kuitenkaan olla JSRunnerissa funktiota, jolla vertaisarviointi voidaan aloittaa kahden käyttäjän välillä?

Vielä tuli mieleen, että voisi kai laittaa

groups: Mallivastaus

jolloin Answers-tilassa kaikille näkyisi vain Mallivastaus-käyttäjän vastaukset. Tämä tosin kai nyt sotkisi jopa teacher-tilaa, eli voisi olla kai

answerGroups: Mallivastaus

joka pätisi vain Answers-tilaan.

Joo, periaatteessa voisi olla vaikka niin, että 4-5:n yrityksen jälkeen vastaus tulisi näkyviin. Silloin se ei ole mallivastauksessa (mallivastaus-käyttäjällä) ja se sen ajamiseksi pitää copy/paste se omaksi vastauksekse. Mutta voi olla että Ohj1 moniste käy kovin hitaaksi jos siinä hakee ryhmiä ja nykyinen answers-oikeus antaa samalla oikeuden katsoa muidenkin vastaajien vastaukset. Lisäksi kun se on dokukohtainen, paljastuisi kaikki samalla. Eli tuo voi olla helpoin että on joko jsrunner tai postprogram joka näyttää vastauksen. Periaattees voisi riittää ihan jsrunner, joka tulostaa sen vastauksen ja sen vois siitä copy/paste itselle.

Tämän ainakin pitäisi onnistua jo nykyisellä logiikalla ilman mitään lisäyksiä koodiin. Ainoastaan siis jos haluaa samalla estää vastaamisen painikkeesta painamalla; sitä varten pitäisi lisätä yllä mainittu field-rajoitus.

Eli miten tähän? Näen siis kaksi vaihtoehtoa

  1. Lisätään tehtävän lukittaminen kentän arvon perusteella + joku tapa näyttää Mallivastaus-käyttäjän vastaukset (olisiko tuo answer-oikeuden antaminen + näytettävien vastausten rajoittaminen Mallivastaus-käyttäjään)
  2. Postprogrammilla laitetaan tehtäväkohtaiset vastaukset näkyviin. Tämä on jo olemassa, ja voin vaikka laittaa malliksi johonkin tehtävään

Ja mikä on aikataulu tällä, eli pitääkö saada ASAP vai menevätkö esim. roolien vaihto, kalenterin jatkokehitys edelle? Toki meitä on nyt kolme kesän ajaksi, niin joku meistä voi ottaa tämän tehtävälukitusjutun hommaksi.

dezhidki commented 2 years ago

changed due date to August 10, 2022

dezhidki commented 2 years ago

In GitLab by @sijualle on Jun 8, 2022, 01:53

tehtävä voi katsoa oman laillisuutensa fieldistä

Tarkoittaako tuo "fieldistä" siis cbfieldiä / tai vastaavan pluginin vastauskenttää? Eli jotain tällaista https://timdevs01-3.it.jyu.fi/view/accesfield

dezhidki commented 2 years ago

In GitLab by @vesal on Jun 8, 2022, 02:05

Simo commented:

  tehtävä voi katsoa oman laillisuutensa fieldistä

Tarkoittaako tuo "fieldistä" siis cbfieldiä / tai vastaavan pluginin vastauskenttää? Eli jotain tällaista https://timdevs01-3.it.jyu.fi/view/accesfield

Millä tuonne pääsee teacherinä niin näkee mitä on koodissa.

Mutta periaatteessa.

Ajattelin ensin että on jsrunner joka laittaa tuon eston päälle, niin jsrunnerissa ovisi alkuun olla confirmTest: joka messageDialogilla näytetään ja jos yes, niin vasta sitten ajetaan runner.

Ettei ihan vahingossa lukitu. Välttämättä fieldin ei tarviisi edes näkyä tai ainakaan itse sitä ei voisi muuta kuin sillä runnerilla muuttaa. Silloin voisi opettajalla jäädä mahis "nollata".

Ja nyt kun tuo on lukittu, niin voisi sitten sen Mallivastaus-runnerilla tulostaa mallivastauksen.

Ja sitten kun tuon kaiken leipoisi kaikkiin plugineihin sisään, niin ei tarviisi itse lisäillä noita komponenteja jos tekee paljon mallivastauksia.

Mutta tuolla pääsisi alkuun yksittäisissä tapauksissa.

Vesa

dezhidki commented 2 years ago

In GitLab by @sijualle on Jun 8, 2022, 02:16

admin1-käyttäjällä pääsee, laitoin myös testuser1:n owneriksi. Tuossa on attribuutti accessField jolla määrätään mistä kentästä luetaan saako vastata.

Välttämättä fieldin ei tarviisi edes näkyä tai ainakaan itse sitä ei voisi muuta kuin sillä runnerilla muuttaa.

Nykykoodeilla taitaa olla mahdollista sallia vastaaminen vain jsrunnerilla jos laittaa answerLimit 0. Tuo kentänhän voi piilottaa perus css:llä. Tai sitten se voisi myös sijaita eri koknaan eri dokumentissa, jossain kortissa tai todossa oli pohdintaa että dokumentin asetuksiin voisi sanoa mistä dokumenteista tulevilla jsrunnereilla saa vastata dokumenttiin vaikkei ole teacher. Silloin sitä näkymätöntä "estä vastaamisesi" -kenttää voisi vastaaja itse ruksia tuon vastausdokumentin jsrunnerin kautta.

dezhidki commented 2 years ago

In GitLab by @vesal on Jun 8, 2022, 02:32

no muokkasin tuota vähän sellaiseksi kun se voisi olla.

dezhidki commented 2 years ago

In GitLab by @vesal on Jun 8, 2022, 02:51

Jostakin syystä Lukitse funnerilla ei lukitu?

dezhidki commented 2 years ago

In GitLab by @sijualle on Jun 8, 2022, 03:12

Nyt lukittuu, oli alunperin tarkistus string 1 ja runnerista tulee int 1

dezhidki commented 2 years ago

In GitLab by @vesal on Jun 8, 2022, 18:31

Nyt lukittuu, oli alunperin tarkistus string 1 ja runnerista tulee int 1

Voisikos muuten tätä käyttää hyväkseen niin, että voisi sanoa mkä arvo tarkoittaa estämistä.

Eli voisi jopa käyttää laskurina ja sitten kun on vaikka 4, niin lukitsee? Oletuksena ehkä tuo 1 konvertoituna merkkijonoksi.

dezhidki commented 2 years ago

In GitLab by @sijualle on Jun 9, 2022, 24:28

Voishan sitä https://timdevs01-3.it.jyu.fi/view/accesfield#numerokentta

nyt on

accessField:
 field: numerokentta
 limit: 3
dezhidki commented 2 years ago

In GitLab by @vesal on Jun 9, 2022, 01:03

accessField: field: numerokentta limit: 3

Voikos limitin tilalla olla vaihtoehtona vaikkapa

regexp: ".kissa."

Entä olisiko missään tilanteessa mielekästä että lukituskenttiä olisi useampia:

 accessFields:
   - field: numerokentta
     limit: 3
   - field: kissakentta
     regexp: ".*kissa.*"

Oletuksena or, mutta jos sanoisi

   - field: kissakentta
     regexp: ".*kissa.*"
     op: "and"

niin liittää tähän astiseen tulokseen andillä. En tiedä olisiko tuossa järkeä ja tarvetta. Ehkä joskus käänteisesti niin, että jos on edelliset tehtävät tekemättä, niin seuraavaa ei saa tehdä. Mutta tällöin olisi ehkä enemmän niin, ettei tehtävää edes näytetä.

 access:
  visible: false
  stem: Tee ensin numero ja kissajuttu
  until: true
  fields:
   - field: numerokentta
     value: 3
   - field: kissakentta
     regexp: ".*kissa.*"
     op: and

ja tavallisessa käytössä

 access:
  error: Raja ylitetty, et enää voi vastata
  fields:
   - field: numerokentta
     limit: 3

En tiedä tuliko tuo nyt loppun asti mietityksi, koska perustapaus meni jo pitkäksi. Tosin tuo virhetekstin mahdollisuus olisi siinä syytä ehkä tavalla tai toisella olla, koska se nykyinen oeltusvirheilmoitus on aika hämäävä.

Ehkä tuota ei nyt kannata liian pitkälle viedä. MIettii sen perustapauksen niin, että voi sitten helposti laajentaa jos tulee oikeat käyttöä.

Toki sellaiset ketjutetut piilossaolevat tehtävät voisivat olla joskus tarpeen, mutta ehkä sillion ehtona en edellsien tehtävän pisteet tai sitten se, että edellinen tehtävä on lukittu ja mallivastaus katsottu.

Vesa

dezhidki commented 2 years ago

In GitLab by @sijualle on Jun 9, 2022, 12:06

En tiedä kannattaako tähän laittaa kovin monimutkaista logiikkaa, jos se varsinainen tarkistuslogiikka että milloin laitetaan se estävä arvo kenttään tulee jsrunnereiden tai postprogramien avulla. Jos käyttää sopivasti jotain apukenttiä niin se lopullinen accesFieldin arvo voisi minusta olla jopa binäärinen, ja kaikki monimutkaiset välivaiheet ja logiikan (monen tehtävän tarkistus, regexpit yms) saisi aina tilanteen mukaan hoidettua runnereilla.

Tuo tietty vaatisi sitä että skriptejä pyörii aina vastausten jälkeen automaattisesti (joku jsrunner laukeaa vastaamisen jälkeen) ja että käyttäjän oikeus kirjoittaa noihin apukenttiin olisi vain jsrunnereiden varassa.

dezhidki commented 2 years ago

In GitLab by @vesal on Jun 9, 2022, 16:49

Joo, ei ehkä tässä vaiheessa monimutkaista, mutta ne yleisimmät tapaukset pitäusi lopluta saada integroitua suoraan ab:n. Ettei tarvii joka tehtävälle kirjoittaa kolmea komponenttia. Lisäksi vertaisarvio toimii paremmin jos saadaan mallivastaus integroitua siihen.

Eli nyt ne tavoitteiltaan ekat tapaukset:

Mallivastaukselle loogisin paikka on itse plugin, missä tehtäväkin. Silloin esim vertausarviossa se yksinlohko riittää näyttää.

Mallivastaus annetaan pluginissa md:nä (jolloin se voi olla myös html).

dezhidki commented 2 years ago

In GitLab by @sijualle on Jun 10, 2022, 13:22

  • mallivastauksen näkee kun lukitsee (aikatauluttamaton ohj kurssi) pitää edellen voida jatkaa vastaamista, mutta pitää jsrunnerilla voida erottaa ennen lukitsemista annettu vastaus ja sen jälkeen annettu
  • mallivastauksen voi katsoa kun on n kertaa yrittänyt tai oikea vastaus, ei estä jatkovastaamista (esim ohj1 luentomoniste)
  • mallivastauksen näkee tietyn aikarajan jälkeen, ei estä jatkovastaamista (eron näkee aikaleimasta)

Nää on joo varmaan helpompi toteuttaa suoraan pluginiin yleisillä attribuuteilla. Tuosta ylimmästä en ole varma mihin se "lukitustieto" kannataa tallentaa, ehkä joku oma taulu tietokantaan sille?

Mutta jos tuon erillisellä kentällä lukitsemisen kanssa laittaa alkuun tuon accessField-attribuutin ja sille jonkun perustapauksen (vaikka tuo nykyinen että jos vähintään x arvo kentässä niin lukkoon tai sitten ihan true/false), niin sitä pitäisi kohtuu helposti voida myöhemminkin laajentaa jos haluaa regexpejä tai useamman kentän tarkistamista

dezhidki commented 2 years ago

In GitLab by @sijualle on Jun 10, 2022, 18:04

jsrunnerissa voi fieldin esitellä myös nimi.count

Tuossa saattaa muuten joskus tulla ihmettelyä siitä että vastaus ei tallennu tietokantaan jos se on sama kuin viimeksi, eli pelkkä aja/tallenna -napin peräkkäin hakkaamista ei lasketa yrityskerraksi

https://timdevs01-3.it.jyu.fi/view/jsrunner-count#runnerhellojavacount

dezhidki commented 2 years ago

In GitLab by @sijualle on Jun 14, 2022, 14:23

marked the task jsrunnerissa voi fieldin esitellä myös nimi.count (ks: https://tim.jyu.fi/view/tim/ohjeita/lomakkeiden-luominen#fields) as completed

dezhidki commented 2 years ago

In GitLab by @sijualle on Jun 14, 2022, 14:23

marked the task jsrunneriin varmistusdialogi attribuutilla ennen ajamista, confirmText: "Haluatko varmasti lukita vastauksen?" as completed

dezhidki commented 2 years ago

In GitLab by @sijualle on Jun 14, 2022, 14:24

ehkä myös nimi.invalid

Tarkoittaako tuo että halutaan viimeisin vastaus, oli se invalid tai ei, vai että joku tapa katsoa onko viimeisin vastaus invalid?

dezhidki commented 2 years ago

In GitLab by @vesal on Jun 15, 2022, 24:38

  ehkä myös nimi.invalid

Tarkoittaako tuo että halutaan viimeisin vastaus, oli se invalid tai ei, vai että joku tapa katsoa onko viimeisin vastaus invalid?

Tuossa voi olla kaksi erilaista tarvetta:

Koska tälle ei vielä ole selkeää käyttötapausta, en rhkä tekisi päätöstä nyt tai ainakin sitten nimen pitäisi olla selkeämpi kumpaako tarkoittaa tai jopa kaksi eri toimintoa?

Jättäisin tämän hetkeksi hyllyllä ja miettisin mitn nyt nämä ominaisuudet saa ab:hen niin että vaikka oikeasti ajetaa jsrunner, niin mallivastaus linkki ja sen koodi olisi suoraan itse tehtävän yamlissa jotta näitä olisi helpompi tehdä ja ylläpitää.

vesal commented 2 years ago

Jotenkin ab:hen tyyliin

modelAnswer:
  count: 2  # kahden yrityksen jälkeen saa mallivastauksen
  linkText: Mallivastaus # mitä lukee tekstinä
  answer: |!!  # md teksti joka tulostuu kun katsotaan
  ´´´c#
       Console.WriteLine("Hello World!");
  ´´´
!!

Muita attribuutteja modelAnsweriin

lockText: Lukitse ja katso malli
lock: true  # oletus, lukittuu jos katsoo mallin

Lukitun Mallivastauksen katsomisen jälkeen voi tehdä invalid (vai onko jopa joku muu "taso") vastauksia ja kokeilla toimintaa.

sijualle commented 2 years ago

lisätäänkö vaan raakasti vastausatauluun uusi kenttä vai voiko jotakin vanhaa käyttää luovasti apuna lukitukseen? Vai luodaanko automaattisesti "pseudo" field tehtava_locked. Tuo vaatsisi silloin jokaisen tehävän kohdalla kaksi kantahakua kun pitäisi hakea se mahdollinen lock?

Keväällä tuli tehtyä se taulu taskBlock, jonka avulla voi käyttää block- ja blockAccess-tauluja jäljittämään voiko käyttäjä vastata yksittäiseen tehtävään. Se voisi sopia aika hyvin tähänkin: https://timdevs01-3.it.jyu.fi/view/modelanswer

Tosin tuossa blockAccess-taulussa ei ole infoa siitä miksi yksittäinen tehtävä on lukittu. Jos olisi tehtävä jossa on sekä accessDuration-attribuutin takia tullut lukitus että modelAnswerin kautta tullut lukitus, niin sitä ei nykytoteutuksella saa tietää kummasta se lukko on peräisin.

vesal commented 2 years ago

Toiminta näyttää jo aika valmiilta, laitoin tuonne kommentteja ja kysymyksiä. Niitä saa tarvittaessa siirtää tähän korttiin.

Toteutuksesta en uskalla sanoa. Pitää varoa, että ohj1 moniste ei entisestään hidastu, se on mulla jo mennyt aika hitaaksi. Jos sinne ruvetaan laittamaan näitä mallivastauksia ja erityisesti dumbon kautta meneviä. Tosin jos mallivastaus haetaan vasta kun sitä pyydetään, se dumbo ei oleellisesti hidasta.

sijualle commented 2 years ago

Yksi tapa näyttää drawio-vastauksia tms on tietty laittaa suoraan joku kuva tuohon modelAnswerin vastaukseksi, esim

answer:
 type: image
 id: kuvan id

Tuo sitten niin että kuvaan ei ole suoraa näyttöoikeutta vaan se pitää avata jonkin /modelAnswer-reitin kautta, niin saa samalla tarkistettua tehtävän markupista säännöt että milloin se kuva aukeaa

Toinen tapa olisi viitata suoraan mallivastaukseen. Esim kurssin pitäjä vastaa pluginiin normaalisti, ja katsoo mikä id vastaukselle tuli. Sit vois laittaa

answer:
  type: state (tai reviewhtml)
  id: answerid

Silloin ois kaks tapaa näyttää vastaus. Jos ois state, niin koko plugin latautuisi uudestaan sillä mallivastauksella, samalla tavalla kuin nykyisin latautuu vastauksia vaihtaessa. Jos taas ois reviewhtml, niin se pyytäisi pluginilta sen reviewhtml-muodon mitä nykyään käytetään velppaamisessa.

sijualle commented 2 years ago

reviewhtml / state testissä https://timdevs01-3.it.jyu.fi/view/modelanswer_types

Tuo state vaatii varmaan eniten hieromista, koska se ylikirjoittaa omat keskeneräiset vastaukset. Siihen tarvii varmaan jotain ylimääräisiä varmistusdialogeita tai jonkin tavan palata siihen omaan vastaukseen. Tai ehkä tuon koko staten voisi avata kelluvana ikkuvana tms.

Mutta ehkä ekaan mr:ään riittänee tuo että voi antaa tekstinä/markdownina sen oikean vastauksen, ja sitten myöhemmin nuo muut

vesal commented 2 years ago

En ihan ymmärrä mistä tuo id saadaan? Miten sivujen kopiointi vuodelta toiselle ja sitten myös koneelta toiselle. Voisiko se jotenkin olla tekstuaalinen, jolloin voisi sisältää vuotta ja dokun nimeä ja vastausta siellä.

Entä voiko nyt joku vaan tehdä itselleen dokun, jossa on samat kopsittuna ja saa vastaukset?

sijualle commented 2 years ago

Id saadaan tekemällä mallivastaus ja toistaiseksi katsomalla vaikka network tabista mikä id sille tulee. Myöhemmin tuota varten voi answerbrowseriin lisätä jonkin tavan tarkistaa se id käyttöliittymällä.

Tuon oikeuksia pitää myös miettiä myöhemmin lisää. Alkuun olisi varmaan niin että mallivastauksen pitää olla vähintään vastaus saman dokumentin tehtävään, koska ei ole toistaiseksi mitään tapaa sanoa vastauksessa että missä kaikkialla tätä saa käyttää mallivastauksena. Se tietty hankaloittaa noita kopsaamisisia. Ehkä dokumentin asetuksissa voisi sanoa että tätä saa käyttää kaikissa saman yläkansion alla olevissa dokuissa tjsp

Vielä yksi tapa olisi kirjoittaa koko malllivastaus markupiin siinä muodossa kun se menee kantaan, eli cspluginilla kirjottaisi auki tuon {usercode:...}. Silloinkin sen voisi ladata suoraan pluginin statena tai reviewhtml:nä, ja dokumenttia saisi helposti kopsittua muille koneille tai vuosikansioille. Tosin kuvatehtävissä ne voisivat olla aika pitkiä, ja esim reviewcanvaksen vastaukset kannassa taitaa olla vain polkuja kuvien sijainteihin

vesal commented 2 years ago

tuossako ei voisi id:n vaihtoehtona olla jotakin tekstuaalista?

dezhidki commented 2 years ago

tuossako ei voisi id:n vaihtoehtona olla jotakin tekstuaalista?

Ainoa lähin "tekstuaalinen" tapa yksikäsitteisesti löytää vastaus on käyttää yhdistelmä dokumentin polusta, tehtävän IDstä, käyttäjästä sekä vastauksen lähetyspäivämäärästä. Vastauskertaa ei voi käyttää, koska vastauskerran numero voi vaihtua (esim. jos merkkaa vastauksen epävalidiksi).


Mutta mielestäni mallivastausta ei kannata hakea jonkun käyttäjän vastauksesta, koska mallivastaus ei sitten siirry dokumentin kopioinnin yhteydessä. Eli jos dokumentin kopioi seuraavalle vuodelle, mallivastaus ei kopioidu mukaan (jolloin pitäisi lisäksi tehdä joku vastausten kopiointilogiikka). Lisäksi mallivastauksen ylläpito on ylipäätään hankalaa näin.

Sen sijaan ehdotan, että olisi

answer:
  doc: polku_dokumenttiin_tai_id
  par: lohkon_id

ja mallivastaus haetaan dokumentin lohkosta. Tästä saadaan yksikäsitteinen tapa löytää markdown, ja oikeuksien kannalta ainakin alkuun on OK, että lohko haetaan suoraan dokumentista katsomatta oikeuksia erityisemmin (tehtävän laatijan tulee sitten varmistaa, että lohkoid ei ole helposti arvattavissa; tämä sama logiikka ja perustelu käytetään jo esim. viitelohkojen käsittelyssä).

Miksi:

vesal commented 2 years ago

jos tulee samasta dukusta, niin voisi riittää ihan mallivastaaja username. silloin voisi poimia vaikka jonkun opiskelijankin vastauksen. mutta ehkä yleensä sen mallivastaus-nimisen. ilman lisäinfoa tietty viimeisin vastaus. sitten tarviisi tavan voida kopioida vastauksia dokusta toiseen.

vesal commented 2 years ago

Kyllä tuokin on käyttökelpoinen idea, että mallivastaus tulee erillisestä dokusta sen lohkon (tai jopa alueen) perusteella. Pieni miinus on että se ei ole ajettavissa siellä missä ylläpidetään, eikä sisällä samoja valmiita koodinosia.

dezhidki commented 2 years ago

Kyllä tuokin on käyttökelpoinen idea, että mallivastaus tulee erillisestä dokusta sen lohkon (tai jopa alueen) perusteella. Pieni miinus on että se ei ole ajettavissa siellä missä ylläpidetään, eikä sisällä samoja valmiita koodinosia.

Tämän saisi ohitettua esimerkiksi siten, että laittaa mallivastausdokumenttiin tehtävät viitelohkoina.

Toisaalta tästä tuleekin jatkoajatus, että mallivastaus voisi olla samassa dokumentissa lohkossa, joka on näkyvissä oletuksena vain Teacher-tilassa. Taitaa onnistua nykyään suoraan makrolla tällainen viritelmä.

jos tulee samasta dukusta, niin voisi riittää ihan mallivastaaja username.

Nojoo, yksinkertainen tapaus olisi, että oletuksena haetaan samasta tehtävästä mallivastaus-käyttäjän viimeisin vastaus. Se ei vaatisi mitään erikoisattribuutteja. Siinä on toki sitten tuo dokumentin kopiointi, jota pitäisi päivittää tukemaan vähintään mallivastaajan viimeisimmän vastauksen kopioinnin.

vesal commented 2 years ago

Siinä on toki sitten tuo dokumentin kopiointi, jota pitäisi päivittää tukemaan vähintään mallivastaajan viimeisimmän vastauksen kopioinnin.

Vai pitäisikö se olla että jos on se mallivastaus usernamella tms, niin silloin sellainen vastaus kopioidaan.

Toki ohj1 ja ohj2 kurssit tarviisivat nykyiselläänkin mahdollisuuden kopioida mallivastaajan vastaukset, koska ne julkaistaan kun pakautusaika umpeutuu ja nyt niitä pitää käsin kopioida.

Jos mallivastaus haetaan saman dokun makrolla piilotetusta lohkosta, niin se on melkein helpompi laittaa modelAnswerin text-lohkona (kunhan siihen saa md tuen).

Jos tuo text toimii, en ole ihan varma kumpaako käyttäisin:

sijualle commented 2 years ago

Tästä on nyt eka versio tuotannossa eli voi antaa

modelAnswer:
 answer: Mallivastaus tekstinä (tukee md)
 linkText: Mallivastauksen linkki
 lock: true # (oletus, mallin katsomisen jälkeen vastaukset ovat invalid)
 lockText: varmistus ennen vastauksen lukitsemista
 count: 2 # yritysten vähimmäismäärä, valinnainnen

jos on luentomonisteen yritysraja (attribuuttina) ylitetty, niin linkki tulee (tai voi se olla ainakin, mutta enne rajan ylitysta sanoo että yritä vielä x kertaa) niin ei mene invalid, mutta näyttää vastauksen

Tarkoittako tuo luentomonisteen yritysraja jonkinlaista koko dokumentin vastausrajoitusta, vai yksittäisen tehtävän vastausrajoitusta? Nythän yksittäisessä tehtävässä on tuo count jolla saa vähimmäisyritysmäärän, ja lockin voi laittaa falseksi jos haluaa että ei mene mallin katsomisen jälkeen invalidiksi


Miten saisi helposti niin, että ohjelmatehtävissä mallivastauksen voisi ajaa ilman että siitä tulee oma vastaus (vrt Mallivastaus-käyttäjä)

Tuolla answer-reitissä on jo nyt saveAnswer/noSave-parametreja joilla tuon voisi säätää niin että jos lataa mallivastauksen suoraan stateksi, niin voisi ajella mallikoodia ilman vastauksen tallentamista. Tuota asetusta pitäisi jotenkin sisällyttää käyttöliittymään, sillä jossain tilanteessahan joku voi haluta tallentaa oman mallikoodin päälle tehdyt muokkaukset. Lisäksi joissain tehtävissä voi hämätä tuo että ajaminen tapahtuu tuon "tallenna"-painikkeen kautta, joka ei oikeasti tallentaisikaan tehtävää. Vai onko tuo vain tehtävän suunnittelukysymys, että pitää erikseen tarjota "tallenna" ja "aja" -painikkeet


Noista erilaisista vastaustyypeistä (teksti, state, reviewhtml yms) mietin että voisiko tuossa olla jopa tarvetta "kaksinkertaiselle mallivastaukselle", eli vastaus(/koodit) ladataan suoraan pluginiin, mutta siihen nykyiseen markdown-alueeseen avautuisi sitten tarkempi teoria miksi vastaus on juuri näin. Eli olisi joku erillinen "explanation"-attribuutti, joka toimisi samaan tapaan kuin tuo nykyinen tekstimuotovastaus vaikka mallivastaus ladattaisiinkin suoraan pluginin stateksi

vesal commented 2 years ago

TARKOITTAKO TUO LUENTOMONISTEEN YRITYSRAJA JONKINLAISTA KOKO DOKUMENTIN VASTAUSRAJOITUSTA, VAI YKSITTäISEN TEHTäVäN VASTAUSRAJOITUSTA? NYTHäN YKSITTäISESSä TEHTäVäSSä ON TUO COUNT JOLLA SAA VäHIMMäISYRITYSMääRäN, JA LOCKIN VOI LAITTAA FALSEKSI JOS HALUAA ETTä EI MENE MALLIN KATSOMISEN JäLKEEN INVALIDIKSI

Ajattelun että on pluginkohtainen raja, jonka jälkeen vasta ilmestyy tuo mallivastaus-teksti. Eli monisteessakaan ei edes heti houkutella sitä painamaan. Oletuksena esim 1. Ja sitten yhden yhrityksen jälkeen saa sen mallivastaustekstin ja sitten se count voi olla sama tai eri.

  Miten saisi helposti niin, että ohjelmatehtävissä mallivastauksen voisi ajaa ilman
  että siitä tulee oma vastaus (vrt Mallivastaus-käyttäjä)

Tuolla answer-reitissä on jo nyt saveAnswer/noSave-parametreja joilla tuon voisi säätää niin että jos lataa mallivastauksen suoraan stateksi, niin voisi ajella mallikoodia ilman vastauksen tallentamista.

Noilla ei voi säätää sitä että tallentuisi kunnes on katsonut mallivastauksen?

Tuota asetusta pitäisi jotenkin sisällyttää käyttöliittymään, sillä jossain tilanteessahan joku voi haluta tallentaa oman mallikoodin päälle tehdyt muokkaukset. Lisäksi joissain tehtävissä voi hämätä tuo että ajaminen tapahtuu tuon "tallenna"-painikkeen kautta, joka ei oikeasti tallentaisikaan tehtävää. Vai onko tuo vain tehtävän suunnittelukysymys, että pitää erikseen tarjota "tallenna" ja "aja" -painikkeet

Eikös siinä ole vain yksi painike joka oletuksena on Aja paitsi Text-tyypissä (ja oliko md???).

Noista erilaisista vastaustyypeistä (teksti, state, reviewhtml yms) mietin että voisiko tuossa olla jopa tarvetta "kaksinkertaiselle mallivastaukselle", eli vastaus(/koodit) ladataan suoraan pluginiin, mutta siihen nykyiseen markdown-alueeseen avautuisi sitten tarkempi teoria miksi vastaus on juuri näin. Eli olisi joku erillinen "explanation"-attribuutti, joka toimisi samaan tapaan kuin tuo nykyinen tekstimuotovastaus vaikka mallivastaus ladattaisiinkin suoraan pluginin stateksi

Eikös tuo toimisi ihan sillä että laittaa sekä state/reviewhtml ja answer?

Mites saakos muuten ne matikan mallivastaukset upotettua tähän samaan? Nythän se tehdään niin, että mallivastauskirjoitetaan omaan lohkoonsa, joka on suojattu malla-makrolla joka vaihdetaan 1 kun vastausaika päättyy. Toki tuon voisi myös tehdä niinkin, että askaretelisi makron mallipvm ja kun se tulee vastaan, niin malli näytetään. Mutta se ei näy siellä velppauksessa jos ei erikseen voi jotenkin sanoa että pitää näyttää n-lohkoa sillä velp-linkillä.

vesal commented 2 years ago

Pitäisikös muuten opettajan voida katsoa mallivastaus heti ilman ylimääräisiä yrityksiä? Jos noita anser/state/reviewHtml kokeilee, niin tuntuisi raskaalta vastailla ensin ajanvietteeksi n-kertaa?

Sitten count-toimintaa voisi kokeilla niin, että pudottaa oikeuksiaan.

sijualle commented 2 years ago

Ajattelun että on pluginkohtainen raja, jonka jälkeen vasta ilmestyy tuo mallivastaus-teksti. Eli monisteessakaan ei edes heti houkutella sitä painamaan. Oletuksena esim 1. Ja sitten yhden yhrityksen jälkeen saa sen mallivastaustekstin ja sitten se count voi olla sama tai eri.

Pitäisikös muuten opettajan voida katsoa mallivastaus heti ilman ylimääräisiä yrityksiä? Jos noita anser/state/reviewHtml kokeilee, niin tuntuisi raskaalta vastailla ensin ajanvietteeksi n-kertaa? Sitten count-toimintaa voisi kokeilla niin, että pudottaa oikeuksiaan.

Tein näistä ja tuosta automaattisesta invalidien näyttämisestä mr:n

Noilla ei voi säätää sitä että tallentuisi kunnes on katsonut mallivastauksen?

Noilla voisi säätää niin että mallivastauksen katottua ei enää tallenna, mutta se pitäisi silti saada jotenkin niin että voi yrittää tallentaa jos kuitenkin haluaa.

Eikös siinä ole vain yksi painike joka oletuksena on Aja paitsi Text-tyypissä (ja oliko md???).

Ainakin nyt tuossa templatesta tulevassa oletusjavakooditehtävässä tulee pelkkä "Tallenna"-painike.

Eikös tuo toimisi ihan sillä että laittaa sekä state/reviewhtml ja answer?

Tää vois olla noin. Pitäisiköhän noille olla vielä omia painikkeita että toisella aukeaa mallivastauksen teoria ja toisella saa mallivastauksen koodit suoraan pluginiin?

Mites saakos muuten ne matikan mallivastaukset upotettua tähän samaan? Nythän se tehdään niin, että mallivastauskirjoitetaan omaan lohkoonsa, joka on suojattu malla-makrolla joka vaihdetaan 1 kun vastausaika päättyy. Toki tuon voisi myös tehdä niinkin, että askaretelisi makron mallipvm ja kun se tulee vastaan, niin malli näytetään. Mutta se ei näy siellä velppauksessa jos ei erikseen voi jotenkin sanoa että pitää näyttää n-lohkoa sillä velp-linkillä.

Onko nuo mallivastaukset aina kuvia vai muuta? Jos latex taipuu niin tuohon answer-tekstiin voi halutessaan kirjoittaa mallivastauksen käsin.

Onko jossain dokussa muuten malleja siitä minkälaisiin tehtäviin näitä mallivastauksia tullaan käytännössä laittamaan? Vois katella oisko niihin kätevämpi vain tuo linkistä avautuva tekstilohko vai tehtävän vastauksena aukeava mallivastaus

vesal commented 2 years ago

Juho ja AJL voisi liittyä tähän GitHubin korttiin ja kommentoida.

Ainakin nyt tuossa templatesta tulevassa oletusjavakooditehtävässä tulee pelkkä "Tallenna"-painike.

Mun mielestä tulee Aja jos ottaa esim sen Java-koodin. Jos tyypiksi vaihtaa text, niin siloin painikkeen tekstiksi vaihtuu Tallenna.

Tää vois olla noin. Pitäisiköhän noille olla vielä omia painikkeita että toisella aukeaa mallivastauksen teoria ja toisella saa mallivastauksen koodit suoraan pluginiin?

Meneeköhön tuo silloin liian monimutkaiseksi. Ehkä parempi olisi jos voisi saada kohtuuhelpolla niin, että olisi tapa tehdä pre-koodia jonka voi klikkaamalla saada leikepöydällä, jolloin voi itse kopioida eikä tule isompaa vahinkoa tehtyä silloin. Esim voisi kolmen hipsun tyyliin (.copy tms) sanoa että tulee pieni copy-linkki ko diviin. Sillä voisi olla käyttöä monessa muussakin paikassa ihan luentomonisteessa tai muissa teksteissä.

  Mites saakos muuten ne matikan mallivastaukset upotettua tähän samaan? Nythän

Onko nuo mallivastaukset aina kuvia vai muuta? Jos latex taipuu niin tuohon answer-tekstiin voi halutessaan kirjoittaa mallivastauksen käsin.

Siis varmaan matikan nallivastaukset ovat joko LaTexia ja/tai kuvia. Ehkä joku voi haluata laittaa PDF.än? Kun on käsin kirjoittanut.

Onko jossain dokussa muuten malleja siitä minkälaisiin tehtäviin näitä mallivastauksia tullaan käytännössä laittamaan? Vois katella oisko niihin kätevämpi vain tuo linkistä avautuva tekstilohko vai tehtävän vastauksena aukeava mallivastaus

Varmaan ainakin ekana kättöön tulee nuo avoimen Ohj1 demot:

https://tim.jyu.fi/view/kurssit/tie/ohj1/avoin22/demot

demo1 alkaen järjestyksessä. Tuonne tulee se lukkiutuva versio ja sieltä sitten haetaan määrävälein pisteet tuollaiseen tyyliin:

https://tim.jyu.fi/teacher/kurssit/tie/ohj1/2021s/eteneminen

niin että Demot-riville tulee lailliseten vastausten tuottamat pisteet ja Korjattu riville laittomien tuottamat pisteet. Tuo on vielä epäselvää miten ne laittomien pisteet tuonne saa haettua. Tuon kurssi on aikarajoittamaton, joten siellä ei voi käyttää samaa systeemiä kuin "oikealla" kurssilla.

Sitten ohj1 moniste:

https://tim.jyu.fi/view/1

jossa mallivastauslinkki näytetään ehkä 1 yrityksen jälkeen ja ei lukkiudu.

Sitten ruvetaan samaa askartelemaan tuonne syksyn 2022 Ohj1 demohin. Siellä vastaukset lukkiutuvat määräajankohdasta. Tai niiden ei tarvitse edes lukkkiutua kun Eteneminen sivun makroa hakee pisteiksi ne ennen määräaikaa tulleet ja korjatuiksi sen jälkeen tulleet. Mallivastauslinkki pitäisi saada esille kun se määräaika umpeutuu. Demojen määräajoista on taulukko demoret preamblessa:

https://tim.jyu.fi/view/kurssit/tie/ohj1/2021s/templates/preambles/preamble

ja sitten modelAnswerssa voisi olla joku attribuutti jota voisi käyttää tyyliin:

 modelAnswer:
    dueDate: %%demoret[demonro]%%

Harmi kun settingseissä ei voi käyttää makroja, tuo olisi saanut jokaisen demon osalta oletukseksi.

Matikan osalta mallivastausta voisi malla johonkin Ville viimekevään demoon että miten se siellä toimisi.

Vesa

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because youcommented.[AAGJYGCLX2O5YSUYKMZBEATVU2XVLA5CNFSM52B635RKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOO RPWSZGOI3QAE2Y.gif] Message ID: @.***>

ajlakanen commented 2 years ago
  1. Voiko mallivastaus olla ladattava tiedosto, esim. pdf?
  2. Olisi kiva jos mallivastauksen voisi ladata raakamuodossa ilman markdownia. Esim jos koodi on pitkä, sen näyttäminen selaimessa ei ole välttämättä käytännöllistä ja parempi olisi vain tarjota Lataa mallivastaus -painike /linkki.
  3. Jos opiskelija haluaa ladata dokumentin kaikki mallivastaukset ja dokumentti on pitkä, mallivastausten lataaminen on työlästä. Olisi kiva, jos kaikki dokumentin sillä hetkellä saatavilla olevat mallivastaukset olisivat ladattavissa yhdestä paikasta.
vesal commented 2 years ago
  1. Voiko mallivastaus olla ladattava tiedosto, esim. pdf?

Mikä käyttötapaus jossa tämä on parempi kuin html joka voi olla kaavaa, kuvaa koodia?

  1. Olisi kiva jos mallivastauksen voisi ladata raakamuodossa ilman markdownia. Esim jos koodi on pitkä, sen näyttäminen selaimessa ei ole välttämättä käytännöllistä ja parempi olisi vain tarjota Lataa mallivastaus -painike /linkki.

Yksinkertaisuuden vuoksi voisi kuitenkin olla parempi että koodi tulee siihen, mutta se on rullattavassa divissä ja siihen liittyy copy-linkki.

  1. Jos opiskelija haluaa ladata dokumentin kaikki mallivastaukset ja dokumentti on pitkä, mallivastausten lataaminen on työlästä. Olisi kiva, jos kaikki dokumentin sillä hetkellä saatavilla olevat mallivastaukset olisivat ladattavissa yhdestä paikasta.

Tässä taas on ongelma että missä käyttötapauksessa tämä on parempi? Tarkoitushan on kuitenkin että pikkuisen joutuu itsekin käyttämään vaivaa saadakseen ne mallivastaukset. Koodien perusrungothan ovat ainakin mulla GITissä ja ne saa sieltä. Sitten siihen päälle se että vastaustekstit pastetaan itse runkojen sekaan. Sitten mullahan kaiki toimivat kiidot ovat määräajan jälkeen Gitissä. Tämä ei tietenkään toimi avoimen kurssilla. Lisäksi pieni pelko on että liian helppo tapa saada mallivastaukset nostaa niiden jakamisen helppoutta. Avoimen tapauksessa myös lisähaatsetta toteutukselle toisi se, että osa tehtävistä voi olla lukittu ja osa ei Jos olisi tällainen toiminto, niin ainoa puolijärkevä tapa olisi aina tuupata kaikki lukitut, eli sma tiedosto tulisi sillion useita kertoja kun ottaisi uudestaan. En vielä nostaisi isolle prioriteetille ennenkuin on aitoja käyttötapauksia.

vesal commented 2 years ago

Onko se teksti säädettävissä joka näyttää että vstausta ei tallennettu. Sehän pitäisi olla erilainen eri käyttötilanteissa. Esim avoimen kurssillahan siinä pitäiisi sanoa että vastaus tallennettiin, mutta siitä ei saa enää virallisia pisteitä.

ajlakanen commented 2 years ago
  1. Jos opiskelija haluaa ladata dokumentin kaikki mallivastaukset ja dokumentti on pitkä, mallivastausten lataaminen on työlästä. Olisi kiva, jos kaikki dokumentin sillä hetkellä saatavilla olevat mallivastaukset olisivat ladattavissa yhdestä paikasta.

[...] Avoimen tapauksessa myös lisähaatsetta toteutukselle toisi se, että osa tehtävistä voi olla lukittu ja osa ei Jos olisi tällainen toiminto, niin ainoa puolijärkevä tapa olisi aina tuupata kaikki lukitut, eli sma tiedosto tulisi sillion useita kertoja kun ottaisi uudestaan.

Tuollainen toiminto voisi minusta olla hyödyllinen siinä vaiheessa kun dokumentin kaikki vastaukset on lukittu (liittyy alkup. kortin viimeinen kohta "tapa lukita kaikki dokumentin tehtävät"). Mutta kuten sanottu tämä on ehkä enemmän nice-to-have mutta parantaisi minusta käyttäjäkokemusta kun vastaukset saa yhdestä paikasta. Näin toimii esimerkiksi Full Stack Open HY:ssä (show-linkin takaa näkyy kaikki sen "kierroksen" mallivastaukset).

image

vesal commented 2 years ago

Tuollainen toiminto voisi minusta olla hyödyllinen siinä vaiheessa kun dokumentin kaikki vastaukset on lukittu (liittyy alkup. kortin viimeinen kohta "tapa lukita kaikki dokumentin tehtävät"). Mutta kuten sanottu tämä on ehkä enemmän nice-to-have mutta parantaisi minusta käyttäjäkokemusta kun vastaukset saa yhdestä paikasta. Näin toimii esimerkiksi Full Stack Open HY:ssä (show-linkin takaa näkyy kaikki sen "kierroksen" mallivastaukset).

Henkilökohtaisesti pidän fiksumpana että mallivastaus on kontekstissaan eikä tule kymmeniä tiedostoja joista ei tiedä mihin ne kuuluvat. Tuo vaatisi tosi täsmällistä tiedostojen nimeämistä yms että toimisi. Se että HY tekee jollakin tavalla, ei aina tarkoita että se on parempi tapa. Ehkä eivät muuta osanneet :-)

Toki selkeyttä kannattaisi tuolta matkia HY:m mooceista.

sijualle commented 2 years ago

Pdf- yms tiedostoihin, kuviin, ja pitkiin koodeihin liittyen yksi yleiskäyttöinen ratkaisu voisi olla saada oikeus toiseen dokumenttiin mallivastauslinkin avulla.

Tätä toista dokumenttia tehtävän tekijä voisi käyttää joko mallivastauksen näyttösivuna tai sitten vain paikkana johon ladata mallivastaukseen liittyvät tiedostot. Sitten itse mallivastauspainikkeesta avautuvaan tekstiin voisi mielivaltaisesti upottaa kuvia, linkkejä mallivastaustiedostoihin tai vaikka laittaa suoran linkin että mene tänne kohdedokuun lukemaan koko vastaus.

Tällöin kaikki kuvien / tiedostojen oikeustarkistukset olisi teknisesti helppo toteuttaa kun niiden alkuperädokumenttiin annetaan oikeus painamalla sitä "näytä mallivastaus"-linkkiä. Miinuksena olis tietty se työmäärä tehdä tehtävän mallivastausta varten uusi dokumentti, mutta tämä olisikin vain niille tehtäville jotka tarvitsevat jotain liitetiedostoja tai todella pitkiä selityksiä. Lyhyissä vastauksissa kirjoittaa vastauksen nopeammin suoraan mallivastaustekstiin.

ajlakanen commented 2 years ago

Voiko lukitsemisen yhteydessä käyttäjälle näkyvää varoitustekstiä muokata? Ainakin tilanteissa joissa valideja vastauksia ei voi enää lukitsemisen jälkeen syöttää, pitäisi tuo ilmaista käyttäjälle selvästi, esim. "Lukitsemisen jälkeen et voi enää tallentaa uusia vastauksia." tai vaihtoehtoisesti "Lukitsemisen jälkeen antamiasi vastauksia ei pisteytetä / arvostella."

vesal commented 2 years ago

Voiko lukitsemisen yhteydessä käyttäjälle näkyvää varoitustekstiä muokata? Ainakin tilanteissa joissa valideja vastauksia ei voi enää lukitsemisen jälkeen syöttää,

Joo, tuolle on tulossa attribuutti.

ajlakanen commented 2 years ago

Jos vastaus on lukittu, tulisi mallivastauksen näyttävän linkin tekstin olla "Näytä mallivastaus", ei "Lukitse ja näytä mallivastaus".

sijualle commented 2 years ago

Oisko tämmöset? Tuleeko näitä nyt liikaa, tai puuttuuko vielä jotain? Jokainen attribuutti on siis valinnainen:

answer: itse vastaus. Jos ei annettu niin ei näy mitään linkkejä yms
count: Minimiyritykset ennen kun vastausta voi ollenkaan avata. Oletus 0
revealDate: Aikaleima jolloin voi aikaisintaan avata. Jos ei annettu niin aukeaa koska vaan
linkText: Mallivastauksen linkki kun vastausta ei ole vielä lukittu (tai ei voi lukita ollenkaan)
linkTextCount: Minimiyritykset ennen kuin tarjotaan mallivastauslinkki. Oletus 0
lock: lukitaanko vastaaminen yrittämisen jälkeen (oletus true)
lockedAnswerMessage: Virheviesti joka annetaan kun vastataan vaikka on jo lukittu
lockConfirmation: Varoitus joka annetaan lukittaessa vastausta
lockedLinkText: Mallivastauksen linkki jos vastaus on jo lukittu
ajlakanen commented 2 years ago

count:n oletus vois minusta olla 1.

Jos revealDate on asetettu niin voiko edelleen jättää valideja vastauksia? En ole nyt ihan varma pitäisikö noiden olla toisistaan riippuvia. Ehkä ei, jos esim demojen palautuspvm:n jälkeen haluaa kokeilla millaisia pisteitä automaattinen arvostelu antaa jos omaa vastausta muuttaa.

Oletan, että lock tarkoittaa että voiko vastata vielä lukitsemisen jälkeen?

sijualle commented 2 years ago

count:n oletus vois minusta olla 1.

Laitan noin

Jos revealDate on asetettu niin voiko edelleen jättää valideja vastauksia? En ole nyt ihan varma pitäisikö noiden olla toisistaan riippuvia. Ehkä ei, jos esim demojen palautuspvm:n jälkeen haluaa kokeilla millaisia pisteitä automaattinen arvostelu antaa jos omaa vastausta muuttaa.

Voi antaa valideja vastauksia tuon ajan jälkeen, tuo on vain aikaleima jota ennen mallivastauslinkkiä ei tarjota ja jota ennen mallivastausta ei voi avata. Kaikissa plugineissa on jo ennestään olemassa deadline-attribuutti, jonka avulla voi halutessaan estää validit vastaukset tietyn aikarajan jällkeen.

Oletan, että lock tarkoittaa että voiko vastata vielä lukitsemisen jälkeen?

Nyt se tarkoittaa sitä että onko mallivastauksen katsomisen jälkeen tulevat vastaukset epävalideja. Ehkä tuon voisi nimetä paremmin

vesal commented 2 years ago

Oisko tämmöset? Tuleeko näitä nyt liikaa, tai puuttuuko vielä jotain? Jokainen attribuutti on siis valinnainen:

Paljonhan niitä tulee, mutta minkäs teet kun ei voi vakioksi kiinnittää. Toki kaikilla voisi olla kansallistetut oletukset.

Tietääkös jostakin ennen ajamista että nyt on lukittu (siis jos refreshaa sivun).?

Vai olisiko se viimeinen teksti sillion oletuksen jotakin

Tehtävä on lukittu, voit katsoa mallivastauksen.

tai jotakin tuon tyylistä?