~jan0sch/smederee

Showing details for patch e09c7edb7257cc3d4cd4e7472f6a3d11fb8312b9.
2022-09-08 (Thu), 1:50 PM - Jens Grassel - e09c7edb7257cc3d4cd4e7472f6a3d11fb8312b9

Routes for basic legally required pages

- also basic i18n
Summary of changes
4 files added
  • modules/hub/src/main/twirl/de/smederee/hub/views/contact.scala.html
  • modules/hub/src/main/twirl/de/smederee/hub/views/imprint.scala.html
  • modules/hub/src/main/twirl/de/smederee/hub/views/privacyPolicy.scala.html
  • modules/hub/src/main/twirl/de/smederee/hub/views/termsOfUse.scala.html
4 files modified with 63 lines added and 9 lines removed
  • modules/hub/src/main/resources/messages_en.properties with 18 added and 4 removed lines
  • modules/hub/src/main/scala/de/smederee/hub/LandingPageRoutes.scala with 29 added and 1 removed lines
  • modules/hub/src/main/twirl/de/smederee/hub/views/index.scala.html with 3 added and 2 removed lines
  • modules/hub/src/main/twirl/de/smederee/hub/views/publicAlpha.scala.html with 13 added and 2 removed lines
diff -rN -u old-smederee/modules/hub/src/main/resources/messages_en.properties new-smederee/modules/hub/src/main/resources/messages_en.properties
--- old-smederee/modules/hub/src/main/resources/messages_en.properties	2025-02-02 11:56:53.769172774 +0000
+++ new-smederee/modules/hub/src/main/resources/messages_en.properties	2025-02-02 11:56:53.769172774 +0000
@@ -42,8 +42,9 @@
 form.signup.username.placeholder=Please choose your username.
 
 # Global / generic translations
+global.contact=Contact
 global.copyright=© 2022 Wegtam GmbH
-global.imprint=Imprint
+global.imprint=Imprint/Impressum
 global.login=Login
 global.logout=Logout
 global.navbar.top.logo=Smederee
@@ -62,7 +63,7 @@
 landingpage.alpha.guarantees.intro=Even though the Smederee is considered alpha we provide the following guarantees:
 landingpage.alpha.guarantees.title=Guarantees during alpha
 landingpage.alpha.intro=Although we are aiming for high quality software an alpha implies several rough edges which we will explain a bit on this page.
-landingpage.alpha.issues.changes.text=As we are developing and testing our product we might run into situation where bigger changes to existing features are necessary. Nonetheless we try to reduce these to a minimum.
+landingpage.alpha.issues.changes.text=As we are developing and testing our product we might run into situations where bigger changes to existing features are necessary. Nonetheless we try to reduce these to a minimum.
 landingpage.alpha.issues.changes.title=Existing services might be subject to change
 landingpage.alpha.issues.incomplete.text=Several features are not yet available.
 landingpage.alpha.issues.incomplete.title=Incomplete feature set
@@ -72,6 +73,15 @@
 landingpage.alpha.issues.title=Issues to expect
 landingpage.alpha.title=Details about the public alpha phase of Smederee.
 
+landingpage.contact.title=Contact
+landingpage.contact.intro=You may reach out to us via several channels. Currently our preferred channel of communication is via email.
+landingpage.contact.email.title=E-Mail
+landingpage.contact.email.text=TODO
+landingpage.contact.abuse.title=Abuse
+landingpage.contact.abuse.text=TODO
+
+landingpage.imprint.title=Imprint / Impressum
+
 landingpage.index.footer.alpha.title=Public alpha phase
 landingpage.index.footer.alpha.text=We are currently running the Smederee as a public alpha service. This means that some functionality is incomplete or not yet implemented. Also existing services might be subject to change.
 landingpage.index.footer.alpha.link-text=Read more details about what to expect while using the Smederee.
