Giter Site home page Giter Site logo

tim-jyu / tim Goto Github PK

View Code? Open in Web Editor NEW
12.0 12.0 4.0 190.87 MB

TIM (The Interactive Material) is an open-source cloud-based platform for creating interactive learning documents.

Home Page: https://tim.education/view/about/en-US

License: MIT License

Dockerfile 0.20% Shell 0.11% Python 36.53% Batchfile 0.03% JavaScript 24.84% Mako 0.01% C# 0.01% HTML 2.74% C++ 5.52% C 1.51% CSS 0.50% Java 0.04% Common Lisp 0.01% Alloy 0.01% TypeScript 26.13% SCSS 1.07% Pug 0.01% TeX 0.11% Jinja 0.60% Rust 0.05%
cms e-learning education elearning mooc

tim's People

Contributors

aajii avatar aleator avatar alsoderg90 avatar dezhidki avatar dullwin avatar habca avatar hannamarih avatar jaakkop1998 avatar janmatla avatar jejoojal avatar joosetikkanen avatar juanrein avatar lainets avatar miimatku avatar miimmonen avatar olrut avatar oreal avatar philetairos avatar rampastring avatar saviit avatar sijualle avatar smibu avatar sutukaas avatar trkks avatar tupo26 avatar tuulisv avatar vesal avatar visanaukkarinen avatar vpoksanen avatar ylivuoto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

tim's Issues

Angular-templaattien haku pluginilta

In GitLab by @Smibu on Aug 5, 2014, 13:30

Ongelma: Angularin direktiiveissä templateUrl antaa suoran suhteellisen osoitteen, mistä angular käy hakemassa täydennettävän templaatin. Tämä ei toimi TIM:n kanssa, koska TIM:n pluginit eivät ole missään fiksatussa suhteellisessa osoitteessa katseltuun dokumenttiin nähden.

Ratkaisuehdotus 1: Vaaditaan, että pluginin kirjoittaja huolehtii, että kaikki plugin resurssit haetaan oikeasta osoitteesta. Tämä osoite on pluginspeksin mukaan kirjattuna kunkin pluginin parent elementin data-plugin attribuuttiin.

Esimerkiksi angularin saa hakemaan templateUrl:nsa oikeasta paikasta:

 templateUrl: function(elem,attrs) {
        return elem.parent().attr('data-plugin')+"munTemplate.html";
    }

Checklist

  • Testaa toimiiko ratkaisu
  • Korjaa monivalintaprototyyppi
  • Korjaa csRun plugin

Samuel Uusi-Mäkelä

OHJEET TRELLON KÄYTTÖÖN

In GitLab by @Smibu on Jul 29, 2014, 13:22

To Do listaan kerätään kaikki ideat ja asiat, joita ollaan tekemässä. Kortin otsikoksi laitetaan mahdollisimman selvästi mistä on kyse ja kuvaukseen selitetään asiaa auki lause tai pari.

Näistä vedetään Planning listaan ne, joita aktiivisesti suunnitellaan (1-5). Idea siinä on se, että kaikki käyvät kommentoimassa näitä planning juttuja ja kun alkaa tuntua siltä, että tajutaan mistä on kyse, niin sitten siirretään toteutukseen. Jos asia ei tarvitse suunnittelua, niin sitten vedetään suoraan doing listaan.

