Browse Source

new mobile home #423

Bachir Soussi Chiadmi 3 years ago
parent
commit
89d3753b74

+ 39 - 1
web/modules/custom/edlp_home/edlp_home.module

@@ -22,12 +22,50 @@ function edlp_home_theme($existing, $type, $theme, $path) {
         // 'presentation_node' => NULL,
         // 'last_fil_node' => NULL,
         // 'last_production_node' => NULL,
-        'promoted_nodes' => array(),
+        'promoted_statics' => array(),
+        'promoted_prods' => array(),
         'lastdocs_items' => NULL,
         'agenda_items' => NULL,
         // 'entrees_items' => NULL,
         'collection_link' => NULL,
+        'production_link' => NULL,
+        'agenda_link' => NULL,
       ),
     ),
   );
 }
+
+/**
+ * Implements hook_theme_suggestions_HOOK().
+ */
+function edlp_home_theme_suggestions_edlp_home_alter(array &$suggestions, array $variables) {
+  $is_mobile_domain = false;
+
+  // get domains from domain module
+  $domain_storage = \Drupal::entityTypeManager()->getStorage('domain');
+  $mobile_domain_id = 'm_encyclopediedelaparole_org';
+  // $mobile_domain = $domain_storage->load('m_encyclopediedelaparole_org');
+  global $base_root;
+  // get the current hostname (domain)
+  $current_hostname = preg_replace('/http:\/\/|https:\/\//i', '', $base_root);
+  // get the current domain
+  $current_domain = $domain_storage->loadByHostname($current_hostname);
+
+  if($current_domain){
+    // we are in a main domain
+    // $is_mobile_domain = ($current_domain->id() == $mobile_domain_id);
+    $current_domain_id = $current_domain->id();
+  }else{
+    // we are not in a main domain, so we look for an alias
+    $domain_alias_storage = \Drupal::entityTypeManager()->getStorage('domain_alias');
+    $alias = $domain_alias_storage->loadByHostname($current_hostname);
+    // dpm($alias, '$alias');
+    $current_domain_id = $alias->getDomainId();
+  }
+
+  $is_mobile_domain = $current_domain_id == $mobile_domain_id;
+
+  if($is_mobile_domain){
+    array_unshift($suggestions, 'edlp_home__mobile');
+  }
+}

+ 67 - 24
web/modules/custom/edlp_home/includes/edlp_home.inc

