From 7ce5e659b29b68afc283a2fb7059cab453ac7e91 Mon Sep 17 00:00:00 2001 From: Alexis BENOIT Date: Thu, 5 Jun 2025 15:58:16 +0200 Subject: [PATCH 1/8] =?UTF-8?q?F=C3=A9d=C3=A9ration=20des=20contenus=20(#1?= =?UTF-8?q?102)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/sass/_theme/sections/events/item.sass | 6 ++++ i18n/en.yml | 23 +++++++++++++-- i18n/fr.yml | 11 ++++--- layouts/partials/GetPermalink | 8 +++++ layouts/partials/commons/item/federated.html | 8 +++++ layouts/partials/commons/item/heading.html | 5 ++-- layouts/partials/events/partials/event.html | 29 ++++++++++--------- .../events/partials/event/federated.html | 1 + .../events/partials/event/heading.html | 1 + .../exhibitions/partials/exhibition.html | 5 ++++ .../partials/exhibition/federated.html | 1 + 11 files changed, 76 insertions(+), 22 deletions(-) create mode 100644 layouts/partials/GetPermalink create mode 100644 layouts/partials/commons/item/federated.html create mode 100644 layouts/partials/events/partials/event/federated.html create mode 100644 layouts/partials/events/partials/event/heading.html create mode 100644 layouts/partials/exhibitions/partials/exhibition/federated.html diff --git a/assets/sass/_theme/sections/events/item.sass b/assets/sass/_theme/sections/events/item.sass index ebdd42cc3..aa2a8fa82 100644 --- a/assets/sass/_theme/sections/events/item.sass +++ b/assets/sass/_theme/sections/events/item.sass @@ -44,6 +44,12 @@ .media &:empty display: none + &.is-federated + .event-content + display: flex + flex-direction: column + .event-federation + order: -1 @include media-breakpoint-up(desktop) &-time display: flex diff --git a/i18n/en.yml b/i18n/en.yml index 14d1616c1..5c2b61892 100644 --- a/i18n/en.yml +++ b/i18n/en.yml @@ -251,12 +251,18 @@ errors: We suggest you return to the home page of our site.
Thank you for your understanding. events: + access: + partical_informations: Informations archives: by_year: Archives by year latest: Archives list: title: "Archives for the year {{ .year }}" calendar: + day: + link: Show all for {{ .date }} + month: + link: Show all for {{ .month }} week_days: monday: short: Mon @@ -282,8 +288,9 @@ events: count: one: "1 event" other: "{{ .Count }} events" - date: Date - hour: Time + item: + federated: "Event from {{ . }}" + more_dates: Show all dates none: No event next: Next event next_aria: Next event “{{ .Title }}” @@ -295,10 +302,22 @@ events: to: day: To day hour: To hour + status: + current: Now + future: Soon + archive: Passed unique_day: Date exhibitions: archives: Previous exhibitions archive none: No exhibition. + current: Now + future: Coming soon + item: + federated: "Exhibition from {{ . }}" + status: + current: Now + future: Soon + archive: Passed formats: pdf: Adobe Portable Document Format jpg: JPEG image diff --git a/i18n/fr.yml b/i18n/fr.yml index 8044114ef..b431d436e 100644 --- a/i18n/fr.yml +++ b/i18n/fr.yml @@ -259,6 +259,8 @@ errors: Nous vous proposons de retourner à la page d'accueil de notre site.
Merci de votre compréhension. events: + access: + partical_informations: Informations pratiques archives: by_year: Agenda par années latest: Archives @@ -289,8 +291,8 @@ events: count: one: "1 événement" other: "{{ .Count }} événements" - access: - partical_informations: Informations pratiques + item: + federated: "Événement du réseau {{ . }}" more_dates: Afficher toutes les dates none: Aucun événement next: Événement suivant @@ -299,20 +301,21 @@ events: previous: Événement précédent previous_aria: Événement précédent “{{ .Title }}” regular_event: Événement régulier - unique_day: Date see_programme: Accéder au programme status: current: En cours future: À venir archive: Archive + unique_day: Date year: anchor: Accéder aux événements - exhibitions: archives: Expositions passées none: Aucune exposition. current: En ce moment future: Bientôt + item: + federated: "Exposition du réseau {{ . }}" status: current: En cours future: À venir diff --git a/layouts/partials/GetPermalink b/layouts/partials/GetPermalink new file mode 100644 index 000000000..e82a5cd63 --- /dev/null +++ b/layouts/partials/GetPermalink @@ -0,0 +1,8 @@ +{{ $permalink := .Permalink }} +{{ with .Params.federation }} + {{ if .active }} + {{ $permalink = .canonical_url }} + {{ end }} +{{ end }} + +{{ return $permalink }} \ No newline at end of file diff --git a/layouts/partials/commons/item/federated.html b/layouts/partials/commons/item/federated.html new file mode 100644 index 000000000..3dff009b9 --- /dev/null +++ b/layouts/partials/commons/item/federated.html @@ -0,0 +1,8 @@ +{{ $type := .Type }} +{{ with .Params.federation }} + {{ if .active }} +

+ {{ i18n ( printf "%s.item.federated" $type ) .website.name | safeHTML }} +

+ {{ end }} +{{ end }} \ No newline at end of file diff --git a/layouts/partials/commons/item/heading.html b/layouts/partials/commons/item/heading.html index e7a261cb6..7d5542cd5 100644 --- a/layouts/partials/commons/item/heading.html +++ b/layouts/partials/commons/item/heading.html @@ -8,7 +8,7 @@ {{ $title_attributes := printf "class='%s-title'" $type }} {{ with $itemprop }} - {{ $title_attributes = printf "%s %s" $title_attributes . }} + {{ $title_attributes = printf "%s itemprop='%s'" $title_attributes . }} {{ end }} {{ $link_title := safeHTML (i18n "commons.more_aria" (dict "Title" $item.Title)) }} @@ -22,7 +22,8 @@ {{ end }} {{ $heading_tag.open }} - {{ $heading_tag.close }} diff --git a/layouts/partials/events/partials/event.html b/layouts/partials/events/partials/event.html index 84bcbd21c..e2998bb84 100644 --- a/layouts/partials/events/partials/event.html +++ b/layouts/partials/events/partials/event.html @@ -17,13 +17,17 @@ {{ $class := "event" }} {{ if and .Params.image $options.image }} {{ $class = printf "%s event--with-image" $class }} - {{ end -}} + {{ end }} {{ if .Params.children }} {{ $class = printf "%s event--parent" $class }} - {{ end -}} + {{ end }} {{ if .Params.parent }} {{ $class = printf "%s event--child" $class }} - {{ end -}} + {{ end }} + {{ if .Params.federation.active }} + {{ $class = printf "%s is-federated" $class }} + {{ end }} + {{ $dates := .Params.dates }}
- {{- $title := partial "PrepareHTML" .Title -}} - {{ if and $options.subtitle .Params.subtitle }} -
- {{ end }} - {{ $heading_tag.open }} - {{ $title }} - {{ $heading_tag.close }} - {{ if and $options.subtitle .Params.subtitle }} -

{{ partial "PrepareText" .Params.subtitle }}

-
- {{ end }} + {{ partial "events/partials/event/heading.html" (dict + "item" . + "options" $options + "level" $heading_level + "itemprop" "name" + ) }} + + {{ partial "events/partials/event/federated.html" . }} {{ if ne $layout "agenda" }} {{ partial "events/partials/event/parent.html" . }} diff --git a/layouts/partials/events/partials/event/federated.html b/layouts/partials/events/partials/event/federated.html new file mode 100644 index 000000000..3a20d6a5a --- /dev/null +++ b/layouts/partials/events/partials/event/federated.html @@ -0,0 +1 @@ +{{ partial "commons/item/federated.html" . }} \ No newline at end of file diff --git a/layouts/partials/events/partials/event/heading.html b/layouts/partials/events/partials/event/heading.html new file mode 100644 index 000000000..e442a2f2b --- /dev/null +++ b/layouts/partials/events/partials/event/heading.html @@ -0,0 +1 @@ +{{ partial "commons/item/heading.html" . }} \ No newline at end of file diff --git a/layouts/partials/exhibitions/partials/exhibition.html b/layouts/partials/exhibitions/partials/exhibition.html index ff1609317..8e936d91c 100644 --- a/layouts/partials/exhibitions/partials/exhibition.html +++ b/layouts/partials/exhibitions/partials/exhibition.html @@ -10,6 +10,9 @@ {{ $class = printf "%s exhibition--with-image" $class }} {{ end -}} {{ $dates := .Params.dates }} + {{ if .Params.federation.active }} + {{ $class = printf "%s is-federated" $class }} + {{ end }}
@@ -22,6 +25,8 @@ "itemprop" "name" )}} + {{ partial "exhibitions/partials/exhibition/federated.html" . }} + {{ if $options.dates }} {{ partial "exhibitions/partials/exhibition/schedule.html" (dict "dates" .Params.dates diff --git a/layouts/partials/exhibitions/partials/exhibition/federated.html b/layouts/partials/exhibitions/partials/exhibition/federated.html new file mode 100644 index 000000000..3a20d6a5a --- /dev/null +++ b/layouts/partials/exhibitions/partials/exhibition/federated.html @@ -0,0 +1 @@ +{{ partial "commons/item/federated.html" . }} \ No newline at end of file From 05911976a7eb86a9b6e6a4936adf5e17fdcb7db4 Mon Sep 17 00:00:00 2001 From: Alexis BENOIT Date: Thu, 5 Jun 2025 16:22:42 +0200 Subject: [PATCH 2/8] Offres d'emploi (#1104) --- .../_theme/design-system/layouts/list.sass | 1 + assets/sass/_theme/hugo-osuny.sass | 1 + assets/sass/_theme/sections/jobs.sass | 28 ++++++++++ hugo.yaml | 38 +++++++++++++ i18n/en.yml | 8 +++ i18n/fr.yml | 8 +++ i18n/pt.yml | 8 +++ layouts/jobs/section.html | 3 + layouts/jobs/single.html | 3 + layouts/partials/blocks/templates/jobs.html | 30 ++++++++++ layouts/partials/jobs/partials/job.html | 56 +++++++++++++++++++ layouts/partials/jobs/partials/job/dates.html | 14 +++++ .../partials/jobs/partials/job/heading.html | 1 + layouts/partials/jobs/partials/job/media.html | 5 ++ .../partials/jobs/partials/job/summary.html | 1 + layouts/partials/jobs/partials/jobs.html | 17 ++++++ layouts/partials/jobs/section.html | 23 ++++++++ layouts/partials/jobs/section/hero.html | 8 +++ layouts/partials/jobs/section/summary.html | 1 + layouts/partials/jobs/single.html | 31 ++++++++++ layouts/partials/jobs/single/hero.html | 12 ++++ layouts/partials/jobs/single/job-infos.html | 39 +++++++++++++ layouts/partials/jobs/single/sidebar.html | 14 +++++ layouts/partials/jobs/single/summary.html | 1 + 24 files changed, 351 insertions(+) create mode 100644 assets/sass/_theme/sections/jobs.sass create mode 100644 layouts/jobs/section.html create mode 100644 layouts/jobs/single.html create mode 100644 layouts/partials/blocks/templates/jobs.html create mode 100644 layouts/partials/jobs/partials/job.html create mode 100644 layouts/partials/jobs/partials/job/dates.html create mode 100644 layouts/partials/jobs/partials/job/heading.html create mode 100644 layouts/partials/jobs/partials/job/media.html create mode 100644 layouts/partials/jobs/partials/job/summary.html create mode 100644 layouts/partials/jobs/partials/jobs.html create mode 100644 layouts/partials/jobs/section.html create mode 100644 layouts/partials/jobs/section/hero.html create mode 100644 layouts/partials/jobs/section/summary.html create mode 100644 layouts/partials/jobs/single.html create mode 100644 layouts/partials/jobs/single/hero.html create mode 100644 layouts/partials/jobs/single/job-infos.html create mode 100644 layouts/partials/jobs/single/sidebar.html create mode 100644 layouts/partials/jobs/single/summary.html diff --git a/assets/sass/_theme/design-system/layouts/list.sass b/assets/sass/_theme/design-system/layouts/list.sass index 66f6b2b68..c1a4d06df 100644 --- a/assets/sass/_theme/design-system/layouts/list.sass +++ b/assets/sass/_theme/design-system/layouts/list.sass @@ -7,6 +7,7 @@ border-bottom: var(--border-width) solid var(--color-border) article display: flex + flex-direction: row @include layout-item .media order: -1 diff --git a/assets/sass/_theme/hugo-osuny.sass b/assets/sass/_theme/hugo-osuny.sass index bcb44fb2b..07862377e 100644 --- a/assets/sass/_theme/hugo-osuny.sass +++ b/assets/sass/_theme/hugo-osuny.sass @@ -99,6 +99,7 @@ @import sections/exhibitions/section @import sections/exhibitions/single +@import sections/jobs @import sections/locations @import sections/organizations @import sections/pages diff --git a/assets/sass/_theme/sections/jobs.sass b/assets/sass/_theme/sections/jobs.sass new file mode 100644 index 000000000..8ec196432 --- /dev/null +++ b/assets/sass/_theme/sections/jobs.sass @@ -0,0 +1,28 @@ +.job + // @include article(auto) + .job-dates + time + display: inline + + time + &::before + content: ' - ' + +ul.jobs + @include list-reset + +.jobs + &--alternate + @include layout-alternate + &--grid + @include layout-grid + &--large + @include layout-large + &--list + @include layout-list + +.jobs__page + &:not(.full-width) + .section-sidebar + @include sidebar + .job-infos + @include sidebar-infos \ No newline at end of file diff --git a/hugo.yaml b/hugo.yaml index cf6cf429b..1d848ec0e 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -231,6 +231,18 @@ params: # telegram: false # twitter: true # whatsapp: false + jobs: + date_format: ":date_long" + default_image: false + index: + layout: grid # alternate | grid | large | list + options: + categories: true + image: true + subtitle: true + summary: true + dates: true + truncate_description: 200 # Set to 0 to disable truncate organizations: dark_logo_background: false map_marker_icon: '/assets/images/map-marker.svg' @@ -452,6 +464,23 @@ params: mobile: 480x850 tablet: 768x1360 desktop: 1920x1920 + jobs: + alternate: + mobile: 350 + tablet: 709 + desktop: 1019 + grid: + mobile: 327 + tablet: 555 + desktop: 864 + large: + mobile: 350 + tablet: 555 + desktop: 1019 + list: + mobile: 350 + tablet: 709 + desktop: 1019 links: mobile: 350 tablet: 400 @@ -646,6 +675,15 @@ params: mobile: 350 tablet: 450 desktop: 750 + jobs: + hero: + mobile: 400 + tablet: 800 + desktop: 750 + hero_single: + mobile: 400 + tablet: 800 + desktop: 750 organizations: hero: mobile: 400 diff --git a/i18n/en.yml b/i18n/en.yml index 5c2b61892..8b7b8471a 100644 --- a/i18n/en.yml +++ b/i18n/en.yml @@ -333,6 +333,14 @@ formats: zip: Compressed archive gz: Compressed archive tar: Compressed archive +jobs: + dates: + from: Date + to: Closing date + next: Next offer + next_aria: Next offer “{{ .Title }}” + previous: Previous offer + previous_aria: Previous offer “{{ .Title }}” organizations: backlinks: events: Events mentioning diff --git a/i18n/fr.yml b/i18n/fr.yml index b431d436e..f32b46559 100644 --- a/i18n/fr.yml +++ b/i18n/fr.yml @@ -335,6 +335,14 @@ formats: zip: Compressed archive gz: Compressed archive tar: Compressed archive +jobs: + dates: + from: Date + to: Date de clôture + next: Offre suivante + next_aria: Offre suivante “{{ .Title }}” + previous: Offre précédente + previous_aria: Offre précédente “{{ .Title }}” organizations: backlinks: events: Événements mentionnant diff --git a/i18n/pt.yml b/i18n/pt.yml index ac635f7a7..3087381bc 100644 --- a/i18n/pt.yml +++ b/i18n/pt.yml @@ -265,6 +265,14 @@ formats: zip: Arquivo compactado gz: Arquivo compactado tar: Arquivo compactado +jobs: + dates: + from: Data + to: Data de fecho + next: Próxima oferta + next_aria: Próxima oferta “{{ .Title }}” + previous: Oferta anterior + previous_aria: Oferta anterior “{{ .Title }}” organizations: backlinks: events: Eventos mencionando diff --git a/layouts/jobs/section.html b/layouts/jobs/section.html new file mode 100644 index 000000000..bd8f0af64 --- /dev/null +++ b/layouts/jobs/section.html @@ -0,0 +1,3 @@ +{{ define "main" }} + {{ partial "jobs/section.html" . }} +{{ end }} diff --git a/layouts/jobs/single.html b/layouts/jobs/single.html new file mode 100644 index 000000000..29bda279c --- /dev/null +++ b/layouts/jobs/single.html @@ -0,0 +1,3 @@ +{{ define "main" }} + {{ partial "jobs/single.html" . }} +{{ end }} diff --git a/layouts/partials/blocks/templates/jobs.html b/layouts/partials/blocks/templates/jobs.html new file mode 100644 index 000000000..929e02875 --- /dev/null +++ b/layouts/partials/blocks/templates/jobs.html @@ -0,0 +1,30 @@ +{{- $block := .block }} +{{- $block_class := partial "GetBlockClass" .block -}} +{{- with .block.data -}} + {{- $options := .options -}} + {{- $layout := .layout | default "grid" -}} +
+
+
+ {{ partial "blocks/top.html" $block.top }} + {{ if .jobs }} +
    + {{ range .jobs }} + {{ $job := site.GetPage .path }} + {{ with $job }} +
  • + {{ partial "jobs/partials/job.html" (dict + "job" . + "layout" $layout + "options" $options + "heading_level" $block.ranks.children + ) }} +
  • + {{ end }} + {{ end }} +
+ {{ end }} +
+
+
+{{ end -}} \ No newline at end of file diff --git a/layouts/partials/jobs/partials/job.html b/layouts/partials/jobs/partials/job.html new file mode 100644 index 000000000..b846f0993 --- /dev/null +++ b/layouts/partials/jobs/partials/job.html @@ -0,0 +1,56 @@ +{{ $job := .job }} +{{ $layout := .layout | default "list" }} +{{ $heading_level := .heading_level }} +{{ $with_more := .with_more }} +{{ $options := .options }} + +{{ with $job }} + {{ $class := "job" }} + {{ if and .Params.image $options.image }} + {{ $class = printf "%s job--with-image" $class }} + {{ $image_direction := partial "GetImageDirection" .Params.image }} + {{ $class = printf "%s %s" $class $image_direction }} + {{ end }} + + {{ $dates := .Params.dates }} + +
+
+ {{ partial "jobs/partials/job/heading.html" (dict + "item" . + "options" $options + "level" $heading_level + "itemprop" "title" + )}} + + {{ if and $options.summary .Params.summary }} +
+ {{ partial "jobs/partials/job/summary.html" . }} +
+ {{ end }} + + {{ if $options.dates }} + {{ partial "jobs/partials/job/dates.html" . }} + {{ end }} + + {{ if $options.categories }} + {{ partial "commons/categories.html" ( dict + "context" . + "kind" "job" + )}} + {{- end -}} + + {{ if $with_more }} + {{ partial "commons/item/more.html" . }} + {{- end -}} +
+ + {{ if $options.image }} + {{ partial "jobs/partials/job/media.html" (dict + "image" $job.Params.image + "layout" $layout + )}} + {{ end }} +
+{{ end }} \ No newline at end of file diff --git a/layouts/partials/jobs/partials/job/dates.html b/layouts/partials/jobs/partials/job/dates.html new file mode 100644 index 000000000..0123a9342 --- /dev/null +++ b/layouts/partials/jobs/partials/job/dates.html @@ -0,0 +1,14 @@ +{{ with .Params.dates }} +

+ {{ with .from }} + + {{ end }} + {{ with .to }} + + {{ end }} +

+{{ end }} \ No newline at end of file diff --git a/layouts/partials/jobs/partials/job/heading.html b/layouts/partials/jobs/partials/job/heading.html new file mode 100644 index 000000000..e442a2f2b --- /dev/null +++ b/layouts/partials/jobs/partials/job/heading.html @@ -0,0 +1 @@ +{{ partial "commons/item/heading.html" . }} \ No newline at end of file diff --git a/layouts/partials/jobs/partials/job/media.html b/layouts/partials/jobs/partials/job/media.html new file mode 100644 index 000000000..3b77b767b --- /dev/null +++ b/layouts/partials/jobs/partials/job/media.html @@ -0,0 +1,5 @@ +{{ partial "commons/item/media.html" (dict + "image" .image + "type" "jobs" + "layout" .layout + ) }} \ No newline at end of file diff --git a/layouts/partials/jobs/partials/job/summary.html b/layouts/partials/jobs/partials/job/summary.html new file mode 100644 index 000000000..1aed0933f --- /dev/null +++ b/layouts/partials/jobs/partials/job/summary.html @@ -0,0 +1 @@ +{{ partial "commons/item/summary.html" . }} \ No newline at end of file diff --git a/layouts/partials/jobs/partials/jobs.html b/layouts/partials/jobs/partials/jobs.html new file mode 100644 index 000000000..d57964b80 --- /dev/null +++ b/layouts/partials/jobs/partials/jobs.html @@ -0,0 +1,17 @@ +{{ $jobs := .jobs }} +{{ $layout := .layout | default site.Params.jobs.index.layout }} +{{ $options := .options | default site.Params.jobs.index.options }} +{{ $heading_level := .heading_level | default 2 }} + +
    + {{ range $jobs }} +
  • + {{ partial "jobs/partials/job.html" (dict + "job" . + "heading_level" $heading_level + "layout" $layout + "options" $options + )}} +
  • + {{ end }} +
diff --git a/layouts/partials/jobs/section.html b/layouts/partials/jobs/section.html new file mode 100644 index 000000000..15d019d47 --- /dev/null +++ b/layouts/partials/jobs/section.html @@ -0,0 +1,23 @@ +{{ partial "jobs/section/hero.html" . }} +
+ {{ partial "jobs/section/summary.html" (dict + "with_container" true + "context" . + ) }} + + {{ if (partial "IsFirstPage" .) }} + {{ partial "contents/list.html" . }} + {{ end }} + +
+ {{ partial "taxonomies/section-list.html" . }} + + {{ partial "jobs/partials/jobs.html" (dict + "jobs" .RegularPages + "layout" site.Params.jobs.index.layout + "options" site.Params.jobs.index.options + )}} + + {{ partial "commons/pagination.html" . }} +
+
diff --git a/layouts/partials/jobs/section/hero.html b/layouts/partials/jobs/section/hero.html new file mode 100644 index 000000000..35be9b4af --- /dev/null +++ b/layouts/partials/jobs/section/hero.html @@ -0,0 +1,8 @@ +{{- $title := or .Params.header_text .Title -}} +{{- partial "header/hero.html" + (dict + "title" $title + "image" .Params.image + "sizes" site.Params.image_sizes.sections.jobs.hero + "context" . + ) -}} diff --git a/layouts/partials/jobs/section/summary.html b/layouts/partials/jobs/section/summary.html new file mode 100644 index 000000000..85e4edf81 --- /dev/null +++ b/layouts/partials/jobs/section/summary.html @@ -0,0 +1 @@ +{{- partial "commons/summary-in-content.html" . -}} diff --git a/layouts/partials/jobs/single.html b/layouts/partials/jobs/single.html new file mode 100644 index 000000000..08c8e0294 --- /dev/null +++ b/layouts/partials/jobs/single.html @@ -0,0 +1,31 @@ +{{ partial "jobs/single/hero.html" . }} + +
+ + + {{ with .Params.summary }}{{ end }} + + {{ partial "jobs/single/sidebar.html" . }} + + {{ $taxonomies_position := partial "GetTaxonomiesPosition" . }} + {{ if and .Params.design.full_width .Params.taxonomies (eq $taxonomies_position "content") }} +
+ {{ partial "taxonomies/single-list-container.html" . }} +
+ {{ end }} + + {{ partial "jobs/single/summary.html" (dict + "context" . + "block_wrapped" true + ) }} + + {{ partial "contents/list.html" . }} + + {{ partial "commons/siblings-navigation.html" (dict + "context" . + "previous_label" (i18n "jobs.previous") + "next_label" (i18n "jobs.next") + ) }} + + {{ partial "hooks/before-document-content-end.html" . }} +
\ No newline at end of file diff --git a/layouts/partials/jobs/single/hero.html b/layouts/partials/jobs/single/hero.html new file mode 100644 index 000000000..7920243c5 --- /dev/null +++ b/layouts/partials/jobs/single/hero.html @@ -0,0 +1,12 @@ +{{- $title := or .Params.header_text .Title -}} + +{{ with .Params.subtitle }} + {{- $title = printf "%s %s" $title . -}} +{{ end }} + +{{- partial "header/hero.html" (dict + "title" $title + "image" .Params.image + "sizes" site.Params.image_sizes.sections.jobs.hero_single + "context" . + ) -}} diff --git a/layouts/partials/jobs/single/job-infos.html b/layouts/partials/jobs/single/job-infos.html new file mode 100644 index 000000000..55aea2770 --- /dev/null +++ b/layouts/partials/jobs/single/job-infos.html @@ -0,0 +1,39 @@ + +
    + {{ $taxonomies_position := partial "GetTaxonomiesPosition" . }} + {{ if ne $taxonomies_position "hero" }} + {{ if .Params.jobs_categories }} +
  • + {{ partial "taxonomies/single-list.html" . }} +
  • + {{ end }} + {{ end }} + + + {{ with .Params.dates }} + {{ with .from }} +
  • + {{ i18n "jobs.dates.from" }} + +
  • + {{ end }} + {{ with .to }} +
  • + {{ i18n "jobs.dates.to" }} + +
  • + {{ end }} + {{ end }} + + {{ partial "authors/partials/authors.html" . }} + + {{ partial "commons/reading-time.html" . }} + + {{ if site.Params.jobs.share_links.enabled | default site.Params.share_links.enabled }} + {{ partial "commons/share/list-item.html" . }} + {{ end }} +
\ No newline at end of file diff --git a/layouts/partials/jobs/single/sidebar.html b/layouts/partials/jobs/single/sidebar.html new file mode 100644 index 000000000..e117daae0 --- /dev/null +++ b/layouts/partials/jobs/single/sidebar.html @@ -0,0 +1,14 @@ + diff --git a/layouts/partials/jobs/single/summary.html b/layouts/partials/jobs/single/summary.html new file mode 100644 index 000000000..85e4edf81 --- /dev/null +++ b/layouts/partials/jobs/single/summary.html @@ -0,0 +1 @@ +{{- partial "commons/summary-in-content.html" . -}} From a80518f5839ff79b1cb5912ab6b0f24c227aa0d8 Mon Sep 17 00:00:00 2001 From: Alexis BENOIT Date: Fri, 6 Jun 2025 10:59:22 +0200 Subject: [PATCH 3/8] Filtre de la page agenda (#1038) Co-authored-by: Olivia206 --- assets/js/theme/blocks/timeline.js | 1 + assets/js/theme/design-system/Popup.js | 2 +- assets/js/theme/design-system/events.js | 6 ++ assets/js/theme/design-system/extendables.js | 17 +++- assets/js/theme/design-system/offcanvas.js | 26 +++++ .../js/theme/design-system/sliders/Slider.js | 18 +++- assets/js/theme/index.js | 2 + .../sass/_theme/configuration/components.sass | 4 +- assets/sass/_theme/configuration/zindex.sass | 4 +- .../sass/_theme/design-system/dropdown.sass | 72 ++++++++++---- .../sass/_theme/design-system/offcanvas.sass | 35 +++++++ .../design-system/table_of_contents.sass | 16 +--- .../sass/_theme/design-system/taxonomies.sass | 2 +- assets/sass/_theme/hugo-osuny.sass | 2 + .../sass/_theme/sections/events/calendar.sass | 92 +++++++++--------- .../sass/_theme/sections/events/filters.sass | 95 +++++++++++++++++++ assets/sass/_theme/utils/grid.sass | 8 +- assets/sass/_theme/utils/sidebar.sass | 2 +- hugo.yaml | 2 + i18n/en.yml | 10 +- i18n/fr.yml | 10 +- i18n/pt.yml | 8 ++ layouts/partials/GetMonthFromNow | 13 +++ .../partials/commons/agenda/practicals.html | 2 +- layouts/partials/events/section-year.html | 2 +- layouts/partials/events/section.html | 7 +- layouts/partials/events/section/filters.html | 6 ++ .../events/section/filters/dates.html | 20 ++++ .../events/section/filters/taxonomies.html | 18 ++++ 29 files changed, 394 insertions(+), 108 deletions(-) create mode 100644 assets/js/theme/design-system/events.js create mode 100644 assets/js/theme/design-system/offcanvas.js create mode 100644 assets/sass/_theme/design-system/offcanvas.sass create mode 100644 assets/sass/_theme/sections/events/filters.sass create mode 100644 layouts/partials/GetMonthFromNow create mode 100644 layouts/partials/events/section/filters.html create mode 100644 layouts/partials/events/section/filters/dates.html create mode 100644 layouts/partials/events/section/filters/taxonomies.html diff --git a/assets/js/theme/blocks/timeline.js b/assets/js/theme/blocks/timeline.js index 55197e317..0974c7f50 100644 --- a/assets/js/theme/blocks/timeline.js +++ b/assets/js/theme/blocks/timeline.js @@ -4,6 +4,7 @@ osuny.Timeline = function (timeline) { this.timeline = timeline; this.updateTitleHeight(); window.addEventListener('resize', this.updateTitleHeight.bind(this)); + window.addEventListener(window.osuny.EVENTS.EXTENDABLE_HAS_OPEN, this.updateTitleHeight.bind(this)); }; osuny.Timeline.prototype.updateTitleHeight = function () { diff --git a/assets/js/theme/design-system/Popup.js b/assets/js/theme/design-system/Popup.js index 5384927cf..b2d50eee9 100644 --- a/assets/js/theme/design-system/Popup.js +++ b/assets/js/theme/design-system/Popup.js @@ -70,7 +70,7 @@ window.osuny.Popup.prototype = { closeExtendables: function () { // Close extendables boxes - var closeEvent = new Event('extendable-close'); + var closeEvent = new Event(window.osuny.EVENTS.EXTENDABLE_CLOSE); this.extendables.forEach(function (extendable) { extendable.dispatchEvent(closeEvent); }); diff --git a/assets/js/theme/design-system/events.js b/assets/js/theme/design-system/events.js new file mode 100644 index 000000000..16c76b43e --- /dev/null +++ b/assets/js/theme/design-system/events.js @@ -0,0 +1,6 @@ +window.osuny = window.osuny || {}; +window.osuny.EVENTS = { + EXTENDABLE_HAS_OPEN: 'osuny-extendable-has-opened', + EXTENDABLE_CLOSE: 'osuny-extendable-close', +} + diff --git a/assets/js/theme/design-system/extendables.js b/assets/js/theme/design-system/extendables.js index d19e71646..8d805e660 100644 --- a/assets/js/theme/design-system/extendables.js +++ b/assets/js/theme/design-system/extendables.js @@ -12,9 +12,9 @@ osuny.Extendable = function (element) { }; this.options = { // This attribute determine if extendable should close others when opened - closeSiblings: this.element.getAttribute('data-extendable-close-siblings'), - autoClose: this.element.getAttribute('data-extendable-auto-close'), - focusFirst: this.element.getAttribute('data-extendable-focus-first') + closeSiblings: this.element.getAttribute('data-extendable-close-siblings') === 'true', + autoClose: this.element.getAttribute('data-extendable-auto-close') === 'true', + focusFirst: this.element.getAttribute('data-extendable-focus-first') === 'true' }; this.listen(); @@ -39,13 +39,16 @@ osuny.Extendable.prototype.listen = function () { } }.bind(this)); - this.element.addEventListener('extendable-close', this.toggle.bind(this, false, true)); + this.element.addEventListener(window.osuny.EVENTS.EXTENDABLE_CLOSE, this.toggle.bind(this, false, true)); }; osuny.Extendable.prototype.handleAutoClose = function () { var isInTarget = false; window.addEventListener('click', function (event) { isInTarget = this.state.openedByButton ? this.state.openedByButton.contains(event.target) : false; + if (!isInTarget) { + isInTarget = this.element.contains(event.target); + } if (this.state.opened && event.target !== this.state.openedByButton && !isInTarget) { this.toggle(false); } @@ -79,6 +82,10 @@ osuny.Extendable.prototype.toggle = function (opened, fromOutside) { if (this.state.opened && this.options.focusFirst) { this.focusFirstElement(); } + + if (this.state.opened) { + window.dispatchEvent(new Event(window.osuny.EVENTS.EXTENDABLE_HAS_OPEN)); + } }; osuny.Extendable.prototype.focusFirstElement = function () { @@ -99,7 +106,7 @@ osuny.Extendable.prototype.closeSiblings = function () { extendables = parent.querySelectorAll('.extendable'); extendables.forEach(function (extendable) { if (this.element !== extendable) { - extendable.dispatchEvent(new Event('extendable-close')); + extendable.dispatchEvent(new Event(window.osuny.EVENTS.EXTENDABLE_CLOSE)); } }.bind(this)); }; diff --git a/assets/js/theme/design-system/offcanvas.js b/assets/js/theme/design-system/offcanvas.js new file mode 100644 index 000000000..02ae3fbef --- /dev/null +++ b/assets/js/theme/design-system/offcanvas.js @@ -0,0 +1,26 @@ +var osuny = window.osuny || {}; +osuny.Offcanvas = osuny.Offcanvas || {}; + +osuny.Offcanvas = function (element) { + osuny.Extendable.call(this, element); + this.classes = { + bodyclass: 'has-offcanvas-opened', + opened: 'is-opened' + } +}; + +osuny.Offcanvas.prototype = Object.create(osuny.Extendable.prototype); + +osuny.Offcanvas.prototype.toggle = function (opened, fromOutside) { + var classAction; + osuny.Extendable.prototype.toggle.call(this, opened, fromOutside); + + classAction = this.state.opened ? 'add' : 'remove'; + + this.element.classList[classAction](this.classes.opened); + document.documentElement.classList[classAction](this.classes.bodyclass); +}; + +(function () { + osuny.utils.instanciateAll('.offcanvas', osuny.Offcanvas); +}()); diff --git a/assets/js/theme/design-system/sliders/Slider.js b/assets/js/theme/design-system/sliders/Slider.js index bbceddd8d..f4290af27 100644 --- a/assets/js/theme/design-system/sliders/Slider.js +++ b/assets/js/theme/design-system/sliders/Slider.js @@ -1,4 +1,5 @@ import { setAriaVisibility } from '../../utils/a11y'; +import { isMobile } from '../../utils/breakpoints'; var osuny = window.osuny || {}; osuny.sliderComponents = { @@ -37,6 +38,7 @@ osuny.Slider.prototype.setState = function () { index: 0, isFirst: true, isLast: false, + slideBy: 1, updatedByUser: false }; }; @@ -60,6 +62,8 @@ osuny.Slider.prototype.setOptions = function () { progression: options.progression || false, // Disabled options disable: options.disable || false, + // Per Page + perPage: options.perPage || 1 }; }; @@ -71,6 +75,7 @@ osuny.Slider.prototype.init = function () { // update after everything is setup this.container.classList.add(osuny.Slider.classes.isReady); setTimeout(this.update.bind(this), 1); + this.resize(); }; osuny.Slider.prototype.setup = function () { @@ -115,7 +120,12 @@ osuny.Slider.prototype.addComponents = function () { }; osuny.Slider.prototype.listen = function () { - window.addEventListener('resize', this.translate.bind(this)); + window.addEventListener('resize', this.resize.bind(this)); +}; + +osuny.Slider.prototype.resize = function () { + this.state.slideBy = isMobile() ? 1 : this.options.perPage; + this.translate(); }; osuny.Slider.prototype.loop = function () { @@ -127,11 +137,11 @@ osuny.Slider.prototype.loop = function () { }; osuny.Slider.prototype.next = function (event) { - this.offset(1, event); + this.offset(this.state.slideBy, event); }; osuny.Slider.prototype.previous = function (event) { - this.offset(-1, event); + this.offset(-this.state.slideBy, event); }; osuny.Slider.prototype.offset = function (numberOfSlides, event) { @@ -146,7 +156,7 @@ osuny.Slider.prototype.goTo = function (index, event) { this.state.index = index; this.state.isFirst = this.state.index === 0; - this.state.isLast = this.state.index === this.slides.length - 1; + this.state.isLast = this.state.index === this.slides.length - this.state.slideBy; this.translate(); this.update(); diff --git a/assets/js/theme/index.js b/assets/js/theme/index.js index 7b24ddd9d..07cf3ae1c 100644 --- a/assets/js/theme/index.js +++ b/assets/js/theme/index.js @@ -3,10 +3,12 @@ import './utils/utils'; import './utils/realViewportHeight'; import './body'; +import './design-system/events'; import './design-system/accordion'; import './design-system/clickToCopy'; import './design-system/extendables'; import './design-system/extendableList'; +import './design-system/offcanvas'; import './design-system/font'; import './design-system/Maps'; import './design-system/mainMenu'; diff --git a/assets/sass/_theme/configuration/components.sass b/assets/sass/_theme/configuration/components.sass index 7d48623c0..1b8ad5408 100644 --- a/assets/sass/_theme/configuration/components.sass +++ b/assets/sass/_theme/configuration/components.sass @@ -139,6 +139,9 @@ $lightbox-detail-color: var(--color-text) !default $lightbox-detail-meta-color: var(--color-text-alt) !default $lightbox-focus-outline-color: black !default +// Offcanvas +$offcanvas-duration: $header-duration !default + // Table of content $toc-color: var(--color-text) !default $toc-active-color: var(--color-accent) !default // TODO : checker ce que ça fait @@ -151,7 +154,6 @@ $toc-title-font-family: $meta-font-family !default $toc-title-font-size: $meta-size !default $toc-title-font-size-desktop: $meta-size-desktop !default $toc-sticky-transition: $header-duration !default -$toc-offcanvas-duration: $header-duration !default $toc-overlay-color: $body-overlay-color !default $toc-border-width: 1px !default diff --git a/assets/sass/_theme/configuration/zindex.sass b/assets/sass/_theme/configuration/zindex.sass index e7875b2b2..4f8b97786 100644 --- a/assets/sass/_theme/configuration/zindex.sass +++ b/assets/sass/_theme/configuration/zindex.sass @@ -2,14 +2,14 @@ $zindex-aside: 48 !default $zindex-agenda-sticky-date: 48 !default $zindex-body-overlay: 51 !default -$zindex-dropdown: 3 !default +$zindex-dropdown: 50 !default $zindex-footer: 50 !default $zindex-header: 55 !default $zindex-lightbox: 80 !default $zindex-modal: 72 !default $zindex-nav-accessibility: 1010 !default +$zindex-offcanvas: 60 !default $zindex-toc: 50 !default $zindex-toc-cta: 49 !default -$zindex-toc-offcanvas: 60 !default $zindex-search-button-fixed: 51 !default $zindex-stretched-link: 2 !default \ No newline at end of file diff --git a/assets/sass/_theme/design-system/dropdown.sass b/assets/sass/_theme/design-system/dropdown.sass index 1b6a4e71d..edd55cf62 100644 --- a/assets/sass/_theme/design-system/dropdown.sass +++ b/assets/sass/_theme/design-system/dropdown.sass @@ -1,22 +1,20 @@ -@mixin dropdown($content: ".dropdown-menu") - @include meta - position: relative - button, span[role="button"] +@mixin dropdown($content-selector: ".dropdown-menu", $full: false) + > button, > span[role="button"] @include button-reset + @include meta color: inherit padding: $spacing-2 margin: -$spacing-2 + line-height: 1 @include icon(arrow-down-s-line, after) margin-left: 5px // When dropdown expanded &[aria-expanded="true"] @include icon(arrow-up-s-line, after) - + #{$content} + + #{$content-selector} display: block - #{$content} + #{$content-selector} @include list-reset - top: calc(100% + #{$spacing-2}) - left: 0 background-color: var(--dropdown-background) display: none position: absolute @@ -24,17 +22,49 @@ @include media-breakpoint-down(desktop) right: var(--grid-gutter-negative) left: var(--grid-gutter-negative) - li - display: block - &:not(:first-child) - border-top: var(--dropdown-border-width) solid var(--dropdown-border-color) - a - color: var(--dropdown-color) - display: flex - padding: $spacing-2 - text-decoration: none - white-space: normal + @if $full + position: static + > button, > span[role="button"] + margin-bottom: 0 + &[aria-expanded="true"] + background: var(--dropdown-background) + #{$content-selector} + @include inset(100%, 0, auto, 0) + padding-top: var(--grid-gutter) + padding-bottom: var(--grid-gutter) @include media-breakpoint-up(desktop) - &:hover - background-color: var(--dropdown-hover-background) - color: var(--dropdown-hover-color) + // To set a real full screen width + $empty-grid-space: calc((100vw - var(--grid-width)) / 2 * -1) + margin-left: $empty-grid-space + margin-right: $empty-grid-space + ul + @include container + @include grid(1) + @include grid(2, md) + @include grid(3, xl) + @include grid(4, xxl) + li + > a + @include icon(arrow-right-line, after, true) + @include hover-translate-icon + text-decoration: none + @else + position: relative + #{$content-selector} + @include list-reset + top: calc(100% + #{$spacing-2}) + left: 0 + li + display: block + &:not(:first-child) + border-top: var(--dropdown-border-width) solid var(--dropdown-border-color) + > a + color: var(--dropdown-color) + display: flex + padding: $spacing-2 + text-decoration: none + white-space: normal + @include media-breakpoint-up(desktop) + &:hover + background-color: var(--dropdown-hover-background) + color: var(--dropdown-hover-color) \ No newline at end of file diff --git a/assets/sass/_theme/design-system/offcanvas.sass b/assets/sass/_theme/design-system/offcanvas.sass new file mode 100644 index 000000000..a07a53f29 --- /dev/null +++ b/assets/sass/_theme/design-system/offcanvas.sass @@ -0,0 +1,35 @@ +@mixin offcanvas + background: var(--color-background-alt) + position: fixed + top: 0 + right: 0 + bottom: 0 + margin-top: 0 + z-index: $zindex-offcanvas + width: calc(#{columns(4)} + var(--grid-gutter) * 2) + transform: translateX(100%) + transition: transform $offcanvas-duration ease-in-out + &.is-opened + transform: translateX(0) + &[aria-hidden="true"] + display: none + .offcanvas-content + display: flex + flex-direction: column + height: 100% + padding: var(--grid-gutter) + .offcanvas-title + border-bottom: var(--border-width) solid var(--color-border) + display: flex + justify-content: space-between + align-items: center + padding: $spacing-1 var(--grid-gutter) + @include meta + button.close + @include button-reset + @include icon-block(close-line, after) + margin-right: -14px + font-size: 1.5em + align-items: center + @include media-breakpoint-down(desktop) + width: calc(100% - var(--grid-gutter)) \ No newline at end of file diff --git a/assets/sass/_theme/design-system/table_of_contents.sass b/assets/sass/_theme/design-system/table_of_contents.sass index 2a3d8e6a0..3dd6d9976 100644 --- a/assets/sass/_theme/design-system/table_of_contents.sass +++ b/assets/sass/_theme/design-system/table_of_contents.sass @@ -1,20 +1,6 @@ @mixin offcanvas-toc + @include offcanvas background: $toc-background-color - position: fixed - top: 0 - right: 0 - bottom: 0 - margin-top: 0 - z-index: $zindex-toc-offcanvas - width: calc(#{columns(4)} + var(--grid-gutter) * 2) - transform: translateX(100%) - transition: transform $toc-offcanvas-duration ease-in-out - @include media-breakpoint-down(desktop) - width: calc(100% - var(--grid-gutter)) - &.is-opened - transform: translateX(0) - &[aria-hidden="true"] - display: none .toc-content display: flex flex-direction: column diff --git a/assets/sass/_theme/design-system/taxonomies.sass b/assets/sass/_theme/design-system/taxonomies.sass index 4287c980d..03833fed0 100644 --- a/assets/sass/_theme/design-system/taxonomies.sass +++ b/assets/sass/_theme/design-system/taxonomies.sass @@ -25,7 +25,7 @@ > p @include meta .dropdown - @include dropdown(".taxonomy-categories") + @include dropdown(".taxonomy-categories", true) .taxonomy-categories ul @include list-reset diff --git a/assets/sass/_theme/hugo-osuny.sass b/assets/sass/_theme/hugo-osuny.sass index 07862377e..3310eb970 100644 --- a/assets/sass/_theme/hugo-osuny.sass +++ b/assets/sass/_theme/hugo-osuny.sass @@ -37,6 +37,7 @@ @import design-system/logo @import design-system/nav @import design-system/notes +@import design-system/offcanvas @import design-system/pagination @import design-system/print @import design-system/search @@ -89,6 +90,7 @@ @import sections/categories @import sections/diplomas @import sections/events/calendar +@import sections/events/filters @import sections/events/item @import sections/events/layouts @import sections/events/section diff --git a/assets/sass/_theme/sections/events/calendar.sass b/assets/sass/_theme/sections/events/calendar.sass index 139b6d46b..0afd0ff3a 100644 --- a/assets/sass/_theme/sections/events/calendar.sass +++ b/assets/sass/_theme/sections/events/calendar.sass @@ -1,53 +1,51 @@ -.events-calendar - .calendar-month - caption-side: top - display: inline-table - height: max-content - caption - text-align: center - h2 - @include h6 - a - color: var(--color-accent) - text-decoration: none - th, - td - height: pxToRem(50) +.calendar-month + caption-side: top + display: inline-table + height: max-content + caption + text-align: center + h2 + @include h6 + a + color: var(--color-accent) + text-decoration: none + th, + td + height: pxToRem(50) + padding: 0 + text-align: center + vertical-align: middle + width: calc(100% / 7) + thead + @include meta + th + font-weight: normal + tbody + @include meta + --btn-min-width: 0 + --btn-border-radius: 100% + --btn-border: none + --btn-color: var(--color-background) + --btn-background: var(--color-accent) + --btn-hover-background: var(--color-text) + --btn-hover-border: none + --btn-hover-color: var(--color-background) + tr + td + border: none + aspect-ratio: 1 + a, span + aspect-ratio: 1 + height: space(9) + line-height: space(9) padding: 0 + display: inline-block text-align: center - vertical-align: middle - width: calc(100% / 7) - thead - @include meta - th - font-weight: normal - tbody - @include meta - --btn-min-width: 0 - --btn-border-radius: 100% - --btn-border: none - --btn-color: var(--color-background) - --btn-background: var(--color-accent) - --btn-hover-background: var(--color-text) - --btn-hover-border: none - --btn-hover-color: var(--color-background) - tr - td - border: none - aspect-ratio: 1 - a, span - aspect-ratio: 1 - height: space(9) - line-height: space(9) - padding: 0 - display: inline-block - text-align: center - a - @extend .btn + a + @extend .btn @include media-breakpoint-down(md) - .calendar-month - + .calendar-month - margin-top: $spacing-4 + + .calendar-month + margin-top: $spacing-4 th font-size: 0 &:first-letter diff --git a/assets/sass/_theme/sections/events/filters.sass b/assets/sass/_theme/sections/events/filters.sass new file mode 100644 index 000000000..55f0684d7 --- /dev/null +++ b/assets/sass/_theme/sections/events/filters.sass @@ -0,0 +1,95 @@ +.agenda-filters + > .container + display: flex + align-items: center + justify-content: end + position: relative + @include media-breakpoint-up(desktop) + gap: $spacing-3 + @include media-breakpoint-down(desktop) + .dropdown-dates, + .filter-taxonomies + flex: 50% + .dropdown-dates + > button + width: 100% + text-align: left + .filter-taxonomies + .offcanvas-button + @include button-reset + text-align: right + color: inherit + padding: $spacing-2 + margin: -$spacing-2 + margin-bottom: 0 + width: 100% + line-height: 1 + margin-left: auto + @include icon(arrow-down-s-line, after) + margin-left: 5px + .offcanvas-content + text-align: left + .dates-filters + .slider + @include container + overflow: hidden + position: relative + .slider-arrows + justify-content: space-between + left: var(--grid-gutter) + margin: auto + position: absolute + right: var(--grid-gutter) + top: -$spacing-2 + pointer-events: none + .slider-arrow + pointer-events: auto + .slider-arrow-previous + margin-left: 0 + &__months + display: flex + gap: var(--grid-gutter) + width: 100% + @include media-breakpoint-down(desktop) + .calendar-month + + .calendar-month + margin-top: 0 + @include media-breakpoint-up(desktop) + .calendar-month + width: columns(4) + + .dropdown-dates + @include dropdown('.dates-filters', $full: true) + position: static + .filter-taxonomies + .offcanvas-button + @include button-reset + @include meta + .taxonomies-list + margin-top: 0 + margin-bottom: 0 + @include media-breakpoint-up(desktop) + .offcanvas-title, + .offcanvas-button, + .close + display: none + @include media-breakpoint-down(desktop) + .offcanvas + @include offcanvas + .dropdown + &:first-child + margin-top: 0 + > button + @include h4 + .extendable + position: relative + inset: auto + padding-left: 0 + padding-right: 0 + padding-top: $spacing-1 + ul + grid-gap: $spacing-2 + li > a + padding-left: 0 + + diff --git a/assets/sass/_theme/utils/grid.sass b/assets/sass/_theme/utils/grid.sass index b7d5d2c1a..939678c50 100644 --- a/assets/sass/_theme/utils/grid.sass +++ b/assets/sass/_theme/utils/grid.sass @@ -35,5 +35,9 @@ @return #{$width} // Cette fonction calcule l'espace disponible entre la grille et le bord de l'écran -@function grid-external-space - @return Max(var(--grid-gutter), calc((100vw - var(--grid-width)) / 2 + var(--grid-gutter))) +@function grid-external-space($negative: false) + $space: Max(var(--grid-gutter), calc((100vw - var(--grid-width)) / 2 + var(--grid-gutter))) + @if $negative + @return calc(#{$space} * -1) + @else + @return #{$space} \ No newline at end of file diff --git a/assets/sass/_theme/utils/sidebar.sass b/assets/sass/_theme/utils/sidebar.sass index 0e7f9ffc2..90e28f528 100644 --- a/assets/sass/_theme/utils/sidebar.sass +++ b/assets/sass/_theme/utils/sidebar.sass @@ -6,7 +6,7 @@ @mixin in-page-without-sidebar @include media-breakpoint-up(desktop) main > .blocks &, - body.full-width &, + body.full-width & @content // Use this mixin to override with-aside or without-aside rules diff --git a/hugo.yaml b/hugo.yaml index 1d848ec0e..00d2a38da 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -135,6 +135,8 @@ params: time_format: false # You can add time format to override the time from static (from.hour & to.hour) # sitemap: # ignore_children: true + filters: + number_of_months: 6 index: archives: true years: true diff --git a/i18n/en.yml b/i18n/en.yml index 8b7b8471a..4b68b0678 100644 --- a/i18n/en.yml +++ b/i18n/en.yml @@ -238,6 +238,14 @@ commons: megabytes: Megabytes kilobytes: Kilobytes bytes: bytes +agenda: + access: + partical_informations: Practical information + filters: + dates: + aria_label: Display the calendar + title: Dates + taxonomies: Filter diplomas: type: Diploma kind count: @@ -251,8 +259,6 @@ errors: We suggest you return to the home page of our site.
Thank you for your understanding. events: - access: - partical_informations: Informations archives: by_year: Archives by year latest: Archives diff --git a/i18n/fr.yml b/i18n/fr.yml index f32b46559..1cab8c3e3 100644 --- a/i18n/fr.yml +++ b/i18n/fr.yml @@ -246,6 +246,14 @@ commons: megabytes: Mégaoctets kilobytes: Kilooctets bytes: octets +agenda: + access: + partical_informations: Informations pratiques + filters: + dates: + aria_label: Afficher le calendrier des dates + title: Dates + taxonomies: Filtrer diplomas: type: Type de diplôme count: @@ -259,8 +267,6 @@ errors: Nous vous proposons de retourner à la page d'accueil de notre site.
Merci de votre compréhension. events: - access: - partical_informations: Informations pratiques archives: by_year: Agenda par années latest: Archives diff --git a/i18n/pt.yml b/i18n/pt.yml index 3087381bc..56ae07f61 100644 --- a/i18n/pt.yml +++ b/i18n/pt.yml @@ -212,6 +212,14 @@ commons: megabytes: Megabytes kilobytes: Kilobytes bytes: bytes +agenda: + access: + partical_informations: Informações práticas + filters: + dates: + aria_label: Visualizar o calendário de datas + title: Datas + taxonomies: Filtrar diplomas: type: Tipo de diploma errors: diff --git a/layouts/partials/GetMonthFromNow b/layouts/partials/GetMonthFromNow new file mode 100644 index 000000000..07268bb02 --- /dev/null +++ b/layouts/partials/GetMonthFromNow @@ -0,0 +1,13 @@ +{{ $offset := . }} + +{{ $now := time.Now }} + +{{ with $offset }} + {{ $now = $now.AddDate 0 . 0 }} +{{ end }} + +{{ $now = $now | time.Format "2006/01"}} + +{{ $path := printf "events/%s" $now }} + +{{ return site.GetPage $path }} diff --git a/layouts/partials/commons/agenda/practicals.html b/layouts/partials/commons/agenda/practicals.html index 2ab6b1c39..9a1058359 100644 --- a/layouts/partials/commons/agenda/practicals.html +++ b/layouts/partials/commons/agenda/practicals.html @@ -1,5 +1,5 @@
-

{{ i18n (printf "events.access.partical_informations") }}

+

{{ i18n (printf "agenda.access.partical_informations") }}

{{ safeHTML .Params.text }}
diff --git a/layouts/partials/events/section-year.html b/layouts/partials/events/section-year.html index 96d9d2c2d..e9141c4c7 100644 --- a/layouts/partials/events/section-year.html +++ b/layouts/partials/events/section-year.html @@ -7,7 +7,7 @@ {{ partial "events/section/calendar.html" . }} - {{ if or .Params.previous_year .Params.next_year}} + {{ if or .Params.previous_year .Params.next_year }}
{{ with .Params.previous_year }} {{ .slug }} diff --git a/layouts/partials/events/section.html b/layouts/partials/events/section.html index bdca7ac69..9e6af3d3c 100644 --- a/layouts/partials/events/section.html +++ b/layouts/partials/events/section.html @@ -10,11 +10,14 @@ {{ partial "events/section/exhibitions.html" $exhibitions }} {{ end }} - {{ if .Params.section_taxonomies }} + + {{ partial "events/section/filters.html" . }} + + {{/* {{ if .Params.section_taxonomies }}
{{ partial "taxonomies/section-list.html" . }}
- {{ end }} + {{ end }} */}} {{ partial "contents/list.html" . }} diff --git a/layouts/partials/events/section/filters.html b/layouts/partials/events/section/filters.html new file mode 100644 index 000000000..06dec7581 --- /dev/null +++ b/layouts/partials/events/section/filters.html @@ -0,0 +1,6 @@ +
+
+ {{ partial "events/section/filters/dates.html" . }} + {{ partial "events/section/filters/taxonomies.html" . }} +
+
\ No newline at end of file diff --git a/layouts/partials/events/section/filters/dates.html b/layouts/partials/events/section/filters/dates.html new file mode 100644 index 000000000..e65e3c9bc --- /dev/null +++ b/layouts/partials/events/section/filters/dates.html @@ -0,0 +1,20 @@ + \ No newline at end of file diff --git a/layouts/partials/events/section/filters/taxonomies.html b/layouts/partials/events/section/filters/taxonomies.html new file mode 100644 index 000000000..4352d8de3 --- /dev/null +++ b/layouts/partials/events/section/filters/taxonomies.html @@ -0,0 +1,18 @@ +{{ if .Params.section_taxonomies }} +
+ +
+
+ {{ i18n "agenda.filters.taxonomies"}} + +
+
+ {{ partial "taxonomies/section-list.html" . }} +
+
+
+{{ end }} \ No newline at end of file From 5afb5dafcdb3c1be0002386fb883cad3dab4c28e Mon Sep 17 00:00:00 2001 From: Alexis BENOIT Date: Fri, 6 Jun 2025 11:20:18 +0200 Subject: [PATCH 4/8] [a11y] rendre focusable les 3 mois du slider de filtres des dates (#1106) --- assets/js/theme/design-system/sliders/Slider.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/assets/js/theme/design-system/sliders/Slider.js b/assets/js/theme/design-system/sliders/Slider.js index f4290af27..08d2571bf 100644 --- a/assets/js/theme/design-system/sliders/Slider.js +++ b/assets/js/theme/design-system/sliders/Slider.js @@ -177,12 +177,13 @@ osuny.Slider.prototype.update = function () { osuny.Slider.prototype.updateSlide = function (slide, index) { var classes = osuny.Slider.classes, - isCurrent = index === this.state.index; + isCurrent = index === this.state.index, + isVisible = index >= this.state.index && index < this.state.index + this.state.slideBy; slide.classList.remove(classes.isCurrent, classes.isNext, classes.isPrevious); slide.removeAttribute('tabindex'); - setAriaVisibility(slide, isCurrent); + setAriaVisibility(slide, isVisible); if (isCurrent) { slide.classList.add(classes.isCurrent); From a66448f599637cc39a7e4cac2adb1c4cc1678a4d Mon Sep 17 00:00:00 2001 From: Alexis BENOIT Date: Mon, 9 Jun 2025 09:28:49 +0200 Subject: [PATCH 5/8] Code climate `extendables.js` (#1109) --- assets/js/theme/design-system/extendables.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/assets/js/theme/design-system/extendables.js b/assets/js/theme/design-system/extendables.js index 8d805e660..0d33367f3 100644 --- a/assets/js/theme/design-system/extendables.js +++ b/assets/js/theme/design-system/extendables.js @@ -68,11 +68,7 @@ osuny.Extendable.prototype.toggle = function (opened, fromOutside) { this.closeSiblings(); } - this.buttons.forEach(function (button) { - if (button.getAttribute('aria-expanded')) { - button.setAttribute('aria-expanded', this.state.opened); - } - }.bind(this)); + this.setButtonAriaExpanded(); if (!this.state.opened && this.state.openedByButton && !fromOutside) { this.state.openedByButton.focus(); @@ -88,6 +84,14 @@ osuny.Extendable.prototype.toggle = function (opened, fromOutside) { } }; +osuny.Extendable.prototype.setButtonAriaExpanded = function () { + this.buttons.forEach(function (button) { + if (button.getAttribute('aria-expanded')) { + button.setAttribute('aria-expanded', this.state.opened); + } + }.bind(this)); +}; + osuny.Extendable.prototype.focusFirstElement = function () { var focusableElements = getFocusableElements(this.element); if (focusableElements.length > 0) { From bb25825f39325a481c4ac831ae0b9de43ba18b8f Mon Sep 17 00:00:00 2001 From: Alexis BENOIT Date: Tue, 10 Jun 2025 18:23:22 +0200 Subject: [PATCH 6/8] Option d'affichage des taxonomies dans les index des sections (#1113) --- hugo.yaml | 14 ++++++------- layouts/partials/taxonomies/section-list.html | 20 +++++++++---------- layouts/partials/taxonomies/single-list.html | 2 +- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/hugo.yaml b/hugo.yaml index 00d2a38da..aef84ef44 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -111,6 +111,7 @@ params: default: index: taxonomies: + display: true layout: dropdown # dropdown | inline show_name: true single: @@ -170,7 +171,6 @@ params: subtitle: true summary: true per_page: 10 - taxonomies: true truncate_description: 200 # Set to 0 to disable truncate single: taxonomies: @@ -219,7 +219,7 @@ params: subtitle: true summary: true per_page: 10 - taxonomies: true + truncate_description: 200 # Set to 0 to disable truncate single: calendar_links: false @@ -254,7 +254,7 @@ params: link: true logo: true summary: false - taxonomies: true + single: backlinks: false pages: @@ -304,7 +304,7 @@ params: summary: true image: true link: true - taxonomies: true + single: backlinks: false events: @@ -332,7 +332,7 @@ params: summary: true subtitle: true truncate_description: 200 # Set to 0 to disable truncate - taxonomies: true + single: author_signature: false # share_links: # Optional @@ -358,7 +358,7 @@ params: image: false logo: false summary: false - taxonomies: false + truncate_description: 200 # Set to 0 to disable truncate single: options: @@ -394,7 +394,7 @@ params: subtitle: true summary: true year: false - taxonomies: true + truncate_description: 200 # Set to 0 to disable truncate # share_links: # Optional # enabled: true diff --git a/layouts/partials/taxonomies/section-list.html b/layouts/partials/taxonomies/section-list.html index 68cb285d0..d1815f288 100644 --- a/layouts/partials/taxonomies/section-list.html +++ b/layouts/partials/taxonomies/section-list.html @@ -1,16 +1,16 @@ -{{ $kind := .Type }} -{{ $categories_kind := printf "%s_categories" $kind }} -{{ $categories := where site.Pages "Section" $categories_kind }} +{{ $type := .Type }} {{ $taxonomies := .Params.section_taxonomies }} -{{ $option := index site.Params $kind }} -{{ $layout := site.Params.default.index.taxonomies.layout }} - -{{ with $option.index.taxonomies }} -
+{{ $param := (printf "%s.index.taxonomies" $type) }} +{{ $options := partial "GetSiteParamWithDefault" (dict + "param" $param + "default" "default.index.taxonomies" +) }} +{{ if $options.display }} +
{{ if $taxonomies }} {{- range $taxonomies -}} {{ if .categories }} - {{ if eq $layout "dropdown" }} + {{ if eq $options.layout "dropdown" }} - {{ if eq $layout "dropdown" }} + {{ if eq $options.layout "dropdown" }}
{{ end }} {{- end -}} diff --git a/layouts/partials/taxonomies/single-list.html b/layouts/partials/taxonomies/single-list.html index dcc6e767d..a77ea8bca 100644 --- a/layouts/partials/taxonomies/single-list.html +++ b/layouts/partials/taxonomies/single-list.html @@ -1,7 +1,7 @@ {{ $context := . }} {{ $type := .Type }} {{ $taxonomies := .Params.taxonomies }} -{{ $param := (printf "%s.single.taxonomies.show_name" $type) }} +{{ $param := printf "%s.single.taxonomies.show_name" $type }} {{ $display_taxonomies := partial "GetSiteParamWithDefault" (dict "param" $param "default" "default.single.taxonomies.show_name" From 11bc7a91920539b9d8c7ec18be3690681d7e855b Mon Sep 17 00:00:00 2001 From: Alexis BENOIT Date: Thu, 12 Jun 2025 16:15:34 +0200 Subject: [PATCH 7/8] =?UTF-8?q?Remixicon=20-=20fl=C3=A8che=20haut=20et=20b?= =?UTF-8?q?as=20(#1114)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/sass/_theme/configuration/icons.sass | 2 ++ .../fonts/remixicon/collection.remixicon | 2 +- static/assets/fonts/remixicon/remixicon.eot | Bin 10004 -> 10196 bytes static/assets/fonts/remixicon/remixicon.svg | 6 +++++- static/assets/fonts/remixicon/remixicon.ttf | Bin 9832 -> 10024 bytes static/assets/fonts/remixicon/remixicon.woff | Bin 5844 -> 5928 bytes static/assets/fonts/remixicon/remixicon.woff2 | Bin 4968 -> 4960 bytes 7 files changed, 8 insertions(+), 2 deletions(-) diff --git a/assets/sass/_theme/configuration/icons.sass b/assets/sass/_theme/configuration/icons.sass index deafd7edb..cd63d7556 100644 --- a/assets/sass/_theme/configuration/icons.sass +++ b/assets/sass/_theme/configuration/icons.sass @@ -50,6 +50,8 @@ $icons: map-merge($icons, ("archive-line": "\ea48")) $icons: map-merge($icons, ("calendar-line": "\eb27")) $icons: map-merge($icons, ("calendar-2-line": "\eb21")) $icons: map-merge($icons, ("loop-right-line": "\f33f")) +$icons: map-merge($icons, ("arrow-down-line": "\ea4c")) +$icons: map-merge($icons, ("arrow-up-line": "\ea76")) // Icons $icon-burger-margin-right: -12px diff --git a/static/assets/fonts/remixicon/collection.remixicon b/static/assets/fonts/remixicon/collection.remixicon index 533d3ab04..0910ea0fc 100644 --- a/static/assets/fonts/remixicon/collection.remixicon +++ b/static/assets/fonts/remixicon/collection.remixicon @@ -1 +1 @@ -arrow-right-line,arrow-left-line,contract-right-line,contract-left-line,arrow-up-s-line,arrow-right-s-line,arrow-down-s-line,arrow-left-s-line,arrow-right-s-fill,arrow-left-s-fill,skip-right-fill,skip-left-fill,menu-line,close-line,check-line,file-copy-line,download-2-line,download-line,eye-line,global-line,search-line,pause-line,play-fill,links-line,link-m,mastodon-fill,twitter-x-line,tiktok-fill,github-fill,at-line,external-link-line,menu-3-line,share-fill,vimeo-fill,twitter-fill,facebook-fill,linkedin-fill,instagram-fill,youtube-fill,movie-fill,telegram-fill,rss-fill,whatsapp-fill,corner-down-right-line,mail-fill,text,archive-line,calendar-line,calendar-2-line,loop-right-line \ No newline at end of file +arrow-right-line,arrow-left-line,contract-right-line,contract-left-line,arrow-up-s-line,arrow-right-s-line,arrow-down-s-line,arrow-left-s-line,arrow-right-s-fill,arrow-left-s-fill,skip-right-fill,skip-left-fill,menu-line,close-line,check-line,file-copy-line,download-2-line,download-line,eye-line,global-line,search-line,pause-line,play-fill,links-line,link-m,mastodon-fill,twitter-x-line,tiktok-fill,github-fill,at-line,external-link-line,menu-3-line,share-fill,vimeo-fill,twitter-fill,facebook-fill,linkedin-fill,instagram-fill,youtube-fill,movie-fill,telegram-fill,rss-fill,whatsapp-fill,corner-down-right-line,mail-fill,text,archive-line,calendar-line,calendar-2-line,loop-right-line,arrow-down-line,arrow-up-line \ No newline at end of file diff --git a/static/assets/fonts/remixicon/remixicon.eot b/static/assets/fonts/remixicon/remixicon.eot index 2a038d2030419b919b205ea24bde66fe20fadc56..3b810c8d41ab9fc741cc4102a911a0c22969547b 100644 GIT binary patch delta 679 zcmcJM&1(};6vfYdGf5NEP=br7h(snOB5g%7Nwt*HmFc3!jrFS*J7yAN$j7v%UvyCs z3NDHzj7w3WE=3}-nr<_B`va zaW6BHd4AwqQBBtCT+w`~I)Av!3bf6)MzNAHp8R-PXMdHsSTg1Xw`D#sH8Ejxq`rKNg!KgQt$P=$}}CWhfbRF23|nU<5%lw~<C)g@xj(aNFlUlwoyadbfNtUjLG4=;3{^9(LJeV%bT``G<*zH~s2 zw2Li}qwPZ6e(AmGpJn2L?)>!L7i!>h;G1*Ze>L)FH7%!_`@(SB|M5^r3sKBZ9b(OF{z}m@H;S3VSHfuSGjW9THgZ+rGda+5 kDkUiCOh(@et;?96uFUnCmAP_n@nJa|Z1arOBKI};3(H!qYXATM delta 498 zcmcIg%Su8~6kX@u>!YF~GOUoer5ToBCOApLK?8#xP*8?MUSD0pcR~hHACMGsqxysf zA=V|D2+<@c8bu!vJtlW-joT)DLT9tiUhC|=59^$lh2wd>X#|k%WxZFZ)NY5${-gb8 zfRz9&M^jSPHTS&-a8*EexRKmRoSoj~0pmGf4$5&UHkJ?NsP~oNmFd7(5+cNF1e=^H z6zeu(U>~$SB{NZJ+pJX%wj5OIl1zsko)R|I6 zBt5Cf%sT7=qatDGwpLm1^nIaCAbY_3+riXdR;sLzd6Y+%V-Kp26PXg@yWRHRQE(#o zU*@FTN*CK9usV%~;fD^Q7SQIkuolzO$^{=XG \ No newline at end of file + horiz-adv-x="1250" d="M625 820C762.43 820 883.745 750.687 955.78 645H825V545H1125V845H1025V720.0319999999999C933.81 841.417 788.62 920 625 920C348.8575 920 125 696.1424999999999 125 420H225C225 640.914 404.086 820 625 820zM1025 420C1025 199.085 845.915 20 625 20C487.572 20 366.254 89.3149999999999 294.2215 195H425V295H125V-5H225V119.97C316.1905 -1.415 461.3819999999999 -80 625 -80C901.14 -80 1125 143.86 1125 420H1025z" /> \ No newline at end of file diff --git a/static/assets/fonts/remixicon/remixicon.ttf b/static/assets/fonts/remixicon/remixicon.ttf index 4b5f8d359d7b099fd674822407dbe26197867468..c6ec2b883de28f5f8ac385fc42954e97d5644011 100644 GIT binary patch delta 679 zcmcJL&1(};6vfYdGifJHV+k%IA|)~vL0UvINwtW&YPyJ7Rz*a|OkygNWLncNx~LQi zE=p~kt)NgBSxI#irDP!pQp8ri*gFX-{sF$nop*kB?z!)ynXTtm^!Y7- zmH>?A%ck?R`Qa5HUIU?xTlQ@6bm9J2K>G~D8>ND2^)C;uaxF8`B~EBds>Qm&(N`+h zX7-w_K->KJXjk**!k2sN?5{D~Wpl=%VX&q{%!!IwE*yy--bu552q-6<>Ydv7lQTPj zzR7%TwV|I+fr5s>xwo4e*L%+XKt$z^z_v4+`@8x0lB0y|+RM zdLT4+T^vjewf;aDP+F>=*Dl^}2&&N7W8nfq=#wKdD|7OOv}8q2xueSE1AkI^X}3}@ z-8ZDp6I*`IB5wbe37kX{oqV}2z9J!v4j6pQUYzn4)T?y#E}uLY1|Ub;!4}ADJCJn0 zg)W7sm^ff~!yPw;8hID_SV%hUkP=Wqb> zGjbCv3K(4&N`UebK)ym=Vs5GouhdgBAREYM)+)#^F4?+WM3aF*SqI3sp14QZ-k5lOKw!kc@X7;%8T2Phv4wB0Ws7Ip{D31;eDhodA7)15$*+{tHixKeWMT#? F2LOF7aEJf^ diff --git a/static/assets/fonts/remixicon/remixicon.woff b/static/assets/fonts/remixicon/remixicon.woff index 796eda69d8d6f056ecc5ed0a39544bff764cf063..cc3a1a4d5e2eb4cac85ea0cb8a3c07a432a99b44 100644 GIT binary patch delta 5126 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 delta 5056 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 diff --git a/static/assets/fonts/remixicon/remixicon.woff2 b/static/assets/fonts/remixicon/remixicon.woff2 index eb7c9ce8b2a445e83175060e3d367c6381830b50..92ed728d612e260e9fffe748fb50fc2d72b7ddd7 100644 GIT binary patch literal 4960 zcmV-m6QAsNPew8T0RR91025#U3jhEB04FE_022`a0RR9100000000000000000000 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 Date: Fri, 13 Jun 2025 18:18:38 +0200 Subject: [PATCH 8/8] add site option to force more compenent in item --- hugo.yaml | 8 +++++--- layouts/partials/GetTypeParamWithDefault | 6 ++++++ layouts/partials/events/partials/event.html | 6 +++--- layouts/partials/events/partials/event/more.html | 1 + .../partials/layouts/alternate/alternate.html | 8 ++++++-- .../pages/partials/layouts/cards/cards.html | 2 +- .../pages/partials/layouts/grid/grid.html | 16 +++++++++++++--- .../pages/partials/layouts/large/large.html | 2 +- layouts/partials/pages/partials/page/more.html | 1 + 9 files changed, 37 insertions(+), 13 deletions(-) create mode 100644 layouts/partials/GetTypeParamWithDefault create mode 100644 layouts/partials/events/partials/event/more.html create mode 100644 layouts/partials/pages/partials/page/more.html diff --git a/hugo.yaml b/hugo.yaml index aef84ef44..08bf78810 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -120,6 +120,11 @@ params: show_name: true sitemap: ignore_children: false + layouts: + alternate: + more: true + grid: + more: false categories: index: layout: grid # alternate | cards | grid | large | list @@ -416,9 +421,6 @@ params: progression: true key_figures: animated: true - pages: - alternate: - more: true posts: slider: arrows: true diff --git a/layouts/partials/GetTypeParamWithDefault b/layouts/partials/GetTypeParamWithDefault new file mode 100644 index 000000000..73d09a75a --- /dev/null +++ b/layouts/partials/GetTypeParamWithDefault @@ -0,0 +1,6 @@ +{{ $param := partial "GetSiteParamWithDefault" (dict + "param" (printf "%s.%s" .type .param) + "default" (printf "default.%s" .param) + ) }} + +{{ return $param }} \ No newline at end of file diff --git a/layouts/partials/events/partials/event.html b/layouts/partials/events/partials/event.html index e2998bb84..1506c187a 100644 --- a/layouts/partials/events/partials/event.html +++ b/layouts/partials/events/partials/event.html @@ -81,7 +81,7 @@ "kind" "events" )}} {{ if eq $layout "large" }} - + {{ partial "events/partials/event/more.html" . }} {{ end }}
{{ end }} @@ -93,8 +93,8 @@ )}} {{- end -}} - {{ if $with_more }} - {{ partial "commons/item/more.html" . }} + {{ if and $with_more (ne $layout "large") }} + {{ partial "events/partials/event/more.html" . }} {{- end -}}
diff --git a/layouts/partials/events/partials/event/more.html b/layouts/partials/events/partials/event/more.html new file mode 100644 index 000000000..42f40badc --- /dev/null +++ b/layouts/partials/events/partials/event/more.html @@ -0,0 +1 @@ +{{ partial "commons/item/more.html" . }} diff --git a/layouts/partials/pages/partials/layouts/alternate/alternate.html b/layouts/partials/pages/partials/layouts/alternate/alternate.html index 29f46ca44..2d06ec39d 100644 --- a/layouts/partials/pages/partials/layouts/alternate/alternate.html +++ b/layouts/partials/pages/partials/layouts/alternate/alternate.html @@ -4,6 +4,10 @@ "level" $heading_level "attributes" "class='page-title'" )}} +{{ $with_more := partial "GetTypeParamWithDefault" (dict + "param" "layouts.alternate.more" + "type" "pages" + ) }}
{{ range .pages }} @@ -37,8 +41,8 @@ )}} {{ end }} - {{ if site.Params.blocks.pages.alternate.more }} - + {{ if $with_more }} + {{ partial "pages/partials/page/more.html" . }} {{ end }} {{ if $options.image }} diff --git a/layouts/partials/pages/partials/layouts/cards/cards.html b/layouts/partials/pages/partials/layouts/cards/cards.html index c62a27681..21104697c 100644 --- a/layouts/partials/pages/partials/layouts/cards/cards.html +++ b/layouts/partials/pages/partials/layouts/cards/cards.html @@ -32,7 +32,7 @@ )}} {{ end }} - + {{ partial "pages/partials/page/more.html" . }} {{ if $options.image }} {{- partial "pages/partials/page/page-media.html" . -}} diff --git a/layouts/partials/pages/partials/layouts/grid/grid.html b/layouts/partials/pages/partials/layouts/grid/grid.html index 1e8b8ff13..5b842b4e0 100644 --- a/layouts/partials/pages/partials/layouts/grid/grid.html +++ b/layouts/partials/pages/partials/layouts/grid/grid.html @@ -1,9 +1,14 @@ {{ $options := .options }} {{ $heading_level := .heading_level | default 3 }} {{ $heading_tag := partial "GetHeadingTag" (dict - "level" $heading_level - "attributes" "class='page-title'" -)}} + "level" $heading_level + "attributes" "class='page-title'" + )}} +{{ $with_more := partial "GetTypeParamWithDefault" (dict + "param" "layouts.grid.more" + "type" "pages" + ) }} + {{ with .pages }}
{{ range . }} @@ -39,6 +44,11 @@ "kind" "page" )}} {{ end }} + + {{ if $with_more }} + {{ partial "pages/partials/page/more.html" . }} + {{ end }} + {{ if $options.image }} {{- partial "pages/partials/page/page-media.html" . -}} {{ end }} diff --git a/layouts/partials/pages/partials/layouts/large/large.html b/layouts/partials/pages/partials/layouts/large/large.html index 08bb34740..e6f2167b0 100644 --- a/layouts/partials/pages/partials/layouts/large/large.html +++ b/layouts/partials/pages/partials/layouts/large/large.html @@ -33,7 +33,7 @@ )}} {{ end }} - + {{ partial "pages/partials/page/more.html" . }}
{{- if and $options.image .Params.image -}} diff --git a/layouts/partials/pages/partials/page/more.html b/layouts/partials/pages/partials/page/more.html new file mode 100644 index 000000000..42f40badc --- /dev/null +++ b/layouts/partials/pages/partials/page/more.html @@ -0,0 +1 @@ +{{ partial "commons/item/more.html" . }}