From 57b481f9615d9bfd440cef8fe5bc627e5c6142be Mon Sep 17 00:00:00 2001
From: e_ppb41 <pascual.perez@altia.es>
Date: Mon, 24 Mar 2025 13:59:52 +0100
Subject: [PATCH] Document reader

---
 js/doc_reader.js                          | 8 ++++++++
 open_readspeaker.libraries.yml            | 7 +++++++
 open_readspeaker.module                   | 4 ++++
 src/Form/OpenReadSpeakerSettingsForm.php  | 8 ++++++++
 src/Plugin/Block/OpenReadspeakerBlock.php | 9 +++++++++
 5 files changed, 36 insertions(+)
 create mode 100644 js/doc_reader.js

diff --git a/js/doc_reader.js b/js/doc_reader.js
new file mode 100644
index 0000000..0da99d0
--- /dev/null
+++ b/js/doc_reader.js
@@ -0,0 +1,8 @@
+(function (Drupal) {
+  'use strict';
+  Drupal.behaviors.open_readspeaker_doc_reader = {
+    attach: function (context, settings) {
+      window.rsConf = { docReader: { lang: drupalSettings.doc_reader_lang } };
+    }
+  };
+})(Drupal);
diff --git a/open_readspeaker.libraries.yml b/open_readspeaker.libraries.yml
index d7a92e8..a8aec5d 100644
--- a/open_readspeaker.libraries.yml
+++ b/open_readspeaker.libraries.yml
@@ -4,3 +4,10 @@ post_mode:
    js/post_mode.js: { }
   dependencies:
     - core/drupal
+
+doc_reader:
+  version: VERSION
+  js:
+   js/doc_reader.js: { }
+  dependencies:
+    - core/drupal
diff --git a/open_readspeaker.module b/open_readspeaker.module
index ad99a8a..8c4539b 100644
--- a/open_readspeaker.module
+++ b/open_readspeaker.module
@@ -67,6 +67,10 @@ function open_readspeaker_library_info_build() {
 
   $libraryTokenized = \Drupal::token()->replace($libraryUrl);
 
+  if ($config->get('open_readspeaker_doc_reader')) {
+    $libraryTokenized .= '&dload=DocReader.AutoAdd';
+  }
+
   $libraries['basic'] = [
     'version' => 'VERSION',
     'js' => [
diff --git a/src/Form/OpenReadSpeakerSettingsForm.php b/src/Form/OpenReadSpeakerSettingsForm.php
index a8e75b1..71891cc 100644
--- a/src/Form/OpenReadSpeakerSettingsForm.php
+++ b/src/Form/OpenReadSpeakerSettingsForm.php
@@ -190,6 +190,13 @@ class OpenReadSpeakerSettingsForm extends ConfigFormBase {
       '#type' => 'checkbox',
       '#default_value' => $config->get('open_readspeaker_post_mode'),
     ];
+
+    $form['settings']['open_readspeaker_doc_reader'] = [
+      '#title' => $this->t('Enable document reading'),
+      '#description' => $this->t('Enabling this option will allow you to read links to documents in PDF format.'),
+      '#type' => 'checkbox',
+      '#default_value' => $config->get('open_readspeaker_doc_reader'),
+    ];
     return parent::buildForm($form, $form_state);
   }
 
@@ -205,6 +212,7 @@ class OpenReadSpeakerSettingsForm extends ConfigFormBase {
       ->set('open_readspeaker_i18n', $form_state->getValue('open_readspeaker_i18n'))
       ->set('open_readspeaker_post_mode', $form_state->getValue('open_readspeaker_post_mode'))
       ->set('open_readspeaker_url', $form_state->getValue('open_readspeaker_url'))
+      ->set('open_readspeaker_doc_reader', $form_state->getValue('open_readspeaker_doc_reader'))
       ->save();
 
     Cache::invalidateTags(['library_info']);
diff --git a/src/Plugin/Block/OpenReadspeakerBlock.php b/src/Plugin/Block/OpenReadspeakerBlock.php
index d0238bb..a1a44f2 100644
--- a/src/Plugin/Block/OpenReadspeakerBlock.php
+++ b/src/Plugin/Block/OpenReadspeakerBlock.php
@@ -128,6 +128,7 @@ class OpenReadspeakerBlock extends BlockBase implements ContainerFactoryPluginIn
     $accountid = $config->get('open_readspeaker_accountid');
     $cdn = $config->get('open_readspeaker_cdn_region');
     $post_mode = $config->get('open_readspeaker_post_mode');
+    $doc_reader = $config->get('open_readspeaker_doc_reader');
     $url = Url::fromRoute(
       '<current>',
       $this->request->query->all(),
@@ -144,6 +145,9 @@ class OpenReadspeakerBlock extends BlockBase implements ContainerFactoryPluginIn
     if ($post_mode) {
       $library[] = 'open_readspeaker/post_mode';
     }
+    if ($doc_reader) {
+      $library[] = 'open_readspeaker/doc_reader';
+    }
     $library[] = 'open_readspeaker/basic';
 
     $build['open_readspeaker_block'] = [
@@ -166,6 +170,11 @@ class OpenReadspeakerBlock extends BlockBase implements ContainerFactoryPluginIn
         ],
       ],
     ];
+    if ($doc_reader) {
+      $build['open_readspeaker_block']['#attached']['drupalSettings'] = [
+        'doc_reader_lang' => $config->get('open_readspeaker_i18n'),
+      ];
+    }
     return $build;
   }
 
-- 
2.43.0

