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>&copy; {{ . }}</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>