Browse Source

added chutier action link to indexes, fixe #543

Bachir Soussi Chiadmi 4 years ago
parent
commit
1447bb3ef9

+ 5 - 1
config/sync/core.entity_view_display.node.enregistrement.docsindex.yml

@@ -27,6 +27,11 @@ targetEntityType: node
 bundle: enregistrement
 mode: docsindex
 content:
+  chutier_actions:
+    weight: 2
+    region: content
+    settings: {  }
+    third_party_settings: {  }
   content_moderation_control:
     weight: -20
     region: content
@@ -50,7 +55,6 @@ content:
 hidden:
   addtoany: true
   body: true
-  chutier_actions: true
   field_collectionneurs: true
   field_domain_access: true
   field_domain_all_affiliates: true

+ 12 - 2
config/sync/core.entity_view_display.node.enregistrement.index.yml

@@ -7,6 +7,8 @@ dependencies:
     - field.field.node.enregistrement.body
     - field.field.node.enregistrement.field_collectionneurs
     - field.field.node.enregistrement.field_description
+    - field.field.node.enregistrement.field_domain_access
+    - field.field.node.enregistrement.field_domain_all_affiliates
     - field.field.node.enregistrement.field_entrees
     - field.field.node.enregistrement.field_genres
     - field.field.node.enregistrement.field_langues
@@ -25,22 +27,29 @@ targetEntityType: node
 bundle: enregistrement
 mode: index
 content:
+  chutier_actions:
+    weight: 0
+    region: content
+    settings: {  }
+    third_party_settings: {  }
   content_moderation_control:
     weight: -20
     region: content
     settings: {  }
     third_party_settings: {  }
   field_description:
-    weight: 0
+    weight: 1
     label: hidden
     settings: {  }
     third_party_settings: {  }
     type: text_default
     region: content
 hidden:
+  addtoany: true
   body: true
-  chutier_actions: true
   field_collectionneurs: true
+  field_domain_access: true
+  field_domain_all_affiliates: true
   field_entrees: true
   field_genres: true
   field_langues: true
@@ -53,3 +62,4 @@ hidden:
   langcode: true
   links: true
   relations: true
+  search_api_excerpt: true

+ 5 - 0
config/sync/core.entity_view_display.node.enregistrement.lastdocs.yml

@@ -7,6 +7,8 @@ dependencies:
     - field.field.node.enregistrement.body
     - field.field.node.enregistrement.field_collectionneurs
     - field.field.node.enregistrement.field_description
+    - field.field.node.enregistrement.field_domain_access
+    - field.field.node.enregistrement.field_domain_all_affiliates
     - field.field.node.enregistrement.field_entrees
     - field.field.node.enregistrement.field_genres
     - field.field.node.enregistrement.field_langues
@@ -50,6 +52,8 @@ hidden:
   body: true
   chutier_actions: true
   field_collectionneurs: true
+  field_domain_access: true
+  field_domain_all_affiliates: true
   field_genres: true
   field_langues: true
   field_locuteurs: true
@@ -61,3 +65,4 @@ hidden:
   langcode: true
   links: true
   relations: true
+  search_api_excerpt: true

+ 1 - 1
config/sync/core.entity_view_mode.node.docsindex.yml

@@ -5,6 +5,6 @@ dependencies:
   module:
     - node
 id: node.docsindex
-label: DocsIndex
+label: 'DocsIndex (Document)'
 targetEntityType: node
 cache: true

File diff suppressed because it is too large
+ 0 - 0
web/modules/custom/edlp_studio/assets/dist/scripts/edlp_studio.min.js


+ 1 - 0
web/modules/custom/edlp_studio/assets/scripts/edlp_studio.js

@@ -14,6 +14,7 @@
   function initEvents(){
     $('body')
       .on('new-audio-cartel-loaded', initAjaxChutierLinks)
+      .on('new-content-ajax-loaded', initAjaxChutierLinks)
       .on('new-content-ajax-loaded', initStudio)
       .on('all-modal-closed', initStudio);
   };

File diff suppressed because it is too large
+ 0 - 0
web/themes/custom/edlptheme/assets/dist/scripts/main.min.js


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


+ 6 - 0
web/themes/custom/edlptheme/assets/scripts/main.js

@@ -309,6 +309,12 @@
         _$row.removeAttr('style').html($rendered);
       }
 
