.. _snippets: Snippets ======== En `snippet `_ er en Wagtail-klasse som ikke arver fra ``Page``, og brukes for å representere informasjon som ikke logisk hører hjemme på sin egen side. Slike objekter har dermed ikke sin egen URL. Snippets er vanlige Django-modeller, med redigeringsmuligheter via admingrensesnittet, og de kan refereres til fra sider (eller fra andre snippets) via ``ForeignKey`` eller lignende relasjoner. Vi bruker snippets for å systematisere og strukturere informasjonen som legges inn i en artikkel. Her følger en beskrivelse av våre snippets-klasser: .. _book: Book ---- :Kode: ``src/artikkel/models/book.py`` Database over lærebøkene som brukes. En lærebok består av: * title: Tittel. * edition: Utgave. * book_chapters: 0 eller flere objekter som hver angir et kapittel i boka pluss kobling til den relaterte temasiden. Hvert slikt objekt består av: * chapter: Fritekstbeskrivelse av kapittelet (f.eks "4.3", "4.11 – 4.13" eller "4.4, 4.6") * topic: Referanse til den temasiden (:ref:`Artikkel`) der dette kapittelet skal dukke opp under "Relevante lenker". .. _course: Course ------ :Kode: ``src/artikkel/models/course.py`` :Brukes av: :ref:`Exam`, :ref:`Video` Oversikt over emnene som bruker publiseringssystemet. Et emne består av: * code: Emnekode, f.eks ``TMA4100``. * name: Fullt navn, f.eks ``Matematikk 1``. Brukes for å tagge videoer med metadata om hvilket emne de tilhører eller er innspilt i forbindelse med. .. _exam: Exam ---- :Kode: ``src/artikkel/models/exam.py`` :Brukes av: :ref:`Artikkel` Database over eksamensoppgaver m/løsningsforslag (på papir og på video). En eksamensoppgave består av: * course: Emnet eksamenen ble gitt i. Referanse til :ref:`Course`. * year: Året eksamenen ble gitt. * term: Semester (V = Vår, S = Kont, H = Høst). Lagres i databasen som heltall (hhv. 5, 8, 12 for mai, august, desember) for å kunne sortere semestrene kronologisk, og oversettes til V/S/H ved visning. * sets: 0 eller flere objekter som hvert er et eksamenssett m/løsningsforslag (på papir). Ett innslag per språk/målform. Hvert eksamenssett består igjen av: * language: Språk/målform * problems: Eksamenssettet (som regel i PDF). Referanse til opplastet dokument. * solutions: Løsningsforslag (som regel i PDF). Referanse til opplastet dokument. * problems: 0 eller flere objekter som hvert utgjør en av deloppgavene i eksamenssettet. Hver deloppgave består igjen av: * problem: Fritekstbeskrivelse av deloppgaven (f.eks "1a", "2a/2b/2c", "3", ...). * solution: Referanse til en :ref:`Video` med gjennomgang/løsningsforslag av deloppgaven. * topic: Referanse til den temasiden (:ref:`Artikkel`) der denne deloppgaven skal dukke opp under "Relevante lenker". .. note:: Wagtail støtter p.t. (2018-12) ikke nested InlinePanels: https://github.com/wagtail/wagtail/issues/1952 Siden ``Exam`` <--> ``ExamProblem`` er en 1:N-relasjon (og dermed en ``InlinePanel`` i ``Exam``) er det ikke mulig å la ``topic`` være en 1:N-relasjon mellom ``ExamProblem`` og ``Artikkel``). Dette betyr at vi ikke kan legge til flere relevante temasider til hver deloppgave, men er nødt til å begrense oss til 1:1-relasjon mellom deloppgave og temaside. 2019-04-23: Det er lagt til `støtte for nøsting `_ i `django-modelcluster v4.4 `_, så det kan tenkes at en framtidig versjon av Wagtail kan klare å håndtere dette. .. _pagetype: Page Type --------- :Kode: ``src/artikkel/models/pagetype.py`` :Brukes av: :ref:`Artikkel`, :ref:`IndexBlock` Her defineres de ulike sidetypene (temaside, eksempel, bevis, osv.). Hver sidetype består av: * name: Beskrivelse. * is_example: Angir om sider av denne sidetypen skal listes opp under "Eksempler"-avsnittet i "Relevante lenker"-boksen. * is_procedure: Angir om sider av denne sidetypen skal listes opp under "Regneregler"-avsnittet i "Relevante lenker"-boksen. * is_proof: Angir om sider av denne sidetypen skal listes opp under "Bevis"-avsnittet i "Relevante lenker"-boksen. * show_tagline: Angir om sidetypens beskrivelse skal vises under hovedoverskriften. * show_search: Angir om søketreff skal være prefikset med sidetypens beskrivelse. Alle sider er alltid søkbare, denne innstillingen er kun et visningsvalg som avgjør hvordan søkeresultatene vises. .. _predefinedtext: Predefined Text --------------- :Kode: ``src/artikkel/blocks/predefined_text.py`` :Brukes av: :ref:`PredefinedTextBlock` Database over statiske tekstblokker som kan inkluderes på flere steder. Gjør det mulig å repetere tekst (f.eks gjenta et teorem på en underside med et regneeksempel) uten å bruke klipp&lim, ved å sette inn en :ref:`PredefinedTextBlock` på ønsket sted i artikkelen. Tekst som settes inn i artikkelen på denne måten ikke er søkbar, så denne blokktypen bør først og fremst brukes til TeX-uttrykk og lignende. .. _video: Video ----- :Kode: ``src/artikkel/models/video.py`` :Brukes av: :ref:`Artikkel`, :ref:`Exam` Database over alle innspilte videoer. Består av: * title: Beskrivelse. Kan bli brukt som lenketekst eller figurtekst (ved embedding). * url: Adressen til nettsiden som inneholder videoen (f.eks ``_). * length: Videoens lengde i timer, minutter og sekunder (angis på formen HH:MM:SS). * actors: Medvirkende i videoen. Fritekstfelt. * course: Hvilket emne videoen tilhører. Referanse til (:ref:`Course`). Se :ref:`embeds` for mer informasjon.