Erityisesti Planning vaiheessa keskustelu todennäköisesti haarautuu ohi alkuperäisestä aiheesta. Tällöin kannattaa tehdä mahd. nopeasti uusi kortti ja siirtää keskustelu sinne ja laittaa molempiin kortteihin tieto siitä, että mistä keskustelu tuli ja missä sitä jatketaan. (Kortteihin voi viitata syntaksilla #2. Kortin numero löytyy "share and more" valikosta)

Doing listassa on ne jutut, joita joku meistä tekee juuri nyt. Näitä olisi hyvä olla vain yksi per nassu.

BUGS Listaan laitetaan bugit ja ne tehdään pois ennen kuin mitään muuta aloitetaan.

Viimeistään silloin, kun asia nostetaan to do listalta pois, sinne vedetään jonkun logo (menusta oikealta, käykää laittamassa naamanne gravatar.comista kohdalleen) ja sitten tämä henkilö on vastuussa siitä, että asia viedään eteenpäin.

Jotkut kortit ovat aluksi varmasti liian korkealla tasolla ja epäselviä, että niitä voisi oikeasti alkaa tehdä. Raahatkaa sellaiset tuonne planning kohtaan ja pilkotaan ne useiksi pienemmiksi korteiksi.

Kortteja saa myös raahata takaisinpäin.

Ville Tirronen

Ephemeralista sellainen versio, joka versioi muutoksia.

In GitLab by @Smibu on Jul 30, 2014, 14:50

Ks versio: 6ff4141

Logi:

This really needs a name change, but now the ephemeral
will not overwrite old versions with edit commands, but
instead creates new versions.

This makes me very happy.

Also, I changed the `/delete` route, since deleting stuff
shouldn't be PUT. It should be delete. Now, sending DELETE
to `/docid/blocknumber` will delete the block

Ville Tirronen

Monivalinta-plugin

In GitLab by @Smibu on Jul 28, 2014, 18:38

Syntaksista mietin, että markdowniin voisi laittaa vaikka

~~~{#ekaMCQ plugin='mcq’}
user: {{user}}
userAnswer:{{userAnswer}}
userPoints: {{userPoints}}
ticket: {{ticket}}
type: MMCQ
stem: Valitse seuraavista valinnoista sopivat 
choices
  - choice:  eka valinta 
      correct: false
      reason: Koska toka
  - choice: toka valinta
      correct: true
      reason: Koska ei eka ja ei kolmas
  - choice: kolmas valinta
      correct: true
      reason: Koska toka
~~~

Toimintaehdotus tuolle olisi se, että varastetaan markdownin koodilohko ja laitetaan sen attribuutteihin plugin joka kertoo, mikä plugari otetaan käyttöön. TIM täydentää sitten templaatin, (esim {{user}} jne. kentät) ja pistää lohkon sisällön post requestina (bodyssä) plugarille.

Plugari sitten parsii tuon yamlin ja tekee texit/html:t valiten oikean vaihtoehdin accept headerin perusteella.

Tehtävätietojen talletus tapahtuu suoraan pluginin sisälle, koska kunnollista talletus/lataus rajapintaa ei ole. Plugin toteuttaa myös /dump_data reitin, josta tallennetut tiedot saadaan köntsänä ulos.

Puutteet

  • Strict-mode palvelimelle (Ettei lähetetä uusia vastauksia vanhan päälle)
  • Non-strict mode selaimeen (Ts. reset nappi)
  • Markdown tuki

Ville Tirronen

csRun-plugin

In GitLab by @Smibu on Jul 30, 2014, 02:14

Plugin CS-ohjelman ajoa varten

URL:

Koodilohkoformaatin esimerkki (tehtävänä on tulostaa oma nimi, siksi
id:nä on omanimi):

~~~{#omanimi plugin=csPlugin}
type:console   
maxrows:10
rows:2
stem: Kirjoita ohjelma joka tulostaa oman nimesi
header: Tehtävä 3
footer: 
file:https://svn.cc.jyu.fi/srv/svn/ohj1/luentomonistecs/esimerkit/Pohja/Pohja/Pohja.cs  
replace:"Console "   
byCode: 
 //
            Console.WriteLine("Moi 1");
            Console.WriteLine("Moi 2");
~~~

Selityksiä:

  • type:
    • console, näyttää vain Aja-napin. (oletus)
    • comtest, näyttää test-napin,
    • comtest/console - näyttää molemmat
    • jypeli - näyttää Aja-napin ja kääntään Jypeli-kirjaston mukaan
      (voi silti käyttää konsoli.tulostusta esim. debuggaamiseen)
  • maxrows: montako riviä tulee korkeintaa editointialueeseen
  • rows: editointialueen lähtökoko (jollei byCode määrää isompaa rivimäärää)
  • header: otsikko tehtävälle, oletustyyli h4
    • voi antaa myös header: h2!Tehtävä 3
  • stem: tehtävän kuvaus
  • footer: tehtävän jälkeen tuleva teksti, oletustyyli p class="footer"
  • file: URL-osoite, mistä löytyy koodipohja
  • replace: minkä rivin sisältävä koodi poistetaan
  • replaceBy ja millä tekstillä korvataan. Tämä teksti tulee myös pohjaksi
    editointialueeseen
  • codeunder: true - näyttää kokonaan syntyvät koodi alapuolella (oletus ympärille)
  • codeover: true - näyttää kokonaan syntyvät koodi yläpuolella (oletus ympärille)
  • placeholder: Kirjoita tahan koodia - mikä teksti näytetään jos oman koodin alue menee tyhjäksi
  • iframe: true tekee iframe-version (oletus on embedded)
    • iframeeen vaikuttavat parametrit width ja height

Checklist

  • cs/html
  • cs/info - odottaa speksejä, info jätetty pois???
  • cs/js
  • cs/css
  • cs/answer
  • cs/iframe
  • cs/reqs
  • tietoturva-asiat
  • input JSON käyttö "Oikein"
  • pluginin answer kiertämään TIMin kautta
  • xml yms wrap oletuksena 0

Vesa Lappalainen

CSRF suojaus

In GitLab by @Smibu on Aug 6, 2014, 13:14

Sekä tuo monivalinta-plugin, että csRun on CSRF haavoittuva. On kyseenalaista, että jokaisen pluginin tekijä joutuu hoitamaan tuon, joten pitäisi selvittää, voiko tuon tehdä esim. angular interceptoreilla kerralla TIM-tasolla kuntoon.

Ville Tirronen

Kuvien koon säätäminen

In GitLab by @Smibu on Aug 6, 2014, 20:51

Miten kuvien kokoa saa säädettyä?

Toistaiseksi on plugin:

``` {#k2 plugin="showImage"}
header: Lyhyt auto
stem: Auto mahtuu tosi lyhyeen tilaan kun lyhentää sitä
width: 150
height: 300
footer: Kuva 2. <a href="">Lyhyt</a> malli
file: /images/24/dsc_0014.jpg

Ratkaisun huono puoli on siinä, että tästä tulee "paljon" kommunikointia
plugin puolella. Tämä olisi tyypillisesti plugin, joka voisi olla "Core"-plugin,
eli näyttäisi samalat kuin muutkin, mutta toteutetaan kokonaan TIMin sisällä
aliohjelmakutsuina tms. Mutta säätöä tulevaisuudessa jos tulee suorituskykyongelmia tämän takia.

Vesa Lappalainen

Pluginien tarvitsemien JS, CSS, ja muiden tiedostojen hallinta TIMin päässä

In GitLab by @Smibu on Aug 1, 2014, 14:26

Viitaten korttiin #35, mikäli plugin tarvitsee tiedostoja toimintaansa on muutama vaihtoehto miten toimia:

  • Ensimmäisellä pluginin kutsukerralla TIM pyytää pluginilta sen tarvitsemat tiedostot ja tallentaa ne myöhempiä käyttökertoja varten.
  • Pluginia rekisteröitäessä lisätään TIMille pluginin tarvitsemat kirjastot jos niitä ei jo löydy.
  • Tiedostot haetaan aina jonkin CDN:n kautta.
  • Yhdistelmä edellisistä tai hoidetaan tiedostot jollain muulla tavalla.

COMPLETED:

Pluginin tarvitsemat tiedot haetaan TIMin päässä, eikä niitä tällä hetkellä tallenneta.

Samuel Uusi-Mäkelä

Tekstilaatikkotehtäväplugin

In GitLab by @Smibu on Aug 6, 2014, 18:34

Annelin monistetta varten mahdollisimman yksinkertainen tekstilaattikoplugari.

Prototyyppi yousourcessa tiedostot ShortNote*

Ville Tirronen

showCode-plugin

In GitLab by @Smibu on Jul 30, 2014, 03:34

Plugin lähdekoodin näyttämiseksi

Pluginin URL: http://tim-beta.it.jyu.fi/svn

Tämän pluginin tehtävä on näyttää vain valittu koodi valitusta kohtaa.
Käyttö esim:

~~~{#alkuluku plugin=showCode}
file:https://svn.cc.jyu.fi/srv/svn/ohj2/esimerkit/k2014/luennot/luento04/src/luento04/Alkuluku.java  
start:int onko
end:/\*
endn:=-2
linefmt="{0:03d} "
~~~

Tuosta kun tehdään html-GET:
http://tim-beta.it.jyu.fi/svn/?file=https://svn.cc.jyu.fi/srv/svn/ohj2/esimerkit/k2014/luennot/luento04/src/luento04/Alkuluku.java&linefmt={0:03d}'Reference to deleted milestone 20'&start=int&end=/*&endn=-2

saadaan suoraan pala lähdekoodia, jossa on mahdolliset
rivinumerot mukana jos pyydetään:

027     public static int onkoAlkuluku(int luku) {
028         int jakaja = 2;
029         int kasvatus = 1;
030         if ( luku == 2 ) return 1;               // 0
031 
032         do {
033             int jakojaannos = luku % jakaja;
034             if (jakojaannos == 0) return jakaja; // 1
035             jakaja += kasvatus; // 2
036             kasvatus = 2; // 3
037 
038         } while (jakaja < luku / 2);        
039         
040         return 1;
041     }
042     

Kumpiko pistää

 ympärille, vai laitetaanko tuokin parametriksi?

 before:<pre>
 after:</pre>

Checklist

  • svn/html
  • svn/info - palauttaa {}
  • svn/anwser - ei tarvita
  • svn/js - ei tarvita
  • svn/css - voisi käyttää ihan TIMin pre-lohkon tyylejä
  • svn/iframe - ei tarvita
  • header, footer ja stem myös ilman Directiveä toimiville komponenteille
  • skandit (muutettu: content_type = 'text/html; charset=utf-8')
  • header, footer yms myös listauksiin
  • Tietoturvajutut

Vesa Lappalainen

Videolinkit

In GitLab by @Smibu on Aug 5, 2014, 18:12

Kuinka kirjoitetaan Video-linkkejä?

Suoran upotuksen ongelman on se, että selain latailee kaikki nuo videot
kerralla ja dokumentti jossa on esim. 50 videolinkkiä menee käyttökelvottomaksi. Tätä varten on plugin:

    ``` {#V3 plugin="showVideo"}
    stem: YouTube
    iframe: true
    start: 50
    end: 55
    width: 400
    height: 300
    file: //www.youtube.com/embed/RwmU0O7hXts
    ´´´
´´´

jolla voi laittaa videon "odottamaan", eli itse videolinkki (tässä tapauksessa
iframe) luodaan vasta kun pyydetään.  Jos on suora linkki videoon, niin voi käyttää ilman iframea.

## Tehtävät

* [x] Ulkoasu ertyisesti linkin klikkaamiseksi



*Vesa Lappalainen*

Prototyyppi monivalintatehtävistä

In GitLab by @Smibu on Aug 1, 2014, 13:54

Prototyyppi monivalintapluginista

Tila

Testattu ilman TIMiä, siistimättä.
Gitissä: timApp/modules/Choices/

Tiedostot

Olennaiset kooditiedostot

  • ChoicesPlugin.hs -- Varsinainen plugin. Tämä tiedosto kääntyy plugin-web-palvelimeksi.
  • PluginType.hs -- Pluginrajapinta. Tämä hoitaa web-palvelun muodostamisen ja eri pyyntöjen serialisoimisen sekä kommunikaation.
  • HTMLRequest.hs -- Tietotyyppi /html reitin pyyntöjä varten.
  • AnswerRequest.hs -- Tietotyyppi /answer reitin pyyntöjä varten.
  • UtilityPrelude.hs -- Lista moduleja, jotka importataan käytännössä aina. Ei tarvitse jokaista tiedostoa liata niillä.
  • MCQTemplate.html -- Angularin html-template tiedosto monivalintatehtävää varten
  • script2.js -- Monivalintatehtävän asiakaslogiikka. Toteuttaa angular modulin mcq, joka pitää löytyä siis sivun dependensseistä.

Ks. Myös projektin readme.

Markup

Näyttää tältä. Plugineja on itseasiassa kaksi "mcq" ja "mmcq". Molemmissa voi olla monta oikeaa vaihtoehtoa, mutta mmcq:ssa niistä voi valita useamman.

~~~~~ {plugin="mmcq"}
stem: |
  Which expressions below mean the same as `2^3^4`, (remember that `infixr 8 ^`)?
choices:
  - text: "`(2^3)^4`"
    reason: This is the same as `8^4` while `2^3^4` is same as `2^81`
    correct: false
  - text: "`2^(3^4)`"
    reason: since (`^`) is right associative
    correct: true
  - text: "`2(^3^4)`"
    reason: This is just nonsense.
    correct: false
  - text: "`(2^3^4)`"
    reason:  Adding extra parentheses doesn't matter.
    correct: true
  - text: "`(2^(3^4))`"
    reason: Adding extra parentheses doesn't matter.
    correct: true
 ~~~~~

Testaus

Plugin on yritetty koota siten, että sitä voi testata ilman TIM:iä. Sen pitäisi onnistua näin:

> cabal sandbox init                                     # Käännetään sandboxissa
> cabal install --only-dependencies
> cabal build
> cabal exec ghci ChoicesPlugin.hs
>> experiment simpleMultipleChoice testQ 8080

Ja sitten selaimella porttiin 8080 localhostissa.

Puutteet

  • Nykyisellään samaan tehtävään voi vastata aina useasti, mikä periaatteessa kai pitäisi voida kieltää.

-> TIM

  • Docker kontti
  • Rajapinnan viimeisen version tarkastus ja mukautus

Ville Tirronen

Task-id:n syntaksi

In GitLab by @Smibu on Aug 5, 2014, 13:30

  • Kirjaimia a-z
  • Numeroita 0-9
  • Piste (.) ja alaviiva (_)
  • alkaa kirjaimella
  • Yksikäsitteinen dokumentin sisällä

Ehdottaisin että globaali tunnus task-id:lle on muotoa
22.lumiukko (22= monisteen id), Tuota globaalia tunnusta tarvitaan
tietokantaan talletuksessa.

Samuel Uusi-Mäkelä

Turha varmistus

In GitLab by @Smibu on Aug 3, 2014, 14:27

Kun lisää vahingossa kappaleen ja sitten heti painaa Cancel, niin tulee turhaan kysymys siitä, että tuhotaanko. Eli jos Insert tilanteessa on tyhjä kappale ja Delete tai Cancel, niin ei tarvitse varmistaa.

Vesa Lappalainen

Tehtävätietojen talletus TIMiin

In GitLab by @Smibu on Jul 29, 2014, 14:04

Vaatimuksia tänne:

  • Opiskelija voi vastata yksin tai laittaa kavereita mukaan samalla kertaa, jos tekevät ryhmissä.

    • Tähän pitäisi speksata, miten kavereita laitetaan ja talletetaanko
      vastaukset jokaiselle kaverille erikseen vai jotenkin kaikille
      yhdessä.
    • Mitä tapahtuu, jos joku muuttaa vastaustaan jälkikäteen?
    • Miten taataan se, ettei laita kavereita vastaajiksi, vaikkeivät ole paikalla.
      Ehdotus: Tehtävän kohdalla jokainen voisi rekisteröityä TIMiin
      tai TIMiin voi rekisteröityä useita henkilöitä ja silloin tämän
      session aikana kaikki vastaukset tallentuvat jokaiselle
      henkilökohtaisesti (leimalla nämä tekijät). Kun joku menee yksin
      muuttamaan vastausta, hän "eroaa ryhmästä" ja hänen vastauksestaan
      syntyy uusi oma versio (mutta selaamisessa opettaja näkee
      vanhemmankin ryhmässä tehdyn version).
  • Opiskelija voi ehdottaa pisteitä itselleen.

  • Opiskelija voi tarkastella omaa tehtävää.

    • Näkyy luonnostaan
    • Miettimistä siinä, miten rajoitetaan vastauskertojen määrä
      ja mahdollinen takaraja vastaukselle .
  • Opettaja saa vastaukset näkyviin helposti

    • Oma TIMin "appi", jolla vastauksia selaillaan ja muutellaan
      tarvittaessa pisteitä.

Tietokannan rakenne tehtävien vastausten ja pisteiden talletuksen osalta

Seuraavassa esimerkissä käyttäjät vesal ja kalle ovat vastanneet tehtävään lumiukko ensin yhdessä, ja myöhemmin vesal on korjannut omaa vastaustaan ja antanut paremmat pisteet itselleen.

Taulu Answers:

aid |      taskId | answercontent | points |      timestamp
  1 | 22.lumiukko |   {choice: 3} |    1.5 | 4.9.2014 15:30
  2 | 22.lumiukko |   {choice: 2} |      3 | 9.9.2014 14:40

answercontentin sisältö voi olla myös tiedostossa, jos vastaus on iso, jolloin sarakkeessa on viite tiedostoon.

Taulu UserAnswers:

aid | uid
  1 | vesal
  1 | kalle
  2 | vesal

Taulu AnswerTags:

aid | tag
  1 |   3
  2 |   2

hajottaa html:ää

In GitLab by @Smibu on Aug 3, 2014, 14:27

Muokkasin kappaleen muotoon:

<ol>
<li>eka</li>
</ol>

ja se hajosi useaksi kappaleeksi.

Vesa Lappalainen

Parempi match Ephemeralille

In GitLab by @Smibu on Jul 31, 2014, 15:41

Ephessä oli pieni bugi, jonka johdosta matchit lasketaan väärin. Korjaan kun vielä muistan.

Ville Tirronen

Plugin state - varatut sanat

In GitLab by @Smibu on Aug 5, 2014, 13:31

Varattuja sanoja pluginin state-muuttujassa ovat seuraavat:

  • points
  • tags
  • muita?

Samuel Uusi-Mäkelä

Tapahtumalogit

In GitLab by @Smibu on Jul 28, 2014, 18:46

Chatit, web-tehtävät, klikkerit, tulkit ja ylipäänsä kaikki mahdollinen pitäisi saada logattua käyttäjätiedon ja aikaleiman kera.

Pitäisi päättää tehdäänkö tämä TIMin sisällä vai laitetaanko oma Logipalvelin (syslogd? joku muu?)

Ville Tirronen

Haskell tulkki-plugin

In GitLab by @Smibu on Jul 28, 2014, 18:39

Eteneminen

  • [master deaa011] ApiHec on nyt kutsuttavissa erikseen HecIFacen modulilla CallApiHec

Muistiinpanoja

  • docker run -rm ajaa kontin ja hävittää sen ajon jälkeen. Juuri oikea toimintatapa tälläisten ajamiseen.
  • Nähtävästi cabal exec:llä ajettu ohjelma näkee sandboxin kirjastot, muttei globaaleja. Tätä voisi käyttää hyödyksi siinä, kun asentaa palvelimelle!
  • smallcheck ja ActiveMaterial/Visual pitää asentaa silleen, että ghci löytää ne
  • APIHEC pitää olla polussa tai pluginin juuressa.

Askeleet

  • PluginType omaksi modulikseen
  • APIHECin kutsurajapinta erilleen HEC:stä
  • Webbiliittymästä oikeat requestit
  • docker kontti
  • Kutsurajapinta ymmärtämään docker kontteja.
  • Docker fupu:un
  • CSS kuntoon. Voisi olla vähemmänkin ruma.
  • Esimerkit-valikko
  • Historiatieto talteen palvelimelle. (Onkohan tämä edes tarpeen..)
  • Mahdollisuus viitata historiaan
  • Asennusmuistiinpanot!
  • "Oikea vastaus optio"
  • === Ehkä joskus: ===
  • Lisää smallcheck ja visual dependensseihin!
  • :type komento
  • Context tiedostojen lukeminen ja lataaminen
  • ===Mielellään===
  • Nopeampi check goals (Ts. Muuta APIHEC :: HecInput -> HecOutput muotoon [HecInput] -> [HecOutput]
  • Koodin haku sivulta

Ville Tirronen

Dokumenttien poistaminen

In GitLab by @Smibu on Aug 1, 2014, 15:02

Dokumentin omistaja voi poistaa dokumenttinsa etusivun kautta. Jos dokumentissa on kommentteja, niin tällä hetkellä ne vain jäävät orvoiksi.

TIM-variable

In GitLab by @Smibu on Jul 30, 2014, 03:22

Tarvitaan joku tapa esittää TIMin sisäisiä muuttujia.
Esimerkiksi itse tarvitsen niitä usein muuttaakseni
monisteen linkkejä kuluvalle vuodelle sopivaksi.

TIM-muuttaja voisi olla muotoa {{vuosi}}, koska {vuosi}
menee hyvin helposti sekaisin ohjelmakoodien kanssa.
Toki mikä tahansa muukin tapa toimii. Itse olen nuo muuttujat
tehnyt omiin ohjelmiini "makroina", eli kaikki tunnetut muuttujat
käydään ennen data esittämistä (TIMin tapauksessa ennen
selaimelle lähettämistä) etsi/korvaa-tempulla vaihtamassa.

Sitten TIMissa voi olla tukku valmiiksi määriteltyjä muuttujia, joita
voidaan toki käyttää monisteessakin

Hienoa että sinä {{userFirstName}} olet lukemassa tätä monistetta

mutta pääasiassa niitä käyetään viemään tietoa plugineille. Valmiita
voisi olla tyyliin:

{{userId}}
{{userFirstName}}
{{userlastName}}
{{date}}
{{taskID}}

Sitten joku tapa tarvitaan miten muuttujia voisi määritellä?
Oma ehdotukseni voisi olla yksi erityyppinen lohko (kappale),
johon kirjoitetaan jotakin tyyliin

~~~ (#varibales variables)
    vuosi:2014
    teacher:Vesa Lappalainen 
~~~

ja tuo kappale näkyyy TIMin Edit-moodissa, mutta ei View-moodissa.
(ja toki sen editointioikeus käytännössä on vain monisteen
omistajalle).

Vesa Lappalainen

Ephemeral ei osaa käsitellä Windows-tyylisiä rivinvaihtoja (\r\n)

In GitLab by @Smibu on Jul 31, 2014, 17:30

Kun liitteenä olevan tiedoston lataa Ephemeralille esim. curl-komennolla

curl --data-binary @windows_eol_example.txt localhost:8001/load/windows

niin komento

curl localhost:8001/windows

tulostaa (huom. eka merkki on välilyönti)

 toka rivi

eli eka rivi puuttuu kokonaan. Ja jos hakee ensimmäistä kappaletta:

curl localhost:8001/windows/0

niin tulostuu

 toka rivi

vaikka olisi pitänyt olla eka rivi.

Kuvan latausnappi

In GitLab by @Smibu on Aug 2, 2014, 17:24

Ks. #18

Tuo pitänee joskus (tulevaisuudessa) muuttaa niin, että
se on Edit-laatikon yksi nappi (Lataa kuva), joka hakee
kuvan ja laittaa siihen Edit-ikkunaan valmiin markdownin.

Ville Tirronen

Pluginit TIMille

In GitLab by @Smibu on Jul 29, 2014, 13:12

Pluginin nimi ja sisältö talteen pandocin tuottamasta html:stä ja tim toimittaa pluginille. Plugin toimittaa valmiin HTML-palikan ja client laittaa näkyville.

Osiot

  • Plugin-rajapinta suunnitelma (kortti #35)
  • Pluginin tarvitsemat scriptit/tiedostot (kortti #36) - aika lailla speksattu ja vaikuttaisi toimivan
  • Pluginin tarvitsemat scriptit clientin puolella (edit-tila ei vielä toimi, muulloin scriptit haetaan jo sivun kasaus vaiheessa jolloin javascript ajetaan automaattisesti)
  • Answers

Samuel Uusi-Mäkelä

Yksinkertaisten pluginien JS-kirjasto

In GitLab by @Smibu on Aug 6, 2014, 19:37

Tein sekä monivalinta-pluginin, että tekstikenttäpluginin ja 99% javascripteistä oli aivan samanlaisia.

Ajatus oli, että se 99% olisi hyvä laittaa jonnekiin uudelleenkäytettäväksi..

Ongelma on se, pluginit näyttää nyt tältä:

function standardDirective(template,extract) {
  return function() {
    return {
      restrict: 'E',
      ... }
     }
  }

angular.module('MCQ', [])
  .directive('mcq', standardDirective("MCQTemplate.html"
                  , function(scope){return scope.userSelection;}));

Ja en oikein keksi miten tuota standardDirective funktiota pitäisi oikein jakaa. Senhän kuuluisi toimia useammalle pluginille jne.

Ville Tirronen

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.