diff --git a/rero_ils/config.py b/rero_ils/config.py
index 592e01e4d3..c5a4f1f906 100644
--- a/rero_ils/config.py
+++ b/rero_ils/config.py
@@ -549,7 +549,8 @@ def _(x):
'https://www.google-analytics.com',
'https://services.test.rero.ch',
'https://services.rero.ch',
- 'https://cdn.jsdelivr.net'
+ 'https://cdn.jsdelivr.net',
+ 'https://www.babelio.com'
]
},
'content_security_policy_report_uri': None,
@@ -3941,3 +3942,9 @@ def search_type(field):
}
},
]
+
+# Babeltheque Configuration
+# =========================
+RERO_ILS_APP_BABELTHEQUE_CONFIG = {
+ 'enabled_views': []
+}
diff --git a/rero_ils/modules/documents/templates/rero_ils/detailed_view_documents.html b/rero_ils/modules/documents/templates/rero_ils/detailed_view_documents.html
index dad7691285..19536c3450 100644
--- a/rero_ils/modules/documents/templates/rero_ils/detailed_view_documents.html
+++ b/rero_ils/modules/documents/templates/rero_ils/detailed_view_documents.html
@@ -1,7 +1,7 @@
{# -*- coding: utf-8 -*-
RERO ILS
- Copyright (C) 2019-2023 RERO
+ Copyright (C) 2019-2024 RERO
Copyright (C) 2019-2023 UCLouvain
This program is free software: you can redistribute it and/or modify
@@ -20,9 +20,14 @@
{%- extends 'rero_ils/page.html' %}
{% from 'rero_ils/macros/macro.html' import div, dict_values, div_list, dl, dl_row, dl_dict, dl_list, div_json %}
+{% set isbn = record|get_first_isbn %}
+
{%- block css %}
{{ super() }}
{{ node_assets('@rero/rero-ils-ui/dist/public-holdings-items', ['styles.*css'], 'css') }}
+ {% if viewcode | babeltheque_enabled_view %}
+ {{ webpack['babeltheque.css'] }}
+ {% endif %}
{%- endblock css %}
{%- block body %}
@@ -62,6 +67,9 @@
{% endfor %}
+ {% if viewcode | babeltheque_enabled_view and isbn is not none %}
+
+ {% endif %}
@@ -278,6 +286,14 @@
{% endif %}
+{% if viewcode | babeltheque_enabled_view and isbn is not none %}
+
+
+
+ {% endif %}
{%- block record_body %}
@@ -293,6 +309,15 @@
{{ _('Description') }}
+ {% if viewcode | babeltheque_enabled_view and isbn is not none %}
+
+
+ {{ _('More infos') }}
+
+
+ {% endif %}
@@ -322,6 +347,15 @@
{{ _('Description') }}
+ {% if viewcode | babeltheque_enabled_view and isbn is not none %}
+
+
+ {{ _('More infos') }}
+
+
+ {% endif %}
@@ -344,6 +378,21 @@
{% include('rero_ils/_documents_description.html') %}
+ {% if viewcode | babeltheque_enabled_view %}
+
+ {% endif %}
{% endif %}
@@ -370,6 +419,9 @@ {{ _('Export Formats') }}:
{%- endblock body %}
{%- block javascript %}
-{{ super() }}
-{{ node_assets('@rero/rero-ils-ui/dist/public-holdings-items', tags='defer') }}
+ {{ super() }}
+ {{ node_assets('@rero/rero-ils-ui/dist/public-holdings-items', tags='defer') }}
+ {% if viewcode | babeltheque_enabled_view and isbn is not none %}
+
+ {% endif %}
{% endblock javascript %}
diff --git a/rero_ils/modules/documents/views.py b/rero_ils/modules/documents/views.py
index 2ae9d4ae6f..795903d4aa 100644
--- a/rero_ils/modules/documents/views.py
+++ b/rero_ils/modules/documents/views.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
#
# RERO ILS
-# Copyright (C) 2019-2023 RERO
+# Copyright (C) 2019-2024 RERO
# Copyright (C) 2019-2023 UCLouvain
#
# This program is free software: you can redistribute it and/or modify
@@ -118,6 +118,26 @@ def doc_item_view_method(pid, record, template=None, **kwargs):
)
+@blueprint.app_template_filter()
+def babeltheque_enabled_view(view):
+ """Check if the view is activated for babeltheque."""
+ enabled_views = current_app.config.get(
+ 'RERO_ILS_APP_BABELTHEQUE_CONFIG', {}).get('enabled_views', [])
+ return view in enabled_views
+
+
+@blueprint.app_template_filter()
+def get_first_isbn(record):
+ """Get first isbn result."""
+ # ISBN
+ isbns = [
+ identified_by.get('value')
+ for identified_by in record.get('identifiedBy', [])
+ if identified_by.get('type') == 'bf:Isbn'
+ ]
+ return isbns[0] if isbns else None
+
+
@blueprint.app_template_filter()
def note_general(notes):
"""Preprocess notes to extract only general type."""
diff --git a/rero_ils/theme/assets/scss/rero_ils/babeltheque.scss b/rero_ils/theme/assets/scss/rero_ils/babeltheque.scss
new file mode 100644
index 0000000000..2547a5f253
--- /dev/null
+++ b/rero_ils/theme/assets/scss/rero_ils/babeltheque.scss
@@ -0,0 +1,122 @@
+/*
+
+ RERO ILS
+ Copyright (C) 2019-2024 RERO
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, version 3 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+
+ */
+
+#BW_suggestions,
+#BW_etiquettes {
+ margin-top: 16px;
+}
+
+#BW_notes h2 {
+ display: none;
+}
+
+#BW_notes img {
+ margin-bottom: 6px;
+}
+
+#BW_notes {
+ font-size: 0.7em;
+}
+
+#BW_etiquettes h2,
+.BW_critiques_opac_add,
+.BW_citations_opac_add {
+ display: none;
+}
+
+#BW_ulEti {
+ display: flex;
+ gap: 6px;
+ align-items: center;
+ justify-content: center;
+ flex-wrap: wrap;
+ padding-inline-start: 0;
+ max-width: 400px !important;
+}
+
+#BW_ulEti ol {
+ padding-inline-start: 0;
+ text-transform: lowercase;
+}
+
+
+#BW_ulEti a.tag_s0 {
+ font-weight: 120;
+ font-size: 0.8em;
+}
+#BW_ulEti a.tag_s1 {
+ font-weight: 150;
+ font-size: 0.9em;
+}
+#BW_ulEti a.tag_s2 {
+ font-weight: 180;
+ font-size: 1.0em;
+}
+#BW_ulEti a.tag_s3 {
+ font-weight: 200;
+ font-size: 1.2em;
+}
+#BW_ulEti a.tag_s4 {
+ font-weight: 220;
+ font-size: 1.4em;
+}
+#BW_ulEti a.tag_s5 {
+ font-weight: 230;
+ font-size: 1.5em;
+}
+#BW_ulEti a.tag_s6 {
+ font-weight: 320;
+ font-size: 1.6em;
+}
+#BW_ulEti a.tag_s7 {
+ font-weight: 350;
+ font-size: 1.7em;
+}
+#BW_ulEti a.tag_s8 {
+ font-weight: 400;
+ font-size: 1.8em;
+}
+
+.babelio-block,
+.bw_list_recos {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 20px;
+}
+
+.babelio-block div,
+.bw_list_recos div {
+ flex-grow: 1;
+}
+
+#BW_prix_litt ul {
+ list-style: none;
+ padding-inline-start: 0;
+ flex-wrap: wrap;
+}
+
+#BW_bio_titre,
+.bw_h2 {
+ font-size: 1.3em;
+}
+
+.BW_couv_suggestions {
+ max-height: 140px;
+ max-width: 100px;
+}
diff --git a/rero_ils/theme/webpack.py b/rero_ils/theme/webpack.py
index aa2c09509a..6e284feeeb 100644
--- a/rero_ils/theme/webpack.py
+++ b/rero_ils/theme/webpack.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
#
# RERO ILS
-# Copyright (C) 2019-2022 RERO
+# Copyright (C) 2019-2024 RERO
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@@ -30,7 +30,8 @@
'assets',
entry={
'global': './scss/rero_ils/styles.scss',
- 'reroils_public': './js/reroils/public.js'
+ 'reroils_public': './js/reroils/public.js',
+ 'babeltheque': './scss/rero_ils/babeltheque.scss'
},
dependencies={
'popper.js': '1.16.1',
diff --git a/tests/ui/documents/test_documents_filter.py b/tests/ui/documents/test_documents_filter.py
index e7dc724623..2a226874c1 100644
--- a/tests/ui/documents/test_documents_filter.py
+++ b/tests/ui/documents/test_documents_filter.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
#
# RERO ILS
-# Copyright (C) 2019 RERO
+# Copyright (C) 2019-2024 RERO
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@@ -16,9 +16,13 @@
# along with this program. If not, see .
"""Document filters tests."""
-from rero_ils.modules.documents.views import cartographic_attributes, \
- contribution_format, doc_entity_label, identified_by, main_title_text, \
- note_general, notes_except_general, part_of_format, provision_activity, \
+
+import mock
+
+from rero_ils.modules.documents.views import babeltheque_enabled_view, \
+ cartographic_attributes, contribution_format, doc_entity_label, \
+ get_first_isbn, identified_by, main_title_text, note_general, \
+ notes_except_general, part_of_format, provision_activity, \
provision_activity_not_publication, provision_activity_original_date, \
provision_activity_publication, title_variants, work_access_point
from rero_ils.modules.entities.models import EntityType
@@ -629,3 +633,27 @@ def test_doc_entity_label_filter(entity_person, local_entity_person):
assert 'textual' == entity_type
assert 'subject topic' == value
assert 'subject topic - Sub 1 - Sub 2' == label
+
+
+def test_babeltheque_enabled_view():
+ """Check enabled view for babeltheque."""
+ class CurrentApp:
+ """Current app mock."""
+ config = {'RERO_ILS_APP_BABELTHEQUE_CONFIG': {
+ 'enabled_views': ['global']
+ }}
+ with mock.patch(
+ 'rero_ils.modules.documents.views.current_app', CurrentApp):
+ assert babeltheque_enabled_view('global')
+ assert not babeltheque_enabled_view('foo')
+
+
+def test_get_first_isbn():
+ """Get the first isbn on identifiedBy field."""
+ record = {'identifiedBy': [
+ {'type': 'bf:Isbn', 'value': '9782501053006'},
+ {'type': 'bf:Isbn', 'value': '9782501033671'}
+ ]}
+ assert '9782501053006' == get_first_isbn(record)
+ record = {'identifiedBy': []}
+ assert None is get_first_isbn(record)