@@ -7,30 +7,33 @@ function template_preprocess_edlp_home(&$vars){
   // $term_view_builder = \Drupal::entityTypeManager()->getViewBuilder('taxonomy_term');
   // dpm($vars);
 
-  // render the promoted_nodes
-  $vars['nodes'] = array();
-  if(isset($vars['promoted_nodes'])){
-    foreach($vars['promoted_nodes'] as $node){
-      if($node->hasField('field_view_mode')){
-        switch($node->get('field_view_mode')->value){
-          case "1":
-          $vm = "image_2_columns";
-          break;
-          case "2":
-          $vm = "image_1_columns";
-          break;
-          case "3":
-          $vm = "text_1_column";
-          break;
-        };
-      }else{
-        $vm = 'default';
-      }
+  // render the promoted_statics and promoted_prods
+  $promoteds = ['statics', 'prods'];
+  foreach ($promoteds as $index => $p) {
+    $vars['nodes_' . $p] = array();
+    if(isset($vars['promoted_' . $p])){
+      foreach($vars['promoted_' . $p] as $node){
+        if($node->hasField('field_view_mode')){
+          switch($node->get('field_view_mode')->value){
+            case "1":
+            $vm = "image_2_columns";
+            break;
+            case "2":
+            $vm = "image_1_columns";
+            break;
+            case "3":
+            $vm = "text_1_column";
+            break;
+          };
+        }else{
+          $vm = 'default';
+        }
 
-      $vars['nodes'][] = array(
-        'vm'=>$vm,
-        'build'=>$node_view_builder->view($node, $vm)
-      );
+        $vars['nodes_' . $p][] = array(
+          'vm'=>$vm,
+          'build'=>$node_view_builder->view($node, $vm)
+        );
+      }
     }
   }
 
@@ -169,7 +172,47 @@ function template_preprocess_edlp_home(&$vars){
         )
       )
     );
-    $vars['collection'] = render($collection);
+    $vars['collection_link_rendered'] = render($collection);
+  }
+
+  if(isset($vars['production_link'])){
+    $production = array(
+      '#type'=>"container",
+      'title'=>array(
+        '#prefix'=> '<h3>',
+        '#title' => t("Production"),
+        '#suffix' => '</h3>',
+        '#type' => 'link',
+        '#url' => $vars['production_link']['url'],
+        '#options'=>array(
+          'attributes' => array(
+            'data-drupal-link-system-path' => $vars['production_link']['internal_path'],
+            'class' => array('ajax-link'),
+          )
+        )
+      )
+    );
+    $vars['production_link_rendered'] = render($production);
+  }
+
+  if(isset($vars['agenda_link'])){
+    $agenda = array(
+      '#type'=>"container",
+      'title'=>array(
+        '#prefix'=> '<h3>',
+        '#title' => t("Agenda"),
+        '#suffix' => '</h3>',
+        '#type' => 'link',
+        '#url' => $vars['agenda_link']['url'],
+        '#options'=>array(
+          'attributes' => array(
+            'data-drupal-link-system-path' => $vars['agenda_link']['internal_path'],
+            'class' => array('ajax-link'),
+          )
+        )
+      )
+    );
+    $vars['agenda_link_rendered'] = render($agenda);
   }
 
 }

+ 18 - 6
web/modules/custom/edlp_home/src/Controller/HomeController.php

