Templates¶
AMY uses Django templating system and Django templating engine.
Templates in AMY are kept in amy/templates/ directory, conveniently grouped by
application in subdirectories (comments - from extcomments, communityroles,
consents, dashboard, forms - from extforms, fiscal, recruitment, reports,
requests - from extrequests, trainings, workshops). There are also directories
not related to internal AMY applications:
account- contains templates related to login/logout/password reset pages,bootstrap4- contains templates and/or includes for widgets used by Django Crispy Forms,includes- contains a bunch of reusable "components" - Django HTML templates,mailing- contains templates used to generate emails automatically sent when users submit external forms,markdownx- contains some overridden templates for django-markdown package.
Usually, unsless the template is an includable, one template corresponds to one view, that's why they are grouped in per-application directories.
The rest of the files stored directly in amy/templates/ directory are base templates.
Here's a description of them, which almost all the other templates inherit from.
Base templates¶
All templates use fluid container from Bootstrap 4.
There are multiple types of views in AMY:
- wide (e.g. 'Dashboard') --
base_nav.html, - wide with sidebar (e.g. 'All Events') --
base_nav_sidebar.html, - wide with two content columns (e.g.
WorkshopRequestaccept view) --base_nav_twocolumn.html.
These templates all inherit from base.html, which holds the HTML structure,
includes CSS styles and JS code, displays messages, footer, etc.
The base_nav.html is nothing more but base.html extended with a navigation.
Navigation changes depending on user - one navigation bar
(navigation.html) exists for admin users, a different one
(navigation_instructor_dashboard.html) exists for instructors/trainees.
A correct navigation bar is being included in base_nav.html and every
instructor-enabled template (e.g. Auto Update Profile form, Upcoming Teaching
Opportunities page, etc.).
There are also these templates available at the top-level template directory:
base_forms.html- base template for external forms (workshop request, workshop inquiry request, self-organised submission and training request),generic_form.html- a default form used byAMYCreateViewandAMYUpdateView(base views for creating and updating entities),generic_form_with_comments.html- the same asgeneric_form.html, but additionally contains a section with comments provided by extcomments application,pagination.html- displays a neat button groups split with "..." to not show too much pages at once.
Blocks available in base template¶
Django template blocks used in base.html template:
extrastylein<head>, when you need to load some additional CSS files or embed styles right into the page,extrajson bottom of<body>, for loading additional JavaScript files / codes,navbarused in templates that include a navigation bar,mainwith all the main content in case someone really needs to change it,leftcolumnfor adding a sidebar or a column (used inbase_nav_sidebar.html),maincolumnfor changing main content column grid,logoused in views that display AMY logo (login page, log out page, password reset, etc.) - seeaccountin Templates,titleto display<h1>tag with page title,contentfor displaying page content.
Widgets¶
There are multiple reusable components available in amy/templates/includes directory:
assigned_to.html- displays whom has the entity (event, workshop request, workshop inquiry request, self-organised submission) been assigned to; displays a form to change the assignee,assignment_modal.html- displays a modal "window" on the page; this window is used to select person assigned to specified entity (event, workshop request, workshop inquiry request, self-organised submission),assignment.html- displays a dropdown to change filtering events assigned to specific person (user, unassigned, or no filtering),attendance_email_href.html- renders amailto:link with provided list of emails as recipients and predefined text in email body; used in event details view and in workshop issues report,comments.html- displays comments and form for adding comments for a given entity,country_flag.html- renders county name with this country's flag,curriculum.html- displays curriculum as a Boostrap badge,event_details_table.html- displays a table with event details,event_import_update_from_url.html- modal for importing event details from a given URL address,instructor_profile_snapshot.html- as name suggests, this is a snapshot of person's instructor profile used in Instructor Selection project, on instructor dashboard,instructor_role_badge.html- small component displaying information about active or inactive instructor badge on for a person,instructor_selection_summary.html- a summary of instructor selection for a given event; this is displayed in event's jumbo header,instructorrecruitment.html- a representation of singleInstructorRecruitmentmodel instance,last_modified.html- used bylast_modifiedtemplate tag to display audit log information (when entity was created, when it was last modified),logo.html- AMY logo, used by user-facing external forms,merge_radio.html- used to display HTMLradioelement in Person/Event merge views,request_host_person.html- used to display person from the database matching the person requesting a workshop,request_institution.html- used to display organisation from the database matching the institution of person requesting a workshop,requests_bottom_action_btns.html- displays a group of buttons for accepting, discarding, etc. workshop requests, workshop inquiry requests, and self-organised submissions,selforganisedsubmission_details.html- displays a table with self-organised submission details,tag.html- displays a Boostrap badge of a tag,teaching_opportunity.html- displays details of instructor recruitment instance used in Instructor Selection project, on instructor dashboard,template_response.html- provides a dropdown with templates used for automatic reply to a workshop request,tracker.html- contains Matomo tracker JavaScript code,training_progresses_inline.html- displays person's progress in training with various training requirements,trainingrequest_details.html- displays a table with training request details,workshopinquiry_details.html- displays a table with workshop inquiry request details,workshoprequest_details.html- displays a table with workshop request details.