Browse Source

created lastdocs home block and corresponfing page

Bachir Soussi Chiadmi 6 years ago
parent
commit
6ca52c635e
23 changed files with 473 additions and 13 deletions
  1. 1 1
      sites/all/modules/figli/edlp_agenda/includes/edlp_agenda.inc
  2. 2 1
      sites/all/modules/figli/edlp_ajax/edlp_ajax.module
  3. 8 1
      sites/all/modules/figli/edlp_corpus/edlp_corpus.module
  4. 17 0
      sites/all/modules/figli/edlp_corpus/edlp_corpus.routing.yml
  5. 0 0
      sites/all/modules/figli/edlp_corpus/includes/blockentrees.inc
  6. 30 0
      sites/all/modules/figli/edlp_corpus/includes/edlp_corpus_lastdocs.inc
  7. 95 0
      sites/all/modules/figli/edlp_corpus/src/Controller/CorpusController.php
  8. 1 0
      sites/all/modules/figli/edlp_corpus/templates/edlp-corpus-lastdocs.html.twig
  9. 1 0
      sites/all/modules/figli/edlp_home/edlp_home.module
  10. 28 0
      sites/all/modules/figli/edlp_home/includes/edlp_home.inc
  11. 11 0
      sites/all/modules/figli/edlp_home/src/Controller/HomeController.php
  12. 2 0
      sites/all/modules/figli/edlp_home/templates/edlp-home.html.twig
  13. 0 0
      sites/all/themes/custom/edlptheme/assets/dist/scripts/main.min.js
  14. 0 0
      sites/all/themes/custom/edlptheme/assets/dist/styles/app.min.css
  15. 12 3
      sites/all/themes/custom/edlptheme/assets/scripts/main.js
  16. 47 0
      sites/all/themes/custom/edlptheme/assets/styles/app.scss
  17. 3 3
      sites/all/themes/custom/edlptheme/assets/styles/base/_layout.scss
  18. 24 0
      sites/all/themes/custom/edlptheme/edlptheme.theme
  19. 7 0
      sites/all/themes/custom/edlptheme/templates/content/edlp-corpus-lastdocs.html.twig
  20. 13 4
      sites/all/themes/custom/edlptheme/templates/content/edlp-home.html.twig
  21. 98 0
      sites/all/themes/custom/edlptheme/templates/content/node--enregistrement--lastdocs.html.twig
  22. 63 0
      sites/default/config/sync/core.entity_view_display.node.enregistrement.lastdocs.yml
  23. 10 0
      sites/default/config/sync/core.entity_view_mode.node.lastdocs.yml

+ 1 - 1
sites/all/modules/figli/edlp_agenda/includes/edlp_agenda.inc