@@ -84,16 +94,20 @@
 landingpage.index.pitch.header.fourth=Seamless CI/CD
 landingpage.index.pitch.header.second=Issue Tracking
 landingpage.index.pitch.header.third=Code Review
-landingpage.index.pitch.teaser.first=Hosted darcs repositories with fine grained access control including read only access for users without an account.
+landingpage.index.pitch.teaser.first=Hosted code repositories with fine grained access control including read only access for users without an account.
 landingpage.index.pitch.teaser.fourth=Coming soon...
 landingpage.index.pitch.teaser.second=Enjoy powerful and focussed issue tracking and project management which seamlessly integrates with email and mailing lists.
-landingpage.index.pitch.teaser.third=Review patches the way it was meant to be by leveraging the power of email  without missing out on a web based interface.
+landingpage.index.pitch.teaser.third=Review patches the way it was meant to be by leveraging the power of email without missing out on a web based interface.
 landingpage.index.pitch.title=Smederee brings teams together to build solid software!
 landingpage.index.ribbon.text=Benefit from our experience with building software for decades and leverage efficient engineering tools to craft your own software. All of your data is protected by the EU GDPR regulation, so what is yours stays yours. No tracking, no third party cookies and no dependencies on external services!
 landingpage.index.ribbon.title=We help you to craft great tools!
 landingpage.index.splash.text=Leverage the power of the <a href="http://darcs.net" target="_blank">darcs</a> vcs to handle your projects with ease and confidence and rest assured that we won't track you or sell your data!
 landingpage.index.splash.title=Craft Software!
 
+landingpage.privacy-policy.title=Privacy Policy
+
+landingpage.terms-of-use.title=Terms of Use
+
 landingpage.welcome.image.alt=A neon sign saying: Do something great!
 landingpage.welcome.ribbon.text=Welcome to the smederee! You can now use your credentials to login and start creating. Please note that some functionalities are locked until you have verified your email address.
 landingpage.welcome.ribbon.title=Thank you and welcome!
diff -rN -u old-smederee/modules/hub/src/main/scala/de/smederee/hub/LandingPageRoutes.scala new-smederee/modules/hub/src/main/scala/de/smederee/hub/LandingPageRoutes.scala
--- old-smederee/modules/hub/src/main/scala/de/smederee/hub/LandingPageRoutes.scala	2025-02-02 11:56:53.769172774 +0000
+++ new-smederee/modules/hub/src/main/scala/de/smederee/hub/LandingPageRoutes.scala	2025-02-02 11:56:53.773172785 +0000
@@ -43,6 +43,20 @@
   // The URL that shall be used in the `action` field of the form.
   private val signupUri = linkConfig.createFullUri(uri"/signup")
 
+  private val contact: HttpRoutes[F] = HttpRoutes.of { case req @ GET -> Root / "contact" =>
+    for {
+      csrf <- Sync[F].delay(req.getCsrfToken)
+      resp <- Ok(views.html.contact(baseUri)(csrf, "Smederee - Contact".some))
+    } yield resp
+  }
+
+  private val imprint: HttpRoutes[F] = HttpRoutes.of { case req @ GET -> Root / "imprint" =>
+    for {
+      csrf <- Sync[F].delay(req.getCsrfToken)
+      resp <- Ok(views.html.imprint(baseUri)(csrf, "Smederee - Imprint / Impressum".some))
+    } yield resp
+  }
+
   private val mainSiteForLoggedInUsers: AuthedRoutes[Account, F] = AuthedRoutes.of {
     case ar @ GET -> Root as user =>
       for {
@@ -58,6 +72,13 @@
     } yield resp
   }
 
+  private val privacyPolicy: HttpRoutes[F] = HttpRoutes.of { case req @ GET -> Root / "privacy-policy" =>
+    for {
+      csrf <- Sync[F].delay(req.getCsrfToken)
+      resp <- Ok(views.html.privacyPolicy(baseUri)(csrf, "Smederee - Privacy Policy".some))
+    } yield resp
+  }
+
   private val publicAlpha: HttpRoutes[F] = HttpRoutes.of { case req @ GET -> Root / "public-alpha" =>
     for {
       csrf <- Sync[F].delay(req.getCsrfToken)
@@ -65,8 +86,15 @@
     } yield resp
   }
 
