From 02155ede9130ac156a9ca2d02e9c1b25737cabe5 Mon Sep 17 00:00:00 2001 From: Bachir Soussi Chiadmi Date: Fri, 9 Mar 2018 10:52:51 +0100 Subject: [PATCH] audio links in entree index launch the audio player --- .../figli/edlp_corpus/edlp_corpus.module | 15 ++-- .../edlptheme/assets/dist/scripts/main.min.js | 19 ++++- .../edlptheme/assets/dist/styles/app.min.css | 2 +- .../custom/edlptheme/assets/scripts/main.js | 19 ++++- .../custom/edlptheme/assets/styles/app.scss | 2 +- .../themes/custom/edlptheme/edlptheme.theme | 26 ++++++- .../__node--enregistrement--index.html.twig | 78 +++++++++++++++++++ ...--enregistrement--player-cartel.html.twig} | 0 8 files changed, 146 insertions(+), 15 deletions(-) create mode 100644 sites/all/themes/custom/edlptheme/templates/content/__node--enregistrement--index.html.twig rename sites/all/themes/custom/edlptheme/templates/content/{node--player-cartel.html.twig => node--enregistrement--player-cartel.html.twig} (100%) diff --git a/sites/all/modules/figli/edlp_corpus/edlp_corpus.module b/sites/all/modules/figli/edlp_corpus/edlp_corpus.module index 745bb07ff..c2e864d7c 100644 --- a/sites/all/modules/figli/edlp_corpus/edlp_corpus.module +++ b/sites/all/modules/figli/edlp_corpus/edlp_corpus.module @@ -36,7 +36,7 @@ function edlp_corpus_entity_extra_field_info(){ 'label' => t('Index'), 'description' => 'Display index of all documents tagued with the term', 'weight' => 99, - 'visible' => FALSE, + // 'visible' => FALSE, ]; return $extra; } @@ -59,7 +59,6 @@ function edlp_corpus_taxonomy_term_view(array &$build, \Drupal\Core\Entity\Entit ->condition('field_entrees', $entity->id()); $documents_nids = $query->execute(); - // dpm($documents_nids); $documents = entity_load_multiple('node', $documents_nids); $documents_list = array ( @@ -70,21 +69,25 @@ function edlp_corpus_taxonomy_term_view(array &$build, \Drupal\Core\Entity\Entit $documents_list['#items'][] = $view_builder->view($doc, 'index'); } - // And the last step is to actually build the tree. $build['index'] = array( '#type'=>"container", '#attributes'=>array( 'class'=>'index' ), + 'label'=>array( + '#type' => 'container', + "#markup"=> t("Index"), + '#attributes'=>array( + 'class'=>'field__label' + ), + ), 'documents'=> $documents_list ); - - - } } + /** * Implements hook_page_attachments(). * @param array $attachments diff --git a/sites/all/themes/custom/edlptheme/assets/dist/scripts/main.min.js b/sites/all/themes/custom/edlptheme/assets/dist/scripts/main.min.js index 3727e436e..fe549e620 100644 --- a/sites/all/themes/custom/edlptheme/assets/dist/scripts/main.min.js +++ b/sites/all/themes/custom/edlptheme/assets/dist/scripts/main.min.js @@ -37,12 +37,15 @@ edlp_vars = { // TODO: redirect all no-front pages to front with write hash _$body.on('corpus-map-ready', onCorpusMapReady); - initScrollbars(); + initAudioPlayer(); + initAjaxLinks(); + if (_$body.is('.path-productions')) { initProductions(); } - initAudioPlayer(); + + initScrollbars(); }; @@ -233,7 +236,7 @@ edlp_vars = { // |__/ // TODO: add url hash nav // TODO: implement history.js - function initAjaxLinks(){ + function initAjaxLinks(){ console.log('initAjaxLinks'); $('a', '#block-mainnavigation') @@ -264,6 +267,16 @@ edlp_vars = { if($link.is('.is-active')) return false; + // Audio links + if($link.is('.audio-link')){ + _audio_player.openDocument({ + nid:$link.attr('nid'), + audio_url:$link.attr('audio_url') + }); + return false; + } + + // other links var sys_path = $(this).attr('data-drupal-link-system-path'); var ajax_path = sys_path; if(sys_path == ''){ diff --git a/sites/all/themes/custom/edlptheme/assets/dist/styles/app.min.css b/sites/all/themes/custom/edlptheme/assets/dist/styles/app.min.css index 291b82765..8ff69aeeb 100644 --- a/sites/all/themes/custom/edlptheme/assets/dist/styles/app.min.css +++ b/sites/all/themes/custom/edlptheme/assets/dist/styles/app.min.css @@ -1742,7 +1742,7 @@ footer { footer .block-block-edlp-entrees ul li[tid='123'] a.term-link:before, footer .block-block-edlp-entrees ul li[tid='123'] .entree-content span.oblique-wrapper a:before { border-color: #497715; background-color: #497715; } - footer .block-block-edlp-entrees ul li .entree-content span.oblique-wrapper a:not(:hover):before { + footer .block-block-edlp-entrees ul li .entree-content span.oblique-wrapper a:not(:hover):not(.is-active):before { background-color: #fff !important; } footer .block-block-edlp-entrees ul li:not(.opened) a.term-link:not(:hover):not(.highlighted):before { background-color: #fff !important; } diff --git a/sites/all/themes/custom/edlptheme/assets/scripts/main.js b/sites/all/themes/custom/edlptheme/assets/scripts/main.js index 67dc0cd1d..340e7ecb5 100644 --- a/sites/all/themes/custom/edlptheme/assets/scripts/main.js +++ b/sites/all/themes/custom/edlptheme/assets/scripts/main.js @@ -14,12 +14,15 @@ // TODO: redirect all no-front pages to front with write hash _$body.on('corpus-map-ready', onCorpusMapReady); - initScrollbars(); + initAudioPlayer(); + initAjaxLinks(); + if (_$body.is('.path-productions')) { initProductions(); } - initAudioPlayer(); + + initScrollbars(); }; @@ -210,7 +213,7 @@ // |__/ // TODO: add url hash nav // TODO: implement history.js - function initAjaxLinks(){ + function initAjaxLinks(){ console.log('initAjaxLinks'); $('a', '#block-mainnavigation') @@ -241,6 +244,16 @@ if($link.is('.is-active')) return false; + // Audio links + if($link.is('.audio-link')){ + _audio_player.openDocument({ + nid:$link.attr('nid'), + audio_url:$link.attr('audio_url') + }); + return false; + } + + // other links var sys_path = $(this).attr('data-drupal-link-system-path'); var ajax_path = sys_path; if(sys_path == ''){ diff --git a/sites/all/themes/custom/edlptheme/assets/styles/app.scss b/sites/all/themes/custom/edlptheme/assets/styles/app.scss index 367a6d235..d9fb8ac47 100644 --- a/sites/all/themes/custom/edlptheme/assets/styles/app.scss +++ b/sites/all/themes/custom/edlptheme/assets/styles/app.scss @@ -728,7 +728,7 @@ footer{ // color: red; // } // } - .entree-content span.oblique-wrapper a:not(:hover):before{background-color: #fff!important;} + .entree-content span.oblique-wrapper a:not(:hover):not(.is-active):before{background-color: #fff!important;} &:not(.opened){ a.term-link:not(:hover):not(.highlighted):before{ diff --git a/sites/all/themes/custom/edlptheme/edlptheme.theme b/sites/all/themes/custom/edlptheme/edlptheme.theme index 6b12a5f73..a9d523b93 100644 --- a/sites/all/themes/custom/edlptheme/edlptheme.theme +++ b/sites/all/themes/custom/edlptheme/edlptheme.theme @@ -54,7 +54,31 @@ function edlptheme_preprocess_edlp_productions(&$vars){ // dpm($vars); } -function edlptheme_preprocess_node__player_cartel(&$vars){ +function edlptheme_preprocess_node__enregistrement__index(&$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=='' ? '' : $system_path, + 'audio_url' => $son_url, + 'nid' => $node->id(), + 'class' => array('audio-link', 'ajax-link') + )); + // dpm($vars['link_attributes']); +} + +function edlptheme_preprocess_node__enregistrement__player_cartel(&$vars){ // dpm($vars); // if transcript not empty $url = Url::fromRoute('entity.node.canonical', ['node'=>$vars['node']->id()], array( diff --git a/sites/all/themes/custom/edlptheme/templates/content/__node--enregistrement--index.html.twig b/sites/all/themes/custom/edlptheme/templates/content/__node--enregistrement--index.html.twig new file mode 100644 index 000000000..059df2593 --- /dev/null +++ b/sites/all/themes/custom/edlptheme/templates/content/__node--enregistrement--index.html.twig @@ -0,0 +1,78 @@ +{# +/** + * @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. + */ +#} + + {{ label }} + + + {{ content }} + diff --git a/sites/all/themes/custom/edlptheme/templates/content/node--player-cartel.html.twig b/sites/all/themes/custom/edlptheme/templates/content/node--enregistrement--player-cartel.html.twig similarity index 100% rename from sites/all/themes/custom/edlptheme/templates/content/node--player-cartel.html.twig rename to sites/all/themes/custom/edlptheme/templates/content/node--enregistrement--player-cartel.html.twig