| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | 
							- <?php
 
- # @Author: Bachir Soussi Chiadmi <bach>
 
- # @Email:  bachir@figureslibres.io
 
- # @Filename: edlp_ajax.module
 
- # @License: GPL-V3
 
- use Drupal\Core\Url;
 
- /**
 
-  * Implements hook_page_attachments().
 
-  * @param array $attachments
 
-  */
 
- function edlp_ajax_page_attachments(array &$attachments) {
 
-   // provied info about available urls needed for ajax purpose
 
-   $url = Url::fromRoute('edlp_ajax.entityjson');
 
-   $attachments['#attached']['drupalSettings']['edlp_ajax']['entityjson_path'] = $url->getInternalPath();
 
-   $url = Url::fromRoute('edlp_ajax.blocksjson');
 
-   $attachments['#attached']['drupalSettings']['edlp_ajax']['blocksjson_path'] = $url->getInternalPath();
 
-   // provied infos about current entity (node or taxonomy term) and audio files
 
-   $current_path = \Drupal::service('path.current')->getPath();
 
-   $current_language = \Drupal::languageManager()->getCurrentLanguage()->getId();
 
-   $is_front = \Drupal::service('path.matcher')->isFrontPage();
 
-   $entity_type = null;
 
-   $entity_bundle = null;
 
-   $entity_id = null;
 
-   $audio_url = null;
 
-   foreach (['node', 'taxonomy_term'] as $type) {
 
-     $entity = \Drupal::routeMatch()->getParameter($type);
 
-     if($entity){
 
-       $entity_type = $type;
 
-       $entity_bundle = $entity->bundle();
 
-       $entity_id = $entity->id();
 
-       if($entity_bundle == 'enregistrement'){
 
-         $field_son_values = $entity->get('field_son')->getValue();
 
-         $audio_fid = count($field_son_values) ? $field_son_values[0]['target_id'] : null;
 
-         if($audio_fid){
 
-           $audio_file = \Drupal\file\Entity\File::load($audio_fid);
 
-           $son_uri = $audio_file->getFileUri();
 
-           $audio_url = file_create_url($son_uri);
 
-         }
 
-       }
 
-       break;
 
-     }
 
-   }
 
-   // do not redirect if not node, term, or custom routing
 
-   // FIXME: check with routes instead of path as path can change !!!
 
-   $redirect = false;
 
-   if(preg_match('/^\/?node\/\d+/', $current_path)
 
-     || preg_match('/^\/?taxonomy\/term\/\d+/', $current_path)
 
-     || preg_match('/^\/?productions/', $current_path)
 
-     || preg_match('/^\/?agenda/', $current_path)
 
-     || preg_match('/^\/?studio/', $current_path)
 
-     || preg_match('/^\/?search/', $current_path)
 
-     || preg_match('/^\/?docsindex/', $current_path)
 
-     || preg_match('/^\/?lastdocs/', $current_path)
 
-     || preg_match('/^\/?articles/', $current_path)){
 
-       $redirect = true;
 
-     }
 
-   $site_name = \Drupal::config('system.site')->get('name');
 
-   $js_str = "var edlp = {\n
 
-     sys_path:'".$current_path."',\n
 
-     is_front:".($is_front ? 'true':'false').",\n
 
-     redirect:".($redirect ? 'true':'false').",\n
 
-     lang_code:'".$current_language."',\n
 
-     entity_type:'".$entity_type."',\n
 
-     entity_bundle:'".$entity_bundle."',\n
 
-     entity_id:'".$entity_id."',\n
 
-     audio_url:'".$audio_url."',\n
 
-     site_name:'".$site_name."',\n
 
-   };";
 
-   $attachments['#attached']['html_head'][] = [
 
-     [
 
-       '#type' => 'html_tag',
 
-       '#tag' => 'script',
 
-       '#value' => $js_str,
 
-       '#weight' => -999,
 
-       '#group' => 'edlp'
 
-     ],
 
-     // A key, to make it possible to recognize this HTML  element when altering.
 
-     'edlp',
 
-   ];
 
- }
 
- /**
 
-  * Implements hook_theme().
 
-  */
 
- function edlp_ajax_theme($existing, $type, $theme, $path) {
 
-   // @see https://www.drupal.org/docs/8/theming/twig/create-custom-twig-templates-from-custom-module
 
-   return array(
 
-     'edlp_ajax' => array(
 
-       'file' => 'includes/edlp_ajax.inc',
 
-       'variables' => array(
 
-         'entity_type' => null,
 
-         'bundle' => null,
 
-         'entity' => null,
 
-         'view_mode' => 'default',
 
-         'aside' => array(),
 
-       ),
 
-     ),
 
-   );
 
- }
 
- /**
 
-  * Implements hook_theme_suggestions_HOOK().
 
-  */
 
- function edlp_ajax_theme_suggestions_edlp_ajax(array $vars) {
 
-   // dpm($vars);
 
-   $suggestions = [];
 
-   // $node = $variables['elements']['#node'];
 
-   $sanitized_view_mode = strtr($vars['view_mode'], '.', '_');
 
-   // $entity = $vars['entity'];
 
-   //
 
-   $suggestions[] = 'edlp_ajax__' . $vars['entity_type'];
 
-   $suggestions[] = 'edlp_ajax__' . $vars['entity_type'] . '__' . $sanitized_view_mode;
 
-   // $suggestions[] = 'node__' . $node->bundle() . '__' . $sanitized_view_mode;
 
-   $suggestions[] = 'edlp_ajax__' . $vars['entity_type'] . '__' . $vars['entity']->id();
 
-   $suggestions[] = 'edlp_ajax__' . $vars['entity_type'] . '__' . $vars['entity']->id() . '__' . $sanitized_view_mode;
 
-   $suggestions[] = 'edlp_ajax__' . $vars['entity_type'] . '__' . $vars['bundle'];
 
-   $suggestions[] = 'edlp_ajax__' . $vars['entity_type'] . '__' . $vars['bundle'] . '__' . $sanitized_view_mode;
 
-   return $suggestions;
 
- }
 
 
  |