Skip to content

Commit

Permalink
feat: implementation footer_dsfr (#142)
Browse files Browse the repository at this point in the history
* feat: implementation footer_dsfr

tags: docs, test

pourquoi:
- avoir un footer conforme au dsfr

quoi:
- ajout de fonction footer_dsfr
- possibilite d'ajouter des url supplementaire a celles par defaut
- ajout du pied de page dans l'app shiny demo

Issue #141


---------

Co-authored-by: Juliette Engelaere-Lefebvre <[email protected]>
  • Loading branch information
MurielleDelmotte and jengelaere authored Aug 23, 2023
1 parent fe7f7f9 commit d3ffe50
Show file tree
Hide file tree
Showing 26 changed files with 1,214 additions and 18 deletions.
7 changes: 6 additions & 1 deletion NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,15 @@ export(checkboxGroupInput_dsfr)
export(checkboxInput_dsfr)
export(column_dsfr)
export(convert_to_dsfr)
export(fileInput_dsfr)
export(dateRangeInput_dsfr)
export(fileInput_dsfr)
export(fluidPage_dsfr)
export(fluidRow_dsfr)
export(footer_bottom_dsfr)
export(footer_dsfr)
export(footer_extra_url_body_dsfr)
export(footer_extra_url_bottom_dsfr)
export(footer_li_dsfr)
export(get_dsfr_version)
export(header_dsfr)
export(modalDialog_dsfr)
Expand Down
5 changes: 5 additions & 0 deletions R/app_ui.R
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ app_ui <- function(request) {
nom_site_service = "Bienvenue sur l\'application de d\u00e9monstration de {shinygouv}",
baseline = "https://github.com/spyrales/shinygouv"
),
footer = footer_dsfr(
intitule = span("D\u00e9mo", br(), "de", br(), "{shinygouv}"),
description = "Une application de d\u00e9monstration de {shinygouv}",
accessibilite = "non"
),
navbarPanel_dsfr(
title = "inputs d\'ui",
mod_input_ui_ui("input_ui_1")
Expand Down
2 changes: 1 addition & 1 deletion R/column_dsfr.R
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# WARNING - Generated by {fusen} from dev/flat_composants/flat_fluidpage.Rmd: do not edit by hand
# WARNING - Generated by {fusen} from /dev/flat_composants/flat_fluidpage.Rmd: do not edit by hand

#' column_dsfr
#'
Expand Down
4 changes: 2 additions & 2 deletions R/fluidpage_dsfr.R
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# WARNING - Generated by {fusen} from dev/flat_composants/flat_fluidpage.Rmd: do not edit by hand
# WARNING - Generated by {fusen} from /dev/flat_composants/flat_fluidpage.Rmd: do not edit by hand

#' fluidPage_dsfr
#'
#' @param ... element a inclure dans la page
#' @param header l entete de la page (voir `header_dsfr()`)
#' @param footer contenu du pied de page
#' @param footer contenu du pied de page (voir `footer_dsfr()`)
#' @param theme pas implemente
#' @param lang pas implemente
#' @param title titre de la page
Expand Down
2 changes: 1 addition & 1 deletion R/fluidpage_dsfr_template.R
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# WARNING - Generated by {fusen} from dev/flat_composants/flat_fluidpage.Rmd: do not edit by hand
# WARNING - Generated by {fusen} from /dev/flat_composants/flat_fluidpage.Rmd: do not edit by hand

#' fluidPage_dsfr_template
#' @param header entete de la page
Expand Down
2 changes: 1 addition & 1 deletion R/fluidrow_dsfr.R
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# WARNING - Generated by {fusen} from dev/flat_composants/flat_fluidpage.Rmd: do not edit by hand
# WARNING - Generated by {fusen} from /dev/flat_composants/flat_fluidpage.Rmd: do not edit by hand

#' fluidRow_dsfr
#'
Expand Down
62 changes: 62 additions & 0 deletions R/footer_bottom_dsfr.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# WARNING - Generated by {fusen} from /dev/flat_composants/flat_footer.Rmd: do not edit by hand

#' footer_bottom_dsfr
#'
#' Il se compose des éléments suivants:
#'- la liste de liens liés aux obligations légales. Cette liste doit être définie en fonction du site, toutefois les liens & contenus suivants sont obligatoires : “accessibilité : non/partiellement/totalement conforme”, mentions légales, données personnelles et gestion des cookies. - obligatoire.
#' - une mention de la licence - obligatoire “Sauf mention contraire, tous les contenus de ce site sont sous licence etalab-2.0”
#'
#' @param accessibilite le type d'accessibilité (non/partiellement/totalement conforme)
#' @param lien_accessibilite lien url vers l'accessibilite
#' @param lien_mentions_legales lien url vers les mentions légales
#' @param lien_donnees_personnelles lien url vers les données personnelles
#' @param lien_gestion_cookies lien url vers la gestion des cookies
#' @param ... d'autre liens de références (voir `footer_li_dsfr()`)
#'
#' @return html
#' @rdname footer_dsfr
#' @export
footer_bottom_dsfr <-
function(accessibilite = "non",
...,
lien_accessibilite = "#",
lien_mentions_legales = "#",
lien_donnees_personnelles = "#",
lien_gestion_cookies = "#") {


assertthat::assert_that(is.character(accessibilite))
assertthat::assert_that(is.character(lien_accessibilite))
assertthat::assert_that(is.character(lien_mentions_legales))
assertthat::assert_that(is.character(lien_donnees_personnelles))
assertthat::assert_that(is.character(lien_gestion_cookies))

if ( isFALSE(accessibilite %in% c("non", "partiellement", "totalement conforme"))){
stop("l accessibilite doit etre 'non', 'partiellement' ou 'totalement conforme'")
}

contenu <- list(...)
htmltools::htmlTemplate(
filename = system.file(
get_dsfr_version(with_v = TRUE),
"composant",
"piedpage_bottom.html",
package = "shinygouv"
),
accessibilite = accessibilite,
lien_accessibilite = lien_accessibilite,
lien_mentions_legales = lien_mentions_legales,
lien_donnees_personnelles = lien_donnees_personnelles,
lien_gestion_cookies = lien_gestion_cookies,
bottom_list = purrr::map(contenu, ~ {
footer_one_li(
id = .x$id,
href = .x$href,
titre = .x$titre,
texte = .x$texte,
type = "bottom"
)
})
)
}

189 changes: 189 additions & 0 deletions R/footer_dsfr.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
# WARNING - Generated by {fusen} from /dev/flat_composants/flat_footer.Rmd: do not edit by hand

#' footer_dsfr

#' Il se compose des éléments suivants:
#' - un bloc marque, voir la charte de marque
#' - un texte de présentation - optionnel.
#' - 4 liens de références de l'écosystème institutionnel - obligatoires.
#'- la liste de liens liés aux obligations légales. Cette liste doit être définie en fonction du site, toutefois les liens & contenus suivants sont obligatoires : “accessibilité : non/partiellement/totalement conforme”, mentions légales, données personnelles et gestion des cookies. - obligatoire.
#' - une mention de la licence - obligatoire “Sauf mention contraire, tous les contenus de ce site sont sous licence etalab-2.0”
#'
#' Il est possible d'ajouter des url supplémentaires dans le corps et le bas du pied de page.
#'
#' @param intitule la partie "intitule" du bloc marque
#' @param description un texte de présentation - optionnel
#' @param accessibilite le type d'accessibilité (non/partiellement/totalement conforme)
#' @param lien_accessibilite lien url vers l'accessibilite
#' @param lien_mentions_legales lien url vers les mentions légales
#' @param lien_donnees_personnelles lien url vers les données personnelles
#' @param lien_gestion_cookies lien url vers la gestion des cookies
#' @param add_extra_url_body url supplementaire a ajouter au corps du pied de page (voir `footer_extra_url_body_dsfr()`)
#' @param add_extra_url_bottom url supplementaire a ajouter au bas du pied de page (voir `footer_extra_url_bottom_dsfr()`)
#'
#' @return html
#' @export
#' @rdname footer_dsfr
#' @examples
#' if (interactive()) {
#' library(shiny)
#' shinyApp(
#' ui = fluidPage_dsfr(
#' footer = footer_dsfr(
#' intitule = "Territoire",
#' description = "une description",
#' accessibilite = "non",
#' add_extra_url_body = footer_extra_url_body_dsfr(
#' footer_li_dsfr(
#' href = "https://siteinternet.fr",
#' titre = "siteinternet.fr.fr - nouvelle fenêtre",
#' texte = "siteinternet.fr.fr", type = "body"
#' ),
#' footer_li_dsfr(
#' href = "https://siteinternet.fr",
#' titre = "siteinternet.fr.fr - nouvelle fenêtre",
#' texte = "siteinternet.fr.fr", type = "body"
#' )
#' ),
#' add_extra_url_bottom = footer_extra_url_bottom_dsfr(
#'
#' footer_li_dsfr(
#' href = "https://siteinternet.fr",
#' titre = "siteinternet.fr.fr - nouvelle fenêtre",
#' texte = "siteinternet.fr.fr", type = "bottom"
#' )
#' )
#' ),
#' tabsetPanel_dsfr(
#' "coucou",
#' tabPanel_dsfr(
#' id = "tab1",
#' title = "Une prems tab",
#' content = tagList(h3("Coucou"),
#' plotOutput("plot"))
#' ),
#' tabPanel_dsfr(
#' id = "tab2",
#' title = "Une deuxieme tab",
#' content = tagList(h3("Salut"),
#' plotOutput("plot2"))
#' )
#' )
#' ),
#' server = function(input, output) {
#' output$plot <- renderPlot({
#' plot(cars)
#' })
#' output$plot2 <- renderPlot({
#' plot(iris)
#' })
#' }
#' )
#' }
footer_dsfr <- function(
intitule = NULL ,
description = NULL ,
accessibilite = "non",
lien_accessibilite = "#",
lien_mentions_legales = "#",
lien_donnees_personnelles = "#",
lien_gestion_cookies = "#",
add_extra_url_body = NULL,
add_extra_url_bottom = NULL) {


if ( isFALSE(accessibilite %in% c("non", "partiellement", "totalement conforme"))){
stop("l accessibilite doit etre 'non', 'partiellement' ou 'totalement conforme'")
}

assertthat::assert_that(is.character(lien_accessibilite))
assertthat::assert_that(is.character(lien_mentions_legales))
assertthat::assert_that(is.character(lien_donnees_personnelles))
assertthat::assert_that(is.character(lien_gestion_cookies))



footer_dsfr_template(
intitule = intitule,
description = description,
footer_body = add_extra_url_body,
footer_bottom = add_extra_url_bottom,
accessibilite = accessibilite,
lien_accessibilite = lien_accessibilite,
lien_mentions_legales = lien_mentions_legales,
lien_donnees_personnelles = lien_donnees_personnelles,
lien_gestion_cookies = lien_gestion_cookies
)
}


#' footer_extra_url_body_dsfr
#'
#' Permet d'ajouter des liends/url dans le corps du pied de page
#'
#' @param ... d'autres liens de références (voir `footer_li_dsfr()`)
#'
#' @return html
#' @rdname footer_dsfr
#' @export
#' @examples
#' footer_extra_url_body_dsfr(
#' footer_li_dsfr(href = "http://siteinternet.fr", texte = "siteinternet.fr", type = "body"),
#' footer_li_dsfr(href = "http://siteinternet.fr", texte = "siteinternet.fr", type = "body"))
footer_extra_url_body_dsfr <- function(...) {
tagList(...)

}



#' footer_li_dsfr
#'
#' Permet de créer la balise html pour ajouter un lien en fonction de sa destination (body/bottom)
#'
#' @param href une url
#' @param texte le texte
#' @param id un identifiant (optionnel)
#' @param titre le titre de l infobulle (optionnel)
#' @param type le type de rendu de l url (body/bottom, par defaut body)
#'
#' @rdname footer_dsfr
#'
#' @return html
#'
#' @export
#' @examples
#' footer_li_dsfr(href = "http://siteinternet.fr", texte = "siteinternet.fr", type = "body")
#' footer_li_dsfr(href = "http://siteinternet.fr", texte = "siteinternet.fr", type = "bottom")
footer_li_dsfr <- function(id = NULL,
href,
titre = NULL,
texte,
type = "body") {

if (type == "body"){
target = "target='_blank'"
ttype = "content"
} else if (type == "bottom"){
target = NULL
ttype = "bottom"
} else {
stop("Dans footer_li_dsfr, type doit etre 'body' ou 'bottom'")
}

htmltools::htmlTemplate(
filename = system.file(
get_dsfr_version(with_v = TRUE),
"composant",
"piedpage_content.html",
package = "shinygouv"
),
id = id,
href = href,
titre = titre,
texte = texte,
type = ttype,
target = target
) |> parse_html()
}

51 changes: 51 additions & 0 deletions R/footer_dsfr_template.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# WARNING - Generated by {fusen} from /dev/flat_composants/flat_footer.Rmd: do not edit by hand

#' footer_dsfr_template
#'
#' @param intitule la partie "intitule" du bloc marque
#' @param description un texte de présentation - optionnel
#' @param footer_body le corps du footer
#' @param footer_bottom le bas du footer
#' @param accessibilite le type d'accessibilité (non/partiellement/totalement conforme)
#' @param lien_accessibilite lien url vers l'accessibilite
#' @param lien_mentions_legales lien url vers les mentions légales
#' @param lien_donnees_personnelles lien url vers les données personnelles
#' @param lien_gestion_cookies lien url vers la gestion des cookies
#'
#' @importFrom htmltools htmlTemplate
#' @return html
#' @noRd
footer_dsfr_template <- function(
intitule ,
description ,
footer_body, footer_bottom,
accessibilite = "non",
lien_accessibilite = "#",
lien_mentions_legales = "#",
lien_donnees_personnelles = "#",
lien_gestion_cookies = "#"
) {

htmltools::htmlTemplate(
filename = system.file(
get_dsfr_version(with_v = TRUE),
"composant",
"piedpage.html",
package = "shinygouv"
),
intitule = intitule ,
description = description,
footer_body = footer_body,
footer_bottom = footer_bottom,
accessibilite = accessibilite,
lien_accessibilite = lien_accessibilite,
lien_mentions_legales = lien_mentions_legales,
lien_donnees_personnelles = lien_donnees_personnelles,
lien_gestion_cookies = lien_gestion_cookies
) |> parse_html()
}





17 changes: 17 additions & 0 deletions R/footer_extra_url_bottom_dsfr.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# WARNING - Generated by {fusen} from /dev/flat_composants/flat_footer.Rmd: do not edit by hand

#' footer_extra_url_bottom_dsfr
#'
#' Permet d'ajouter des liends/url dans le bas du pied de page
#'
#' @param ... d'autre liens de références (voir `footer_li_dsfr()`)
#'
#' @return html
#' @rdname footer_dsfr
#' @export
footer_extra_url_bottom_dsfr <-
function(...) {
tagList(...)

}

2 changes: 1 addition & 1 deletion R/layout_dsfr_template.R
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# WARNING - Generated by {fusen} from dev/flat_composants/flat_fluidpage.Rmd: do not edit by hand
# WARNING - Generated by {fusen} from /dev/flat_composants/flat_fluidpage.Rmd: do not edit by hand

#' layout_dsfr_template
#'
Expand Down
Loading

0 comments on commit d3ffe50

Please sign in to comment.