@@ -4,7 +4,7 @@
 
 function template_preprocess_edlp_agenda(&$vars){
   // dpm($vars);
-/*
+  /*
   @see https://www.drupal8.ovh/index.php/en/tutoriels/339/render-a-node-or-an-entity
   */
   $view_builder = \Drupal::entityTypeManager()->getViewBuilder('node');

+ 2 - 1
sites/all/modules/figli/edlp_ajax/edlp_ajax.module

@@ -54,7 +54,8 @@ function edlp_ajax_page_attachments(array &$attachments) {
     || preg_match('/^\/?productions/', $current_path)
     || preg_match('/^\/?agenda/', $current_path)
     || preg_match('/^\/?studio/', $current_path)
-    || preg_match('/^\/?search/', $current_path)){
+    || preg_match('/^\/?search/', $current_path)
+    || preg_match('/^\/?lastdocs/', $current_path)){
       $redirect = true;
     }
 

+ 8 - 1
sites/all/modules/figli/edlp_corpus/edlp_corpus.module

@@ -23,11 +23,18 @@ function edlp_corpus_theme($existing, $type, $theme, $path) {
   return array(
     'blockentrees' => array(
       // 'render element' => '',
-      'file' => 'blockentrees.inc',
+      'file' => 'includes/blockentrees.inc',
       'variables' => array(
         'entrees_items' => array(),
       ),
     ),
+    'edlp_corpus_lastdocs' => array(
+      // 'render element' => '',
+      'file' => 'includes/edlp_corpus_lastdocs.inc',
+      'variables' => array(
+        'lastdocs_nodes' => NULL,
+      ),
+    ),
   );
 }
 

+ 17 - 0
sites/all/modules/figli/edlp_corpus/edlp_corpus.routing.yml

@@ -13,3 +13,20 @@ edlp_corpus.corpusjson:
     _title: 'Corpus'
   requirements:
     _permission: 'access content'
+
+
+edlp_corpus.lastdocs:
+  path: '/lastdocs'
+  defaults:
+    _controller: '\Drupal\edlp_corpus\Controller\CorpusController::lastdocs'
+    _title: 'Last Docs'
+  requirements:
+    _permission: 'access content'
+
+edlp_corpus.lastdocsajax:
+  path: '/lastdocs/ajax'
+  defaults:
+    _controller: '\Drupal\edlp_corpus\Controller\CorpusController::lastdocsjson'
+    _title: 'Last docs'
+  requirements:
+    _permission: 'access content'

+ 0 - 0
sites/all/modules/figli/edlp_corpus/blockentrees.inc → sites/all/modules/figli/edlp_corpus/includes/blockentrees.inc


+ 30 - 0
sites/all/modules/figli/edlp_corpus/includes/edlp_corpus_lastdocs.inc

@@ -0,0 +1,30 @@
+<?php
+
+// use Drupal\Core\Url;
+
+function template_preprocess_edlp_corpus_lastdocs(&$vars){
+  // dpm($vars);
+  /*
+  @see https://www.drupal8.ovh/index.php/en/tutoriels/339/render-a-node-or-an-entity
+  */
+  $view_builder = \Drupal::entityTypeManager()->getViewBuilder('node');
+
+  if(count($vars['lastdocs_nodes'])){
+    $lastdocs_list = array (
+      '#theme' => 'item_list',
+      '#items' => [],
+    );
+    foreach($vars['lastdocs_nodes'] as $node){
+      $lastdocs_list['#items'][] = $view_builder->view($node, 'lastdocs');
+    }
+
+    $vars['lastdocs'] = array(
+      "#type"=>"container",
+      "#attributes"=>array(
+        "class"=>['lastdocs']
+      ),
+      "#markup"=>"<h3>".t("Last Documents")."</h3>",
+      "lastdocs"=>$lastdocs_list
+    );
+  }
+}

+ 95 - 0
sites/all/modules/figli/edlp_corpus/src/Controller/CorpusController.php

@@ -148,4 +148,99 @@ class CorpusController extends ControllerBase {
     );
   }
 
+
+ //  _            _      _
+ // | |   __ _ __| |_ __| |___  __ ___
+ // | |__/ _` (_-<  _/ _` / _ \/ _(_-<
+ // |____\__,_/__/\__\__,_\___/\__/__/
+
+  private function query() {
+    $query = \Drupal::entityQuery('node')
+    ->condition('status', 1)
+    ->condition('type', 'enregistrement')
+    ->sort('created', 'DESC')
+    ->range(0,20);
+
+   $nids = $query->execute();
+
+   $this->lastdocs_nodes = entity_load_multiple('node', $nids);
+
+   // record an array of nids for corpus map filtering
+   $this->lastdocs_nids = [];
+   foreach($nids as $key => $nid){
+     $this->lastdocs_nids[] = $nid;
+   }
+  }
+
+  private function toRenderable(){
+     $this->query();
+     // dpm($this->next_event_node);
+
+     return array(
+       "#theme"=>'edlp_corpus_lastdocs',
+       '#lastdocs_nodes' => $this->lastdocs_nodes
+     );
+
+   }
+  /**
+   * Display lastdocs as a page.
+   *
+   * @return renderable array
+   */
+  public function lastdocs() {
+    return $this->toRenderable();
+  }
+
+  /**
+   * Get lastdocs data as json through ajax.
+   *
+   * @return json
+   */
+  public function lastdocsjson() {
+
+    $renderable = $this->toRenderable();
+    // $rendered = render($renderable);
+    // We can't render directly the entity as it throw an exception with cachable data
+    //http://blog.dcycle.com/blog/2018-01-24/caching-drupal-8-rest-resource/#the-dreaded-leaked-metadata-error
+    $rendered = \Drupal::service('renderer')->executeInRenderContext(new RenderContext(), function () use ($renderable) {
+      return render($renderable);
+    });
+
+    $data = [
+      'rendered'=> $rendered,
+      'title'=>'Last Documents',
+      'documents_lies' => $this->lastdocs_nids,
+    ];
+
+    // translations links
+    // use Drupal\Core\Url;
+    // use Drupal\Core\Language\LanguageInterface;
+    $route_name = 'edlp_corpus.lastdocs';
+    $links = \Drupal::languageManager()->getLanguageSwitchLinks(LanguageInterface::TYPE_URL, Url::fromRoute($route_name));
+    if (isset($links->links)) {
+      $translations_build = [
+        '#theme' => 'links__language_block',
+        '#links' => $links->links,
+        '#attributes' => ['class' => ["language-switcher-{$links->method_id}",],],
+        '#set_active_class' => TRUE,
+      ];
+      $translations_rendered = \Drupal::service('renderer')->executeInRenderContext(new RenderContext(), function () use ($translations_build) {return render($translations_build);});
+
+      $data['translations_links'] = $translations_rendered;
+    }
+
+    $data['#cache'] = [
+      'max-age' => \Drupal\Core\Cache\Cache::PERMANENT,
+      'tags' => ['edlp-lastdocs-cache']
+    ];
+
+    // $response = new JsonResponse();
+    // $response->setData($data);
+    $response = new CacheableJsonResponse($data);
+    $response->addCacheableDependency(CacheableMetadata::createFromRenderArray($data));
+    $response->addCacheableDependency(CacheableMetadata::createFromRenderArray($renderable));
+
+    return $response;
+  }
+
 }