+      // remove article is-active class is static content loaded
+      if ((data.entity_type == "node" && data.bundle == "static")
+          || state.sys_path == "docsindex") {
+        $('.ajax-link.is-active.articles-link').removeClass('is-active');
+      }
+
       // add body class for currently loaded content
       var body_classes = [
         'path-'+state.sys_path.replace(/\//g, '-'),

+ 61 - 3
web/themes/custom/edlptheme/assets/styles/app.scss

@@ -543,6 +543,62 @@ main[role="main"]{
         @include entree-micro-square;
       }
     }
+    &.docsindex{
+      article.node--type-enregistrement{
+        section.contents{
+          // display: grid;
+          // grid-template-columns: 1fr 1fr;
+          // grid-template-rows: 1fr 1fr;
+          h2.node-title{
+            // grid-column: 1;
+            // grid-row: 1;
+            display: inline-block;
+          }
+          .entrees{
+            // grid-column: 2;
+            // grid-row: 1;
+            display: inline-block;
+            margin-left: 1em;
+          }
+          .description{
+            // grid-column: span 2;
+            // grid-row: 2;
+          }
+        }
+      }
+    }
+  }
+
+  // chutier actions on documents
+  div.docsindex,
+  div.taxonomy-term.vocabulary-entrees{
+    article.node--type-enregistrement{
+      display: grid;
+      grid-template-columns: 1em 1fr;
+      grid-column-gap: 0.3em;
+      section.actions{
+        grid-column: 1;
+        padding:0.5em 0;
+        box-sizing: border-box;
+        a[action="add"],
+        .chutier-icon.not-logedin{
+          opacity:0;
+          transition: opacity 0.3s ease-in-out;
+        }
+      }
+      section.contents{
+        grid-column: 2;
+      }
+      &:hover{
+        section.actions{
+          a[action="add"],
+          .chutier-icon.not-logedin{
+            opacity:1;
+            transition: opacity 0.2s ease-in-out;
+          }
+        }
+      }
+    }
   }
 
   div.lastdocs-home{
@@ -2055,13 +2111,15 @@ footer{
               transition: background-color 0.1s ease-in-out;
             }
 
-            &.docsindex-link{
-              // margin-right: 4em;
+            &.docsindex-link,
+            &.articles-link{
               text-transform: capitalize;
+              &.ajax-loading:before{
+                @include spining-loader-square;
+              }
             }
             &.articles-link{
               margin-left: 4em;
-              text-transform: capitalize;
             }
           }
 

+ 18 - 13
web/themes/custom/edlptheme/templates/content/node--enregistrement--docsindex.html.twig

@@ -82,17 +82,22 @@
 %}
 {{ attach_library('classy/node') }}
 <article{{ attributes.addClass(classes) }}>
-  <div class="entrees">
-    {# THIS IS REALLY DIRTY !! #}
-    {% for key, child in content.field_entrees if key|first != '#' %}
-      {% set tid = child['#cache']['tags'][0]|replace({'taxonomy_term:':''}) %}
-      <span class="entree" tid="{{ tid }}" title="{{ child }}"></span>
-    {% endfor %}
-  </div>
-  <h2{{ title_attributes.addClass('node-title') }}>
-    <a href="{{ url }}" rel="bookmark" {{ link_attributes }}>{{ label }}</a>
-  </h2>
-  <div class="description">
-    {{ content.field_description }}
-  </div>
+  <section class="actions">
+    {{ content.chutier_actions }}
+  </section>
+  <section class="contents">
+    <h2{{ title_attributes.addClass('node-title') }}>
+      <a href="{{ url }}" rel="bookmark" {{ link_attributes }}>{{ label }}</a>
+    </h2>
+    <div class="entrees">
+      {# THIS IS REALLY DIRTY !! #}
+      {% for key, child in content.field_entrees if key|first != '#' %}
+        {% set tid = child['#cache']['tags'][0]|replace({'taxonomy_term:':''}) %}
+        <span class="entree" tid="{{ tid }}" title="{{ child }}"></span>
+      {% endfor %}
+    </div>
+    <div class="description">
+      {{ content.field_description }}
+    </div>
+  </section>
 </article>

+ 116 - 0
web/themes/custom/edlptheme/templates/content/node--enregistrement--index.html.twig

@@ -0,0 +1,116 @@
+{#
+/**
+ * @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) }}>
+  <section class="actions">
+    {{ content.chutier_actions }}
+  </section>
+  <section class="contents">
+    {% if sur_title %}
+      <h3 class="sur-title">{{ sur_title }}</h3>
+    {% endif %}
+    {{ title_prefix }}
+      <h2{{ title_attributes.addClass('node-title') }}>
+        {% if not page %}
+          <a href="{{ url }}" rel="bookmark" {{ link_attributes }}>{{ label }}</a>
+        {% else %}
+          {{ label }}
+        {% endif %}
+      </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('chutier_actions') }}
+    </div>
+  </section>
+</article>

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