diff --git a/.Rbuildignore b/.Rbuildignore index 83ff8c6..c9e2e08 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -17,3 +17,4 @@ $run_dev.* docs ^inst/test.convert.dsfr/\.Rbuildignore$ ^deliverables$ +^dev/tools/$ diff --git a/NAMESPACE b/NAMESPACE index c2c1138..157bf00 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -42,6 +42,7 @@ export(updateRadioButtons_dsfr) export(updateRadioGroupButtons_dsfr) export(updateSelectInput_dsfr) export(updateTabsetPanel_dsfr) +export(use_favicon_dsfr) export(withSpinner_dsfr) import(htmltools) import(shiny) @@ -57,6 +58,7 @@ importFrom(golem,activate_js) importFrom(golem,add_resource_path) importFrom(golem,bundle_resources) importFrom(golem,favicon) +importFrom(golem,use_favicon) importFrom(golem,with_golem_options) importFrom(htmltools,HTML) importFrom(htmltools,htmlDependency) diff --git a/R/use_favicon_dsfr.R b/R/use_favicon_dsfr.R new file mode 100644 index 0000000..1381835 --- /dev/null +++ b/R/use_favicon_dsfr.R @@ -0,0 +1,34 @@ +# WARNING - Generated by {fusen} from dev/tools/flat_favicon.Rmd: do not edit by hand + +#' use_favicon_dsfr +#' +#' @description +#' use_favicon_dsfr() est une fonction a lancer dans la console pour enregistrer le fichier de favicon marianne dans votre projet shiny. +#' +#' +#' @param path_app chaine de texte indiquant le chemin vers votre application shiny +#' @param golem_app booleen, TRUE pour une app golem, FALSE sinon +#' @importFrom golem use_favicon +#' +#' @return NULL +#' @export +#' +#' @examples +#' \dontrun{ +#' # A lancer dans la console pour rapatrier le fichier dans votre repertoire de travail +#' use_favicon_dsfr(path_app = "", golem_app = TRUE) +#' } + +use_favicon_dsfr <- function(path_app = '', golem_app = TRUE) { + path_favicon_dsfr <- system.file(paste0("dsfr-v", get_dsfr_version(), "/dist/favicon/favicon.ico"), package = "shinygouv") + if(golem_app) { + golem::use_favicon(path = path_favicon_dsfr, pkg = path_app) + } else { + dest_favic = paste0(path_app, "/www") + dir.create(path = dest_favic, showWarnings = TRUE) + file.copy(from = path_favicon_dsfr, to = dest_favic, overwrite = TRUE, recursive = FALSE) + cat("La favicon Marianne est dans `", dest_favic, "`.", sep = "", fill = TRUE) + cat("Il vous reste a l'introduire dans votre corps de page UI, par exemple avec", fill = TRUE) + cat('tags$head(tags$link(rel = "shortcut icon", type = "image/x-icon", href = "favicon.ico")\n') + } +} diff --git a/dev/01_start.R b/dev/01_start.R index e142b98..cd23580 100644 --- a/dev/01_start.R +++ b/dev/01_start.R @@ -12,6 +12,7 @@ ######################################## ## Fill the DESCRIPTION ---- +usethis::use_description() ## Add meta data about your application ## ## /!\ Note: if you want to change the name of your app during development, @@ -49,6 +50,7 @@ usethis::use_git() golem::use_recommended_tests() ## Favicon ---- +shingouv::use_favicon_dsfr() # If you want to change the favicon (default is golem's one) golem::use_favicon() # path = "path/to/ico". Can be an online file. # golem::remove_favicon() # Uncomment to remove the default favicon diff --git a/dev/config_fusen.yaml b/dev/config_fusen.yaml index f1eaeab..8737180 100644 --- a/dev/config_fusen.yaml +++ b/dev/config_fusen.yaml @@ -61,6 +61,19 @@ flat_convert_to_dsfr.Rmd: check: false document: true overwrite: ask +flat_favicon.Rmd: + path: dev/tools/flat_favicon.Rmd + state: active + R: R/use_favicon_dsfr.R + tests: tests/testthat/test-use_favicon_dsfr.R + vignettes: [] + inflate: + flat_file: dev/tools/flat_favicon.Rmd + vignette_name: .na + open_vignette: true + check: false + document: true + overwrite: ask flat_fluidpage.Rmd: path: dev/flat_composants/flat_fluidpage.Rmd state: active diff --git a/dev/tools/flat_favicon.Rmd b/dev/tools/flat_favicon.Rmd new file mode 100644 index 0000000..e0ad86e --- /dev/null +++ b/dev/tools/flat_favicon.Rmd @@ -0,0 +1,72 @@ +--- +title: "favicon" +output: html_document +editor_options: + chunk_output_type: console +--- + +```{r development, include=FALSE} +library(testthat) +``` + +```{r development-load} +# Load already included functions if relevant +pkgload::load_all(export_all = FALSE) +``` + +# flat_favicon_rmd + +```{r function-flat_favicon_rmd} +#' use_favicon_dsfr +#' +#' @description +#' use_favicon_dsfr() est une fonction a lancer dans la console pour enregistrer le fichier de favicon marianne dans votre projet shiny. +#' +#' +#' @param path_app chaine de texte indiquant le chemin vers votre application shiny +#' @param golem_app booleen, TRUE pour une app golem, FALSE sinon +#' @importFrom golem use_favicon +#' +#' @return NULL +#' @export +#' +#' @examples +#' \dontrun{ +#' # A lancer dans la console pour rapatrier le fichier dans votre repertoire de travail +#' use_favicon_dsfr(path_app = "", golem_app = TRUE) +#' } + +use_favicon_dsfr <- function(path_app = '', golem_app = TRUE) { + path_favicon_dsfr <- system.file(paste0("dsfr-v", get_dsfr_version(), "/dist/favicon/favicon.ico"), package = "shinygouv") + if(golem_app) { + golem::use_favicon(path = path_favicon_dsfr, pkg = path_app) + } else { + dest_favic = paste0(path_app, "/www") + dir.create(path = dest_favic, showWarnings = TRUE) + file.copy(from = path_favicon_dsfr, to = dest_favic, overwrite = TRUE, recursive = FALSE) + cat("La favicon Marianne est dans `", dest_favic, "`.", sep = "", fill = TRUE) + cat("Il vous reste a l'introduire dans votre corps de page UI, par exemple avec", fill = TRUE) + cat('tags$head(tags$link(rel = "shortcut icon", type = "image/x-icon", href = "favicon.ico")\n') + } +} +``` + + +```{r tests-flat_favicon_rmd} +test_that("use_favicon_dsfr works", { + + # version shiny basique + path_shiny_base <- paste0(app, "/www/favicon.ico") + use_favicon_dsfr(path_app = app, golem_app = FALSE) + expect_true(file.exists(path_shiny_base)) + +}) +``` + + +```{r development-inflate, eval=FALSE} +# Run but keep eval=FALSE to avoid infinite loop +# Execute in the console directly +fusen::inflate(flat_file = "dev/tools/flat_favicon.Rmd", vignette_name = NA, check = FALSE) +``` + diff --git a/man/use_favicon_dsfr.Rd b/man/use_favicon_dsfr.Rd new file mode 100644 index 0000000..24993f3 --- /dev/null +++ b/man/use_favicon_dsfr.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/use_favicon_dsfr.R +\name{use_favicon_dsfr} +\alias{use_favicon_dsfr} +\title{use_favicon_dsfr} +\usage{ +use_favicon_dsfr(path_app = "", golem_app = TRUE) +} +\arguments{ +\item{path_app}{chaine de texte indiquant le chemin vers votre application shiny} + +\item{golem_app}{booleen, TRUE pour une app golem, FALSE sinon} +} +\description{ +use_favicon_dsfr() est une fonction a lancer dans la console pour enregistrer le fichier de favicon marianne dans votre projet shiny. +} +\examples{ +\dontrun{ +# A lancer dans la console pour rapatrier le fichier dans votre repertoire de travail +use_favicon_dsfr(path_app = "", golem_app = TRUE) +} +} diff --git a/tests/testthat/test-use_favicon_dsfr.R b/tests/testthat/test-use_favicon_dsfr.R new file mode 100644 index 0000000..704cf30 --- /dev/null +++ b/tests/testthat/test-use_favicon_dsfr.R @@ -0,0 +1,10 @@ +# WARNING - Generated by {fusen} from dev/tools/flat_favicon.Rmd: do not edit by hand + +test_that("use_favicon_dsfr works", { + + # version shiny basique + path_shiny_base <- paste0(app, "/www/favicon.ico") + use_favicon_dsfr(path_app = app, golem_app = FALSE) + expect_true(file.exists(path_shiny_base)) + +})