+  private val termsOfUse: HttpRoutes[F] = HttpRoutes.of { case req @ GET -> Root / "terms-of-use" =>
+    for {
+      csrf <- Sync[F].delay(req.getCsrfToken)
+      resp <- Ok(views.html.termsOfUse(baseUri)(csrf, "Smederee - Terms of Use".some))
+    } yield resp
+  }
+
   val protectedRoutes = mainSiteForLoggedInUsers
 
-  val routes = publicAlpha <+> mainSite
+  val routes = contact <+> imprint <+> privacyPolicy <+> publicAlpha <+> termsOfUse <+> mainSite
 
 }
diff -rN -u old-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/contact.scala.html new-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/contact.scala.html
--- old-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/contact.scala.html	1970-01-01 00:00:00.000000000 +0000
+++ new-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/contact.scala.html	2025-02-02 11:56:53.773172785 +0000
@@ -0,0 +1,39 @@
+@(baseUri: Uri = Uri(path = Uri.Path.Root), lang: LanguageCode = LanguageCode("en"))(csrf: Option[CsrfToken] = None, title: Option[String] = None)
+@myHeaders = {
+  <link rel="stylesheet" href="@{baseUri.addPath("assets/css/landingpage.css")}" />
+  <style>
+    main.content-wrapper {
+      top: unset !important;
+    }
+  </style>
+}
+@main(baseUri, lang)(customHeaders = myHeaders)(csrf, title) {
+@defining(lang.toLocale) { implicit locale =>
+<div class="content">
+  <div class="pure-g">
+    <div class="pure-u-1-1 pure-u-md-1-1">
+      <div class="l-box">
+        <h1>@Messages("landingpage.contact.title")</h1>
+        <p>@Messages("landingpage.contact.intro")</p>
+        <hr/>
+        <h2>@Messages("landingpage.contact.email.title")</h2>
+        <p>@Messages("landingpage.contact.email.text")</p>
+        <h2>@Messages("landingpage.contact.abuse.title")</h2>
+        <p>@Messages("landingpage.contact.abuse.text")</p>
+      </div>
+    </div>
+  </div>
+  <footer class="footer l-box is-center">
+    <div class="pure-menu pure-menu-horizontal">
+      <a class="pure-menu-heading pure-menu-link" href="https://www.wegtam.com" target="_blank">@Messages("global.copyright")</a>
+      <ul class="pure-menu-list">
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("privacy-policy")}">@Messages("global.privacy")</a>
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("terms-of-use")}">@Messages("global.terms.of.use")</a>
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("imprint")}">@Messages("global.imprint")</a>
+        <li class="pure-menu-item pure-menu-active"><a class="pure-menu-link" href="@{baseUri.addPath("contact")}">@Messages("global.contact")</a>
+      </ul>
+    </div>
+  </footer>
+</div>
+}
+}
diff -rN -u old-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/imprint.scala.html new-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/imprint.scala.html
--- old-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/imprint.scala.html	1970-01-01 00:00:00.000000000 +0000
+++ new-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/imprint.scala.html	2025-02-02 11:56:53.773172785 +0000
@@ -0,0 +1,33 @@
+@(baseUri: Uri = Uri(path = Uri.Path.Root), lang: LanguageCode = LanguageCode("en"))(csrf: Option[CsrfToken] = None, title: Option[String] = None)
+@myHeaders = {
+  <link rel="stylesheet" href="@{baseUri.addPath("assets/css/landingpage.css")}" />
+  <style>
+    main.content-wrapper {
+      top: unset !important;
+    }
+  </style>
+}
+@main(baseUri, lang)(customHeaders = myHeaders)(csrf, title) {
+@defining(lang.toLocale) { implicit locale =>
+<div class="content">
+  <div class="pure-g">
+    <div class="pure-u-1-1 pure-u-md-1-1">
+      <div class="l-box">
+        <h1>@Messages("landingpage.imprint.title")</h1>
+      </div>
+    </div>
+  </div>
+  <footer class="footer l-box is-center">
+    <div class="pure-menu pure-menu-horizontal">
+      <a class="pure-menu-heading pure-menu-link" href="https://www.wegtam.com" target="_blank">@Messages("global.copyright")</a>
+      <ul class="pure-menu-list">
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("privacy-policy")}">@Messages("global.privacy")</a>
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("terms-of-use")}">@Messages("global.terms.of.use")</a>
+        <li class="pure-menu-item pure-menu-active"><a class="pure-menu-link" href="@{baseUri.addPath("imprint")}">@Messages("global.imprint")</a>
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("contact")}">@Messages("global.contact")</a>
+      </ul>
+    </div>
+  </footer>
+</div>
+}
+}
diff -rN -u old-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/index.scala.html new-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/index.scala.html
--- old-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/index.scala.html	2025-02-02 11:56:53.769172774 +0000
+++ new-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/index.scala.html	2025-02-02 11:56:53.773172785 +0000
@@ -109,9 +109,10 @@
         <div class="pure-menu pure-menu-horizontal">
           <a class="pure-menu-heading pure-menu-link" href="https://www.wegtam.com" target="_blank">@Messages("global.copyright")</a>
           <ul class="pure-menu-list">
