--- /dev/null
+/* Footer */
+
+.footer {
+ color: #FFF;
+ border: none !important;
+}
+.footer a { color: #729fcf; }
+.footer a:hover { color: #FFF; }
+.footer h4 { font-weight: bold; }
+.footer .copyright { font-size: 0.9em; text-align: center; width: 80%; margin-top: 1em; border-top: 1px solid #111; padding: 1em; }
+
--- /dev/null
+name: Footer
+description: Footer
+core: 8.x
+package: RYF Custom Module
+dependencies:
+- node
+- block
+type: module
--- /dev/null
+footer:
+ css:
+ theme:
+ css/footer.css: {}
+ js:
+ js/footer.js: {}
+
--- /dev/null
+<?php
+/**
+ * @file
+ * Code for the footer module.
+ */
+
+/**
+ * Implements hook_theme()
+ */
+
+function footer_theme($existing, $type, $theme, $path) {
+ return [
+ 'footer' => [
+ 'variables' => ['menu_array' => NULL ]
+ ],
+
+ ];
+}
--- /dev/null
+(function($){
+ $(document).ready(function(){
+ });
+
+})(jQuery);
--- /dev/null
+<?php
+/**
+ * @file
+ * Contains \Drupal\footer\Plugin\Block\FooterBlock.
+ */
+namespace Drupal\footer\Plugin\Block;
+use Drupal\Core\Menu\MenuTreeParameters;
+use Drupal\Core\Block\BlockBase;
+use Drupal\node\Entity\Node;
+use Drupal\Core\Block\BlockPluginInterface;
+use Drupal\Core\Form\FormStateInterface;
+
+
+/**
+ * Provides a 'footer' block.
+ *
+ * @Block(
+ * id = "footer_block",
+ * admin_label = @Translation("Footer"),
+ * category = @Translation("RYF Custom Module")
+ * )
+ */
+class FooterBlock extends BlockBase implements BlockPluginInterface {
+ /**
+ * {@inheritdoc}
+ */
+ public function build() {
+
+ $menu_tree_parameters = new MenuTreeParameters();
+ $tree = \Drupal::menuTree()->load('footer', $menu_tree_parameters);
+
+ $cc = 0;
+ foreach($tree as $menu){
+ $title = $menu->link->getTitle();
+ $urlObject = $menu->link->getUrlObject();
+ $url = $urlObject->toString();
+ $weight = $menu->link->getWeight();
+ $enabled = $menu->link->isEnabled();
+
+ if($enabled) {
+ $menu_array[$cc]['title'] = $title;
+ $menu_array[$cc]['url'] = $url;
+ $menu_array[$cc]['weight'] = $weight;
+ $cc++;
+ }
+
+ }
+
+ usort($menu_array, function($a, $b) {
+ return $a['weight'] - $b['weight'];
+ });
+
+ return array(
+ '#theme' => 'footer',
+ '#menu_array' => $menu_array,
+ '#attached' => array(
+ 'library' => array(
+ 'footer/footer',
+ ),
+ ),
+
+ );
+
+ }
+
+}
--- /dev/null
+<div class="container">
+<div class="col-md-4">
+<div class="ryf-footer">
+<p><img alt="Free Software Foundation" src="/themes/ryf/images/fsf-logo.svg" /></p>
+
+<p>Send your feedback on our translations and new translations of pages to <a href="#">campaigns@fsf.org</a>.</p>
+</div>
+</div>
+
+<div class="col-md-offset-2 col-md-3">
+<div class="campaigns">
+<h4>Campaigns</h4>
+
+<ul>
+ <li><a href="/campaigns/priority-projects/">High Priority Free Software Projects</a></li>
+ <li><a href="/campaigns/freejs/">Free JavaScript</a></li>
+ <li><a href="/campaigns/campaigns/secure-boot-vs-restricted-boot/">Secure Boot vs Restricted Boot</a></li>
+ <li><a href="/windows/">Upgrade from Windows</a></li>
+ <li><a href="/campaigns/surveillance/">Surveillance</a></li>
+ <li><a href="https://www.gnu.org/">GNU Operating System</a></li>
+ <li><a href="https://defectivebydesign.org/">Defective by Design</a></li>
+ <li><i><a href="##">See all campaigns</a></i></li>
+ </ul>
+
+</div>
+<!-- .campaigns --></div>
+
+<div class="col-md-3">
+<div class="get-involved">
+<h4>Get Involved</h4>
+
+<ul>
+ {% for this_menu in menu_array %}
+ <li>
+ <a class="footer-link" href="{{ this_menu.url }}">{{ this_menu.title }}</a>
+ </li>
+ {% endfor %}
+</ul>
+</div>
+<!-- .get-involved --></div>
+</div>
+
+<div class="container copyright">Send your feedback on our translations and new translations of pages to <a href="mailto:campaigns@fsf.org">campaigns@fsf.org</a>.
+ <br />Copyright © 2004–{{ "now"|date("Y") }} <a href="//fsf.org/about/contact.html" title="Find out how to contact us">Free Software Foundation</a>, Inc.
+ <a href="https://my.fsf.org/donate/privacypolicy.html">Privacy Policy</a>.
+</div>
+