.. _sidetyper: Sidetyper ========= Vi bruker følgende sidetyper: .. _artikkel: Artikkel -------- :Kode: ``src/artikkel/models/artikkel.py`` :Template: ``src/artikkel/templates/artikkel/artikkel.html`` En artikkel består av både innhold og metadata. I redigeringsgrensesnittet vises disse henholdsvis bak fanene *Content* og *Metadata*. Inndelingen av hvilke attributter som vises bak hvilken fane settes via klasseattributtene ``content_panels`` og ``metadata_panels``. Innhold ~~~~~~~ * title: Arvet fra standardklassen ``Page``. * lead_paragraph: Ingress. `StreamField `_ av typen :ref:`LeadBlock`. * body: Brødtekst. `StreamField `_ av typen :ref:`ArtikkelBlock`. Ingress og brødtekst er adskilt fra hverandre for å gjøre det mulig å sette inn automatisk generert innhold mellom dem (for eksempel innholdsfortegnelse eller introduksjonsvideo). .. _artikkel_metadata: Metadata ~~~~~~~~ * page_type: Fjernnøkkel til :ref:`PageType`. * intro_video: Referanse til hvilken :ref:`Video` som skal vises som introduksjonsvideo i artikkelen. Rendres via template tagen :ref:`artikkel_video`. * related_chapters: Referanse til relevante kapitler i læreboka. Definert i snippeten :ref:`Book`. * related_exam_sets: Referanse til relevante eksamensoppgaver. Definert i snippeten :ref:`Exam`. * related_exercises: Referanse til relevante oppgaver i læreboka. Definert i hjelpeklassen :ref:`ArtikkelRelatedExercise`. * related_videos: Referanse til andre relevante :ref:`Video` (utenom en eventuell introduksjonsvideo). Definert i hjelpeklassen :ref:`ArtikkelRelatedVideo`. Alle ``related_*``-attributtene rendres via template tagen :ref:`artikkel_related`. De ulike sidetypene (temaside, eksempelside, bevis) bruker samme modell (artikkel.Artikkel med en ekstra variabel page_type), i stedet for hver sine separate subklasser av Page. Dette er gjort for å gjøre det mulig å endre sidetype etter man har begynt å lage siden. Context- og templatevariable ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I tillegg til attributtene listet opp i *Innhold* og *Metadata* genererer artikkelen selv noen ekstra context-variable via metoden ``Artikkel.get_context()``. Disse inkluderer: * breadcrumbs: Brukes for å rendre brødsmulesti, se :ref:`base_with_nav_html`. * related_content: Brukes for å rendre lenker til relevante kapitler i læreboka etc. Templaten sender denne gjennom :ref:`artikkel_related`. Dette er en dictionary med følgende innslag: * chapters: Liste over artikkelens related_chapters * exam_problems: Liste over artikkelens related_exam_sets * examples: Liste over direkte undersider med is_example == True * exercises: Liste over artikkelens related_exercises * procedures: Liste over direkte undersider med is_procedure == True * proofs: Liste over direkte undersider med is_proof == True * videos: Liste over artikkelens related_videos For forklaring av disse variablene, se :ref:`artikkel_metadata`. * has_related_content: Boolsk variabel som indikerer om det er nødvendig å rendre "Relevante lenker"-informasjonen i det hele tatt. Verdi: ``False`` dersom alle verdiene i ``related_content`` er tomme, ``True`` hvis minst ett av innslagene har ikke-tom verdi. Hjelpeklasser ~~~~~~~~~~~~~ .. _artikkelrelatedexercise: ArtikkelRelatedExercise ....................... Representerer relasjonen mellom :ref:`Artikkel` og relevante oppgaver i læreboka. Består av: * Fjernnøkkel til :ref:`Book` * Fritekstfelt som angir oppgavenummer * Referanse til en :ref:`Video` med løsningsforslag .. _artikkelrelatedvideo: ArtikkelRelatedVideo .................... Representerer relasjonen mellom :ref:`Artikkel` og relevante videoer (utenom introduksjonsvideoen). Består av fjernnøkkel til :ref:`Video`.