-            <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("privacy")}">@Messages("global.privacy")</a>
-            <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("terms")}">@Messages("global.terms.of.use")</a>
+            <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("privacy-policy")}">@Messages("global.privacy")</a>
+            <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("terms-of-use")}">@Messages("global.terms.of.use")</a>
             <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("imprint")}">@Messages("global.imprint")</a>
+            <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("contact")}">@Messages("global.contact")</a>
           </ul>
         </div>
       </footer>
diff -rN -u old-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/privacyPolicy.scala.html new-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/privacyPolicy.scala.html
--- old-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/privacyPolicy.scala.html	1970-01-01 00:00:00.000000000 +0000
+++ new-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/privacyPolicy.scala.html	2025-02-02 11:56:53.773172785 +0000
@@ -0,0 +1,33 @@
+@(baseUri: Uri = Uri(path = Uri.Path.Root), lang: LanguageCode = LanguageCode("en"))(csrf: Option[CsrfToken] = None, title: Option[String] = None)
+@myHeaders = {
+  <link rel="stylesheet" href="@{baseUri.addPath("assets/css/landingpage.css")}" />
+  <style>
+    main.content-wrapper {
+      top: unset !important;
+    }
+  </style>
+}
+@main(baseUri, lang)(customHeaders = myHeaders)(csrf, title) {
+@defining(lang.toLocale) { implicit locale =>
+<div class="content">
+  <div class="pure-g">
+    <div class="pure-u-1-1 pure-u-md-1-1">
+      <div class="l-box">
+        <h1>@Messages("landingpage.privacy-policy.title")</h1>
+      </div>
+    </div>
+  </div>
+  <footer class="footer l-box is-center">
+    <div class="pure-menu pure-menu-horizontal">
+      <a class="pure-menu-heading pure-menu-link" href="https://www.wegtam.com" target="_blank">@Messages("global.copyright")</a>
+      <ul class="pure-menu-list">
+        <li class="pure-menu-item pure-menu-active"><a class="pure-menu-link" href="@{baseUri.addPath("privacy-policy")}">@Messages("global.privacy")</a>
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("terms-of-use")}">@Messages("global.terms.of.use")</a>
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("imprint")}">@Messages("global.imprint")</a>
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("contact")}">@Messages("global.contact")</a>
+      </ul>
+    </div>
+  </footer>
+</div>
+}
+}
diff -rN -u old-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/publicAlpha.scala.html new-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/publicAlpha.scala.html
--- old-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/publicAlpha.scala.html	2025-02-02 11:56:53.769172774 +0000
+++ new-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/publicAlpha.scala.html	2025-02-02 11:56:53.773172785 +0000
@@ -21,9 +21,9 @@
         <h3>@Messages("landingpage.alpha.issues.incomplete.title")</h3>
         <p>@Messages("landingpage.alpha.issues.incomplete.text")</p>
         <h3>@Messages("landingpage.alpha.issues.changes.title")</h3>
