diff --git a/docs/src/main/tut/docs/settings.md b/docs/src/main/tut/docs/settings.md index afdfe9be..01b1c2e7 100644 --- a/docs/src/main/tut/docs/settings.md +++ b/docs/src/main/tut/docs/settings.md @@ -91,6 +91,12 @@ micrositeGitHostingService := GitLab micrositeGitHostingUrl := "https://gitlab.com/gitlab-org/gitlab-ce" ``` +- `micrositeAnalyticsToken`: Property id of Google Analytics, by default is empty. + +``` +micrositeAnalyticsToken := 'UA-XXXXX-Y' +``` + - `micrositeHighlightTheme`: by default, the theme of Highlight.js is [default](https://highlightjs.org/static/demo/), however, you can configure it to a different theme thanks to this setting: ``` diff --git a/src/main/scala/microsites/MicrositeKeys.scala b/src/main/scala/microsites/MicrositeKeys.scala index fff6730d..d23db1d5 100644 --- a/src/main/scala/microsites/MicrositeKeys.scala +++ b/src/main/scala/microsites/MicrositeKeys.scala @@ -115,6 +115,9 @@ trait MicrositeKeys { "Determines what will be chosen for pushing the site. The options are sbt-ghpages plugin and github4s library.") val publishMicrositeCommandKey: String = "publishMicrosite" + val micrositeAnalyticsToken = + settingKey[String]( + "Optional. Add your property id of Google Analytics to add a Google Analytics tracker") } object MicrositeKeys extends MicrositeKeys @@ -151,7 +154,8 @@ trait MicrositeAutoImportSettings extends MicrositeKeys { author = micrositeAuthor.value, homepage = micrositeHomepage.value, organizationHomepage = micrositeOrganizationHomepage.value, - twitter = micrositeTwitter.value + twitter = micrositeTwitter.value, + analytics = micrositeAnalyticsToken.value ), visualSettings = MicrositeVisualSettings( highlightTheme = micrositeHighlightTheme.value, diff --git a/src/main/scala/microsites/MicrositesPlugin.scala b/src/main/scala/microsites/MicrositesPlugin.scala index 07d092c0..8fba5b30 100644 --- a/src/main/scala/microsites/MicrositesPlugin.scala +++ b/src/main/scala/microsites/MicrositesPlugin.scala @@ -95,6 +95,7 @@ object MicrositesPlugin extends AutoPlugin { micrositeGitHostingService := GitHub, micrositeGitHostingUrl := "", micrositePushSiteWith := GHPagesPlugin, + micrositeAnalyticsToken := "", includeFilter in Jekyll := ("*.html" | "*.css" | "*.png" | "*.jpg" | "*.jpeg" | "*.gif" | "*.js" | "*.swf" | "*.md" | "*.webm" | "*.ico" | "CNAME"), commands ++= Seq(publishMicrositeCommand) ) diff --git a/src/main/scala/microsites/layouts/Layout.scala b/src/main/scala/microsites/layouts/Layout.scala index 88c7940c..8bafce6d 100644 --- a/src/main/scala/microsites/layouts/Layout.scala +++ b/src/main/scala/microsites/layouts/Layout.scala @@ -40,6 +40,18 @@ abstract class Layout(config: MicrositeSettings) { ) } + val ganalytics: Option[TypedTag[String]] = + if (config.identity.analytics.nonEmpty) + Some(script(s""" + |(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + |(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + |m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + |})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); + | + |ga('create', '${config.identity.analytics}' , 'auto'); + |ga('send', 'pageview'); + """.stripMargin)) + else None def metas: List[TypedTag[String]] = List( meta(charset := "utf-8"), @@ -73,8 +85,7 @@ abstract class Layout(config: MicrositeSettings) { rel := "icon", `type` := "image/png", href := "{{site.url}}{{site.baseurl}}/img/favicon.png") - ) - + ) ++ ganalytics.toList def favicons: List[TypedTag[String]] = (if (config.visualSettings.favicons.nonEmpty) { config.visualSettings.favicons diff --git a/src/main/scala/microsites/microsites.scala b/src/main/scala/microsites/microsites.scala index 864e5ac4..5a000811 100644 --- a/src/main/scala/microsites/microsites.scala +++ b/src/main/scala/microsites/microsites.scala @@ -40,7 +40,8 @@ case class MicrositeIdentitySettings( author: String, homepage: String, organizationHomepage: String, - twitter: String) + twitter: String, + analytics: String) case class MicrositeFileLocations( micrositeImgDirectory: File, diff --git a/src/test/scala/microsites/util/Arbitraries.scala b/src/test/scala/microsites/util/Arbitraries.scala index 3fc3d8e3..a4e32cc3 100644 --- a/src/test/scala/microsites/util/Arbitraries.scala +++ b/src/test/scala/microsites/util/Arbitraries.scala @@ -111,6 +111,7 @@ trait Arbitraries { homepage ← Arbitrary.arbitrary[String] organizationHomepage ← Arbitrary.arbitrary[String] twitter ← Arbitrary.arbitrary[String] + analytics ← Arbitrary.arbitrary[String] highlightTheme ← Arbitrary.arbitrary[String] micrositeConfigYaml ← configYamlArbitrary.arbitrary micrositeImgDirectory ← Arbitrary.arbitrary[File] @@ -143,7 +144,8 @@ trait Arbitraries { author, homepage, organizationHomepage, - twitter), + twitter, + analytics), MicrositeVisualSettings(highlightTheme, palette, favicon), micrositeConfigYaml, MicrositeFileLocations(