@@ -35,7 +35,7 @@ class HomeController extends ControllerBase {
       ->condition('type', 'static');
 
     $promoted_nids = $query->execute();
-    $contents["#promoted_nodes"] = entity_load_multiple('node', $promoted_nids);
+    $contents["#promoted_statics"] = entity_load_multiple('node', $promoted_nids);
 
     // then get production pages
     $query = \Drupal::entityQuery('node')
@@ -44,7 +44,7 @@ class HomeController extends ControllerBase {
       ->condition('type', 'page');
 
     $promoted_nids = $query->execute();
-    $contents["#promoted_nodes"] += entity_load_multiple('node', $promoted_nids);
+    $contents["#promoted_prods"] = entity_load_multiple('node', $promoted_nids);
 
     // presentation
     // $query = \Drupal::entityQuery('node')
@@ -137,7 +137,7 @@ class HomeController extends ControllerBase {
       ->condition('type', 'static');
 
     $promoted_nids = $query->execute();
-    $renderable["#promoted_nodes"] = entity_load_multiple('node', $promoted_nids);
+    $renderable["#promoted_statics"] = entity_load_multiple('node', $promoted_nids);
 
     // then get production pages
     $query = \Drupal::entityQuery('node')
@@ -146,7 +146,7 @@ class HomeController extends ControllerBase {
       ->condition('type', 'page');
 
     $promoted_nids = $query->execute();
-    $renderable["#promoted_nodes"] += entity_load_multiple('node', $promoted_nids);
+    $renderable["#promoted_prods"] = entity_load_multiple('node', $promoted_nids);
 
     // last fil
     // $query = \Drupal::entityQuery('node')
@@ -160,9 +160,9 @@ class HomeController extends ControllerBase {
     // $renderable["#last_fil_node"] = array('#markup'=>'En développement.');
 
     // agenda
+    /*
     $now = new DrupalDateTime('now');
     $now->setTimezone(new \DateTimeZone(DATETIME_STORAGE_TIMEZONE));
-
     $query = \Drupal::entityQuery('node')
       ->condition('status', 1)
       ->condition('type', 'evenement')
@@ -172,7 +172,7 @@ class HomeController extends ControllerBase {
 
     $events = $query->execute();
     $renderable['#agenda_items'] = entity_load_multiple('node', $events);
-
+    */
 
     // Collection
     // TODO: get the link to mobile collection page
@@ -182,7 +182,19 @@ class HomeController extends ControllerBase {
       'internal_path' => $collection_url->getInternalPath(),
     );
 
+    // Production
+    $production_url = Url::fromRoute('edlp_productions.productions');
+    $renderable['#production_link'] = array(
+      'url' => $production_url,
+      'internal_path' => $production_url->getInternalPath(),
+    );
 
+    // Agenda
+    $agenda_url = Url::fromRoute('edlp_agenda.agenda');
+    $renderable['#agenda_link'] = array(
+      'url' => $agenda_url,
+      'internal_path' => $agenda_url->getInternalPath(),
+    );
 
     return $renderable;
   }

+ 18 - 4
web/modules/custom/edlp_home/templates/edlp-home.html.twig

@@ -2,8 +2,14 @@
 {# last_fil #}
 {# last_production #}
 
-{% if nodes %}
-  {% for node in nodes %}
+{% if nodes_statics %}
+  {% for node in nodes_statics %}
+  {{ node.build }}
+  {% endfor %}
+{% endif %}
+
+{% if nodes_prods %}
+  {% for node in nodes_prods %}
   {{ node.build }}
   {% endfor %}
 {% endif %}
@@ -16,6 +22,14 @@
   {{ agenda }}
 {% endif %}
 
-{% if collection %}
-  {{ collection }}
+{% if collection_link_rendered %}
+  {{ collection_link_rendered }}
+{% endif %}
+
+{% if production_link_rendered %}
+  {{ production_link_rendered }}
+{% endif %}
+
+{% if agenda_link_rendered %}
+  {{ agenda_link_rendered }}
 {% endif %}

File diff suppressed because it is too large
+ 0 - 0
web/themes/custom/edlptheme/assets/dist/styles/app.min.css


+ 4 - 2
web/themes/custom/edlptheme/assets/styles/app.scss

@@ -707,7 +707,9 @@ main[role="main"]{
 
   }
 
-  .collection{
+  .collection-link,
+  .production-link,
+  .agenda-link{
     h3{
       @include content_titles;
       text-align: center;
@@ -2032,7 +2034,7 @@ body.path-frontpage, body.path-productions{
             // p{margin: 0;}
           }
 
-          &.node--view-mode-image-2-columns{
+          html:not(.is-mobile) &.node--view-mode-image-2-columns{
             header{
               position: absolute;
               bottom: 0; left:0;

+ 21 - 15
web/themes/custom/edlptheme/edlptheme.theme

@@ -109,22 +109,28 @@ function edlptheme_theme_suggestions_taxonomy_term_alter(&$suggestions, $variabl
 }
 
 function edlptheme_preprocess_edlp_home(&$vars){
-  foreach($vars['nodes'] as &$node){
-    switch($node['vm']){
-      case "image_2_columns":
-        $cols = 4;
-        break;
-      case "image_1_columns":
-        $cols = 2;
-        break;
-      case "text_1_column":
-        $cols = 2;
-        break;
-      default:
-        $cols = 3;
-    };
-    $node['cols'] = $cols;
+  // render the promoted_statics and promoted_prods
+  $promoteds = ['statics', 'prods'];
+  // dpm($vars);
+  foreach ($promoteds as $index => $p) {
+    foreach($vars['nodes_' . $p] as &$node){
+      switch($node['vm']){
+        case "image_2_columns":
+          $cols = 4;
+          break;
+        case "image_1_columns":
+          $cols = 2;
+          break;
+        case "text_1_column":
+          $cols = 2;
+          break;
+        default:
+          $cols = 3;
+      };
+      $node['cols'] = $cols;
+    }
   }
+
 }
 
 function edlptheme_preprocess_taxonomy_term__entrees__mobile_home(&$vars){

+ 62 - 0
web/themes/custom/edlptheme/templates/content/edlp-home--mobile.html.twig

@@ -0,0 +1,62 @@
+<div class="grid">
+
+  {% if nodes_prods %}
+    {% for node in nodes_prods %}
+      <div class="col small-col-12 med-col-4 large-col-{{ node.cols }}">
+        <div class="wrapper">
+          {{ node.build }}
+        </div>
+      </div>
+    {% endfor %}
+  {% endif %}
+
+  {% if nodes_statics %}
+    {% for node in nodes_statics %}
+      <div class="col small-col-12 med-col-4 large-col-{{ node.cols }}">
+        <div class="wrapper">
+          {{ node.build }}
+        </div>
+      </div>
+    {% endfor %}
+  {% endif %}
+
+  {% if lastdocs %}
+    <div class="lastdocs-home col small-col-12 med-col-4 large-col-2">
+      <div class="wrapper">
+        {{ lastdocs }}
+      </div>
+    </div>
+  {% endif %}
+
+  {% if agenda %}
+    <div class="agenda col small-col-12 med-col-4 large-col-2">
+      <div class="wrapper">
+        {{ agenda }}
+      </div>
+    </div>
+  {% endif %}
+
+  {% if collection_link_rendered %}
+    <div class="collection-link col small-col-12 med-col-4 large-col-3">
+      <div class="wrapper">
+        {{ collection_link_rendered }}
+      </div>
+    </div>
+  {% endif %}
+
+  {% if production_link_rendered %}
+    <div class="production-link col small-col-12 med-col-4 large-col-3">
+      <div class="wrapper">
+        {{ production_link_rendered }}
+      </div>
+    </div>
+  {% endif %}
+
+  {% if agenda_link_rendered %}
+    <div class="agenda-link col small-col-12 med-col-4 large-col-3">
+      <div class="wrapper">
+        {{ agenda_link_rendered }}
+      </div>
+    </div>
+  {% endif %}
+</div>

+ 31 - 5
web/themes/custom/edlptheme/templates/content/edlp-home.html.twig

@@ -17,8 +17,18 @@
 #}
 <div class="grid">
 
-  {% if nodes %}
-    {% for node in nodes %}
+  {% if nodes_statics %}
+    {% for node in nodes_statics %}
+      <div class="col small-col-12 med-col-4 large-col-{{ node.cols }}">
+        <div class="wrapper">
+          {{ node.build }}
+        </div>
+      </div>
+    {% endfor %}
+  {% endif %}
+
+  {% if nodes_prods %}
+    {% for node in nodes_prods %}
       <div class="col small-col-12 med-col-4 large-col-{{ node.cols }}">
         <div class="wrapper">
           {{ node.build }}
@@ -43,10 +53,26 @@
     </div>
   {% endif %}
 
-  {% if collection %}
-    <div class="collection col small-col-12 med-col-4 large-col-3">
+  {% if collection_link_rendered %}
+    <div class="collection_link col small-col-12 med-col-4 large-col-3">
+      <div class="wrapper">
+        {{ collection_link_rendered }}
+      </div>
+    </div>
+  {% endif %}
+
+  {% if production_link_rendered %}
+    <div class="production_link col small-col-12 med-col-4 large-col-3">
+      <div class="wrapper">
+        {{ production_link_rendered }}
+      </div>
+    </div>
+  {% endif %}
+
+  {% if agenda_link_rendered %}
+    <div class="agenda_link col small-col-12 med-col-4 large-col-3">
       <div class="wrapper">
-        {{ collection }}
+        {{ agenda_link_rendered }}
       </div>
     </div>
   {% endif %}

Some files were not shown because too many files changed in this diff