diff --git a/sites/all/modules/figli/edlp_corpus/src/Plugin/Filter/AudioLinksFilter.php b/sites/all/modules/figli/edlp_corpus/src/Plugin/Filter/AudioLinksFilter.php new file mode 100644 index 000000000..c440e5ab4 --- /dev/null +++ b/sites/all/modules/figli/edlp_corpus/src/Plugin/Filter/AudioLinksFilter.php @@ -0,0 +1,71 @@ +query('//a[contains(@href, "node/")]') as $link) { + $href = $link->getAttribute('href'); + preg_match('/^\/?node\/(\d+)$/', $href, $matches); + // dpm($matches[1]); + $node = entity_load('node', $matches[1]); + + if(!$node) continue; + if($node->getType() != "enregistrement") continue; + + // dpm($node->getTitle()); + + $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); + } + // set the link classes + $class = $link->getAttribute('class'); + $class .= $class == '' ? '':' '; + $class .= 'audio-link ajax-link'; + + // finnally add all the attributes + $link->SetAttribute('data-drupal-link-system-path', $system_path); + $link->SetAttribute('audio_url', $son_url); + $link->SetAttribute('nid', $node->id()); + $link->SetAttribute('class', $class); + } + + $result->setProcessedText(Html::serialize($dom)); + return $result; + } +} 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 8ff69aeeb..c835bd396 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 @@ -1249,6 +1249,8 @@ main[role="main"] .layout-content { padding: 0 0 1em; } main[role="main"] .layout-content .row .col > .wrapper > * { padding: 0 1em; } + main[role="main"] .layout-content .field.text-formatted a.audio-link { + border-bottom: 1px dotted red; } main[role="main"] article.node > h2 { font-size: 0.9em; diff --git a/sites/all/themes/custom/edlptheme/assets/styles/app.scss b/sites/all/themes/custom/edlptheme/assets/styles/app.scss index d9fb8ac47..be15446d0 100644 --- a/sites/all/themes/custom/edlptheme/assets/styles/app.scss +++ b/sites/all/themes/custom/edlptheme/assets/styles/app.scss @@ -176,6 +176,11 @@ main[role="main"]{ } } } + .field.text-formatted{ + a.audio-link{ + border-bottom: 1px dotted red; + } + } } article.node>h2{ @include content_titles;