diff --git a/docs/src/main/tut/docs/settings.md b/docs/src/main/tut/docs/settings.md index 01b1c2e7..d6215ae2 100644 --- a/docs/src/main/tut/docs/settings.md +++ b/docs/src/main/tut/docs/settings.md @@ -56,12 +56,31 @@ Therefore, considering the example above, your microsite documentation would be micrositeAuthor := "47 Degrees" ``` -- `micrositeOrganizationHomepage`: this particular setting is used for the homepage url, similar to the way we've seen in other properties. This link is used in the footer-left link in the microsite. By default, the value is taken from the sbt setting `organizationHomepage`. In case you don´t provide any value for that setting, it will take it from the sbt setting `homepage`: +- `micrositeHomepage`: used for the homepage url, similar to the way we've seen in other properties. This link is used in the footer-left link in the microsite. By default, the value is taken from the sbt setting `homepage`. + +``` +micrositeHomepage := "https://47deg.github.io/sbt-microsites/" +``` + +- `micrositeOrganizationHomepage`: this particular setting is used for organization the homepage url, similar to the way we've seen in other properties. This link is used in the footer-left link in the microsite. By default, the value is taken from the sbt setting `organizationHomepage`. In case you don´t provide any value for that setting, it will take it from the sbt setting `homepage`: ``` micrositeOrganizationHomepage := "http://www.47deg.com" ``` +- `micrositeTwitter`: this setting is used for the Twitter integration. This generates a meta that Twitter uses in its [Twitter Cards](https://cards-dev.twitter.com/validator). + +``` +micrositeTwitter := "@sbt-microsites" +``` + +- `micrositeTwitterCreator`: this particular setting is used for the Twitter integration. This generates a meta that Twitter uses in its [Twitter Cards](https://cards-dev.twitter.com/validator). + +``` +micrositeTwitterCreator := "@47deg" +``` + + - `micrositeGithubOwner` and `micrositeGithubRepo`: in order to add links to the `GitHub` repo. It's also needed for publishing the site when `github4s` is chosen (see `micrositePushSiteWith` setting). Both, `micrositeGithubOwner` and `micrositeGithubRepo` are required: ``` diff --git a/src/main/scala/microsites/MicrositeKeys.scala b/src/main/scala/microsites/MicrositeKeys.scala index 6cc287fe..d00bebeb 100644 --- a/src/main/scala/microsites/MicrositeKeys.scala +++ b/src/main/scala/microsites/MicrositeKeys.scala @@ -29,6 +29,8 @@ import sbt._ import sbt.complete.DefaultParsers.OptNotSpace import sbtorgpolicies.github.GitHubOps import tut.Plugin._ +import sbtorgpolicies.io._ +import sbtorgpolicies.io.syntax._ trait MicrositeKeys { @@ -62,8 +64,9 @@ trait MicrositeKeys { val micrositeHomepage: SettingKey[String] = settingKey[String]("Microsite homepage") val micrositeOrganizationHomepage: SettingKey[String] = settingKey[String]("Microsite organisation homepage") - val micrositeTwitter: SettingKey[String] = settingKey[String]("Microsite twitter") - val micrositeBaseUrl: SettingKey[String] = settingKey[String]("Microsite site base url") + val micrositeTwitter: SettingKey[String] = settingKey[String]("Microsite twitter") + val micrositeTwitterCreator: SettingKey[String] = settingKey[String]("Microsite twitter") + val micrositeBaseUrl: SettingKey[String] = settingKey[String]("Microsite site base url") val micrositeDocumentationUrl: SettingKey[String] = settingKey[String]("Microsite site documentation url") val micrositeHighlightTheme: SettingKey[String] = settingKey[String]("Microsite Highlight Theme") @@ -158,6 +161,7 @@ trait MicrositeAutoImportSettings extends MicrositeKeys { homepage = micrositeHomepage.value, organizationHomepage = micrositeOrganizationHomepage.value, twitter = micrositeTwitter.value, + twitterCreator = micrositeTwitterCreator.value, analytics = micrositeAnalyticsToken.value ), visualSettings = MicrositeVisualSettings( diff --git a/src/main/scala/microsites/MicrositesPlugin.scala b/src/main/scala/microsites/MicrositesPlugin.scala index 8fba5b30..84fe6a82 100644 --- a/src/main/scala/microsites/MicrositesPlugin.scala +++ b/src/main/scala/microsites/MicrositesPlugin.scala @@ -61,6 +61,7 @@ object MicrositesPlugin extends AutoPlugin { micrositeBaseUrl := "", micrositeDocumentationUrl := "", micrositeTwitter := "", + micrositeTwitterCreator := "", micrositeHighlightTheme := "default", micrositeConfigYaml := ConfigYml( yamlPath = Some((resourceDirectory in Compile).value / "microsite" / "_config.yml")), @@ -89,7 +90,7 @@ object MicrositesPlugin extends AutoPlugin { micrositeKazariEvaluatorUrl := "https://scala-evaluator-212.herokuapp.com", micrositeKazariEvaluatorToken := "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.S2F6YXJp.Jl2eqMfw8IakJF93PjxTbrf-8YUJgX5OoOfy5JHE8Yw", micrositeKazariGithubToken := "", - micrositeKazariCodeMirrorTheme := "solarized-dark", + micrositeKazariCodeMirrorTheme := "monokai", micrositeKazariDependencies := Seq(), micrositeKazariResolvers := Seq(), micrositeGitHostingService := GitHub, diff --git a/src/main/scala/microsites/layouts/HomeLayout.scala b/src/main/scala/microsites/layouts/HomeLayout.scala index d3da891f..09945797 100644 --- a/src/main/scala/microsites/layouts/HomeLayout.scala +++ b/src/main/scala/microsites/layouts/HomeLayout.scala @@ -97,6 +97,6 @@ class HomeLayout(config: MicrositeSettings) extends Layout(config) { ) def scriptsKazari: List[TypedTag[String]] = - scripts ++ List(script(src := "{{ site.baseurl }}/js/kazari.js"), script(kazariEnableScript)) + scripts ++ List(script(src := "{{ site.baseurl }}/js/kazari.js"), kazariEnableScript) } diff --git a/src/main/scala/microsites/layouts/Layout.scala b/src/main/scala/microsites/layouts/Layout.scala index 13971afb..3926cdfc 100644 --- a/src/main/scala/microsites/layouts/Layout.scala +++ b/src/main/scala/microsites/layouts/Layout.scala @@ -54,40 +54,63 @@ abstract class Layout(config: MicrositeSettings) { |ga('send', 'pageview'); """.stripMargin)) else None + + val twitter: Option[TypedTag[String]] = + if (config.identity.twitter.nonEmpty) { + Some(meta(name := "twitter:site", content := config.identity.twitter)) + } else None + + val twitterCreator: Option[TypedTag[String]] = + if (config.identity.twitterCreator.nonEmpty) { + Some(meta(name := "twitter:creator", content := config.identity.twitterCreator)) + } else None + + val kazariDep: Option[TypedTag[String]] = + if (config.micrositeKazariSettings.micrositeKazariDependencies.nonEmpty) { + Some( + meta( + name := "kazari-dependencies", + content := + config.micrositeKazariSettings.micrositeKazariDependencies + .map(dependency => + s"${dependency.groupId};${dependency.artifactId}_${dependency.scalaVersion};${dependency.version}") + .mkString(",") + )) + } else None + + val kazariRes: Option[TypedTag[String]] = + if (config.micrositeKazariSettings.micrositeKazariResolvers.nonEmpty) { + Some( + meta( + name := "kazari-resolvers", + content := + config.micrositeKazariSettings.micrositeKazariResolvers.mkString(","))) + } else None + def metas: List[TypedTag[String]] = List( + title(config.identity.name), meta(charset := "utf-8"), meta(httpEquiv := "X-UA-Compatible", content := "IE=edge,chrome=1"), - title(config.identity.name), meta(name := "viewport", content := "width=device-width, initial-scale=1.0"), - meta(name := "description", content := config.identity.description), meta(name := "author", content := config.identity.author), + meta(name := "description", content := config.identity.description), meta(name := "og:image", content := "{{site.url}}{{site.baseurl}}/img/poster.png"), meta(name := "og:title", content := config.identity.name), meta(name := "og:site_name", content := config.identity.name), meta(name := "og:url", content := config.identity.homepage), meta(name := "og:type", content := "website"), meta(name := "og:description", content := config.identity.description), - meta(name := "twitter:image", content := "{{site.url}}{{site.baseurl}}/img/poster.png"), - meta(name := "twitter:card", content := "summary_large_image"), - meta(name := "twitter:site", content := config.identity.twitter), - meta( - name := "kazari-dependencies", - content := - config.micrositeKazariSettings.micrositeKazariDependencies - .map(dependency => - s"${dependency.groupId};${dependency.artifactId}_${dependency.scalaVersion};${dependency.version}") - .mkString(",") - ), - meta( - name := "kazari-resolvers", - content := - config.micrositeKazariSettings.micrositeKazariResolvers.mkString(",")), link( rel := "icon", `type` := "image/png", - href := "{{site.url}}{{site.baseurl}}/img/favicon.png") - ) ++ ganalytics.toList + href := "{{site.url}}{{site.baseurl}}/img/favicon.png"), + meta(name := "twitter:title", content := config.identity.name), + meta(name := "twitter:image", content := s"${config.identity.homepage}img/poster.png"), + meta(name := "twitter:description", content := config.identity.description), + meta(name := "twitter:card", content := "summary_large_image") + ) ++ twitter.toList ++ twitterCreator.toList ++ kazariDep.toList ++ kazariRes.toList ++ 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 5a000811..95b43155 100644 --- a/src/main/scala/microsites/microsites.scala +++ b/src/main/scala/microsites/microsites.scala @@ -41,6 +41,7 @@ case class MicrositeIdentitySettings( homepage: String, organizationHomepage: String, twitter: String, + twitterCreator: String, analytics: String) case class MicrositeFileLocations( diff --git a/src/test/scala/microsites/util/Arbitraries.scala b/src/test/scala/microsites/util/Arbitraries.scala index a4e32cc3..78d047ff 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] + twitterCreator ← Arbitrary.arbitrary[String] analytics ← Arbitrary.arbitrary[String] highlightTheme ← Arbitrary.arbitrary[String] micrositeConfigYaml ← configYamlArbitrary.arbitrary @@ -145,6 +146,7 @@ trait Arbitraries { homepage, organizationHomepage, twitter, + twitterCreator, analytics), MicrositeVisualSettings(highlightTheme, palette, favicon), micrositeConfigYaml,