Sfoglia il codice sorgente

ajax nav for productions is working

Bachir Soussi Chiadmi 6 anni fa
parent
commit
b64a2b289e

+ 14 - 2
sites/all/modules/figli/edlp_productions/edlp_productions.module

@@ -85,7 +85,13 @@ function edlp_productions_node_view(array &$build, \Drupal\Core\Entity\EntityInt
           ];
           $tree = $menu_tree_service->transform($tree, $manipulators);
           // And the last step is to actually build the tree.
-          $build['production_parent'] = $menu_tree_service->build($tree);
+          $build['production_parent'] = array(
+            '#type'=>"container",
+            '#attributes'=>array(
+              'class'=>'productions-parent'
+            ),
+            'menu'=>$menu_tree_service->build($tree)
+          );
         }
       }
 
@@ -108,7 +114,13 @@ function edlp_productions_node_view(array &$build, \Drupal\Core\Entity\EntityInt
         ];
         $tree = $menu_tree_service->transform($tree, $manipulators);
         // And the last step is to actually build the tree.
-        $build['production_subtree'] = $menu_tree_service->build($tree);
+        $build['production_subtree'] = array(
+          '#type'=>"container",
+          '#attributes'=>array(
+            'class'=>'productions-subtree'
+          ),
+          'menu'=>$menu_tree_service->build($tree)
+        );
       }
     }
   }

+ 6 - 3
sites/all/themes/custom/edlptheme/assets/dist/scripts/main.min.js