-        <p>@Messages("landingpage.alpha.issues.incomplete.text")</p>
+        <p>@Messages("landingpage.alpha.issues.changes.text")</p>
         <h3>@Messages("landingpage.alpha.issues.payment.title")</h3>
-        <p>@Messages("landingpage.alpha.issues.incomplete.text")</p>
+        <p>@Messages("landingpage.alpha.issues.payment.text")</p>
         <hr/>
         <h2>@Messages("landingpage.alpha.guarantees.title")</h2>
         <p>@Messages("landingpage.alpha.guarantees.intro")</p>
@@ -35,6 +35,17 @@
       </div>
     </div>
   </div>
+  <footer class="footer l-box is-center">
+    <div class="pure-menu pure-menu-horizontal">
+      <a class="pure-menu-heading pure-menu-link" href="https://www.wegtam.com" target="_blank">@Messages("global.copyright")</a>
+      <ul class="pure-menu-list">
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("privacy-policy")}">@Messages("global.privacy")</a>
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("terms-of-use")}">@Messages("global.terms.of.use")</a>
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("imprint")}">@Messages("global.imprint")</a>
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("contact")}">@Messages("global.contact")</a>
+      </ul>
+    </div>
+  </footer>
 </div>
 }
 }
diff -rN -u old-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/termsOfUse.scala.html new-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/termsOfUse.scala.html
--- old-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/termsOfUse.scala.html	1970-01-01 00:00:00.000000000 +0000
+++ new-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/termsOfUse.scala.html	2025-02-02 11:56:53.773172785 +0000
@@ -0,0 +1,33 @@
+@(baseUri: Uri = Uri(path = Uri.Path.Root), lang: LanguageCode = LanguageCode("en"))(csrf: Option[CsrfToken] = None, title: Option[String] = None)
+@myHeaders = {
+  <link rel="stylesheet" href="@{baseUri.addPath("assets/css/landingpage.css")}" />
+  <style>
+    main.content-wrapper {
+      top: unset !important;
+    }
+  </style>
+}
+@main(baseUri, lang)(customHeaders = myHeaders)(csrf, title) {
+@defining(lang.toLocale) { implicit locale =>
+<div class="content">
+  <div class="pure-g">
+    <div class="pure-u-1-1 pure-u-md-1-1">
+      <div class="l-box">
+        <h1>@Messages("landingpage.terms-of-use.title")</h1>
+      </div>
+    </div>
+  </div>
+  <footer class="footer l-box is-center">
+    <div class="pure-menu pure-menu-horizontal">
+      <a class="pure-menu-heading pure-menu-link" href="https://www.wegtam.com" target="_blank">@Messages("global.copyright")</a>
+      <ul class="pure-menu-list">
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("privacy-policy")}">@Messages("global.privacy")</a>
+        <li class="pure-menu-item pure-menu-active"><a class="pure-menu-link" href="@{baseUri.addPath("terms-of-use")}">@Messages("global.terms.of.use")</a>
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("imprint")}">@Messages("global.imprint")</a>
+        <li class="pure-menu-item"><a class="pure-menu-link" href="@{baseUri.addPath("contact")}">@Messages("global.contact")</a>
+      </ul>
+    </div>
+  </footer>
+</div>
+}
+}