+ 1 - 0
sites/all/modules/figli/edlp_corpus/templates/edlp-corpus-lastdocs.html.twig

@@ -0,0 +1 @@
+{{ lastdocs }}

+ 1 - 0
sites/all/modules/figli/edlp_home/edlp_home.module

@@ -23,6 +23,7 @@ function edlp_home_theme($existing, $type, $theme, $path) {
         // 'last_fil_node' => NULL,
         // 'last_production_node' => NULL,
         'promoted_nodes' => array(),
+        'lastdocs_items' => NULL,
         'agenda_items' => NULL,
         'entrees_items' => NULL,
       ),

+ 28 - 0
sites/all/modules/figli/edlp_home/includes/edlp_home.inc

@@ -93,6 +93,34 @@ function template_preprocess_edlp_home(&$vars){
   //   )
   // );
 
+
+  // render the lasts documents of collection as list
+  $lastdocs_url = Url::fromRoute('edlp_corpus.lastdocs');
+  $lastdocs = array(
+    '#type'=>"container",
+    'title'=>array(
+      '#prefix'=> '<h3>',
+      '#title' => t("Last documents"),
+      '#suffix' => '</h3>',
+      '#type' => 'link',
+      '#url' => $lastdocs_url,
+      '#options'=>array(
+        'attributes' => array(
+          'data-drupal-link-system-path' => $lastdocs_url->getInternalPath(),
+          'class' => array('ajax-link'),
+        )
+      )
+    ),
+    'list'=> array(
+      '#theme' => 'item_list',
+      '#items' => [],
+    ),
+  );
+  foreach($vars['lastdocs_items'] as $node){
+    $lastdocs['list']['#items'][] = $node_view_builder->view($node, 'search_index');
+  }
+  $vars['lastdocs'] = render($lastdocs);
+
   // render the next events of agenda as list
   $agenda_url = Url::fromRoute('edlp_agenda.agenda');
   $agenda = array(

+ 11 - 0
sites/all/modules/figli/edlp_home/src/Controller/HomeController.php

@@ -72,6 +72,17 @@ class HomeController extends ControllerBase {
     // $prod = $query->execute();
     // $contents["#last_production_node"] = entity_load('node', array_pop($prod));
 
+    // last documents
+    $query = \Drupal::entityQuery('node')
+      ->condition('status', 1)
+      ->condition('type', 'enregistrement')
+      ->sort('created', 'DESC')
+      ->range(0,10);
+
+    $lastdocs = $query->execute();
+    $contents["#lastdocs_items"] = entity_load_multiple('node', $lastdocs);
+    // dsm($contents["#lastdocs_items"], "#lastdocs_items");
+
     // agenda
     $now = new DrupalDateTime('now');
     $now->setTimezone(new \DateTimeZone(DATETIME_STORAGE_TIMEZONE));

+ 2 - 0
sites/all/modules/figli/edlp_home/templates/edlp-home.html.twig

@@ -5,6 +5,8 @@
   {{ node.build }}
 {% endfor %}
 
+{{ lastdocs }}
+
 {{ agenda }}
 
 {% if entrees %}

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


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


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

@@ -35,12 +35,13 @@
         _audioPlayer = new AudioPlayer();
         _compoPlayer = new CompoPlayer();
 
-
         checkLayout();
 
         initAjaxLinks();
 
         initHistory();
+
+        initAudioLinksHover();
       }else{
         if(drupalSettings.path.isFront){
           initHomeMobile();
@@ -393,6 +394,8 @@
 
       initAjaxLinks();
 
+      initAudioLinksHover();
+
       checkVisibleCorpusMapSpace();
 
       // trigger other modules behaviours
@@ -404,6 +407,7 @@
       _$body.attr('booted', 'booted');
       _$body.removeClass('ajax-loading');
 
+
       // url is null means that we are loading content on popState event
       // so we don't record the state again
       if(state.url){
@@ -435,6 +439,7 @@
     };
 
     function initAudioLinksHover(){
+      console.log("initAudioLinksHover()");
       _$row.find('a.audio-link')
         .on('mouseover', function(event) {
           event.preventDefault();
@@ -687,13 +692,17 @@
       // Audio links
       // launch audio player and stop here
       if($link.is('.audio-link')){
+        // check if caller is lastdocs block
+        caller = $link.parents('.lastdocs').length ? 'lastdocs' : null;
+        // open audio player
         _audioPlayer
           .emmit('stop-shuffle')
           .openDocument({
             nid:$link.attr('nid'),
             audio_url:$link.attr('audio_url'),
             title:$link.find('.field--name-title').html()
-          });
+          },
+          caller);
         return false;
       }
 
@@ -957,7 +966,7 @@
           this.currentHistoricIndex = historic_index;
         }
 
-        if(_$body.is('.path-frontpage')){
+        if(_$body.is('.path-frontpage') && caller !== 'lastdocs'){
           closeAllModals();
         }
         // TODO: update language switcher for document url

+ 47 - 0
sites/all/themes/custom/edlptheme/assets/styles/app.scss

@@ -459,6 +459,53 @@ main[role="main"]{
     }
   }
 
+  div.lastdocs{
+    article.node--type-enregistrement{
+      h2.node-title{
+        @include content_subtitles;
+        margin:0.9em 0 0 0;
+        // margin:0 0 0.3em 0;
+      }
+      .entrees{
+        @include entree-micro-square;
+      }
+    }
+  }
+
+  div.lastdocs-home{
+    >.wrapper{
+      padding:0 1em!important;
+    }
+    article.node--type-enregistrement{
+      h2.node-title{
+        // @include content_subtitles;
+        // margin:0.9em 0 0 0;
+        margin:0 0 0.3em 0;
+      }
+      .entrees{
+        @include entree-micro-square;
+      }
+    }
+  }
+
+  div.lastdocs{
+    article.node--type-enregistrement{
+      .entrees{
+        @include entree-micro-square;
+      }
+      h2.node-title{
+        @include content_subtitles;
+        margin:0.3em 0 0 0;
+        // margin:0 0 0.3em 0;
+      }
+      .description{
+        p{
+          margin:0 0 0.3em 0;
+        }
+      }
+    }
+  }
+
   div.taxonomy-term.vocabulary-entrees.home_mobile{
     // &:not(:first-of-type){
     padding-bottom: 1em;

+ 3 - 3
sites/all/themes/custom/edlptheme/assets/styles/base/_layout.scss

@@ -22,7 +22,7 @@ body.toolbar-horizontal.toolbar-themes.toolbar-no-tabs{
 
 header[role="banner"]{
   // outline: 1px solid blue;
-  z-index: 2;
+  z-index: 5;
   position: relative;
   padding:0 1em;
   >.wrapper{
@@ -60,7 +60,7 @@ aside.messages{
 
 html:not(.is-mobile) main[role="main"]{
   // outline:1px solid green;
-  z-index: 1;
+  z-index: 11;
   position: absolute;
   left:0; top:0;
   box-sizing:border-box;
@@ -97,7 +97,7 @@ body.toolbar-horizontal.toolbar-themes.toolbar-no-tabs{
 
 footer[role="contentinfo"]{
   // outline: 1px solid pink;
-  z-index: 2;
+  z-index: 5;
   position:fixed;
   bottom:0;
   box-sizing: content-box;

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

@@ -175,6 +175,30 @@ function edlptheme_preprocess_node__enregistrement__search_index(&$vars){
   // dpm($vars['link_attributes']);
 }
 
+function edlptheme_preprocess_node__enregistrement__lastdocs(&$vars){
+  $node = $vars['elements']['#node'];
+  $options = ['absolute' => TRUE];
+  $url = Url::fromRoute('entity.node.canonical', ['node' => $node->id()], $options);
+  $system_path = $url->getInternalPath();
+  // get the audio file url
+  $field_son_values = $node->get('field_son')->getValue();
+  $son_fid = count($field_son_values) ? $field_son_values[0]['target_id'] : "";
+  $son_file = \Drupal\file\Entity\File::load($son_fid);
+  $son_url = null;
+  if($son_file){
+    $son_uri = $son_file->getFileUri();
+    $son_url = file_create_url($son_uri);
+  }
+
+  $vars['link_attributes'] = new Attribute(array(
+    'data-drupal-link-system-path' => $system_path=='' ? '<front>' : $system_path,
+    'audio_url' => $son_url,
+    'nid' => $node->id(),
+    'class' => array('audio-link', 'ajax-link')
+  ));
+  // dpm($vars['link_attributes']);
+}
+
 function edlptheme_preprocess_node__enregistrement__compo(&$vars){
   $node = $vars['elements']['#node'];
   $options = ['absolute' => TRUE];

+ 7 - 0
sites/all/themes/custom/edlptheme/templates/content/edlp-corpus-lastdocs.html.twig

@@ -0,0 +1,7 @@
+<div class="col small-col-12 med-col-6 large-col-6">
+  <div class="wrapper">
+    <div class="lastdocs">
+      {{ lastdocs }}
+    </div>
+  </div>
+</div>

+ 13 - 4
sites/all/themes/custom/edlptheme/templates/content/edlp-home.html.twig

@@ -25,12 +25,21 @@
     </div>
   {% endfor %}
 
+  {% if lastdocs %}
+    <div class="lastdocs-home col small-col-12 med-col-4 large-col-3">
+      <div class="wrapper">
+        {{ lastdocs }}
+      </div>
+    </div>
+  {% endif %}
 
-  <div class="agenda col small-col-12 med-col-4 large-col-3">
-    <div class="wrapper">
-      {{ agenda }}
+  {% if agenda %}
+    <div class="agenda col small-col-12 med-col-4 large-col-3">
+      <div class="wrapper">
+        {{ agenda }}
+      </div>
     </div>
-  </div>
+  {% endif %}
 
   {% if entrees %}
     <div class="entrees col small-col-12 med-col-4 large-col-3">

+ 98 - 0
sites/all/themes/custom/edlptheme/templates/content/node--enregistrement--lastdocs.html.twig

@@ -0,0 +1,98 @@
+{#
+/**
+ * @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) }}>
+  <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>
+</article>

+ 63 - 0
sites/default/config/sync/core.entity_view_display.node.enregistrement.lastdocs.yml

@@ -0,0 +1,63 @@
+uuid: 0c8f0bed-07d8-4edb-97a7-22b968348fb1
+langcode: fr
+status: true
+dependencies:
+  config:
+    - core.entity_view_mode.node.lastdocs
+    - field.field.node.enregistrement.body
+    - field.field.node.enregistrement.field_collectionneurs
+    - field.field.node.enregistrement.field_description
+    - field.field.node.enregistrement.field_entrees
+    - field.field.node.enregistrement.field_genres
+    - field.field.node.enregistrement.field_langues
+    - field.field.node.enregistrement.field_locuteurs
+    - field.field.node.enregistrement.field_nbr_locuteurs
+    - field.field.node.enregistrement.field_son
+    - field.field.node.enregistrement.field_transcript_trad
+    - field.field.node.enregistrement.field_transcript_vo
+    - field.field.node.enregistrement.field_workflow
+    - node.type.enregistrement
+  module:
+    - text
+    - user
+id: node.enregistrement.lastdocs
+targetEntityType: node
+bundle: enregistrement
+mode: lastdocs
+content:
+  content_moderation_control:
+    weight: -20
+    region: content
+    settings: {  }
+    third_party_settings: {  }
+  field_description:
+    weight: 1
+    label: hidden
+    settings: {  }
+    third_party_settings: {  }
+    type: text_default
+    region: content
+  field_entrees:
+    type: entity_reference_label
+    weight: 0
+    region: content
+    label: hidden
+    settings:
+      link: false
+    third_party_settings: {  }
+hidden:
+  addtoany: true
+  body: true
+  chutier_actions: true
+  field_collectionneurs: true
+  field_genres: true
+  field_langues: true
+  field_locuteurs: true
+  field_nbr_locuteurs: true
+  field_son: true
+  field_transcript_trad: true
+  field_transcript_vo: true
+  field_workflow: true
+  langcode: true
+  links: true
+  relations: true

+ 10 - 0
sites/default/config/sync/core.entity_view_mode.node.lastdocs.yml

@@ -0,0 +1,10 @@
+uuid: f842baf4-6682-4cf1-9cfa-6eff2113c348
+langcode: fr
+status: true
+dependencies:
+  module:
+    - node
+id: node.lastdocs
+label: 'LastDocs (documents)'
+targetEntityType: node
+cache: true

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