@@ -33,6 +33,9 @@ edlp_vars = {
 
     function init(){
       console.log("EdlpTheme init()");
+
+      // TODO: redirect all no-front pages to front with write hash
+
       _$body.on('corpus-map-ready', onCorpusMapReady);
       initScrollbars();
       initAjaxLinks();
@@ -62,14 +65,14 @@ edlp_vars = {
     // TODO: implement history.js
     function  initAjaxLinks(){
       console.log('initAjaxLinks');
-      $('a', '#block-mainnavigation, #block-footer.menu--footer, #block-productions').addClass('ajax-link');
+      $('a', '#block-mainnavigation, #block-footer.menu--footer, #block-productions, article.node h2.node-title, .productions-subtree, .productions-parent').addClass('ajax-link');
 
-      _$ajaxLinks = $('.ajax-link')
+      _$ajaxLinks = $('.ajax-link:not(.ajax-enabled)')
         .each(function(i,e){
           var $this = $(this);
 
           // avoid already ajaxified links
-          if($this.is('.ajax-enable')) return;
+          // if($this.is('.ajax-enable')) return;
 
           var sys_path = $this.attr('data-drupal-link-system-path');
           if(sys_path){

+ 6 - 3
sites/all/themes/custom/edlptheme/assets/scripts/main.js

@@ -10,6 +10,9 @@
 
     function init(){
       console.log("EdlpTheme init()");
+
+      // TODO: redirect all no-front pages to front with write hash
+
       _$body.on('corpus-map-ready', onCorpusMapReady);
       initScrollbars();
       initAjaxLinks();
@@ -39,14 +42,14 @@
     // TODO: implement history.js
     function  initAjaxLinks(){
       console.log('initAjaxLinks');
-      $('a', '#block-mainnavigation, #block-footer.menu--footer, #block-productions').addClass('ajax-link');
+      $('a', '#block-mainnavigation, #block-footer.menu--footer, #block-productions, article.node h2.node-title, .productions-subtree, .productions-parent').addClass('ajax-link');
 
-      _$ajaxLinks = $('.ajax-link')
+      _$ajaxLinks = $('.ajax-link:not(.ajax-enabled)')
         .each(function(i,e){
           var $this = $(this);
 
           // avoid already ajaxified links
-          if($this.is('.ajax-enable')) return;
+          // if($this.is('.ajax-enable')) return;
 
           var sys_path = $this.attr('data-drupal-link-system-path');
           if(sys_path){

+ 11 - 0
sites/all/themes/custom/edlptheme/edlptheme.theme

@@ -7,12 +7,23 @@
 
 
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Template\Attribute;
 
 // function edlptheme_preprocess_input(&$vars){
   // dsm($vars, 'vars');
   // $vars['attributes']['placeholder'] = "salut";
 // }
 
+function edlptheme_preprocess_node(&$vars){
+  $node = $vars['elements']['#node'];
+  $options = ['absolute' => TRUE];
+  $url = \Drupal\Core\Url::fromRoute('entity.node.canonical', ['node' => $node->id()], $options);
+  $system_path = $url->getInternalPath();
+  $vars['link_attributes'] = new Attribute(array(
+    'data-drupal-link-system-path' => $system_path=='' ? '<front>' : $system_path
+  ));
+}
+
 /**
  * Implements hook_form_alter
  */

+ 1 - 1
sites/all/themes/custom/edlptheme/templates/content/edlp-ajax-node.html.twig

@@ -1,5 +1,5 @@
 <div class="row">
-  <div class="col small-col-12 med-col-3 large-col-3">
+  <div class="col small-col-12 med-col-4 large-col-4">
     <div class="wrapper">
       {{ node }}
     </div>

+ 1 - 1
sites/all/themes/custom/edlptheme/templates/content/node--page--image-1-columns.html.twig

@@ -93,7 +93,7 @@
     {{ title_prefix }}
     {% if not page %}
       <h2{{ title_attributes.addClass('node-title') }}>
-        <a href="{{ url }}" rel="bookmark">{{ label }}</a>
+        <a href="{{ url }}" rel="bookmark" {{ link_attributes }}>{{ label }}</a>
       </h2>
     {% endif %}
     {{ title_suffix }}

+ 1 - 1
sites/all/themes/custom/edlptheme/templates/content/node--page--image-2-columns.html.twig

@@ -93,7 +93,7 @@
     {{ title_prefix }}
     {% if not page %}
       <h2{{ title_attributes.addClass('node-title') }}>
-        <a href="{{ url }}" rel="bookmark">{{ label }}</a>
+        <a href="{{ url }}" rel="bookmark"  {{ link_attributes }}>{{ label }}</a>
       </h2>
     {% endif %}
     {{ title_suffix }}

+ 108 - 0
sites/all/themes/custom/edlptheme/templates/content/node--page.html.twig

@@ -0,0 +1,108 @@
+{#
+/**
+ * @file
+ * Theme override to display a node.
+ *
+ * Available variables:
+ * - node: The node entity with limited access to object properties and methods.
+ *   Only method names starting with "get", "has", or "is" and a few common
+ *   methods such as "id", "label", and "bundle" are available. For example:
+ *   - node.getCreatedTime() will return the node creation timestamp.
+ *   - node.hasField('field_example') returns TRUE if the node bundle includes
+ *     field_example. (This does not indicate the presence of a value in this
+ *     field.)
+ *   - node.isPublished() will return whether the node is published or not.
+ *   Calling other methods, such as node.delete(), will result in an exception.
+ *   See \Drupal\node\Entity\Node for a full list of public properties and
+ *   methods for the node object.
+ * - label: The title of the node.
+ * - content: All node items. Use {{ content }} to print them all,
+ *   or print a subset such as {{ content.field_example }}. Use
+ *   {{ content|without('field_example') }} to temporarily suppress the printing
+ *   of a given child element.
+ * - author_picture: The node author user entity, rendered using the "compact"
+ *   view mode.
+ * - metadata: Metadata for this node.
+ * - date: Themed creation date field.
+ * - author_name: Themed author name field.
+ * - url: Direct URL of the current node.
+ * - display_submitted: Whether submission information should be displayed.
+ * - attributes: HTML attributes for the containing element.
+ *   The attributes.class element may contain one or more of the following
+ *   classes:
+ *   - node: The current template type (also known as a "theming hook").
+ *   - node--type-[type]: The current node type. For example, if the node is an
+ *     "Article" it would result in "node--type-article". Note that the machine
+ *     name will often be in a short form of the human readable label.
+ *   - node--view-mode-[view_mode]: The View Mode of the node; for example, a
+ *     teaser would result in: "node--view-mode-teaser", and
+ *     full: "node--view-mode-full".
+ *   The following are controlled through the node publishing options.
+ *   - node--promoted: Appears on nodes promoted to the front page.
+ *   - node--sticky: Appears on nodes ordered above other non-sticky nodes in
+ *     teaser listings.
+ *   - node--unpublished: Appears on unpublished nodes visible only to site
+ *     admins.
+ * - title_attributes: Same as attributes, except applied to the main title
+ *   tag that appears in the template.
+ * - content_attributes: Same as attributes, except applied to the main
+ *   content tag that appears in the template.
+ * - author_attributes: Same as attributes, except applied to the author of
+ *   the node tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ *   displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ *   displayed after the main title tag that appears in the template.
+ * - view_mode: View mode; for example, "teaser" or "full".
+ * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
+ * - page: Flag for the full page state. Will be true if view_mode is 'full'.
+ * - readmore: Flag for more state. Will be true if the teaser content of the
+ *   node cannot hold the main body content.
+ * - logged_in: Flag for authenticated user status. Will be true when the
+ *   current user is a logged-in member.
+ * - is_admin: Flag for admin user status. Will be true when the current user
+ *   is an administrator.
+ *
+ * @see template_preprocess_node()
+ *
+ * @todo Remove the id attribute (or make it a class), because if that gets
+ *   rendered twice on a page this is invalid CSS for example: two lists
+ *   in different view modes.
+ */
+#}
+{%
+  set classes = [
+    'node',
+    'node--type-' ~ node.bundle|clean_class,
+    node.isPromoted() ? 'node--promoted',
+    node.isSticky() ? 'node--sticky',
+    not node.isPublished() ? 'node--unpublished',
+    view_mode ? 'node--view-mode-' ~ view_mode|clean_class,
+  ]
+%}
+{{ attach_library('classy/node') }}
+<article{{ attributes.addClass(classes) }}>
+
+  {{ content.production_parent }}
+
+  {{ title_prefix }}
+    <h2{{ title_attributes.addClass('node-title') }}>
+      <a href="{{ url }}" rel="bookmark"  {{ link_attributes }}>{{ label }}</a>
+    </h2>
+  {{ title_suffix }}
+
+  {% if display_submitted %}
+    <footer class="node__meta">
+      {{ author_picture }}
+      <div{{ author_attributes.addClass('node__submitted') }}>
+        {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
+        {{ metadata }}
+      </div>
+    </footer>
+  {% endif %}
+
+  <div{{ content_attributes.addClass('node__content') }}>
+    {{ content|without('production_parent') }}
+  </div>
+
+</article>

+ 4 - 2
sites/all/themes/custom/edlptheme/templates/content/node--page--full.html.twig → sites/all/themes/custom/edlptheme/templates/content/node.html.twig

@@ -84,9 +84,11 @@
 <article{{ attributes.addClass(classes) }}>
 
   {{ title_prefix }}
-    <h2{{ title_attributes }}>
-      {{ label }}
+  {% if not page %}
+    <h2{{ title_attributes.addClass('node-title') }}>
+      <a href="{{ url }}" rel="bookmark" {{ link_attributes }}>{{ label }}</a>
     </h2>
+  {% endif %}
   {{ title_suffix }}
 
   {% if display_submitted %}