You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by ka...@apache.org on 2019/10/29 23:37:08 UTC
[airflow-site] branch aip-11 updated: Add footer and sticky suggest
a change button (#98)
This is an automated email from the ASF dual-hosted git repository.
kamilbregula pushed a commit to branch aip-11
in repository https://gitbox.apache.org/repos/asf/airflow-site.git
The following commit(s) were added to refs/heads/aip-11 by this push:
new 47bfe5d Add footer and sticky suggest a change button (#98)
47bfe5d is described below
commit 47bfe5d635c5e77eb5ae07ad8fb25644e97a66a2
Author: Kamil Gabryjelski <ka...@gmail.com>
AuthorDate: Wed Oct 30 00:36:58 2019 +0100
Add footer and sticky suggest a change button (#98)
---
landing-pages/site/assets/icons/github-white.svg | 3 +
landing-pages/site/assets/icons/jira.svg | 7 ++
landing-pages/site/assets/icons/slack.svg | 20 +++
landing-pages/site/assets/icons/stackoverflow.svg | 6 +
landing-pages/site/assets/icons/twitter-white.svg | 5 +
landing-pages/site/assets/icons/youtube.svg | 3 +
landing-pages/site/assets/scss/_base-layout.scss | 7 +-
landing-pages/site/assets/scss/_buttons.scss | 7 --
landing-pages/site/assets/scss/_footer.scss | 134 +++++++++++++++++++++
landing-pages/site/assets/scss/main-custom.scss | 1 +
landing-pages/site/config.toml | 69 ++++++-----
landing-pages/site/layouts/_default/baseof.html | 2 +-
landing-pages/site/layouts/blog/baseof.html | 4 +-
.../site/layouts/case-studies/baseof.html | 2 +-
landing-pages/site/layouts/community/baseof.html | 2 +-
landing-pages/site/layouts/install/baseof.html | 2 +-
landing-pages/site/layouts/meetups/baseof.html | 2 +-
landing-pages/site/layouts/partials/footer.html | 58 +++++++++
.../site/layouts/partials/lang-selector.html | 28 +++++
19 files changed, 313 insertions(+), 49 deletions(-)
diff --git a/landing-pages/site/assets/icons/github-white.svg b/landing-pages/site/assets/icons/github-white.svg
new file mode 100644
index 0000000..3bf8a77
--- /dev/null
+++ b/landing-pages/site/assets/icons/github-white.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="46.14" height="45" viewBox="0 0 46.14 45">
+ <path id="Path_207" d="M228.962 1078.578a23.072 23.072 0 0 0-7.29 44.96c1.154.212 1.574-.5 1.574-1.112 0-.548-.02-2-.031-3.924-6.417 1.394-7.771-3.093-7.771-3.093a6.109 6.109 0 0 0-2.562-3.375c-2.095-1.431.159-1.4.159-1.4a4.846 4.846 0 0 1 3.533 2.377c2.058 3.525 5.4 2.507 6.714 1.917a4.926 4.926 0 0 1 1.464-3.084c-5.123-.582-10.508-2.562-10.508-11.4a8.919 8.919 0 0 1 2.374-6.191 8.3 8.3 0 0 1 .226-6.105s1.937-.62 6.344 2.365a21.857 21.857 0 0 1 11.551 0c4.4-2.985 6.338-2.365 6.338-2 [...]
+</svg>
diff --git a/landing-pages/site/assets/icons/jira.svg b/landing-pages/site/assets/icons/jira.svg
new file mode 100644
index 0000000..ae705ad
--- /dev/null
+++ b/landing-pages/site/assets/icons/jira.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="45" height="45" viewBox="0 0 45 45">
+ <g id="Group_210" data-name="Group 210" transform="translate(-339.789 -1315.282)">
+ <path id="Path_218" d="M394.82 1315.282h-21.671a9.784 9.784 0 0 0 9.784 9.778h3.986v3.857a9.784 9.784 0 0 0 9.784 9.771v-21.523a1.884 1.884 0 0 0-1.883-1.883z" fill="#fff" data-name="Path 218" transform="translate(-11.914)"/>
+ <path id="Path_219" d="M378.14 1332.072h-21.671a9.778 9.778 0 0 0 9.778 9.778h4.018v3.857a9.784 9.784 0 0 0 9.752 9.778v-21.536a1.877 1.877 0 0 0-1.877-1.877z" fill="#fff" data-name="Path 219" transform="translate(-5.957 -5.996)"/>
+ <path id="Path_220" d="M361.46 1348.862h-21.671a9.778 9.778 0 0 0 9.778 9.778h3.992v3.857a9.778 9.778 0 0 0 9.778 9.778v-21.529a1.883 1.883 0 0 0-1.877-1.884z" fill="#fff" data-name="Path 220" transform="translate(0 -11.993)"/>
+ </g>
+</svg>
diff --git a/landing-pages/site/assets/icons/slack.svg b/landing-pages/site/assets/icons/slack.svg
new file mode 100644
index 0000000..c804682
--- /dev/null
+++ b/landing-pages/site/assets/icons/slack.svg
@@ -0,0 +1,20 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="45.073" height="45.073" viewBox="0 0 45.073 45.073">
+ <g id="Group_208" data-name="Group 208" transform="translate(-661.145 -806.287)">
+ <g id="Group_204" data-name="Group 204" transform="translate(661.145 830.01)">
+ <path id="Path_208" d="M670.634 856.859a4.744 4.744 0 1 1-4.744-4.744h4.744z" fill="#fff" data-name="Path 208" transform="translate(-661.145 -852.115)"/>
+ <path id="Path_209" d="M684.059 856.859a4.744 4.744 0 0 1 9.489 0v11.861a4.744 4.744 0 1 1-9.489 0z" fill="#fff" data-name="Path 209" transform="translate(-672.198 -852.115)"/>
+ </g>
+ <g id="Group_205" data-name="Group 205" transform="translate(661.145 806.287)">
+ <path id="Path_210" d="M688.8 815.776a4.744 4.744 0 1 1 4.744-4.745v4.745z" fill="#fff" data-name="Path 210" transform="translate(-672.198 -806.287)"/>
+ <path id="Path_211" d="M677.751 829.2a4.744 4.744 0 0 1 0 9.489H665.89a4.744 4.744 0 1 1 0-9.489z" fill="#fff" data-name="Path 211" transform="translate(-661.145 -817.34)"/>
+ </g>
+ <g id="Group_206" data-name="Group 206" transform="translate(684.868 806.287)">
+ <path id="Path_212" d="M729.887 833.945a4.744 4.744 0 1 1 4.745 4.745h-4.745z" fill="#fff" data-name="Path 212" transform="translate(-718.026 -817.34)"/>
+ <path id="Path_213" d="M716.462 822.893a4.744 4.744 0 1 1-9.489 0v-11.862a4.744 4.744 0 0 1 9.489 0z" fill="#fff" data-name="Path 213" transform="translate(-706.973 -806.287)"/>
+ </g>
+ <g id="Group_207" data-name="Group 207" transform="translate(684.868 830.01)">
+ <path id="Path_214" d="M711.718 875.029a4.744 4.744 0 1 1-4.745 4.744v-4.744z" fill="#fff" data-name="Path 214" transform="translate(-706.973 -863.168)"/>
+ <path id="Path_215" d="M711.718 861.6a4.744 4.744 0 1 1 0-9.489h11.861a4.744 4.744 0 0 1 0 9.489z" fill="#fff" data-name="Path 215" transform="translate(-706.973 -852.115)"/>
+ </g>
+ </g>
+</svg>
diff --git a/landing-pages/site/assets/icons/stackoverflow.svg b/landing-pages/site/assets/icons/stackoverflow.svg
new file mode 100644
index 0000000..e4dc7da
--- /dev/null
+++ b/landing-pages/site/assets/icons/stackoverflow.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="37.647" height="44.6" viewBox="0 0 37.647 44.6">
+ <g id="Group_209" data-name="Group 209" transform="translate(-645.2 -975.455)">
+ <path id="Path_216" d="M677.028 1043.1v-11.948h3.966v15.914H645.2v-15.914h3.966v11.948z" fill="#fff" data-name="Path 216" transform="translate(0 -27.014)"/>
+ <path id="Path_217" d="M661.012 1003.008l19.467 4.069.824-3.914-19.467-4.069zm2.575-9.27l18.025 8.395 1.648-3.605-18.025-8.446zm5-8.858l15.3 12.721 2.524-3.039-15.3-12.721zm9.888-9.425l-3.193 2.369 11.845 15.965 3.193-2.369zm-17.875 36.617h19.879v-3.966H660.6z" fill="#fff" data-name="Path 217" transform="translate(-7.469)"/>
+ </g>
+</svg>
diff --git a/landing-pages/site/assets/icons/twitter-white.svg b/landing-pages/site/assets/icons/twitter-white.svg
new file mode 100644
index 0000000..ba99e0b
--- /dev/null
+++ b/landing-pages/site/assets/icons/twitter-white.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="44.355" height="44.355" viewBox="0 0 44.355 44.355">
+ <g id="Group_211" data-name="Group 211" transform="translate(-503 -1382.2)">
+ <path id="Path_221" d="M541.811 1382.2h-33.267a5.546 5.546 0 0 0-5.544 5.544v33.266a5.547 5.547 0 0 0 5.544 5.545h33.267a5.546 5.546 0 0 0 5.544-5.545v-33.266a5.546 5.546 0 0 0-5.544-5.544zm-5.611 16.533c.011.244.011.488.011.732 0 7.507-5.722 16.178-16.179 16.178a16.173 16.173 0 0 1-8.7-2.539 10.92 10.92 0 0 0 1.353.078 11.4 11.4 0 0 0 7.064-2.44 5.685 5.685 0 0 1-5.311-3.947 5.725 5.725 0 0 0 2.561-.1 5.7 5.7 0 0 1-4.557-5.578v-.078a5.752 5.752 0 0 0 2.572.71 5.709 5.709 0 0 1-1 [...]
+ </g>
+</svg>
diff --git a/landing-pages/site/assets/icons/youtube.svg b/landing-pages/site/assets/icons/youtube.svg
new file mode 100644
index 0000000..94917db
--- /dev/null
+++ b/landing-pages/site/assets/icons/youtube.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="49.594" height="34.941" viewBox="0 0 49.594 34.941">
+ <path id="Path_223" d="M1124.557 1230a6.232 6.232 0 0 0-4.385-4.413c-3.867-1.043-19.376-1.043-19.376-1.043s-15.508 0-19.376 1.043a6.232 6.232 0 0 0-4.385 4.413c-1.036 3.893-1.036 12.014-1.036 12.014s0 8.122 1.036 12.015a6.232 6.232 0 0 0 4.385 4.413c3.867 1.043 19.376 1.043 19.376 1.043s15.509 0 19.376-1.043a6.232 6.232 0 0 0 4.385-4.413c1.036-3.893 1.036-12.015 1.036-12.015s.001-8.123-1.036-12.014zm-28.833 19.388v-14.748l12.962 7.374z" fill="#fff" data-name="Path 223" transform="tra [...]
+</svg>
diff --git a/landing-pages/site/assets/scss/_base-layout.scss b/landing-pages/site/assets/scss/_base-layout.scss
index e09d0e3..5fe0023 100644
--- a/landing-pages/site/assets/scss/_base-layout.scss
+++ b/landing-pages/site/assets/scss/_base-layout.scss
@@ -24,11 +24,12 @@
&--button {
display: flex;
+ position: sticky;
+ right: 60px;
+ bottom: 40px;
justify-content: flex-end;
- margin-right: 45px;
- margin-top: 80px
+ z-index: 1;
}
-
}
@media (max-width: $mobile) {
diff --git a/landing-pages/site/assets/scss/_buttons.scss b/landing-pages/site/assets/scss/_buttons.scss
index 4aa76fc..7d7d7c3 100644
--- a/landing-pages/site/assets/scss/_buttons.scss
+++ b/landing-pages/site/assets/scss/_buttons.scss
@@ -94,13 +94,6 @@ button {
}
}
- &.button-fixed {
- position: fixed;
- right: 60px;
- bottom: 40px;
- z-index: 1;
- }
-
&.with-box-shadow {
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, .12);
}
diff --git a/landing-pages/site/assets/scss/_footer.scss b/landing-pages/site/assets/scss/_footer.scss
new file mode 100644
index 0000000..511f1db
--- /dev/null
+++ b/landing-pages/site/assets/scss/_footer.scss
@@ -0,0 +1,134 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+@import "colors";
+@import "media";
+
+footer {
+ min-height: unset;
+
+ .footer-section {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ align-items: center;
+
+ span {
+ @extend .bodytext__medium--white;
+ }
+
+ &__media-section {
+ padding: 60px 60px 30px;
+ background-color: map-get($colors, greyish-brown);
+
+ &--link {
+ margin-right: 30px;
+ }
+
+ &--button-with-text {
+ display: flex;
+ align-items: center;
+ }
+
+ &--text {
+ margin-right: 20px;
+ }
+ }
+
+ &__policies-section {
+ padding: 30px 60px;
+ background-color: map-get($colors, slate-grey);
+
+ &--policies {
+ display: flex;
+ }
+
+ &--policy-item {
+ &::before {
+ content: "\00a0\00a0";
+ }
+ &::after {
+ content: "\00a0\00a0|";
+ color: white;
+ }
+ }
+ }
+ }
+
+ .dropdown-toggle {
+ &::after {
+ color: white;
+ vertical-align: middle;
+ }
+ }
+}
+
+@media (max-width: $mobile) {
+ footer {
+ .footer-section {
+ flex-direction: column-reverse;
+ align-items: flex-start;
+
+ span {
+ font-size: 14px !important;
+ line-height: 1.57 !important;
+ }
+
+ &__media-section {
+ padding: 30px 40px;
+
+ svg {
+ height: 31px;
+ width: auto;
+ }
+
+ &--link {
+ margin-right: 20px;
+ }
+
+ &--button-with-text {
+ flex-direction: column;
+ align-items: flex-start;
+ margin-bottom: 47px;
+ }
+
+ &--text {
+ margin-right: 0;
+ margin-bottom: 16px;
+ }
+ }
+
+ &__policies-section {
+ padding: 30px 40px;
+ &--policies {
+ flex-direction: column;
+ }
+
+ &--policy-item {
+ &::before, &::after {
+ content: "";
+ }
+ }
+
+ &--language-toggle{
+ margin: 17px 0 35px;
+ }
+ }
+ }
+ }
+}
diff --git a/landing-pages/site/assets/scss/main-custom.scss b/landing-pages/site/assets/scss/main-custom.scss
index f69bb75..893539e 100644
--- a/landing-pages/site/assets/scss/main-custom.scss
+++ b/landing-pages/site/assets/scss/main-custom.scss
@@ -40,3 +40,4 @@
@import "meetups";
@import "community-page";
@import "install-page";
+@import "footer";
diff --git a/landing-pages/site/config.toml b/landing-pages/site/config.toml
index 961a8ef..2980fae 100644
--- a/landing-pages/site/config.toml
+++ b/landing-pages/site/config.toml
@@ -74,7 +74,7 @@ time_format_blog = "02.01.2006"
# Everything below this are Site Params
[params]
-copyright = "The Docsy Authors"
+copyright = "The Apache Software Foundation"
privacy_policy = "https://policies.google.com/privacy"
# First one is picked as the Twitter card image if not set on page.
@@ -119,38 +119,43 @@ yes = 'Glad to hear it! Please <a href="https://github.com/USERNAME/REPOSITORY/i
no = 'Sorry to hear that. Please <a href="https://github.com/USERNAME/REPOSITORY/issues/new">tell us how we can improve</a>.'
[params.links]
-# End user relevant links. These will show up on left side of footer and in the community page if you have one.
-[[params.links.user]]
- name = "User mailing list"
- url = "https://example.org/mail"
- icon = "fa fa-envelope"
- desc = "Discussion and help from your fellow users"
-[[params.links.user]]
- name ="Twitter"
- url = "https://example.org/twitter"
- icon = "fab fa-twitter"
- desc = "Follow us on Twitter to get the latest news!"
-[[params.links.user]]
- name = "Stack Overflow"
- url = "https://example.org/stack"
- icon = "fab fa-stack-overflow"
- desc = "Practical questions and curated answers"
-# Developer relevant links. These will show up on right side of footer and in the community page if you have one.
-[[params.links.developer]]
- name = "GitHub"
- url = "https://github.com/google/docsy"
- icon = "fab fa-github"
- desc = "Development takes place here!"
-[[params.links.developer]]
+[[params.links.media]]
+ name = "Github"
+ url = "https://github.com"
+ iconName = "github-white.svg"
+[[params.links.media]]
+ name = "Jira"
+ url = "https://jira.atlassian.com/"
+ iconName = "jira.svg"
+[[params.links.media]]
name = "Slack"
- url = "https://example.org/slack"
- icon = "fab fa-slack"
- desc = "Chat with other project developers"
-[[params.links.developer]]
- name = "Developer mailing list"
- url = "https://example.org/mail"
- icon = "fa fa-envelope"
- desc = "Discuss development issues around the project"
+ url = "https://slack.com"
+ iconName = "slack.svg"
+[[params.links.media]]
+ name = "Stack Overflow"
+ url = "https://stackoverflow.com"
+ iconName = "stackoverflow.svg"
+[[params.links.media]]
+ name = "Twitter"
+ url = "https://twitter.com"
+ iconName = "twitter-white.svg"
+[[params.links.media]]
+ name = "Youtube"
+ url = "https://youtube.com"
+ iconName = "youtube.svg"
+
+[[params.links.policies]]
+ name = "AIP"
+ url = "/"
+[[params.links.policies]]
+ name = "Season of Docs"
+ url = "/docs"
+[[params.links.policies]]
+ name = "Privacy policy & terms"
+ url = "/"
+[[params.links.policies]]
+ name = "Cookies"
+ url = "/"
[related]
threshold = 50.0
diff --git a/landing-pages/site/layouts/_default/baseof.html b/landing-pages/site/layouts/_default/baseof.html
index b83b82f..78ffb77 100644
--- a/landing-pages/site/layouts/_default/baseof.html
+++ b/landing-pages/site/layouts/_default/baseof.html
@@ -35,8 +35,8 @@
</a>
</div>
</main>
- {{ partial "footer.html" . }}
</div>
+{{ partialCached "footer.html" . }}
{{ partialCached "scripts.html" . }}
</body>
{{ $script := .Site.Data.webpack.main }}
diff --git a/landing-pages/site/layouts/blog/baseof.html b/landing-pages/site/layouts/blog/baseof.html
index b83b82f..f73b028 100644
--- a/landing-pages/site/layouts/blog/baseof.html
+++ b/landing-pages/site/layouts/blog/baseof.html
@@ -31,12 +31,12 @@
{{ block "main" . }}{{ end }}
<div class="base-layout--button">
<a href="https://github.com">
- {{ partial "buttons/button-with-icon" (dict "text" "Suggest a change on this page" "class" "button-fixed") }}
+ {{ partial "buttons/button-with-icon" (dict "text" "Suggest a change on this page") }}
</a>
</div>
</main>
- {{ partial "footer.html" . }}
</div>
+{{ partialCached "footer.html" . }}
{{ partialCached "scripts.html" . }}
</body>
{{ $script := .Site.Data.webpack.main }}
diff --git a/landing-pages/site/layouts/case-studies/baseof.html b/landing-pages/site/layouts/case-studies/baseof.html
index b83b82f..78ffb77 100644
--- a/landing-pages/site/layouts/case-studies/baseof.html
+++ b/landing-pages/site/layouts/case-studies/baseof.html
@@ -35,8 +35,8 @@
</a>
</div>
</main>
- {{ partial "footer.html" . }}
</div>
+{{ partialCached "footer.html" . }}
{{ partialCached "scripts.html" . }}
</body>
{{ $script := .Site.Data.webpack.main }}
diff --git a/landing-pages/site/layouts/community/baseof.html b/landing-pages/site/layouts/community/baseof.html
index b83b82f..78ffb77 100644
--- a/landing-pages/site/layouts/community/baseof.html
+++ b/landing-pages/site/layouts/community/baseof.html
@@ -35,8 +35,8 @@
</a>
</div>
</main>
- {{ partial "footer.html" . }}
</div>
+{{ partialCached "footer.html" . }}
{{ partialCached "scripts.html" . }}
</body>
{{ $script := .Site.Data.webpack.main }}
diff --git a/landing-pages/site/layouts/install/baseof.html b/landing-pages/site/layouts/install/baseof.html
index b83b82f..78ffb77 100644
--- a/landing-pages/site/layouts/install/baseof.html
+++ b/landing-pages/site/layouts/install/baseof.html
@@ -35,8 +35,8 @@
</a>
</div>
</main>
- {{ partial "footer.html" . }}
</div>
+{{ partialCached "footer.html" . }}
{{ partialCached "scripts.html" . }}
</body>
{{ $script := .Site.Data.webpack.main }}
diff --git a/landing-pages/site/layouts/meetups/baseof.html b/landing-pages/site/layouts/meetups/baseof.html
index b83b82f..78ffb77 100644
--- a/landing-pages/site/layouts/meetups/baseof.html
+++ b/landing-pages/site/layouts/meetups/baseof.html
@@ -35,8 +35,8 @@
</a>
</div>
</main>
- {{ partial "footer.html" . }}
</div>
+{{ partialCached "footer.html" . }}
{{ partialCached "scripts.html" . }}
</body>
{{ $script := .Site.Data.webpack.main }}
diff --git a/landing-pages/site/layouts/partials/footer.html b/landing-pages/site/layouts/partials/footer.html
new file mode 100644
index 0000000..38a7baa
--- /dev/null
+++ b/landing-pages/site/layouts/partials/footer.html
@@ -0,0 +1,58 @@
+{{/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/}}
+
+{{ $links := .Site.Params.links }}
+<footer>
+ <div class="footer-section footer-section__media-section">
+ <div class="d-flex align-items-center">
+ {{ with $links }}
+ {{ with index . "media"}}
+ {{ range . }}
+ <a class="footer-section__media-section--link" target="_blank" href="{{ .url }}">
+ {{ with resources.Get (print "icons/" .iconName) }}{{ .Content | safeHTML }}{{ end }}
+ </a>
+ {{ end }}
+ {{ end }}
+ {{ end }}
+ </div>
+ <div class="footer-section__media-section--button-with-text">
+ <span class="footer-section__media-section--text">Want to be a part of Apache Airflow?</span>
+ <a href="/community">
+ {{ partial "buttons/button-filled" (dict "text" "Join community") }}
+ </a>
+ </div>
+ </div>
+ <div class="footer-section footer-section__policies-section">
+ {{ with .Site.Params.copyright }}<span>© {{ . }}</span>{{ end }}
+ <div class="footer-section__policies-section--policies">
+ {{ with $links }}
+ {{ with index . "policies"}}
+ {{ range . }}
+ <a href="{{ .url }}" class="footer-section__policies-section--policy-item">
+ <span>{{ .name }}</span>
+ </a>
+ {{ end }}
+ {{ end }}
+ {{ end }}
+ <div class="footer-section__policies-section--language-toggle">
+ {{ partial "lang-selector" . }}
+ </div>
+ </div>
+ </div>
+</footer>
diff --git a/landing-pages/site/layouts/partials/lang-selector.html b/landing-pages/site/layouts/partials/lang-selector.html
new file mode 100644
index 0000000..b50cbce
--- /dev/null
+++ b/landing-pages/site/layouts/partials/lang-selector.html
@@ -0,0 +1,28 @@
+{{/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/}}
+
+{{ $langPage := cond (gt (len .Translations) 0) . .Site.Home }}
+<a class="dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+ <span>{{ $langPage.Language.LanguageName }}</span>
+</a>
+<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
+ {{ range $langPage.Translations }}
+ <a class="dropdown-item" href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a>
+ {{ end }}
+</div>