+ {% block page_header %} + {{ self.page_title() }} + {% endblock %} +
++ + + + Log out + + + + Settings + + +
+diff --git a/cms/README.md b/cms/README.md index 32348a19e3..fd780648b8 100644 --- a/cms/README.md +++ b/cms/README.md @@ -177,11 +177,11 @@ frontmatter directives, then you can also import the template directly at any po This is done by wrapping a template import directive in an HTML `
.*)/?$ /admin/applications$q; ~*^/admin/suggestion/(?.*)/?$ /admin/application/$id; \ No newline at end of file diff --git a/doajtest/testdrive/publisher_with_journal.py b/doajtest/testdrive/publisher_with_journal.py index bd4173a822..a03842b505 100644 --- a/doajtest/testdrive/publisher_with_journal.py +++ b/doajtest/testdrive/publisher_with_journal.py @@ -1,6 +1,7 @@ from portality import constants from doajtest.testdrive.factory import TestDrive from doajtest.fixtures.v2.journals import JournalFixtureFactory +from doajtest.fixtures.v2.applications import ApplicationFixtureFactory from portality import models @@ -22,17 +23,32 @@ def setup(self) -> dict: j.bibjson().pissn = "2222-2222" j.save() + source = ApplicationFixtureFactory.make_application_source() + a = models.Application(**source) + a.remove_current_journal() + a.remove_related_journal() + a.application_type = constants.APPLICATION_TYPE_NEW_APPLICATION + a.set_id(a.makeid()) + a.set_owner(acc.id) + a.bibjson().eissn = "3333-3333" + a.bibjson().pissn = "4444-4444" + a.set_application_status(constants.APPLICATION_STATUS_IN_PROGRESS) + a.save() + return { "account": { "username": acc.id, "password": pw, "api_key": acc.api_key }, - "journals": [j.id] + "journals": [j.id], + "applications": [a.id], } def teardown(self, params) -> dict: models.Account.remove_by_id(params["account"]["username"]) for jid in params["journals"]: models.Journal.remove_by_id(jid) + for aid in params["applications"]: + models.Application.remove_by_id(aid) return {"status": "success"} \ No newline at end of file diff --git a/doajtest/unit/application_processors/test_application_processor_emails.py b/doajtest/unit/application_processors/test_application_processor_emails.py index 036c86c68a..cc106942e6 100644 --- a/doajtest/unit/application_processors/test_application_processor_emails.py +++ b/doajtest/unit/application_processors/test_application_processor_emails.py @@ -13,6 +13,7 @@ from portality.forms.application_forms import ApplicationFormFactory, JournalFormFactory from portality.bll import DOAJ from doajtest.mocks.bll_notification import InterceptNotifications +from portality.ui import templates from portality.events.consumers.application_assed_inprogress_notify import ApplicationAssedInprogressNotify @@ -119,7 +120,7 @@ def test_01_public_application_email(self): # We expect one email sent: # * to the applicant, informing them the application was received - public_template = re.escape('notification_email.jinja2') + public_template = re.escape(templates.EMAIL_NOTIFICATION) public_to = re.escape(account.email) public_subject = re.escape("Directory of Open Access Journals - Your application (" + ", ".join(issn for issn in processor.source.bibjson().issns()) + ") to DOAJ has been received") public_email_matched = re.search(email_log_regex % (public_template, public_to, public_subject), @@ -219,7 +220,7 @@ def test_01_maned_review_emails(self): assert notification.action is not None assert notification.classification == constants.NOTIFICATION_CLASSIFICATION_STATUS_CHANGE - editor_template = re.escape('notification_email.jinja2') + editor_template = re.escape(templates.EMAIL_NOTIFICATION) editor_to = re.escape('eddie@example.com') editor_subject = re.escape("Application (" + ", ".join(issn for issn in processor.source.bibjson().issns()) + ") reverted to 'In Progress' by Managing Editor\n") editor_email_matched = re.search(email_log_regex % (editor_template, editor_to, editor_subject), @@ -235,7 +236,7 @@ def test_01_maned_review_emails(self): assert notification.action is not None assert notification.classification == constants.NOTIFICATION_CLASSIFICATION_STATUS_CHANGE - assoc_editor_template = re.escape('email/notification_email.jinja2') + assoc_editor_template = re.escape(templates.EMAIL_NOTIFICATION) assoc_editor_to = re.escape('associate@example.com') assoc_editor_subject = re.escape(self.svc.short_notification(ApplicationAssedInprogressNotify.ID).replace("{issns}", ", ".join(issn for issn in processor.source.bibjson().issns())) + "\n")# "an application assigned to you has not passed review." assoc_editor_email_matched = re.search(email_log_regex % (assoc_editor_template, assoc_editor_to, assoc_editor_subject), @@ -287,7 +288,7 @@ def test_01_maned_review_emails(self): assert notification.action is not None assert notification.classification == constants.NOTIFICATION_CLASSIFICATION_STATUS_CHANGE - editor_template = re.escape('email/notification_email.jinja2') + editor_template = re.escape(templates.EMAIL_NOTIFICATION) editor_to = re.escape('eddie@example.com') editor_subject = re.escape("Directory of Open Access Journals - Application ({}) reverted to 'In Progress' by Managing Editor".format(', '.join(issn for issn in processor.source.bibjson().issns()))) editor_email_matched = re.search(email_log_regex % (editor_template, editor_to, editor_subject), @@ -303,7 +304,7 @@ def test_01_maned_review_emails(self): assert notification.action is not None assert notification.classification == constants.NOTIFICATION_CLASSIFICATION_STATUS_CHANGE - assoc_editor_template = re.escape('email/notification_email.jinja2') + assoc_editor_template = re.escape(templates.EMAIL_NOTIFICATION) assoc_editor_to = re.escape('associate@example.com') assoc_editor_subject = re.escape(self.svc.short_notification(ApplicationAssedInprogressNotify.ID).replace("{issns}", ", ".join(issn for issn in processor.source.bibjson().issns())) + "\n") # "an application assigned to you has not passed review." assoc_editor_email_matched = re.search( @@ -344,16 +345,16 @@ def test_01_maned_review_emails(self): # We expect 2 emails to be sent: # * to the AssEd who's been assigned, # * and to the publisher informing them there's an editor assigned. - assEd_template = re.escape('email/notification_email.jinja2') + assEd_template = re.escape(templates.EMAIL_NOTIFICATION) assEd_to = re.escape(models.Account.pull('associate_3').email) assEd_subject = re.escape('Directory of Open Access Journals - New application ({}) assigned to you'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) assEd_email_matched = re.search(email_log_regex % (assEd_template, assEd_to, assEd_subject), info_stream_contents, re.DOTALL) - assert bool(assEd_email_matched) + assert bool(assEd_email_matched), info_stream_contents.strip('\x00') - publisher_template = re.escape('email/notification_email.jinja2') + publisher_template = re.escape(templates.EMAIL_NOTIFICATION) publisher_to = re.escape(owner.email) publisher_subject = re.escape('Directory of Open Access Journals - Your application ({}) has been assigned to an editor for review'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -385,7 +386,7 @@ def test_01_maned_review_emails(self): # We expect 2 emails to be sent: # * to the editor of the assigned group, # * to the AssEd who's been assigned - editor_template = re.escape('email/notification_email.jinja2') + editor_template = re.escape(templates.EMAIL_NOTIFICATION) editor_to = re.escape('eddie@example.com') editor_subject = re.escape('Directory of Open Access Journals - New application ({}) assigned to your group'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -394,13 +395,13 @@ def test_01_maned_review_emails(self): re.DOTALL) assert bool(editor_email_matched) - assEd_template = re.escape('email/notification_email.jinja2') + assEd_template = re.escape(templates.EMAIL_NOTIFICATION) assEd_to = re.escape(models.Account.pull('associate_3').email) assEd_subject = re.escape('Directory of Open Access Journals - New application ({}) assigned to you'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) assEd_email_matched = re.search(email_log_regex % (assEd_template, assEd_to, assEd_subject), info_stream_contents, re.DOTALL) - assert bool(assEd_email_matched) + assert bool(assEd_email_matched), info_stream_contents.strip('\x00') assert len(re.findall(email_count_string, info_stream_contents)) == 2 # Clear the stream for the next part @@ -433,7 +434,7 @@ def test_01_maned_review_emails(self): # We expect one email to be sent here: # * to the ManEd in charge of the assigned Editor Group, saying an application is ready - manEd_template = re.escape('email/notification_email.jinja2') + manEd_template = re.escape(templates.EMAIL_NOTIFICATION) manEd_to = re.escape(acc.email) manEd_subject = re.escape('Directory of Open Access Journals - Application ({}) marked as ready'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -458,7 +459,7 @@ def test_01_maned_review_emails(self): # We expect 1 email to be sent: # * to the publisher, informing them of the journal's acceptance - publisher_template = re.escape('email/notification_email.jinja2') + publisher_template = re.escape(templates.EMAIL_NOTIFICATION) publisher_to = re.escape(owner.email) publisher_subject = re.escape('Directory of Open Access Journals - Your journal ({}) has been accepted'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -509,7 +510,7 @@ def test_02_ed_review_emails(self): # We expect one email to be sent here: # * to the ManEds, saying an application is ready - manEd_template = 'email/notification_email.jinja2' + manEd_template = templates.EMAIL_NOTIFICATION manEd_to = re.escape("maned@example.com") manEd_subject = re.escape('Application ({}) marked as ready'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -544,16 +545,16 @@ def test_02_ed_review_emails(self): # We expect 2 emails to be sent: # * to the AssEd who's been assigned, # * and to the publisher informing them there's an editor assigned. - assEd_template = 'email/notification_email.jinja2' + assEd_template = templates.EMAIL_NOTIFICATION assEd_to = re.escape(models.Account.pull('associate_3').email) assEd_subject = re.escape('New application ({}) assigned to you'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) assEd_email_matched = re.search(email_log_regex % (assEd_template, assEd_to, assEd_subject), info_stream_contents, re.DOTALL) - assert bool(assEd_email_matched) + assert bool(assEd_email_matched), info_stream_contents.strip('\x00') - publisher_template = 'email/notification_email.jinja2' + publisher_template = templates.EMAIL_NOTIFICATION publisher_to = re.escape(owner.email) publisher_subject = re.escape('Your update request ({}) has been assigned to an editor for review'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -582,14 +583,14 @@ def test_02_ed_review_emails(self): # We expect 1 email to be sent: # * to the AssEd who's been assigned, - assEd_template = 'email/notification_email.jinja2' + assEd_template = templates.EMAIL_NOTIFICATION assEd_to = re.escape(models.Account.pull('associate_2').email) assEd_subject = re.escape('New application ({}) assigned to you'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) assEd_email_matched = re.search(email_log_regex % (assEd_template, assEd_to, assEd_subject), info_stream_contents, re.DOTALL) - assert bool(assEd_email_matched) + assert bool(assEd_email_matched), info_stream_contents.strip('\x00') assert len(re.findall(email_count_string, info_stream_contents)) == 1 # Clear the stream for the next part @@ -624,7 +625,7 @@ def test_02_ed_review_emails(self): # We expect two email to be sent: # * to the associate editor, informing them the application has been bounced back to in progress. # * to the editor telling them an application has reverted to in progress - assoc_editor_template = re.escape('email/notification_email.jinja2') + assoc_editor_template = re.escape(templates.EMAIL_NOTIFICATION) assoc_editor_to = re.escape('associate@example.com') assoc_editor_subject = re.escape('One of your applications ({}) has not passed review'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) assoc_editor_email_matched = re.search( @@ -666,7 +667,7 @@ def test_03_assoc_ed_review_emails(self): # We expect one email to be sent here: # * to the publisher, notifying that an editor is viewing their application - publisher_template = re.escape('email/notification_email.jinja2') + publisher_template = re.escape(templates.EMAIL_NOTIFICATION) publisher_to = re.escape(owner.email) publisher_subject = re.escape('Directory of Open Access Journals - Your submission ({}) is under review'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -687,7 +688,7 @@ def test_03_assoc_ed_review_emails(self): # We expect one email sent: # * to the editor, informing them an application has been completed by an Associate Editor - editor_template = re.escape('notification_email.jinja2') + editor_template = re.escape(templates.EMAIL_NOTIFICATION) editor_to = re.escape('eddie@example.com') editor_subject = re.escape('Directory of Open Access Journals - Application ({}) marked as completed'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) editor_email_matched = re.search(email_log_regex % (editor_template, editor_to, editor_subject), @@ -803,7 +804,7 @@ def test_01_maned_review_emails(self): assert notification.action is not None assert notification.classification == constants.NOTIFICATION_CLASSIFICATION_STATUS_CHANGE - editor_template = re.escape('email/notification_email.jinja2') + editor_template = re.escape(templates.EMAIL_NOTIFICATION) editor_to = re.escape('eddie@example.com') editor_subject = re.escape("Application ({}) reverted to 'In Progress' by Managing Editor".format(', '.join(issn for issn in processor.source.bibjson().issns()))) editor_email_matched = re.search(email_log_regex % (editor_template, editor_to, editor_subject), @@ -820,7 +821,7 @@ def test_01_maned_review_emails(self): assert notification.action is not None assert notification.classification == constants.NOTIFICATION_CLASSIFICATION_STATUS_CHANGE - assoc_editor_template = re.escape('email/notification_email.jinja2') + assoc_editor_template = re.escape(templates.EMAIL_NOTIFICATION) assoc_editor_to = re.escape('associate@example.com') assoc_editor_subject = re.escape(self.svc.short_notification( ApplicationAssedInprogressNotify.ID).replace("{issns}", ", ".join(issn for issn in processor.target.bibjson().issns())) + "\n") # "an application assigned to you has not passed review." @@ -874,7 +875,7 @@ def test_01_maned_review_emails(self): assert notification.action is not None assert notification.classification == constants.NOTIFICATION_CLASSIFICATION_STATUS_CHANGE - editor_template = re.escape('email/notification_email.jinja2') + editor_template = re.escape(templates.EMAIL_NOTIFICATION) editor_to = re.escape('eddie@example.com') editor_subject = re.escape("Application ({}) reverted to 'In Progress' by Managing Editor".format(', '.join(issn for issn in processor.source.bibjson().issns()))) editor_email_matched = re.search(email_log_regex % (editor_template, editor_to, editor_subject), @@ -891,7 +892,7 @@ def test_01_maned_review_emails(self): assert notification.action is not None assert notification.classification == constants.NOTIFICATION_CLASSIFICATION_STATUS_CHANGE - assoc_editor_template = re.escape('email/notification_email.jinja2') + assoc_editor_template = re.escape(templates.EMAIL_NOTIFICATION) assoc_editor_to = re.escape('associate@example.com') assoc_editor_subject = re.escape(self.svc.short_notification( ApplicationAssedInprogressNotify.ID).replace("{issns}", ", ".join(issn for issn in processor.source.bibjson().issns())) + "\n") # "an application assigned to you has not passed review." @@ -927,16 +928,16 @@ def test_01_maned_review_emails(self): # We expect 2 emails to be sent: # * to the AssEd who's been assigned, # * and to the publisher informing them there's an editor assigned. - assEd_template = 'email/notification_email.jinja2' + assEd_template = templates.EMAIL_NOTIFICATION assEd_to = re.escape(models.Account.pull('associate_3').email) assEd_subject = re.escape('New application ({}) assigned to you'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) assEd_email_matched = re.search(email_log_regex % (assEd_template, assEd_to, assEd_subject), info_stream_contents, re.DOTALL) - assert bool(assEd_email_matched) + assert bool(assEd_email_matched), info_stream_contents.strip('\x00') - publisher_template = 'email/notification_email.jinja2' + publisher_template = templates.EMAIL_NOTIFICATION publisher_to = re.escape(owner.email) publisher_subject = re.escape('Your update request ({}) has been assigned to an editor for review'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -968,7 +969,7 @@ def test_01_maned_review_emails(self): # We expect 2 emails to be sent: # * to the editor of the assigned group, # * to the AssEd who's been assigned - editor_template = re.escape('email/notification_email.jinja2') + editor_template = re.escape(templates.EMAIL_NOTIFICATION) editor_to = re.escape('eddie@example.com') editor_subject = re.escape('New application ({}) assigned to your group'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -977,14 +978,14 @@ def test_01_maned_review_emails(self): re.DOTALL) assert bool(editor_email_matched) - assEd_template = 'email/notification_email.jinja2' + assEd_template = templates.EMAIL_NOTIFICATION assEd_to = re.escape(models.Account.pull('associate_3').email) assEd_subject = re.escape('New application ({}) assigned to you'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) assEd_email_matched = re.search(email_log_regex % (assEd_template, assEd_to, assEd_subject), info_stream_contents, re.DOTALL) - assert bool(assEd_email_matched) + assert bool(assEd_email_matched), info_stream_contents.strip('\x00') assert len(re.findall(email_count_string, info_stream_contents)) == 2 # Clear the stream for the next part @@ -1005,7 +1006,7 @@ def test_01_maned_review_emails(self): # We expect one email to be sent here: # * to the ManEds, saying an application is ready - manEd_template = 'email/notification_email.jinja2' + manEd_template = templates.EMAIL_NOTIFICATION manEd_to = re.escape("maned@example.com") manEd_subject = re.escape('Application ({}) marked as ready'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -1032,7 +1033,7 @@ def test_01_maned_review_emails(self): # We expect 1 email to be sent: # * to the publisher, informing them of the journal's acceptance # * to the journal contact, informing them of the journal's acceptance - publisher_template = 'email/notification_email.jinja2' + publisher_template = templates.EMAIL_NOTIFICATION publisher_to = re.escape(owner.email) publisher_subject = re.escape('Update request ({}) accepted'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -1082,7 +1083,7 @@ def test_02_ed_review_emails(self): # We expect one email to be sent here: # * to the ManEds, saying an application is ready - manEd_template = 'email/notification_email.jinja2' + manEd_template = templates.EMAIL_NOTIFICATION manEd_to = re.escape("maned@example.com") manEd_subject = re.escape('Application ({}) marked as ready'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -1116,16 +1117,16 @@ def test_02_ed_review_emails(self): # We expect 2 emails to be sent: # * to the AssEd who's been assigned, # * and to the publisher informing them there's an editor assigned. - assEd_template = 'email/notification_email.jinja2' + assEd_template = templates.EMAIL_NOTIFICATION assEd_to = re.escape(models.Account.pull('associate_3').email) assEd_subject = re.escape('New application ({}) assigned to you'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) assEd_email_matched = re.search(email_log_regex % (assEd_template, assEd_to, assEd_subject), info_stream_contents, re.DOTALL) - assert bool(assEd_email_matched) + assert bool(assEd_email_matched), info_stream_contents.strip('\x00') - publisher_template = 'email/notification_email.jinja2' + publisher_template = templates.EMAIL_NOTIFICATION publisher_to = re.escape(owner.email) publisher_subject = re.escape('Your update request ({}) has been assigned to an editor for review'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -1154,14 +1155,14 @@ def test_02_ed_review_emails(self): # We expect 1 email to be sent: # * to the AssEd who's been assigned, - assEd_template = 'email/notification_email.jinja2' + assEd_template = templates.EMAIL_NOTIFICATION assEd_to = re.escape(models.Account.pull('associate_2').email) assEd_subject = re.escape('New application ({}) assigned to you'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) assEd_email_matched = re.search(email_log_regex % (assEd_template, assEd_to, assEd_subject), info_stream_contents, re.DOTALL) - assert bool(assEd_email_matched) + assert bool(assEd_email_matched), info_stream_contents.strip('\x00') assert len(re.findall(email_count_string, info_stream_contents)) == 1 # Clear the stream for the next part @@ -1195,7 +1196,7 @@ def test_02_ed_review_emails(self): # We expect one email to be sent: # * to the associate editor, informing them the application has been bounced back to in progress. - assoc_editor_template = re.escape('email/notification_email.jinja2') + assoc_editor_template = re.escape(templates.EMAIL_NOTIFICATION) assoc_editor_to = re.escape('associate@example.com') assoc_editor_subject = re.escape('One of your applications ({}) has not passed review'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) assoc_editor_email_matched = re.search( @@ -1241,7 +1242,7 @@ def test_03_assoc_ed_review_emails(self): # We expect one email to be sent here: # * to the publisher, notifying that an editor is viewing their application - publisher_template = re.escape('email/notification_email.jinja2') + publisher_template = re.escape(templates.EMAIL_NOTIFICATION) publisher_to = re.escape(owner.email) publisher_subject = re.escape('Your submission ({}) is under review'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -1262,7 +1263,7 @@ def test_03_assoc_ed_review_emails(self): # We expect one email sent: # * to the editor, informing them an application has been completed by an Associate Editor - editor_template = re.escape('email/notification_email.jinja2') + editor_template = re.escape(templates.EMAIL_NOTIFICATION) editor_to = re.escape('eddie@example.com') editor_subject = re.escape("Application ({}) marked as completed".format(', '.join(issn for issn in processor.source.bibjson().issns()))) editor_email_matched = re.search(email_log_regex % (editor_template, editor_to, editor_subject), @@ -1330,7 +1331,7 @@ def test_01_maned_review_emails(self): # We expect 2 emails to be sent: # * to the editor of the assigned group, # * to the AssEd who's been assigned, - editor_template = re.escape('email/notification_email.jinja2') + editor_template = re.escape(templates.EMAIL_NOTIFICATION) editor_to = re.escape('eddie@example.com') editor_subject = re.escape('Directory of Open Access Journals - New journal ({}) assigned to your group'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) @@ -1339,14 +1340,14 @@ def test_01_maned_review_emails(self): re.DOTALL) assert bool(editor_email_matched) - assEd_template = re.escape('email/notification_email.jinja2') + assEd_template = re.escape(templates.EMAIL_NOTIFICATION) assEd_to = re.escape(models.Account.pull('associate_3').email) assEd_subject = re.escape('Directory of Open Access Journals - New journal ({}) assigned to you'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) assEd_email_matched = re.search(email_log_regex % (assEd_template, assEd_to, assEd_subject), info_stream_contents, re.DOTALL) - assert bool(assEd_email_matched) + assert bool(assEd_email_matched), info_stream_contents.strip('\x00') assert len(re.findall(email_count_string, info_stream_contents)) == 2 ctx.pop() @@ -1370,14 +1371,14 @@ def test_02_ed_review_emails(self): # We expect 1 email to be sent: # * to the AssEd who's been assigned - assEd_template = re.escape('email/notification_email.jinja2') + assEd_template = re.escape(templates.EMAIL_NOTIFICATION) assEd_to = re.escape(models.Account.pull('associate_2').email) assEd_subject = re.escape('Directory of Open Access Journals - New journal ({}) assigned to you'.format(', '.join(issn for issn in processor.source.bibjson().issns()))) assEd_email_matched = re.search(email_log_regex % (assEd_template, assEd_to, assEd_subject), info_stream_contents, re.DOTALL) - assert bool(assEd_email_matched) + assert bool(assEd_email_matched), info_stream_contents.strip('\x00') assert len(re.findall(email_count_string, info_stream_contents)) == 1 ctx.pop() diff --git a/doajtest/unit/application_processors/test_readonly_journal.py b/doajtest/unit/application_processors/test_readonly_journal.py index 9e4bc4c42a..3a98d69805 100644 --- a/doajtest/unit/application_processors/test_readonly_journal.py +++ b/doajtest/unit/application_processors/test_readonly_journal.py @@ -39,14 +39,63 @@ def tearDown(self): super(TestReadOnlyJournal, self).tearDown() lcc.lookup_code = self.old_lookup_code - ########################################################### - # Tests on the publisher's re-journal form - ########################################################### - def test_01_readonly_journal_success(self): - """Give the read-only journal form a full workout""" + def test_01_unknown_context(self): + """ Pulling the wrong context gives an exception """ + + with self.assertRaises(AttributeError): + formulaic_context = JournalFormFactory.context("readonly") + fc = formulaic_context.processor(source=models.Journal(**JOURNAL_SOURCE)) + + def test_02_editor_readonly_journal(self): + """ Tests on the editor's read-only journal form """ + + # we start by constructing it from source + formulaic_context = JournalFormFactory.context("editor_readonly") + fc = formulaic_context.processor(source=models.Journal(**JOURNAL_SOURCE)) + assert isinstance(fc, ReadOnlyJournal) + assert fc.form is not None + assert fc.source is not None + assert fc.form_data is None + + # now construct it from form data (with a known source) + journal_obj = models.Journal(**JOURNAL_SOURCE) + journal_bibjson_obj = journal_obj.bibjson() + fc = formulaic_context.processor( + formdata=JOURNAL_FORM, + source=journal_obj + ) + + assert isinstance(fc, ReadOnlyJournal) + assert fc.form is not None + assert fc.source is not None + assert fc.form_data is not None + + # see that form has the correct info from an object (after all, that's the only point of having the form) + assert fc.form.title.data == journal_bibjson_obj.title + assert fc.form.pissn.data == journal_bibjson_obj.pissn + assert fc.form.eissn.data == journal_bibjson_obj.eissn + + # test each of the workflow components individually ... + + # run the validation + assert fc.validate(), fc.form.errors + + # run the crosswalk (no need to look in detail, xwalks are tested elsewhere) + fc.form2target() + assert fc.target is None # can't edit data using this form + + # patch the target with data from the source + fc.patch_target() + assert fc.target is None # can't edit data using this form + + # shouldn't be able to finalise, can't edit data using this form + self.assertRaises(Exception, fc.finalise) + + def test_03_maned_readonly_journal(self): + """ Tests on the managing editor's read-only journal form """ # we start by constructing it from source - formulaic_context = JournalFormFactory.context("readonly") + formulaic_context = JournalFormFactory.context("admin_readonly") fc = formulaic_context.processor(source=models.Journal(**JOURNAL_SOURCE)) assert isinstance(fc, ReadOnlyJournal) assert fc.form is not None diff --git a/doajtest/unit/event_consumers/test_account_created_email.py b/doajtest/unit/event_consumers/test_account_created_email.py index d360eb673e..7e5af568a8 100644 --- a/doajtest/unit/event_consumers/test_account_created_email.py +++ b/doajtest/unit/event_consumers/test_account_created_email.py @@ -8,6 +8,7 @@ from io import StringIO import logging import re +from portality.ui import templates # A regex string for searching the log entries email_log_regex = 'template.*%s.*to:\[u{0,1}\'%s.*subject:.*%s' @@ -65,7 +66,7 @@ def test_consume_success(self): # We expect one email sent: # * to the applicant, informing them the application was received - template = re.escape('account_created.jinja2') + template = re.escape(templates.EMAIL_ACCOUNT_CREATED) to = re.escape(acc.email) subject = "Directory of Open Access Journals - account created, please verify your email address" email_matched = re.search(email_log_regex % (template, to, subject), diff --git a/doajtest/unit/event_consumers/test_account_passwordreset_email.py b/doajtest/unit/event_consumers/test_account_passwordreset_email.py index 43119416cd..a400f7358d 100644 --- a/doajtest/unit/event_consumers/test_account_passwordreset_email.py +++ b/doajtest/unit/event_consumers/test_account_passwordreset_email.py @@ -8,6 +8,7 @@ from io import StringIO import logging import re +from portality.ui import templates # A regex string for searching the log entries email_log_regex = 'template.*%s.*to:\[u{0,1}\'%s.*subject:.*%s' @@ -65,7 +66,7 @@ def test_consume_success(self): # We expect one email sent: # * to the applicant, informing them the application was received - template = re.escape('account_password_reset.jinja2') + template = re.escape(templates.EMAIL_PASSWORD_RESET) to = re.escape(acc.email) subject = "Directory of Open Access Journals - password reset" email_matched = re.search(email_log_regex % (template, to, subject), diff --git a/doajtest/unit/event_consumers/test_journal_assed_assigned_notify.py b/doajtest/unit/event_consumers/test_journal_assed_assigned_notify.py index 2882e51ea7..f24a9c894a 100644 --- a/doajtest/unit/event_consumers/test_journal_assed_assigned_notify.py +++ b/doajtest/unit/event_consumers/test_journal_assed_assigned_notify.py @@ -49,7 +49,7 @@ def test_consume_success(self): assert n.classification == constants.NOTIFICATION_CLASSIFICATION_ASSIGN assert n.long is not None assert n.short is not None - assert n.action is not None + assert n.action is None # view.editor.journal_page has been removed assert not n.is_seen() def test_consume_fail(self): diff --git a/doajtest/unit/event_consumers/test_journal_editor_group_assigned_notify.py b/doajtest/unit/event_consumers/test_journal_editor_group_assigned_notify.py index ed0b46d775..e55d0ea082 100644 --- a/doajtest/unit/event_consumers/test_journal_editor_group_assigned_notify.py +++ b/doajtest/unit/event_consumers/test_journal_editor_group_assigned_notify.py @@ -41,7 +41,7 @@ def test_consume_success(self): eg.set_editor("editor") eg.save(blocking=True) - event = models.Event(constants.EVENT_JOURNAL_EDITOR_GROUP_ASSIGNED, context={"journal" : app.data}) + event = models.Event(constants.EVENT_JOURNAL_EDITOR_GROUP_ASSIGNED, context={"journal": app.data}) JournalEditorGroupAssignedNotify.consume(event) time.sleep(1) @@ -54,7 +54,7 @@ def test_consume_success(self): assert n.classification == constants.NOTIFICATION_CLASSIFICATION_ASSIGN assert n.long is not None assert n.short is not None - assert n.action is not None + assert n.action is None # view.editor.journal_page has been removed assert not n.is_seen() def test_consume_fail(self): diff --git a/doajtest/unit/test_application_forms.py b/doajtest/unit/test_application_forms.py index 94e17ab761..7e0fd9e47e 100644 --- a/doajtest/unit/test_application_forms.py +++ b/doajtest/unit/test_application_forms.py @@ -1,3 +1,7 @@ +""" +NOTE: This test has been disabled due to the removal of the /editor/journal route (see portality.view.editor#51) +""" + import pytest from doajtest import helpers @@ -38,6 +42,7 @@ def test_disable_edit_note_except_editing_user(user_id, expected_result): class TestEditableNote(DoajTestCase): + @pytest.mark.skip(reason="Untestable: we don't have the editor.journal_page route enabled") # FIXME: permanently? def test_note_textarea_disabled_correctly(self): pwd = 'password123' acc = models.Account(**AccountFixtureFactory.make_editor_source()) diff --git a/doajtest/unit/test_article_forms.py b/doajtest/unit/test_article_forms.py new file mode 100644 index 0000000000..378c54a31d --- /dev/null +++ b/doajtest/unit/test_article_forms.py @@ -0,0 +1,31 @@ +from doajtest.fixtures import AccountFixtureFactory, JournalFixtureFactory +from doajtest.helpers import DoajTestCase, save_all_block_last +from portality import models +from portality.forms import article_forms +from portality.forms.article_forms import ArticleFormFactory, PublisherMetadataForm + + +class TestArticleFormsFunction(DoajTestCase): + def test_choices_for_article_issns(self): + account = models.Account(**(AccountFixtureFactory.make_managing_editor_source())) + + journals = [models.Journal(**j) for j in JournalFixtureFactory.make_many_journal_sources()] + for j in journals: + j.set_owner(account.id) + j.set_in_doaj(True) + save_all_block_last(journals) + + pissns = article_forms.choices_for_article_issns(account, issn_type='pissn') + eissns = article_forms.choices_for_article_issns(account, issn_type='eissn') + issns = article_forms.choices_for_article_issns(account, issn_type='all') + + assert pissns != eissns + assert len(issns) + assert set(pissns) | set(eissns) == set(issns) + + def test_empty_article_form(self): + user = models.Account(**AccountFixtureFactory.make_publisher_source()) + form: PublisherMetadataForm = ArticleFormFactory.get_from_context(user=user, role="publisher") + assert form is not None + assert form.source is None + assert form.form_data is None diff --git a/doajtest/unit/test_bll_notifications_notify.py b/doajtest/unit/test_bll_notifications_notify.py index 1720ac6add..15244f6ec1 100644 --- a/doajtest/unit/test_bll_notifications_notify.py +++ b/doajtest/unit/test_bll_notifications_notify.py @@ -5,6 +5,7 @@ from portality import models from portality.bll import DOAJ from portality.ui.messages import Messages +from portality.ui import templates from portality.bll.exceptions import NoSuchObjectException, NoSuchPropertyException # A regex string for searching the log entries @@ -60,7 +61,7 @@ def test_01_notify(self): info_stream_contents = self.info_stream.getvalue() # check an email is sent - template = re.escape('email/notification_email.jinja2') + template = re.escape(templates.EMAIL_NOTIFICATION) to = re.escape('test@example.com') subject = n2.short email_matched = re.search( diff --git a/docs/redhead/config.json b/docs/redhead/config.json new file mode 100644 index 0000000000..1202c4641a --- /dev/null +++ b/docs/redhead/config.json @@ -0,0 +1,12 @@ +[ + { + "template_dir": "/home/richard/Dropbox/Code/doaj3/portality/templates", + "template_filters": [".*\\.html$", ".*\\.jinja2$", ".*_frag$"], + "out_dir": "/home/richard/Dropbox/Code/doaj3/docs/redhead/templates" + }, + { + "template_dir": "/home/richard/Dropbox/Code/doaj3/portality/templates-v2", + "template_filters": [".*\\.html$", ".*\\.jinja2$", ".*_frag$"], + "out_dir": "/home/richard/Dropbox/Code/doaj3/docs/redhead/templates-v2" + } +] \ No newline at end of file diff --git a/docs/redhead/templates-v2/redhead_blocks.html b/docs/redhead/templates-v2/redhead_blocks.html new file mode 100644 index 0000000000..a3fb516a7c --- /dev/null +++ b/docs/redhead/templates-v2/redhead_blocks.html @@ -0,0 +1,1910 @@ + + + + + Redhead: Jinja2 template structure browser + + + + + + + + + + + +File Inheritance | Block Inheritance | + Records JSON | Tree JSON | Blocks JSON
+ +Block Inheritance
+ +Expand all | Collapse all + ++ + +
+ + + + + + + \ No newline at end of file diff --git a/docs/redhead/templates-v2/redhead_blocks.json b/docs/redhead/templates-v2/redhead_blocks.json new file mode 100644 index 0000000000..305d1e39ff --- /dev/null +++ b/docs/redhead/templates-v2/redhead_blocks.json @@ -0,0 +1,290 @@ +[ + { + "name": "base_content", + "blocks": [ + { + "name": "extra_header", + "blocks": [], + "files": [ + "public/base.html", + "public/index.html" + ] + }, + { + "name": "management_content", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "files": [ + "management/admin/base.html", + "management/admin/admin_site_search.html", + "management/admin/account/users.html", + "management/admin/account/create.html", + "management/admin/account/edit.html" + ] + }, + { + "name": "editor_content", + "blocks": [], + "files": [ + "management/editor/base.html", + "management/editor/account/edit.html" + ] + } + ], + "files": [ + "management/base.html", + "management/admin/base.html", + "management/editor/base.html" + ] + }, + { + "name": "nav", + "blocks": [], + "files": [ + "management/base.html", + "management/admin/base.html", + "management/editor/base.html" + ] + }, + { + "name": "page_title", + "blocks": [], + "files": [ + "management/base.html", + "base.html", + "public/layouts/static-page.html", + "public/account/reset.html", + "public/account/login.html", + "public/account/register.html", + "public/account/login_to_apply.html", + "public/account/forgot.html", + "public/account/edit.html", + "management/admin/admin_site_search.html", + "management/admin/account/users.html", + "management/admin/account/create.html", + "management/admin/account/edit.html", + "management/editor/account/edit.html" + ] + }, + { + "name": "public_content", + "blocks": [], + "files": [ + "public/base.html", + "public/index.html", + "public/layouts/static-page.html", + "public/account/reset.html", + "public/account/login.html", + "public/account/register.html", + "public/account/login_to_apply.html", + "public/account/forgot.html", + "public/account/edit.html" + ] + } + ], + "files": [ + "base.html", + "public/base.html", + "management/base.html" + ] + }, + { + "name": "base_js", + "blocks": [ + { + "name": "management_js", + "blocks": [ + { + "name": "admin_js", + "blocks": [], + "files": [ + "management/admin/base.html", + "management/admin/account/users.html", + "management/admin/account/create.html", + "management/admin/account/edit.html" + ] + }, + { + "name": "editor_js", + "blocks": [], + "files": [ + "management/editor/base.html", + "management/editor/account/edit.html" + ] + } + ], + "files": [ + "management/base.html", + "management/admin/base.html", + "management/editor/base.html" + ] + }, + { + "name": "public_js", + "blocks": [], + "files": [ + "public/base.html", + "public/account/register.html", + "public/account/edit.html" + ] + } + ], + "files": [ + "base.html", + "public/base.html", + "management/base.html" + ] + }, + { + "name": "base_meta", + "blocks": [ + { + "name": "management_meta", + "blocks": [], + "files": [ + "management/base.html" + ] + }, + { + "name": "meta_description", + "blocks": [], + "files": [ + "public/base.html", + "public/layouts/static-page.html" + ] + }, + { + "name": "meta_og_description", + "blocks": [], + "files": [ + "public/base.html", + "public/layouts/static-page.html" + ] + }, + { + "name": "meta_og_title", + "blocks": [], + "files": [ + "public/base.html", + "public/layouts/static-page.html" + ] + }, + { + "name": "meta_twitter_description", + "blocks": [], + "files": [ + "public/base.html", + "public/layouts/static-page.html" + ] + }, + { + "name": "meta_twitter_title", + "blocks": [], + "files": [ + "public/base.html", + "public/layouts/static-page.html" + ] + }, + { + "name": "public_meta", + "blocks": [], + "files": [ + "public/base.html" + ] + } + ], + "files": [ + "base.html", + "public/base.html", + "management/base.html" + ] + }, + { + "name": "base_stylesheets", + "blocks": [ + { + "name": "management_stylesheets", + "blocks": [ + { + "name": "admin_stylesheets", + "blocks": [], + "files": [ + "management/admin/base.html", + "management/admin/account/create.html" + ] + }, + { + "name": "editor_stylesheets", + "blocks": [], + "files": [ + "management/editor/base.html" + ] + } + ], + "files": [ + "management/base.html", + "management/admin/base.html", + "management/editor/base.html" + ] + }, + { + "name": "public_stylesheets", + "blocks": [], + "files": [ + "public/base.html", + "public/account/register.html" + ] + } + ], + "files": [ + "base.html", + "public/base.html", + "management/base.html" + ] + }, + { + "name": "body_attrs", + "blocks": [], + "files": [ + "base.html" + ] + }, + { + "name": "body_class", + "blocks": [], + "files": [ + "base.html", + "public/index.html", + "management/base.html" + ] + }, + { + "name": "body_id", + "blocks": [], + "files": [ + "base.html" + ] + }, + { + "name": "page_title", + "blocks": [], + "files": [ + "base.html", + "public/layouts/static-page.html", + "public/account/reset.html", + "public/account/login.html", + "public/account/register.html", + "public/account/login_to_apply.html", + "public/account/forgot.html", + "public/account/edit.html", + "management/base.html", + "management/admin/admin_site_search.html", + "management/admin/account/users.html", + "management/admin/account/create.html", + "management/admin/account/edit.html", + "management/editor/account/edit.html" + ] + } +] \ No newline at end of file diff --git a/docs/redhead/templates-v2/redhead_records.json b/docs/redhead/templates-v2/redhead_records.json new file mode 100644 index 0000000000..dec4932e1e --- /dev/null +++ b/docs/redhead/templates-v2/redhead_records.json @@ -0,0 +1,1142 @@ +[ + { + "type": "template", + "file": "base.html", + "blocks": [ + "page_title", + "base_meta", + "base_stylesheets", + "body_class", + "body_id", + "body_attrs", + "base_content", + "base_js" + ], + "includes": [ + "doaj/cookie_consent.html", + "_js_includes.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "base.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "base_meta", + "file": "base.html", + "parent_block": null, + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "base_stylesheets", + "file": "base.html", + "parent_block": null, + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "body_class", + "file": "base.html", + "parent_block": null, + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "body_id", + "file": "base.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "body_attrs", + "file": "base.html", + "parent_block": null, + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "base_content", + "file": "base.html", + "parent_block": null, + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "base_js", + "file": "base.html", + "parent_block": null, + "content": false, + "scoped": false + }, + { + "type": "template", + "file": "public/base.html", + "blocks": [ + "base_meta", + "base_stylesheets", + "base_content", + "base_js" + ], + "extends": [ + "base.html" + ] + }, + { + "type": "block", + "name": "base_meta", + "file": "public/base.html", + "parent_block": null, + "content": true, + "scoped": false, + "blocks": [ + "meta_description", + "meta_og_title", + "meta_og_description", + "meta_twitter_title", + "meta_twitter_description", + "public_meta" + ] + }, + { + "type": "block", + "name": "meta_description", + "file": "public/base.html", + "parent_block": "base_meta", + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_og_title", + "file": "public/base.html", + "parent_block": "base_meta", + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_og_description", + "file": "public/base.html", + "parent_block": "base_meta", + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_twitter_title", + "file": "public/base.html", + "parent_block": "base_meta", + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_twitter_description", + "file": "public/base.html", + "parent_block": "base_meta", + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "public_meta", + "file": "public/base.html", + "parent_block": "base_meta", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "base_stylesheets", + "file": "public/base.html", + "parent_block": null, + "content": false, + "scoped": false, + "blocks": [ + "public_stylesheets" + ] + }, + { + "type": "block", + "name": "public_stylesheets", + "file": "public/base.html", + "parent_block": "base_stylesheets", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "base_content", + "file": "public/base.html", + "parent_block": null, + "content": true, + "scoped": false, + "blocks": [ + "extra_header", + "public_content" + ], + "includes": [ + "includes/header.html", + "includes/_flash_notification.html", + "includes/_quick_search_modal.html", + "includes/footer.html" + ], + "dynamic_includes": [ + "config.get(\"SITE_NOTE_TEMPLATE\")" + ] + }, + { + "type": "block", + "name": "extra_header", + "file": "public/base.html", + "parent_block": "base_content", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "public_content", + "file": "public/base.html", + "parent_block": "base_content", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "base_js", + "file": "public/base.html", + "parent_block": null, + "content": false, + "scoped": false, + "blocks": [ + "public_js" + ] + }, + { + "type": "block", + "name": "public_js", + "file": "public/base.html", + "parent_block": "base_js", + "content": false, + "scoped": false + }, + { + "type": "template", + "file": "public/index.html", + "blocks": [ + "body_class", + "extra_header", + "public_content" + ], + "extends": [ + "public/base.html" + ] + }, + { + "type": "block", + "name": "body_class", + "file": "public/index.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_header", + "file": "public/index.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "public_content", + "file": "public/index.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "public/layouts/_static-page_no-sidenav.html", + "dynamic_includes": [ + "page.frag", + "page.aside", + "page.include" + ] + }, + { + "type": "template", + "file": "public/layouts/_static-page_sidenav.html", + "dynamic_includes": [ + "page.preface", + "page.frag", + "page.include", + "page.sidenav_include" + ], + "includes": [ + "includes/_sidenav_toc.html" + ] + }, + { + "type": "template", + "file": "public/layouts/static-page.html", + "blocks": [ + "page_title", + "meta_og_title", + "meta_twitter_title", + "meta_description", + "meta_og_description", + "meta_twitter_description", + "public_content" + ], + "extends": [ + "public/base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "public/layouts/static-page.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_og_title", + "file": "public/layouts/static-page.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_twitter_title", + "file": "public/layouts/static-page.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_description", + "file": "public/layouts/static-page.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_og_description", + "file": "public/layouts/static-page.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_twitter_description", + "file": "public/layouts/static-page.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "public_content", + "file": "public/layouts/static-page.html", + "parent_block": null, + "content": true, + "scoped": false, + "dynamic_includes": [ + "inc", + "page.frag" + ] + }, + { + "type": "template", + "file": "public/account/reset.html", + "blocks": [ + "page_title", + "public_content" + ], + "extends": [ + "public/base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "public/account/reset.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "public_content", + "file": "public/account/reset.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_account/includes/_reset_form.html" + ] + }, + { + "type": "template", + "file": "public/account/login.html", + "blocks": [ + "page_title", + "public_content" + ], + "extends": [ + "public/base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "public/account/login.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "public_content", + "file": "public/account/login.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_account/includes/_login_form.html" + ] + }, + { + "type": "template", + "file": "public/account/register.html", + "blocks": [ + "page_title", + "public_stylesheets", + "public_content", + "public_js" + ], + "extends": [ + "public/base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "public/account/register.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "public_stylesheets", + "file": "public/account/register.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "public_content", + "file": "public/account/register.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_account/includes/_register_form.html" + ] + }, + { + "type": "block", + "name": "public_js", + "file": "public/account/register.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "public/account/login_to_apply.html", + "blocks": [ + "page_title", + "public_content" + ], + "extends": [ + "public/base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "public/account/login_to_apply.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "public_content", + "file": "public/account/login_to_apply.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_account/includes/_login_form.html" + ] + }, + { + "type": "template", + "file": "public/account/forgot.html", + "blocks": [ + "page_title", + "public_content" + ], + "extends": [ + "public/base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "public/account/forgot.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "public_content", + "file": "public/account/forgot.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "public/account/edit.html", + "blocks": [ + "page_title", + "public_content", + "public_js" + ], + "extends": [ + "public/base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "public/account/edit.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "public_content", + "file": "public/account/edit.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_account/includes/_edit_user_form.html", + "_account/includes/_marketing-consent.html", + "_account/includes/_api-access.html" + ] + }, + { + "type": "block", + "name": "public_js", + "file": "public/account/edit.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_account/includes/_edit_form_js.html" + ] + }, + { + "type": "template", + "file": "_account/includes/_edit_form_js.html" + }, + { + "type": "template", + "file": "_account/includes/_register_form.html" + }, + { + "type": "template", + "file": "_account/includes/_login_form.html" + }, + { + "type": "template", + "file": "_account/includes/_edit_user_form.html" + }, + { + "type": "template", + "file": "_account/includes/_api-access.html" + }, + { + "type": "template", + "file": "_account/includes/_marketing-consent.html" + }, + { + "type": "template", + "file": "_account/includes/_reset_form.html" + }, + { + "type": "template", + "file": "management/base.html", + "blocks": [ + "base_meta", + "base_stylesheets", + "body_class", + "base_content", + "base_js" + ], + "extends": [ + "base.html" + ] + }, + { + "type": "block", + "name": "base_meta", + "file": "management/base.html", + "parent_block": null, + "content": false, + "scoped": false, + "blocks": [ + "management_meta" + ] + }, + { + "type": "block", + "name": "management_meta", + "file": "management/base.html", + "parent_block": "base_meta", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "base_stylesheets", + "file": "management/base.html", + "parent_block": null, + "content": false, + "scoped": false, + "blocks": [ + "management_stylesheets" + ] + }, + { + "type": "block", + "name": "management_stylesheets", + "file": "management/base.html", + "parent_block": "base_stylesheets", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "body_class", + "file": "management/base.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "base_content", + "file": "management/base.html", + "parent_block": null, + "content": true, + "scoped": false, + "blocks": [ + "nav", + "page_title", + "management_content" + ], + "dynamic_includes": [ + "config.get(\"SITE_NOTE_TEMPLATE\")" + ], + "includes": [ + "includes/svg/doaj-icon.svg", + "includes/_tourist_nav.html", + "includes/_flash_notification.html", + "includes/_back-to-top.html" + ] + }, + { + "type": "block", + "name": "nav", + "file": "management/base.html", + "parent_block": "base_content", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "page_title", + "file": "management/base.html", + "parent_block": "base_content", + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "management_content", + "file": "management/base.html", + "parent_block": "base_content", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "base_js", + "file": "management/base.html", + "parent_block": null, + "content": true, + "scoped": false, + "blocks": [ + "management_js" + ], + "includes": [ + "includes/_tourist.html" + ] + }, + { + "type": "block", + "name": "management_js", + "file": "management/base.html", + "parent_block": "base_js", + "content": false, + "scoped": false + }, + { + "type": "template", + "file": "management/admin/base.html", + "blocks": [ + "management_stylesheets", + "nav", + "management_content", + "management_js" + ], + "extends": [ + "management/base.html" + ] + }, + { + "type": "block", + "name": "management_stylesheets", + "file": "management/admin/base.html", + "parent_block": null, + "content": false, + "scoped": false, + "blocks": [ + "admin_stylesheets" + ] + }, + { + "type": "block", + "name": "admin_stylesheets", + "file": "management/admin/base.html", + "parent_block": "management_stylesheets", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "nav", + "file": "management/admin/base.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "dashboard/nav.html" + ] + }, + { + "type": "block", + "name": "management_content", + "file": "management/admin/base.html", + "parent_block": null, + "content": true, + "scoped": false, + "blocks": [ + "admin_content" + ], + "includes": [ + "includes/_hotjar.html" + ] + }, + { + "type": "block", + "name": "admin_content", + "file": "management/admin/base.html", + "parent_block": "management_content", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "management_js", + "file": "management/admin/base.html", + "parent_block": null, + "content": false, + "scoped": false, + "blocks": [ + "admin_js" + ] + }, + { + "type": "block", + "name": "admin_js", + "file": "management/admin/base.html", + "parent_block": "management_js", + "content": false, + "scoped": false + }, + { + "type": "template", + "file": "management/admin/admin_site_search.html", + "blocks": [ + "page_title", + "admin_content", + "extra_js_bottom" + ], + "extends": [ + "management/admin/base.html" + ], + "includes": [ + "_edges_common_css.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "management/admin/admin_site_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "management/admin/admin_site_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "management/admin/admin_site_search.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "management/admin/includes/_applications_and_update_requests_common.html" + }, + { + "type": "template", + "file": "management/admin/includes/_applications_and_update_requests_common_js.html", + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "management/admin/account/users.html", + "blocks": [ + "page_title", + "admin_content", + "admin_js" + ], + "extends": [ + "management/admin/base.html" + ], + "includes": [ + "_edges_common_css.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "management/admin/account/users.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "management/admin/account/users.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_js", + "file": "management/admin/account/users.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "management/admin/account/create.html", + "blocks": [ + "page_title", + "admin_stylesheets", + "admin_content", + "admin_js" + ], + "extends": [ + "management/admin/base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "management/admin/account/create.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_stylesheets", + "file": "management/admin/account/create.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "management/admin/account/create.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_account/includes/_register_form.html" + ] + }, + { + "type": "block", + "name": "admin_js", + "file": "management/admin/account/create.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "management/admin/account/edit.html", + "blocks": [ + "page_title", + "admin_content", + "admin_js" + ], + "extends": [ + "management/admin/base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "management/admin/account/edit.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "management/admin/account/edit.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_account/includes/_edit_user_form.html", + "_account/includes/_marketing-consent.html", + "_account/includes/_api-access.html" + ] + }, + { + "type": "block", + "name": "admin_js", + "file": "management/admin/account/edit.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_account/includes/_edit_form_js.html" + ] + }, + { + "type": "template", + "file": "management/editor/base.html", + "blocks": [ + "management_stylesheets", + "nav", + "management_content", + "management_js" + ], + "extends": [ + "management/base.html" + ] + }, + { + "type": "block", + "name": "management_stylesheets", + "file": "management/editor/base.html", + "parent_block": null, + "content": true, + "scoped": false, + "blocks": [ + "editor_stylesheets" + ] + }, + { + "type": "block", + "name": "editor_stylesheets", + "file": "management/editor/base.html", + "parent_block": "management_stylesheets", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "nav", + "file": "management/editor/base.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "editor/nav.html" + ] + }, + { + "type": "block", + "name": "management_content", + "file": "management/editor/base.html", + "parent_block": null, + "content": true, + "scoped": false, + "blocks": [ + "editor_content" + ], + "includes": [ + "includes/_hotjar.html" + ] + }, + { + "type": "block", + "name": "editor_content", + "file": "management/editor/base.html", + "parent_block": "management_content", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "management_js", + "file": "management/editor/base.html", + "parent_block": null, + "content": false, + "scoped": false, + "blocks": [ + "editor_js" + ] + }, + { + "type": "block", + "name": "editor_js", + "file": "management/editor/base.html", + "parent_block": "management_js", + "content": false, + "scoped": false + }, + { + "type": "template", + "file": "management/editor/account/edit.html", + "blocks": [ + "page_title", + "editor_content", + "editor_js" + ], + "extends": [ + "management/editor/base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "management/editor/account/edit.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "editor_content", + "file": "management/editor/account/edit.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_account/includes/_edit_user_form.html", + "_account/includes/_marketing-consent.html", + "_account/includes/_api-access.html" + ] + }, + { + "type": "block", + "name": "editor_js", + "file": "management/editor/account/edit.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_account/includes/_edit_form_js.html" + ] + }, + { + "type": "template", + "file": "redhead/tree.html" + }, + { + "type": "template", + "file": "redhead/blocks.html" + } +] \ No newline at end of file diff --git a/docs/redhead/templates-v2/redhead_tree.html b/docs/redhead/templates-v2/redhead_tree.html new file mode 100644 index 0000000000..95b76af16d --- /dev/null +++ b/docs/redhead/templates-v2/redhead_tree.html @@ -0,0 +1,4059 @@ + + + + +- + base_content + + + + + + + + + + + + + + + +
+ + + +- + base_js + + + + + + + + + + + + + + + +
+ + + +- + base_meta + + + + + + + + + + + + + + + +
+ + + +- + base_stylesheets + + + + + + + + + + + + + + + +
+ + + +- + body_attrs + + + + + + + + + + + + + +
+ + + ++ + +
+ +- [+] Files +
+ ++ +
+ + +- + body_class + + + + + + + + + + + + + +
+ + + ++ + +
+ +- [+] Files +
+ ++ +
+ + + + + + +- + body_id + + + + + + + + + + + + + +
+ + + ++ + +
+ +- [+] Files +
+ ++ +
+ + +- + page_title + + + + + + + + + + + + + +
+ + ++ + +
+ +- [+] Files +
+ ++ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +Redhead: Jinja2 template structure browser + + + + + + + + + + + + +File Inheritance | Block Inheritance | + Records JSON | Tree JSON | Blocks JSON
+ +File Inheritance
+ +Expand all | Collapse all + ++ + +
+ + + + + + + \ No newline at end of file diff --git a/docs/redhead/templates-v2/redhead_tree.json b/docs/redhead/templates-v2/redhead_tree.json new file mode 100644 index 0000000000..4d7f840d97 --- /dev/null +++ b/docs/redhead/templates-v2/redhead_tree.json @@ -0,0 +1,2567 @@ +[ + { + "name": "base.html", + "blocks": [ + { + "name": "base_content", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "management/base.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html" + ] + ] + }, + { + "file": "public/base.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "base_js", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "management/base.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html" + ] + ] + }, + { + "file": "public/base.html", + "content": false, + "paths": [ + [ + "base.html", + "public/base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "base_meta", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "management/base.html", + "content": false, + "paths": [ + [ + "base.html", + "management/base.html" + ] + ] + }, + { + "file": "public/base.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "base_stylesheets", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "management/base.html", + "content": false, + "paths": [ + [ + "base.html", + "management/base.html" + ] + ] + }, + { + "file": "public/base.html", + "content": false, + "paths": [ + [ + "base.html", + "public/base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "body_attrs", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [], + "overrides": [], + "scoped": false + }, + { + "name": "body_class", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "management/base.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html" + ] + ] + }, + { + "file": "public/index.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/index.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "body_id", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "management/admin/account/create.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html", + "management/admin/base.html", + "management/admin/account/create.html" + ] + ] + }, + { + "file": "management/admin/account/edit.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html", + "management/admin/base.html", + "management/admin/account/edit.html" + ] + ] + }, + { + "file": "management/admin/account/users.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html", + "management/admin/base.html", + "management/admin/account/users.html" + ] + ] + }, + { + "file": "management/admin/admin_site_search.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html", + "management/admin/base.html", + "management/admin/admin_site_search.html" + ] + ] + }, + { + "file": "management/base.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html" + ] + ] + }, + { + "file": "management/editor/account/edit.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html", + "management/editor/base.html", + "management/editor/account/edit.html" + ] + ] + }, + { + "file": "public/account/edit.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/account/edit.html" + ] + ] + }, + { + "file": "public/account/forgot.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/account/forgot.html" + ] + ] + }, + { + "file": "public/account/login.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/account/login.html" + ] + ] + }, + { + "file": "public/account/login_to_apply.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/account/login_to_apply.html" + ] + ] + }, + { + "file": "public/account/register.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/account/register.html" + ] + ] + }, + { + "file": "public/account/reset.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/account/reset.html" + ] + ] + }, + { + "file": "public/layouts/static-page.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/layouts/static-page.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "extensions": [ + { + "name": "management/base.html", + "blocks": [ + { + "name": "base_content", + "blocks": [ + { + "name": "management_content", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "management/admin/base.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/admin/base.html" + ] + ] + }, + { + "file": "management/editor/base.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/editor/base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "nav", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "management/admin/base.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/admin/base.html" + ] + ] + }, + { + "file": "management/editor/base.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/editor/base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "management/admin/account/create.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/admin/base.html", + "management/admin/account/create.html" + ] + ] + }, + { + "file": "management/admin/account/edit.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/admin/base.html", + "management/admin/account/edit.html" + ] + ] + }, + { + "file": "management/admin/account/users.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/admin/base.html", + "management/admin/account/users.html" + ] + ] + }, + { + "file": "management/admin/admin_site_search.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/admin/base.html", + "management/admin/admin_site_search.html" + ] + ] + }, + { + "file": "management/editor/account/edit.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/editor/base.html", + "management/editor/account/edit.html" + ] + ] + } + ], + "overrides": [ + { + "file": "base.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [ + { + "name": "includes/_back-to-top.html", + "unresolved": true + }, + { + "name": "includes/_flash_notification.html", + "unresolved": true + }, + { + "name": "includes/_tourist_nav.html", + "unresolved": true + }, + { + "name": "includes/svg/doaj-icon.svg", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": false, + "paths": [ + [ + "base.html", + "management/base.html" + ] + ] + } + ], + "scoped": false, + "dynamic_includes": [ + "config.get(\"SITE_NOTE_TEMPLATE\")" + ] + }, + { + "name": "base_js", + "blocks": [ + { + "name": "management_js", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "management/admin/base.html", + "content": false, + "paths": [ + [ + "management/base.html", + "management/admin/base.html" + ] + ] + }, + { + "file": "management/editor/base.html", + "content": false, + "paths": [ + [ + "management/base.html", + "management/editor/base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [ + { + "name": "includes/_tourist.html", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": false, + "paths": [ + [ + "base.html", + "management/base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "base_meta", + "blocks": [ + { + "name": "management_meta", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "content": false, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": false, + "paths": [ + [ + "base.html", + "management/base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "base_stylesheets", + "blocks": [ + { + "name": "management_stylesheets", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "management/admin/base.html", + "content": false, + "paths": [ + [ + "management/base.html", + "management/admin/base.html" + ] + ] + }, + { + "file": "management/editor/base.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/editor/base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "content": false, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": false, + "paths": [ + [ + "base.html", + "management/base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "body_class", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": false, + "paths": [ + [ + "base.html", + "management/base.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [ + { + "name": "management/admin/base.html", + "blocks": [ + { + "name": "management_content", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "management/admin/account/create.html", + "content": true, + "paths": [ + [ + "management/admin/base.html", + "management/admin/account/create.html" + ] + ] + }, + { + "file": "management/admin/account/edit.html", + "content": true, + "paths": [ + [ + "management/admin/base.html", + "management/admin/account/edit.html" + ] + ] + }, + { + "file": "management/admin/account/users.html", + "content": true, + "paths": [ + [ + "management/admin/base.html", + "management/admin/account/users.html" + ] + ] + }, + { + "file": "management/admin/admin_site_search.html", + "content": true, + "paths": [ + [ + "management/admin/base.html", + "management/admin/admin_site_search.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [ + { + "name": "includes/_hotjar.html", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/base.html", + "content": false, + "paths": [ + [ + "management/base.html", + "management/admin/base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "management_js", + "blocks": [ + { + "name": "admin_js", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "management/admin/account/create.html", + "content": true, + "paths": [ + [ + "management/admin/base.html", + "management/admin/account/create.html" + ] + ] + }, + { + "file": "management/admin/account/edit.html", + "content": true, + "paths": [ + [ + "management/admin/base.html", + "management/admin/account/edit.html" + ] + ] + }, + { + "file": "management/admin/account/users.html", + "content": true, + "paths": [ + [ + "management/admin/base.html", + "management/admin/account/users.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "content": false, + "overridden_by": [], + "overrides": [ + { + "file": "management/base.html", + "content": false, + "paths": [ + [ + "management/base.html", + "management/admin/base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "management_stylesheets", + "blocks": [ + { + "name": "admin_stylesheets", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "management/admin/account/create.html", + "content": true, + "paths": [ + [ + "management/admin/base.html", + "management/admin/account/create.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "content": false, + "overridden_by": [], + "overrides": [ + { + "file": "management/base.html", + "content": false, + "paths": [ + [ + "management/base.html", + "management/admin/base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "nav", + "blocks": [], + "includes": [ + { + "name": "dashboard/nav.html", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/base.html", + "content": false, + "paths": [ + [ + "management/base.html", + "management/admin/base.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [ + { + "name": "management/admin/account/create.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [ + { + "name": "_account/includes/_register_form.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/admin/base.html", + "content": false, + "paths": [ + [ + "management/admin/base.html", + "management/admin/account/create.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "admin_js", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/admin/base.html", + "content": false, + "paths": [ + [ + "management/admin/base.html", + "management/admin/account/create.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "admin_stylesheets", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/admin/base.html", + "content": false, + "paths": [ + [ + "management/admin/base.html", + "management/admin/account/create.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html", + "management/admin/base.html", + "management/admin/account/create.html" + ] + ] + }, + { + "file": "management/base.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/admin/base.html", + "management/admin/account/create.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "management/admin/account/edit.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [ + { + "name": "_account/includes/_api-access.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "_account/includes/_edit_user_form.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "_account/includes/_marketing-consent.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/admin/base.html", + "content": false, + "paths": [ + [ + "management/admin/base.html", + "management/admin/account/edit.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "admin_js", + "blocks": [], + "includes": [ + { + "name": "_account/includes/_edit_form_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/admin/base.html", + "content": false, + "paths": [ + [ + "management/admin/base.html", + "management/admin/account/edit.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html", + "management/admin/base.html", + "management/admin/account/edit.html" + ] + ] + }, + { + "file": "management/base.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/admin/base.html", + "management/admin/account/edit.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "management/admin/account/users.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/admin/base.html", + "content": false, + "paths": [ + [ + "management/admin/base.html", + "management/admin/account/users.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "admin_js", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/admin/base.html", + "content": false, + "paths": [ + [ + "management/admin/base.html", + "management/admin/account/users.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html", + "management/admin/base.html", + "management/admin/account/users.html" + ] + ] + }, + { + "file": "management/base.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/admin/base.html", + "management/admin/account/users.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "management/admin/admin_site_search.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/admin/base.html", + "content": false, + "paths": [ + [ + "management/admin/base.html", + "management/admin/admin_site_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html", + "management/admin/base.html", + "management/admin/admin_site_search.html" + ] + ] + }, + { + "file": "management/base.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/admin/base.html", + "management/admin/admin_site_search.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + } + ] + }, + { + "name": "management/editor/base.html", + "blocks": [ + { + "name": "management_content", + "blocks": [ + { + "name": "editor_content", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "management/editor/account/edit.html", + "content": true, + "paths": [ + [ + "management/editor/base.html", + "management/editor/account/edit.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [ + { + "name": "includes/_hotjar.html", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/base.html", + "content": false, + "paths": [ + [ + "management/base.html", + "management/editor/base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "management_js", + "blocks": [ + { + "name": "editor_js", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "management/editor/account/edit.html", + "content": true, + "paths": [ + [ + "management/editor/base.html", + "management/editor/account/edit.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "content": false, + "overridden_by": [], + "overrides": [ + { + "file": "management/base.html", + "content": false, + "paths": [ + [ + "management/base.html", + "management/editor/base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "management_stylesheets", + "blocks": [ + { + "name": "editor_stylesheets", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/base.html", + "content": false, + "paths": [ + [ + "management/base.html", + "management/editor/base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "nav", + "blocks": [], + "includes": [ + { + "name": "editor/nav.html", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/base.html", + "content": false, + "paths": [ + [ + "management/base.html", + "management/editor/base.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [ + { + "name": "management/editor/account/edit.html", + "blocks": [ + { + "name": "editor_content", + "blocks": [], + "includes": [ + { + "name": "_account/includes/_api-access.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "_account/includes/_edit_user_form.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "_account/includes/_marketing-consent.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/editor/base.html", + "content": false, + "paths": [ + [ + "management/editor/base.html", + "management/editor/account/edit.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "editor_js", + "blocks": [], + "includes": [ + { + "name": "_account/includes/_edit_form_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "management/editor/base.html", + "content": false, + "paths": [ + [ + "management/editor/base.html", + "management/editor/account/edit.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": true, + "paths": [ + [ + "base.html", + "management/base.html", + "management/editor/base.html", + "management/editor/account/edit.html" + ] + ] + }, + { + "file": "management/base.html", + "content": true, + "paths": [ + [ + "management/base.html", + "management/editor/base.html", + "management/editor/account/edit.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + } + ] + } + ] + }, + { + "name": "public/base.html", + "blocks": [ + { + "name": "base_content", + "blocks": [ + { + "name": "extra_header", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "public/index.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/index.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "public_content", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "public/account/edit.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/account/edit.html" + ] + ] + }, + { + "file": "public/account/forgot.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/account/forgot.html" + ] + ] + }, + { + "file": "public/account/login.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/account/login.html" + ] + ] + }, + { + "file": "public/account/login_to_apply.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/account/login_to_apply.html" + ] + ] + }, + { + "file": "public/account/register.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/account/register.html" + ] + ] + }, + { + "file": "public/account/reset.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/account/reset.html" + ] + ] + }, + { + "file": "public/index.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/index.html" + ] + ] + }, + { + "file": "public/layouts/static-page.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/layouts/static-page.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [ + { + "name": "includes/_flash_notification.html", + "unresolved": true + }, + { + "name": "includes/_quick_search_modal.html", + "unresolved": true + }, + { + "name": "includes/footer.html", + "unresolved": true + }, + { + "name": "includes/header.html", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": false, + "paths": [ + [ + "base.html", + "public/base.html" + ] + ] + } + ], + "scoped": false, + "dynamic_includes": [ + "config.get(\"SITE_NOTE_TEMPLATE\")" + ] + }, + { + "name": "base_js", + "blocks": [ + { + "name": "public_js", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "public/account/edit.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/account/edit.html" + ] + ] + }, + { + "file": "public/account/register.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/account/register.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "content": false, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": false, + "paths": [ + [ + "base.html", + "public/base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "base_meta", + "blocks": [ + { + "name": "meta_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "public/layouts/static-page.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/layouts/static-page.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "meta_og_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "public/layouts/static-page.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/layouts/static-page.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "meta_og_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "public/layouts/static-page.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/layouts/static-page.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "meta_twitter_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "public/layouts/static-page.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/layouts/static-page.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "meta_twitter_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "public/layouts/static-page.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/layouts/static-page.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "public_meta", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": false, + "paths": [ + [ + "base.html", + "public/base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "base_stylesheets", + "blocks": [ + { + "name": "public_stylesheets", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "public/account/register.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/account/register.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "content": false, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": false, + "paths": [ + [ + "base.html", + "public/base.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [ + { + "name": "public/account/edit.html", + "blocks": [ + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/account/edit.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "public_content", + "blocks": [], + "includes": [ + { + "name": "_account/includes/_api-access.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "_account/includes/_edit_user_form.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "_account/includes/_marketing-consent.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": false, + "paths": [ + [ + "public/base.html", + "public/account/edit.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "public_js", + "blocks": [], + "includes": [ + { + "name": "_account/includes/_edit_form_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": false, + "paths": [ + [ + "public/base.html", + "public/account/edit.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "public/account/forgot.html", + "blocks": [ + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/account/forgot.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "public_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": false, + "paths": [ + [ + "public/base.html", + "public/account/forgot.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "public/account/login.html", + "blocks": [ + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/account/login.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "public_content", + "blocks": [], + "includes": [ + { + "name": "_account/includes/_login_form.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": false, + "paths": [ + [ + "public/base.html", + "public/account/login.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "public/account/login_to_apply.html", + "blocks": [ + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/account/login_to_apply.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "public_content", + "blocks": [], + "includes": [ + { + "name": "_account/includes/_login_form.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": false, + "paths": [ + [ + "public/base.html", + "public/account/login_to_apply.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "public/account/register.html", + "blocks": [ + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/account/register.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "public_content", + "blocks": [], + "includes": [ + { + "name": "_account/includes/_register_form.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": false, + "paths": [ + [ + "public/base.html", + "public/account/register.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "public_js", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": false, + "paths": [ + [ + "public/base.html", + "public/account/register.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "public_stylesheets", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": false, + "paths": [ + [ + "public/base.html", + "public/account/register.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "public/account/reset.html", + "blocks": [ + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/account/reset.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "public_content", + "blocks": [], + "includes": [ + { + "name": "_account/includes/_reset_form.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": false, + "paths": [ + [ + "public/base.html", + "public/account/reset.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "public/index.html", + "blocks": [ + { + "name": "body_class", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": false, + "paths": [ + [ + "base.html", + "public/base.html", + "public/index.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_header", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": false, + "paths": [ + [ + "public/base.html", + "public/index.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "public_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": false, + "paths": [ + [ + "public/base.html", + "public/index.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "public/layouts/static-page.html", + "blocks": [ + { + "name": "meta_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/layouts/static-page.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_og_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/layouts/static-page.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_og_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/layouts/static-page.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_twitter_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/layouts/static-page.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_twitter_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": true, + "paths": [ + [ + "public/base.html", + "public/layouts/static-page.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "base.html", + "content": true, + "paths": [ + [ + "base.html", + "public/base.html", + "public/layouts/static-page.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "public_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "public/base.html", + "content": false, + "paths": [ + [ + "public/base.html", + "public/layouts/static-page.html" + ] + ] + } + ], + "scoped": false, + "dynamic_includes": [ + "inc", + "page.frag" + ] + } + ], + "includes": [], + "extensions": [] + } + ] + } + ] + }, + { + "name": "management/admin/includes/_applications_and_update_requests_common.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "management/admin/includes/_applications_and_update_requests_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "public/layouts/_static-page_no-sidenav.html", + "blocks": [], + "includes": [], + "extensions": [], + "dynamic_includes": [ + "page.aside", + "page.frag", + "page.include" + ] + }, + { + "name": "public/layouts/_static-page_sidenav.html", + "blocks": [], + "includes": [], + "extensions": [], + "dynamic_includes": [ + "page.frag", + "page.include", + "page.preface", + "page.sidenav_include" + ] + }, + { + "name": "redhead/blocks.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "redhead/tree.html", + "blocks": [], + "includes": [], + "extensions": [] + } +] \ No newline at end of file diff --git a/docs/redhead/templates/redhead_blocks.html b/docs/redhead/templates/redhead_blocks.html new file mode 100644 index 0000000000..65e94ec12e --- /dev/null +++ b/docs/redhead/templates/redhead_blocks.html @@ -0,0 +1,5863 @@ + + + + +- + + + base.html + + + + +
+ + + +- + + + management/ + + admin/ + + includes/ + + _applications_and_update_requests_common.html + + +
+ + + +- + + + management/ + + admin/ + + includes/ + + _applications_and_update_requests_common_js.html + + +
+ + + +- + + + public/ + + layouts/ + + _static-page_no-sidenav.html + + +
+ + + ++ + + +
+ +- [+] Dynamic Includes +
+ + ++ +
+ + + + + + +- + + + public/ + + layouts/ + + _static-page_sidenav.html + + +
+ + + ++ + + +
+ +- [+] Dynamic Includes +
+ + ++ +
+ + + + + + + + +- + + + redhead/ + + blocks.html + + +
+ + + +- + + + redhead/ + + tree.html + + +
+ + +Redhead: Jinja2 template structure browser + + + + + + + + + + + +File Inheritance | Block Inheritance | + Records JSON | Tree JSON | Blocks JSON
+ +Block Inheritance
+ +Expand all | Collapse all + ++ + +
+ + + + + + + \ No newline at end of file diff --git a/docs/redhead/templates/redhead_blocks.json b/docs/redhead/templates/redhead_blocks.json new file mode 100644 index 0000000000..a447720409 --- /dev/null +++ b/docs/redhead/templates/redhead_blocks.json @@ -0,0 +1,925 @@ +[ + { + "name": "base_content", + "blocks": [ + { + "name": "body_class", + "blocks": [], + "files": [ + "layouts/public_base.html", + "500.html", + "401.html", + "404.html", + "400.html", + "unlocked.html", + "layouts/dashboard_base.html", + "layouts/toc_base.html", + "doaj/article.html" + ] + }, + { + "name": "body_class", + "blocks": [], + "files": [ + "layouts/dashboard_base.html", + "500.html", + "401.html", + "404.html", + "400.html", + "unlocked.html", + "layouts/public_base.html", + "layouts/toc_base.html", + "doaj/article.html" + ] + }, + { + "name": "body_id", + "blocks": [], + "files": [ + "layouts/dashboard_base.html", + "application_form/editor_application.html", + "application_form/maned_application.html", + "application_form/maned_journal.html", + "application_form/assed_application.html", + "application_form/assed_journal.html", + "application_form/editor_journal.html" + ] + }, + { + "name": "extra_header", + "blocks": [], + "files": [ + "layouts/public_base.html", + "layouts/dashboard_base.html" + ] + }, + { + "name": "extra_header", + "blocks": [], + "files": [ + "layouts/dashboard_base.html", + "layouts/public_base.html" + ] + }, + { + "name": "extra_js_bottom", + "blocks": [], + "files": [ + "layouts/public_base.html", + "dashboard/notifications.html", + "dashboard/index.html", + "publisher/updates_in_progress.html", + "publisher/metadata.html", + "publisher/journals.html", + "publisher/uploadmetadata.html", + "publisher/preservation.html", + "publisher/journal_csv.html", + "publisher/index.html", + "layouts/dashboard_base.html", + "admin/global_notifications_search.html", + "admin/applications.html", + "admin/update_requests.html", + "admin/editor_group.html", + "admin/background_jobs_search.html", + "admin/editor_group_search.html", + "admin/article_metadata.html", + "admin/index.html", + "editor/group_journals.html", + "editor/associate_applications.html", + "editor/group_applications.html", + "editor/associate_journals.html", + "editor/dashboard.html", + "doaj/contact.html", + "doaj/articles_search.html", + "doaj/journals_search.html", + "doaj/toc_articles.html", + "api/current/api_docs.html", + "application_form/editor_application.html", + "application_form/public_application.html", + "application_form/readonly_application.html", + "application_form/maned_application.html", + "application_form/maned_journal.html", + "application_form/assed_application.html", + "application_form/assed_journal.html", + "application_form/editor_journal.html", + "application_form/publisher_update_request.html", + "application_form/readonly_journal.html" + ] + }, + { + "name": "extra_js_bottom", + "blocks": [], + "files": [ + "layouts/dashboard_base.html", + "dashboard/notifications.html", + "dashboard/index.html", + "publisher/updates_in_progress.html", + "publisher/metadata.html", + "publisher/journals.html", + "publisher/uploadmetadata.html", + "publisher/preservation.html", + "publisher/journal_csv.html", + "publisher/index.html", + "layouts/public_base.html", + "admin/global_notifications_search.html", + "admin/applications.html", + "admin/update_requests.html", + "admin/editor_group.html", + "admin/background_jobs_search.html", + "admin/editor_group_search.html", + "admin/article_metadata.html", + "admin/index.html", + "editor/group_journals.html", + "editor/associate_applications.html", + "editor/group_applications.html", + "editor/associate_journals.html", + "editor/dashboard.html", + "doaj/contact.html", + "doaj/articles_search.html", + "doaj/journals_search.html", + "doaj/toc_articles.html", + "api/current/api_docs.html", + "application_form/editor_application.html", + "application_form/public_application.html", + "application_form/readonly_application.html", + "application_form/maned_application.html", + "application_form/maned_journal.html", + "application_form/assed_application.html", + "application_form/assed_journal.html", + "application_form/editor_journal.html", + "application_form/publisher_update_request.html", + "application_form/readonly_journal.html" + ] + }, + { + "name": "main_panel", + "blocks": [ + { + "name": "content", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "files": [ + "admin/admin_base.html", + "admin/continuation.html", + "admin/journal_locked.html", + "admin/global_notifications_search.html", + "admin/application_locked.html", + "admin/applications.html", + "admin/update_requests.html", + "admin/editor_group.html", + "admin/background_jobs_search.html", + "admin/editor_group_search.html", + "admin/article_metadata.html", + "admin/index.html" + ] + }, + { + "name": "editor_content", + "blocks": [], + "files": [ + "editor/editor_base.html", + "editor/group_journals.html", + "editor/journal_locked.html", + "editor/associate_applications.html", + "editor/group_applications.html", + "editor/application_locked.html", + "editor/associate_journals.html", + "editor/dashboard.html", + "application_form/editor_application.html", + "application_form/assed_application.html", + "application_form/assed_journal.html", + "application_form/editor_journal.html" + ] + }, + { + "name": "publisher_content", + "blocks": [], + "files": [ + "publisher/publisher_base.html", + "publisher/locked.html", + "publisher/updates_in_progress.html", + "publisher/metadata.html", + "publisher/readonly.html", + "publisher/journals.html", + "publisher/uploadmetadata.html", + "publisher/preservation.html", + "publisher/journal_csv.html", + "publisher/help.html", + "publisher/application_already_submitted.html", + "publisher/index.html", + "application_form/readonly_application.html", + "application_form/publisher_update_request.html" + ] + }, + { + "name": "single_col_content", + "blocks": [], + "files": [ + "layouts/single_col_page.html", + "500.html", + "401.html", + "404.html", + "400.html", + "publisher/application_deleted.html", + "doaj/readonly.html" + ] + }, + { + "name": "title", + "blocks": [], + "files": [ + "layouts/single_col_page.html", + "500.html", + "401.html", + "404.html", + "400.html", + "unlocked.html", + "publisher/application_deleted.html", + "doaj/readonly.html" + ] + }, + { + "name": "toc_content", + "blocks": [], + "files": [ + "layouts/toc_base.html", + "doaj/toc.html", + "doaj/toc_articles.html" + ] + } + ], + "files": [ + "layouts/public_base.html", + "unlocked.html", + "dashboard/notifications.html", + "dashboard/index.html", + "openurl/404.html", + "openurl/help.html", + "publisher/publisher_base.html", + "layouts/single_col_page.html", + "layouts/dashboard_base.html", + "layouts/toc_base.html", + "admin/admin_base.html", + "editor/editor_base.html", + "doaj/contact.html", + "doaj/articles_search.html", + "doaj/journals_search.html", + "doaj/article.html", + "api/current/api_docs.html", + "application_form/public_application.html", + "application_form/maned_application.html", + "application_form/maned_journal.html", + "application_form/readonly_journal.html" + ] + }, + { + "name": "content", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "files": [ + "admin/admin_base.html", + "admin/continuation.html", + "admin/journal_locked.html", + "admin/global_notifications_search.html", + "admin/application_locked.html", + "admin/applications.html", + "admin/update_requests.html", + "admin/editor_group.html", + "admin/background_jobs_search.html", + "admin/editor_group_search.html", + "admin/article_metadata.html", + "admin/index.html" + ] + }, + { + "name": "editor_content", + "blocks": [], + "files": [ + "editor/editor_base.html", + "editor/group_journals.html", + "editor/journal_locked.html", + "editor/associate_applications.html", + "editor/group_applications.html", + "editor/application_locked.html", + "editor/associate_journals.html", + "editor/dashboard.html", + "application_form/editor_application.html", + "application_form/assed_application.html", + "application_form/assed_journal.html", + "application_form/editor_journal.html" + ] + }, + { + "name": "publisher_content", + "blocks": [], + "files": [ + "publisher/publisher_base.html", + "publisher/locked.html", + "publisher/updates_in_progress.html", + "publisher/metadata.html", + "publisher/readonly.html", + "publisher/journals.html", + "publisher/uploadmetadata.html", + "publisher/preservation.html", + "publisher/journal_csv.html", + "publisher/help.html", + "publisher/application_already_submitted.html", + "publisher/index.html", + "application_form/readonly_application.html", + "application_form/publisher_update_request.html" + ] + }, + { + "name": "single_col_content", + "blocks": [], + "files": [ + "layouts/single_col_page.html", + "500.html", + "401.html", + "404.html", + "400.html", + "publisher/application_deleted.html", + "doaj/readonly.html" + ] + }, + { + "name": "title", + "blocks": [], + "files": [ + "layouts/single_col_page.html", + "500.html", + "401.html", + "404.html", + "400.html", + "unlocked.html", + "publisher/application_deleted.html", + "doaj/readonly.html" + ] + }, + { + "name": "toc_content", + "blocks": [], + "files": [ + "layouts/toc_base.html", + "doaj/toc.html", + "doaj/toc_articles.html" + ] + } + ], + "files": [ + "layouts/dashboard_base.html", + "unlocked.html", + "dashboard/notifications.html", + "dashboard/index.html", + "openurl/404.html", + "openurl/help.html", + "publisher/publisher_base.html", + "layouts/single_col_page.html", + "layouts/public_base.html", + "layouts/toc_base.html", + "admin/admin_base.html", + "editor/editor_base.html", + "doaj/contact.html", + "doaj/articles_search.html", + "doaj/journals_search.html", + "doaj/article.html", + "api/current/api_docs.html", + "application_form/public_application.html", + "application_form/maned_application.html", + "application_form/maned_journal.html", + "application_form/readonly_journal.html" + ] + }, + { + "name": "page_title", + "blocks": [], + "files": [ + "layouts/dashboard_base.html", + "500.html", + "401.html", + "404.html", + "400.html", + "unlocked.html", + "publisher/locked.html", + "publisher/updates_in_progress.html", + "publisher/metadata.html", + "publisher/readonly.html", + "publisher/journals.html", + "publisher/uploadmetadata.html", + "publisher/preservation.html", + "publisher/journal_csv.html", + "publisher/application_deleted.html", + "publisher/help.html", + "publisher/index.html", + "publisher/publisher_base.html", + "layouts/base.html", + "layouts/toc_base.html", + "admin/continuation.html", + "admin/journal_locked.html", + "admin/global_notifications_search.html", + "admin/application_locked.html", + "admin/applications.html", + "admin/update_requests.html", + "admin/editor_group.html", + "admin/background_jobs_search.html", + "admin/editor_group_search.html", + "admin/article_metadata.html", + "admin/index.html", + "editor/group_journals.html", + "editor/journal_locked.html", + "editor/associate_applications.html", + "editor/group_applications.html", + "editor/application_locked.html", + "editor/associate_journals.html", + "doaj/readonly.html", + "doaj/articles_search.html", + "doaj/journals_search.html", + "doaj/article.html", + "api/current/api_docs.html", + "application_form/editor_application.html", + "application_form/public_application.html", + "application_form/readonly_application.html", + "application_form/maned_application.html", + "application_form/maned_journal.html", + "application_form/assed_application.html", + "application_form/assed_journal.html", + "application_form/editor_journal.html", + "application_form/publisher_update_request.html", + "application_form/readonly_journal.html" + ] + } + ], + "files": [ + "layouts/public_base.html", + "layouts/dashboard_base.html" + ] + }, + { + "name": "main_panel", + "blocks": [ + { + "name": "content", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "files": [ + "admin/admin_base.html", + "admin/continuation.html", + "admin/journal_locked.html", + "admin/global_notifications_search.html", + "admin/application_locked.html", + "admin/applications.html", + "admin/update_requests.html", + "admin/editor_group.html", + "admin/background_jobs_search.html", + "admin/editor_group_search.html", + "admin/article_metadata.html", + "admin/index.html" + ] + }, + { + "name": "editor_content", + "blocks": [], + "files": [ + "editor/editor_base.html", + "editor/group_journals.html", + "editor/journal_locked.html", + "editor/associate_applications.html", + "editor/group_applications.html", + "editor/application_locked.html", + "editor/associate_journals.html", + "editor/dashboard.html", + "application_form/editor_application.html", + "application_form/assed_application.html", + "application_form/assed_journal.html", + "application_form/editor_journal.html" + ] + }, + { + "name": "publisher_content", + "blocks": [], + "files": [ + "publisher/publisher_base.html", + "publisher/locked.html", + "publisher/updates_in_progress.html", + "publisher/metadata.html", + "publisher/readonly.html", + "publisher/journals.html", + "publisher/uploadmetadata.html", + "publisher/preservation.html", + "publisher/journal_csv.html", + "publisher/help.html", + "publisher/application_already_submitted.html", + "publisher/index.html", + "application_form/readonly_application.html", + "application_form/publisher_update_request.html" + ] + }, + { + "name": "single_col_content", + "blocks": [], + "files": [ + "layouts/single_col_page.html", + "500.html", + "401.html", + "404.html", + "400.html", + "publisher/application_deleted.html", + "doaj/readonly.html" + ] + }, + { + "name": "title", + "blocks": [], + "files": [ + "layouts/single_col_page.html", + "500.html", + "401.html", + "404.html", + "400.html", + "unlocked.html", + "publisher/application_deleted.html", + "doaj/readonly.html" + ] + }, + { + "name": "toc_content", + "blocks": [], + "files": [ + "layouts/toc_base.html", + "doaj/toc.html", + "doaj/toc_articles.html" + ] + } + ], + "files": [ + "layouts/dashboard_base.html", + "unlocked.html", + "dashboard/notifications.html", + "dashboard/index.html", + "openurl/404.html", + "openurl/help.html", + "publisher/publisher_base.html", + "layouts/single_col_page.html", + "layouts/public_base.html", + "layouts/toc_base.html", + "admin/admin_base.html", + "editor/editor_base.html", + "doaj/contact.html", + "doaj/articles_search.html", + "doaj/journals_search.html", + "doaj/article.html", + "api/current/api_docs.html", + "application_form/public_application.html", + "application_form/maned_application.html", + "application_form/maned_journal.html", + "application_form/readonly_journal.html" + ] + }, + { + "name": "content", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "files": [ + "admin/admin_base.html", + "admin/continuation.html", + "admin/journal_locked.html", + "admin/global_notifications_search.html", + "admin/application_locked.html", + "admin/applications.html", + "admin/update_requests.html", + "admin/editor_group.html", + "admin/background_jobs_search.html", + "admin/editor_group_search.html", + "admin/article_metadata.html", + "admin/index.html" + ] + }, + { + "name": "editor_content", + "blocks": [], + "files": [ + "editor/editor_base.html", + "editor/group_journals.html", + "editor/journal_locked.html", + "editor/associate_applications.html", + "editor/group_applications.html", + "editor/application_locked.html", + "editor/associate_journals.html", + "editor/dashboard.html", + "application_form/editor_application.html", + "application_form/assed_application.html", + "application_form/assed_journal.html", + "application_form/editor_journal.html" + ] + }, + { + "name": "publisher_content", + "blocks": [], + "files": [ + "publisher/publisher_base.html", + "publisher/locked.html", + "publisher/updates_in_progress.html", + "publisher/metadata.html", + "publisher/readonly.html", + "publisher/journals.html", + "publisher/uploadmetadata.html", + "publisher/preservation.html", + "publisher/journal_csv.html", + "publisher/help.html", + "publisher/application_already_submitted.html", + "publisher/index.html", + "application_form/readonly_application.html", + "application_form/publisher_update_request.html" + ] + }, + { + "name": "single_col_content", + "blocks": [], + "files": [ + "layouts/single_col_page.html", + "500.html", + "401.html", + "404.html", + "400.html", + "publisher/application_deleted.html", + "doaj/readonly.html" + ] + }, + { + "name": "title", + "blocks": [], + "files": [ + "layouts/single_col_page.html", + "500.html", + "401.html", + "404.html", + "400.html", + "unlocked.html", + "publisher/application_deleted.html", + "doaj/readonly.html" + ] + }, + { + "name": "toc_content", + "blocks": [], + "files": [ + "layouts/toc_base.html", + "doaj/toc.html", + "doaj/toc_articles.html" + ] + } + ], + "files": [ + "layouts/public_base.html", + "unlocked.html", + "dashboard/notifications.html", + "dashboard/index.html", + "openurl/404.html", + "openurl/help.html", + "publisher/publisher_base.html", + "layouts/single_col_page.html", + "layouts/dashboard_base.html", + "layouts/toc_base.html", + "admin/admin_base.html", + "editor/editor_base.html", + "doaj/contact.html", + "doaj/articles_search.html", + "doaj/journals_search.html", + "doaj/article.html", + "api/current/api_docs.html", + "application_form/public_application.html", + "application_form/maned_application.html", + "application_form/maned_journal.html", + "application_form/readonly_journal.html" + ] + }, + { + "name": "page_title", + "blocks": [], + "files": [ + "layouts/dashboard_base.html", + "500.html", + "401.html", + "404.html", + "400.html", + "unlocked.html", + "publisher/locked.html", + "publisher/updates_in_progress.html", + "publisher/metadata.html", + "publisher/readonly.html", + "publisher/journals.html", + "publisher/uploadmetadata.html", + "publisher/preservation.html", + "publisher/journal_csv.html", + "publisher/application_deleted.html", + "publisher/help.html", + "publisher/index.html", + "publisher/publisher_base.html", + "layouts/base.html", + "layouts/toc_base.html", + "admin/continuation.html", + "admin/journal_locked.html", + "admin/global_notifications_search.html", + "admin/application_locked.html", + "admin/applications.html", + "admin/update_requests.html", + "admin/editor_group.html", + "admin/background_jobs_search.html", + "admin/editor_group_search.html", + "admin/article_metadata.html", + "admin/index.html", + "editor/group_journals.html", + "editor/journal_locked.html", + "editor/associate_applications.html", + "editor/group_applications.html", + "editor/application_locked.html", + "editor/associate_journals.html", + "doaj/readonly.html", + "doaj/articles_search.html", + "doaj/journals_search.html", + "doaj/article.html", + "api/current/api_docs.html", + "application_form/editor_application.html", + "application_form/public_application.html", + "application_form/readonly_application.html", + "application_form/maned_application.html", + "application_form/maned_journal.html", + "application_form/assed_application.html", + "application_form/assed_journal.html", + "application_form/editor_journal.html", + "application_form/publisher_update_request.html", + "application_form/readonly_journal.html" + ] + } + ], + "files": [ + "layouts/dashboard_base.html", + "layouts/public_base.html" + ] + }, + { + "name": "nav", + "blocks": [], + "files": [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "editor/editor_base.html" + ] + } + ], + "files": [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/dashboard_base.html" + ] + }, + { + "name": "extra_meta_tags", + "blocks": [], + "files": [ + "layouts/base.html", + "doaj/article.html" + ] + }, + { + "name": "extra_stylesheets", + "blocks": [], + "files": [ + "layouts/base.html", + "publisher/publisher_base.html", + "admin/admin_base.html", + "editor/editor_base.html", + "api/current/api_docs.html", + "application_form/publisher_update_request.html" + ] + }, + { + "name": "meta_description", + "blocks": [], + "files": [ + "layouts/base.html", + "layouts/toc_base.html", + "doaj/articles_search.html", + "doaj/journals_search.html", + "doaj/article.html" + ] + }, + { + "name": "meta_og_description", + "blocks": [], + "files": [ + "layouts/base.html", + "layouts/toc_base.html", + "doaj/articles_search.html", + "doaj/journals_search.html", + "doaj/article.html" + ] + }, + { + "name": "meta_og_title", + "blocks": [], + "files": [ + "layouts/base.html", + "layouts/toc_base.html", + "doaj/articles_search.html", + "doaj/journals_search.html", + "doaj/article.html" + ] + }, + { + "name": "meta_twitter_description", + "blocks": [], + "files": [ + "layouts/base.html", + "layouts/toc_base.html", + "doaj/articles_search.html", + "doaj/journals_search.html", + "doaj/article.html" + ] + }, + { + "name": "meta_twitter_title", + "blocks": [], + "files": [ + "layouts/base.html", + "layouts/toc_base.html", + "doaj/articles_search.html", + "doaj/journals_search.html", + "doaj/article.html" + ] + }, + { + "name": "page_title", + "blocks": [], + "files": [ + "layouts/base.html", + "500.html", + "401.html", + "404.html", + "400.html", + "unlocked.html", + "publisher/locked.html", + "publisher/updates_in_progress.html", + "publisher/metadata.html", + "publisher/readonly.html", + "publisher/journals.html", + "publisher/uploadmetadata.html", + "publisher/preservation.html", + "publisher/journal_csv.html", + "publisher/application_deleted.html", + "publisher/help.html", + "publisher/index.html", + "publisher/publisher_base.html", + "layouts/dashboard_base.html", + "layouts/toc_base.html", + "admin/continuation.html", + "admin/journal_locked.html", + "admin/global_notifications_search.html", + "admin/application_locked.html", + "admin/applications.html", + "admin/update_requests.html", + "admin/editor_group.html", + "admin/background_jobs_search.html", + "admin/editor_group_search.html", + "admin/article_metadata.html", + "admin/index.html", + "editor/group_journals.html", + "editor/journal_locked.html", + "editor/associate_applications.html", + "editor/group_applications.html", + "editor/application_locked.html", + "editor/associate_journals.html", + "doaj/readonly.html", + "doaj/articles_search.html", + "doaj/journals_search.html", + "doaj/article.html", + "api/current/api_docs.html", + "application_form/editor_application.html", + "application_form/public_application.html", + "application_form/readonly_application.html", + "application_form/maned_application.html", + "application_form/maned_journal.html", + "application_form/assed_application.html", + "application_form/assed_journal.html", + "application_form/editor_journal.html", + "application_form/publisher_update_request.html", + "application_form/readonly_journal.html" + ] + }, + { + "name": "pagination_menu", + "blocks": [], + "files": [ + "application_form/pagination_menu_admin.html", + "application_form/pagination_menu.html" + ] + } +] \ No newline at end of file diff --git a/docs/redhead/templates/redhead_records.json b/docs/redhead/templates/redhead_records.json new file mode 100644 index 0000000000..3588b28fdb --- /dev/null +++ b/docs/redhead/templates/redhead_records.json @@ -0,0 +1,3515 @@ +[ + { + "type": "template", + "file": "_edges_common_css.html" + }, + { + "type": "template", + "file": "500.html", + "blocks": [ + "body_class", + "page_title", + "title", + "single_col_content" + ], + "extends": [ + "layouts/single_col_page.html" + ] + }, + { + "type": "block", + "name": "body_class", + "file": "500.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "page_title", + "file": "500.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "title", + "file": "500.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "single_col_content", + "file": "500.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "401.html", + "blocks": [ + "body_class", + "page_title", + "title", + "single_col_content" + ], + "extends": [ + "layouts/single_col_page.html" + ] + }, + { + "type": "block", + "name": "body_class", + "file": "401.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "page_title", + "file": "401.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "title", + "file": "401.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "single_col_content", + "file": "401.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "404.html", + "blocks": [ + "body_class", + "page_title", + "title", + "single_col_content" + ], + "extends": [ + "layouts/single_col_page.html" + ] + }, + { + "type": "block", + "name": "body_class", + "file": "404.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "page_title", + "file": "404.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "title", + "file": "404.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "single_col_content", + "file": "404.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "_edges_common_js.html" + }, + { + "type": "template", + "file": "400.html", + "blocks": [ + "body_class", + "page_title", + "title", + "single_col_content" + ], + "extends": [ + "layouts/single_col_page.html" + ] + }, + { + "type": "block", + "name": "body_class", + "file": "400.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "page_title", + "file": "400.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "title", + "file": "400.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "single_col_content", + "file": "400.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "_formhelpers.html" + }, + { + "type": "template", + "file": "unlocked.html", + "blocks": [ + "body_class", + "page_title", + "title", + "content" + ], + "extends": [ + "layouts/dashboard_base.html" + ] + }, + { + "type": "block", + "name": "body_class", + "file": "unlocked.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "page_title", + "file": "unlocked.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "title", + "file": "unlocked.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "content", + "file": "unlocked.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "_js_includes.html" + }, + { + "type": "template", + "file": "dashboard/nav.html" + }, + { + "type": "template", + "file": "dashboard/notifications.html", + "blocks": [ + "content", + "extra_js_bottom" + ], + "extends": [ + "layouts/dashboard_base.html" + ], + "includes": [ + "_edges_common_css.html" + ] + }, + { + "type": "block", + "name": "content", + "file": "dashboard/notifications.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "dashboard/notifications.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "dashboard/_todo.html" + }, + { + "type": "template", + "file": "dashboard/index.html", + "blocks": [ + "content", + "extra_js_bottom" + ], + "extends": [ + "admin/admin_base.html" + ] + }, + { + "type": "block", + "name": "content", + "file": "dashboard/index.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "dashboard/_todo.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "dashboard/index.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "includes/_hotjar.html" + ] + }, + { + "type": "template", + "file": "email/script_tag_detected.jinja2" + }, + { + "type": "template", + "file": "email/notification_email.jinja2" + }, + { + "type": "template", + "file": "email/editor_application_assigned_group.jinja2" + }, + { + "type": "template", + "file": "email/admin_background_job_finished.jinja2" + }, + { + "type": "template", + "file": "email/publisher_update_request_revisions.jinja2" + }, + { + "type": "template", + "file": "email/assoc_editor_application_assigned.jinja2" + }, + { + "type": "template", + "file": "email/publisher_update_request_inprogress.jinja2" + }, + { + "type": "template", + "file": "email/publisher_application_editor_assigned.jinja2" + }, + { + "type": "template", + "file": "email/publisher_application_accepted.jinja2" + }, + { + "type": "template", + "file": "email/account_password_reset.jinja2" + }, + { + "type": "template", + "file": "email/editor_application_completed.jinja2" + }, + { + "type": "template", + "file": "email/publisher_update_request_rejected.jinja2" + }, + { + "type": "template", + "file": "email/publisher_application_received.jinja2" + }, + { + "type": "template", + "file": "email/account_created.jinja2" + }, + { + "type": "template", + "file": "email/publisher_application_inprogress.jinja2" + }, + { + "type": "template", + "file": "email/admin_application_ready.jinja2" + }, + { + "type": "template", + "file": "email/publisher_application_rejected.jinja2" + }, + { + "type": "template", + "file": "email/publisher_update_request_editor_assigned.jinja2" + }, + { + "type": "template", + "file": "email/publisher_update_request_received.jinja2" + }, + { + "type": "template", + "file": "email/discontinue_soon.jinja2" + }, + { + "type": "template", + "file": "email/editor_journal_assigned_group.jinja2" + }, + { + "type": "template", + "file": "email/assoc_editor_journal_assigned.jinja2" + }, + { + "type": "template", + "file": "email/publisher_update_request_accepted.jinja2" + }, + { + "type": "template", + "file": "email/assoc_editor_application_inprogress.jinja2" + }, + { + "type": "template", + "file": "email/editor_application_inprogress.jinja2" + }, + { + "type": "template", + "file": "email/workflow_reminder_fragments/assoc_ed_age_frag" + }, + { + "type": "template", + "file": "email/workflow_reminder_fragments/editor_age_frag" + }, + { + "type": "template", + "file": "email/workflow_reminder_fragments/admin_age_frag" + }, + { + "type": "template", + "file": "email/workflow_reminder_fragments/admin_ready_frag" + }, + { + "type": "template", + "file": "email/workflow_reminder_fragments/editor_groupcount_frag" + }, + { + "type": "template", + "file": "openurl/404.html", + "blocks": [ + "content" + ], + "extends": [ + "layouts/public_base.html" + ] + }, + { + "type": "block", + "name": "content", + "file": "openurl/404.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "openurl/help.html", + "blocks": [ + "content" + ], + "extends": [ + "layouts/public_base.html" + ] + }, + { + "type": "block", + "name": "content", + "file": "openurl/help.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "formcontext/_error_header.html" + }, + { + "type": "template", + "file": "formcontext/article_metadata_form.html" + }, + { + "type": "template", + "file": "publisher/locked.html", + "blocks": [ + "page_title", + "publisher_content" + ], + "extends": [ + "publisher/publisher_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "publisher/locked.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "publisher_content", + "file": "publisher/locked.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "publisher/updates_in_progress.html", + "blocks": [ + "page_title", + "publisher_content", + "extra_js_bottom" + ], + "extends": [ + "publisher/publisher_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "publisher/updates_in_progress.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "publisher_content", + "file": "publisher/updates_in_progress.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "publisher/updates_in_progress.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "publisher/nav.html" + }, + { + "type": "template", + "file": "publisher/metadata.html", + "blocks": [ + "page_title", + "publisher_content", + "extra_js_bottom" + ], + "extends": [ + "publisher/publisher_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "publisher/metadata.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "publisher_content", + "file": "publisher/metadata.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "formcontext/_error_header.html", + "_formhelpers.html", + "_formhelpers.html", + "formcontext/article_metadata_form.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "publisher/metadata.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "publisher/readonly.html", + "blocks": [ + "page_title", + "publisher_content" + ], + "extends": [ + "publisher/publisher_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "publisher/readonly.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "publisher_content", + "file": "publisher/readonly.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "publisher/journals.html", + "blocks": [ + "page_title", + "publisher_content", + "extra_js_bottom" + ], + "extends": [ + "publisher/publisher_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "publisher/journals.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "publisher_content", + "file": "publisher/journals.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "publisher/journals.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "publisher/uploadmetadata.html", + "blocks": [ + "page_title", + "publisher_content", + "extra_js_bottom" + ], + "extends": [ + "publisher/publisher_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "publisher/uploadmetadata.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "publisher_content", + "file": "publisher/uploadmetadata.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "publisher/uploadmetadata.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "publisher/preservation.html", + "blocks": [ + "page_title", + "publisher_content", + "extra_js_bottom" + ], + "extends": [ + "publisher/publisher_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "publisher/preservation.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "publisher_content", + "file": "publisher/preservation.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "publisher/preservation.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "publisher/journal_csv.html", + "blocks": [ + "page_title", + "publisher_content", + "extra_js_bottom" + ], + "extends": [ + "publisher/publisher_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "publisher/journal_csv.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "publisher_content", + "file": "publisher/journal_csv.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "publisher/journal_csv.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "publisher/application_deleted.html", + "blocks": [ + "page_title", + "title", + "single_col_content" + ], + "extends": [ + "layouts/single_col_page.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "publisher/application_deleted.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "title", + "file": "publisher/application_deleted.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "single_col_content", + "file": "publisher/application_deleted.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "publisher/help.html", + "blocks": [ + "page_title", + "publisher_content" + ], + "extends": [ + "publisher/publisher_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "publisher/help.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "publisher_content", + "file": "publisher/help.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "publisher/application_already_submitted.html", + "blocks": [ + "publisher_content" + ], + "extends": [ + "publisher/publisher_base.html" + ] + }, + { + "type": "block", + "name": "publisher_content", + "file": "publisher/application_already_submitted.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "publisher/index.html", + "blocks": [ + "page_title", + "publisher_content", + "extra_js_bottom" + ], + "extends": [ + "publisher/publisher_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "publisher/index.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "publisher_content", + "file": "publisher/index.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "publisher/index.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "publisher/publisher_base.html", + "blocks": [ + "extra_stylesheets", + "page_title", + "content" + ], + "extends": [ + "layouts/public_base.html" + ] + }, + { + "type": "block", + "name": "extra_stylesheets", + "file": "publisher/publisher_base.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "page_title", + "file": "publisher/publisher_base.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "content", + "file": "publisher/publisher_base.html", + "parent_block": null, + "content": true, + "scoped": false, + "blocks": [ + "publisher_content" + ], + "includes": [ + "publisher/nav.html", + "includes/_hotjar.html" + ] + }, + { + "type": "block", + "name": "publisher_content", + "file": "publisher/publisher_base.html", + "parent_block": "content", + "content": false, + "scoped": false + }, + { + "type": "template", + "file": "layouts/single_col_page.html", + "blocks": [ + "content" + ], + "extends": [ + "layouts/public_base.html" + ] + }, + { + "type": "block", + "name": "content", + "file": "layouts/single_col_page.html", + "parent_block": null, + "content": true, + "scoped": false, + "blocks": [ + "title", + "single_col_content" + ] + }, + { + "type": "block", + "name": "title", + "file": "layouts/single_col_page.html", + "parent_block": "content", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "single_col_content", + "file": "layouts/single_col_page.html", + "parent_block": "content", + "content": false, + "scoped": false + }, + { + "type": "template", + "file": "layouts/public_base.html", + "blocks": [ + "base_content" + ], + "extends": [ + "layouts/base.html" + ] + }, + { + "type": "block", + "name": "base_content", + "file": "layouts/public_base.html", + "parent_block": null, + "content": true, + "scoped": false, + "blocks": [ + "body_class", + "extra_header", + "main_panel", + "extra_js_bottom" + ], + "includes": [ + "includes/header.html", + "includes/_flash_notification.html", + "includes/_quick_search_modal.html", + "includes/footer.html", + "_js_includes.html" + ], + "dynamic_includes": [ + "config.get(\"SITE_NOTE_TEMPLATE\")" + ] + }, + { + "type": "block", + "name": "body_class", + "file": "layouts/public_base.html", + "parent_block": "base_content", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "extra_header", + "file": "layouts/public_base.html", + "parent_block": "base_content", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "main_panel", + "file": "layouts/public_base.html", + "parent_block": "base_content", + "content": true, + "scoped": false, + "blocks": [ + "content" + ] + }, + { + "type": "block", + "name": "content", + "file": "layouts/public_base.html", + "parent_block": "main_panel", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "layouts/public_base.html", + "parent_block": "base_content", + "content": false, + "scoped": false + }, + { + "type": "template", + "file": "layouts/dashboard_base.html", + "blocks": [ + "base_content" + ], + "extends": [ + "layouts/base.html" + ] + }, + { + "type": "block", + "name": "base_content", + "file": "layouts/dashboard_base.html", + "parent_block": null, + "content": true, + "scoped": false, + "blocks": [ + "body_class", + "body_id", + "nav", + "extra_header", + "main_panel", + "extra_js_bottom" + ], + "dynamic_includes": [ + "config.get(\"SITE_NOTE_TEMPLATE\")" + ], + "includes": [ + "includes/svg/doaj-icon.svg", + "includes/_tourist_nav.html", + "_js_includes.html", + "includes/_tourist.html" + ] + }, + { + "type": "block", + "name": "body_class", + "file": "layouts/dashboard_base.html", + "parent_block": "base_content", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "body_id", + "file": "layouts/dashboard_base.html", + "parent_block": "base_content", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "nav", + "file": "layouts/dashboard_base.html", + "parent_block": "base_content", + "content": true, + "scoped": false, + "includes": [ + "dashboard/nav.html" + ] + }, + { + "type": "block", + "name": "extra_header", + "file": "layouts/dashboard_base.html", + "parent_block": "base_content", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "main_panel", + "file": "layouts/dashboard_base.html", + "parent_block": "base_content", + "content": true, + "scoped": false, + "blocks": [ + "page_title", + "content" + ], + "includes": [ + "includes/_flash_notification.html", + "includes/_back-to-top.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "layouts/dashboard_base.html", + "parent_block": "main_panel", + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "content", + "file": "layouts/dashboard_base.html", + "parent_block": "main_panel", + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "layouts/dashboard_base.html", + "parent_block": "base_content", + "content": false, + "scoped": false + }, + { + "type": "template", + "file": "layouts/base.html", + "blocks": [ + "page_title", + "meta_description", + "meta_og_title", + "meta_og_description", + "meta_twitter_title", + "meta_twitter_description", + "extra_meta_tags", + "extra_stylesheets", + "base_content" + ], + "includes": [ + "doaj/cookie_consent.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "layouts/base.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_description", + "file": "layouts/base.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_og_title", + "file": "layouts/base.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_og_description", + "file": "layouts/base.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_twitter_title", + "file": "layouts/base.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_twitter_description", + "file": "layouts/base.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_meta_tags", + "file": "layouts/base.html", + "parent_block": null, + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "extra_stylesheets", + "file": "layouts/base.html", + "parent_block": null, + "content": false, + "scoped": false + }, + { + "type": "block", + "name": "base_content", + "file": "layouts/base.html", + "parent_block": null, + "content": false, + "scoped": false + }, + { + "type": "template", + "file": "layouts/toc_base.html", + "blocks": [ + "body_class", + "page_title", + "meta_og_title", + "meta_twitter_title", + "meta_description", + "meta_og_description", + "meta_twitter_description", + "content" + ], + "extends": [ + "layouts/public_base.html" + ] + }, + { + "type": "block", + "name": "body_class", + "file": "layouts/toc_base.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "page_title", + "file": "layouts/toc_base.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "doaj/includes/_journal_meta_title.html" + ] + }, + { + "type": "block", + "name": "meta_og_title", + "file": "layouts/toc_base.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "doaj/includes/_journal_meta_title.html" + ] + }, + { + "type": "block", + "name": "meta_twitter_title", + "file": "layouts/toc_base.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "doaj/includes/_journal_meta_title.html" + ] + }, + { + "type": "block", + "name": "meta_description", + "file": "layouts/toc_base.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "doaj/includes/_journal_meta_description.html" + ] + }, + { + "type": "block", + "name": "meta_og_description", + "file": "layouts/toc_base.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "doaj/includes/_journal_meta_description.html" + ] + }, + { + "type": "block", + "name": "meta_twitter_description", + "file": "layouts/toc_base.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "doaj/includes/_journal_meta_description.html" + ] + }, + { + "type": "block", + "name": "content", + "file": "layouts/toc_base.html", + "parent_block": null, + "content": true, + "scoped": false, + "blocks": [ + "toc_content" + ], + "includes": [ + "includes/svg/seal.svg", + "includes/_hotjar.html" + ] + }, + { + "type": "block", + "name": "toc_content", + "file": "layouts/toc_base.html", + "parent_block": "content", + "content": false, + "scoped": false + }, + { + "type": "template", + "file": "includes/_tourist_nav.html" + }, + { + "type": "template", + "file": "includes/_sidenav_donation.html" + }, + { + "type": "template", + "file": "includes/header-primary-navigation.html" + }, + { + "type": "template", + "file": "includes/footer.html", + "includes": [ + "includes/_nav_modals.html", + "includes/_back-to-top.html", + "includes/footer-column.html", + "includes/svg/logo.svg", + "includes/menu-items.html", + "includes/menu-items.html", + "includes/svg/cc.svg", + "includes/svg/by.svg", + "includes/svg/sa.svg", + "includes/svg/cc.svg", + "includes/svg/zero.svg" + ] + }, + { + "type": "template", + "file": "includes/_header-secondary-navigation-account.html" + }, + { + "type": "template", + "file": "includes/footer-column.html", + "includes": [ + "includes/menu-items.html" + ] + }, + { + "type": "template", + "file": "includes/search-help-modal.html" + }, + { + "type": "template", + "file": "includes/_todo_item.html" + }, + { + "type": "template", + "file": "includes/menu-items.html", + "dynamic_includes": [ + "entry.include" + ] + }, + { + "type": "template", + "file": "includes/_aside_in_case_of_rejection.html" + }, + { + "type": "template", + "file": "includes/contribution_rates.html" + }, + { + "type": "template", + "file": "includes/header-secondary-navigation.html" + }, + { + "type": "template", + "file": "includes/_hotjar.html" + }, + { + "type": "template", + "file": "includes/header.html", + "includes": [ + "includes/svg/logo.svg", + "includes/header-primary-navigation.html", + "includes/header-secondary-navigation.html", + "includes/header-secondary-navigation.html", + "includes/_header-secondary-navigation-account.html", + "includes/_header-secondary-navigation-account.html" + ] + }, + { + "type": "template", + "file": "includes/_wechat_modal.html" + }, + { + "type": "template", + "file": "includes/_back-to-top.html" + }, + { + "type": "template", + "file": "includes/_flash_notification.html" + }, + { + "type": "template", + "file": "includes/_nav_modals.html", + "dynamic_includes": [ + "entry.modal.include" + ] + }, + { + "type": "template", + "file": "includes/_tourist.html" + }, + { + "type": "template", + "file": "includes/_quick_search_modal.html" + }, + { + "type": "template", + "file": "includes/_sidenav_toc.html" + }, + { + "type": "template", + "file": "admin/continuation.html", + "blocks": [ + "page_title", + "admin_content" + ], + "extends": [ + "admin/admin_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "admin/continuation.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "admin/continuation.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_formhelpers.html", + "_formhelpers.html" + ] + }, + { + "type": "template", + "file": "admin/journal_locked.html", + "blocks": [ + "page_title", + "admin_content" + ], + "extends": [ + "admin/admin_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "admin/journal_locked.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "admin/journal_locked.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "admin/global_notifications_search.html", + "blocks": [ + "page_title", + "admin_content", + "extra_js_bottom" + ], + "extends": [ + "admin/admin_base.html" + ], + "includes": [ + "_edges_common_css.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "admin/global_notifications_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "admin/global_notifications_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "admin/global_notifications_search.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "admin/application_locked.html", + "blocks": [ + "page_title", + "admin_content" + ], + "extends": [ + "admin/admin_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "admin/application_locked.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "admin/application_locked.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "admin/applications.html", + "blocks": [ + "page_title", + "admin_content", + "extra_js_bottom" + ], + "extends": [ + "admin/admin_base.html" + ], + "includes": [ + "_edges_common_css.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "admin/applications.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "admin/applications.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "management/admin/includes/_applications_and_update_requests_common.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "admin/applications.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "management/admin/includes/_applications_and_update_requests_common_js.html" + ] + }, + { + "type": "template", + "file": "admin/update_requests.html", + "blocks": [ + "page_title", + "admin_content", + "extra_js_bottom" + ], + "extends": [ + "admin/admin_base.html" + ], + "includes": [ + "_edges_common_css.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "admin/update_requests.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "admin/update_requests.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "management/admin/includes/_applications_and_update_requests_common.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "admin/update_requests.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "management/admin/includes/_applications_and_update_requests_common_js.html" + ] + }, + { + "type": "template", + "file": "admin/editor_group.html", + "blocks": [ + "page_title", + "admin_content", + "extra_js_bottom" + ], + "extends": [ + "admin/admin_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "admin/editor_group.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "admin/editor_group.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "formcontext/_error_header.html", + "_formhelpers.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "admin/editor_group.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "admin/background_jobs_search.html", + "blocks": [ + "page_title", + "admin_content", + "extra_js_bottom" + ], + "extends": [ + "admin/admin_base.html" + ], + "includes": [ + "_edges_common_css.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "admin/background_jobs_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "admin/background_jobs_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "admin/background_jobs_search.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "admin/editor_group_search.html", + "blocks": [ + "page_title", + "admin_content", + "extra_js_bottom" + ], + "extends": [ + "admin/admin_base.html" + ], + "includes": [ + "_edges_common_css.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "admin/editor_group_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "admin/editor_group_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "admin/editor_group_search.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "admin/article_metadata.html", + "blocks": [ + "page_title", + "admin_content", + "extra_js_bottom" + ], + "extends": [ + "admin/admin_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "admin/article_metadata.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "admin/article_metadata.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "formcontext/_error_header.html", + "_formhelpers.html", + "_formhelpers.html", + "formcontext/article_metadata_form.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "admin/article_metadata.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "admin/index.html", + "blocks": [ + "page_title", + "admin_content", + "extra_js_bottom" + ], + "extends": [ + "admin/admin_base.html" + ], + "includes": [ + "_edges_common_css.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "admin/index.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "admin_content", + "file": "admin/index.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "admin/index.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "admin/admin_base.html", + "blocks": [ + "extra_stylesheets", + "nav", + "content" + ], + "extends": [ + "layouts/dashboard_base.html" + ] + }, + { + "type": "block", + "name": "extra_stylesheets", + "file": "admin/admin_base.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "nav", + "file": "admin/admin_base.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "dashboard/nav.html" + ] + }, + { + "type": "block", + "name": "content", + "file": "admin/admin_base.html", + "parent_block": null, + "content": true, + "scoped": false, + "blocks": [ + "admin_content" + ], + "includes": [ + "includes/_hotjar.html" + ] + }, + { + "type": "block", + "name": "admin_content", + "file": "admin/admin_base.html", + "parent_block": "content", + "content": false, + "scoped": false + }, + { + "type": "template", + "file": "editor/nav.html" + }, + { + "type": "template", + "file": "editor/group_journals.html", + "blocks": [ + "page_title", + "editor_content", + "extra_js_bottom" + ], + "extends": [ + "editor/editor_base.html" + ], + "includes": [ + "_edges_common_css.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "editor/group_journals.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "editor_content", + "file": "editor/group_journals.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "editor/group_journals.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "editor/journal_locked.html", + "blocks": [ + "page_title", + "editor_content" + ], + "extends": [ + "editor/editor_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "editor/journal_locked.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "editor_content", + "file": "editor/journal_locked.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "editor/associate_applications.html", + "blocks": [ + "page_title", + "editor_content", + "extra_js_bottom" + ], + "extends": [ + "editor/editor_base.html" + ], + "includes": [ + "_edges_common_css.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "editor/associate_applications.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "editor_content", + "file": "editor/associate_applications.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "editor/associate_applications.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "editor/group_applications.html", + "blocks": [ + "page_title", + "editor_content", + "extra_js_bottom" + ], + "extends": [ + "editor/editor_base.html" + ], + "includes": [ + "_edges_common_css.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "editor/group_applications.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "editor_content", + "file": "editor/group_applications.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "editor/group_applications.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "editor/application_locked.html", + "blocks": [ + "page_title", + "editor_content" + ], + "extends": [ + "editor/editor_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "editor/application_locked.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "editor_content", + "file": "editor/application_locked.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "editor/associate_journals.html", + "blocks": [ + "page_title", + "editor_content", + "extra_js_bottom" + ], + "extends": [ + "editor/editor_base.html" + ], + "includes": [ + "_edges_common_css.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "editor/associate_journals.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "editor_content", + "file": "editor/associate_journals.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "editor/associate_journals.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "editor/editor_base.html", + "blocks": [ + "extra_stylesheets", + "nav", + "content" + ], + "extends": [ + "layouts/dashboard_base.html" + ] + }, + { + "type": "block", + "name": "extra_stylesheets", + "file": "editor/editor_base.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "nav", + "file": "editor/editor_base.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "editor/nav.html" + ] + }, + { + "type": "block", + "name": "content", + "file": "editor/editor_base.html", + "parent_block": null, + "content": true, + "scoped": false, + "blocks": [ + "editor_content" + ], + "includes": [ + "editor/nav.html", + "includes/_hotjar.html" + ] + }, + { + "type": "block", + "name": "editor_content", + "file": "editor/editor_base.html", + "parent_block": "content", + "content": false, + "scoped": false + }, + { + "type": "template", + "file": "editor/dashboard.html", + "blocks": [ + "editor_content", + "extra_js_bottom" + ], + "extends": [ + "editor/editor_base.html" + ] + }, + { + "type": "block", + "name": "editor_content", + "file": "editor/dashboard.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "dashboard/_todo.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "editor/dashboard.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "doaj/contact.html", + "blocks": [ + "content", + "extra_js_bottom" + ], + "extends": [ + "layouts/public_base.html" + ] + }, + { + "type": "block", + "name": "content", + "file": "doaj/contact.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_formhelpers.html", + "_formhelpers.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "doaj/contact.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "doaj/readonly.html", + "blocks": [ + "page_title", + "title", + "single_col_content" + ], + "extends": [ + "layouts/single_col_page.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "doaj/readonly.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "title", + "file": "doaj/readonly.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "single_col_content", + "file": "doaj/readonly.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "doaj/cookie_consent.html" + }, + { + "type": "template", + "file": "doaj/articles_search.html", + "blocks": [ + "body_attrs", + "page_title", + "meta_og_title", + "meta_twitter_title", + "meta_description", + "meta_og_description", + "meta_twitter_description", + "content", + "extra_js_bottom" + ], + "extends": [ + "layouts/public_base.html" + ] + }, + { + "type": "block", + "name": "body_attrs", + "file": "doaj/articles_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "page_title", + "file": "doaj/articles_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_og_title", + "file": "doaj/articles_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_twitter_title", + "file": "doaj/articles_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_description", + "file": "doaj/articles_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_og_description", + "file": "doaj/articles_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_twitter_description", + "file": "doaj/articles_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "content", + "file": "doaj/articles_search.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "includes/search-help-modal.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "doaj/articles_search.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "doaj/site_note.html" + }, + { + "type": "template", + "file": "doaj/journals_search.html", + "blocks": [ + "body_attrs", + "page_title", + "meta_og_title", + "meta_twitter_title", + "meta_description", + "meta_og_description", + "meta_twitter_description", + "content", + "extra_js_bottom" + ], + "extends": [ + "layouts/public_base.html" + ] + }, + { + "type": "block", + "name": "body_attrs", + "file": "doaj/journals_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "page_title", + "file": "doaj/journals_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_og_title", + "file": "doaj/journals_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_twitter_title", + "file": "doaj/journals_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_description", + "file": "doaj/journals_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_og_description", + "file": "doaj/journals_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "meta_twitter_description", + "file": "doaj/journals_search.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "content", + "file": "doaj/journals_search.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "includes/search-help-modal.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "doaj/journals_search.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "doaj/toc.html", + "blocks": [ + "toc_content" + ], + "extends": [ + "layouts/toc_base.html" + ] + }, + { + "type": "block", + "name": "toc_content", + "file": "doaj/toc.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "includes/svg/cc.svg", + "includes/svg/by.svg", + "includes/svg/nc.svg", + "includes/svg/nd.svg", + "includes/svg/sa.svg", + "includes/svg/zero.svg", + "includes/svg/copyright.svg" + ] + }, + { + "type": "template", + "file": "doaj/toc_articles.html", + "blocks": [ + "toc_content", + "extra_js_bottom" + ], + "extends": [ + "layouts/toc_base.html" + ] + }, + { + "type": "block", + "name": "toc_content", + "file": "doaj/toc_articles.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "doaj/toc_articles.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "_edges_common_js.html" + ] + }, + { + "type": "template", + "file": "doaj/article.html", + "blocks": [ + "body_class", + "page_title", + "meta_og_title", + "meta_twitter_title", + "meta_description", + "meta_og_description", + "meta_twitter_description", + "extra_meta_tags", + "content" + ], + "extends": [ + "layouts/public_base.html" + ] + }, + { + "type": "block", + "name": "body_class", + "file": "doaj/article.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "page_title", + "file": "doaj/article.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "doaj/includes/_article_meta_title.html" + ] + }, + { + "type": "block", + "name": "meta_og_title", + "file": "doaj/article.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "doaj/includes/_article_meta_title.html" + ] + }, + { + "type": "block", + "name": "meta_twitter_title", + "file": "doaj/article.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "doaj/includes/_article_meta_title.html" + ] + }, + { + "type": "block", + "name": "meta_description", + "file": "doaj/article.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "doaj/includes/_article_meta_description.html" + ] + }, + { + "type": "block", + "name": "meta_og_description", + "file": "doaj/article.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "doaj/includes/_article_meta_description.html" + ] + }, + { + "type": "block", + "name": "meta_twitter_description", + "file": "doaj/article.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "doaj/includes/_article_meta_description.html" + ] + }, + { + "type": "block", + "name": "extra_meta_tags", + "file": "doaj/article.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "content", + "file": "doaj/article.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "doaj/includes/_journal_meta_description.html" + }, + { + "type": "template", + "file": "doaj/includes/_article_meta_description.html" + }, + { + "type": "template", + "file": "doaj/includes/_journal_meta_title.html" + }, + { + "type": "template", + "file": "doaj/includes/_article_meta_title.html" + }, + { + "type": "template", + "file": "testdrive/testdrive.html" + }, + { + "type": "template", + "file": "data/ambassadors.html" + }, + { + "type": "template", + "file": "data/team.html" + }, + { + "type": "template", + "file": "data/publisher-supporters.html" + }, + { + "type": "template", + "file": "data/sponsors.html" + }, + { + "type": "template", + "file": "data/advisory-board-council.html" + }, + { + "type": "template", + "file": "data/volunteers.html" + }, + { + "type": "template", + "file": "api/current/extra_docs.html" + }, + { + "type": "template", + "file": "api/current/api_docs.html", + "blocks": [ + "page_title", + "extra_stylesheets", + "content", + "extra_js_bottom" + ], + "extends": [ + "layouts/public_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "api/current/api_docs.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_stylesheets", + "file": "api/current/api_docs.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "content", + "file": "api/current/api_docs.html", + "parent_block": null, + "content": true, + "scoped": false, + "includes": [ + "api/current/swagger_description.html", + "api/current/extra_docs.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "api/current/api_docs.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "api/current/swagger_description.html" + }, + { + "type": "template", + "file": "application_form/_contact.html" + }, + { + "type": "template", + "file": "application_form/_edit_status.html" + }, + { + "type": "template", + "file": "application_form/_entry_group_horizontal.html" + }, + { + "type": "template", + "file": "application_form/editor_application.html", + "blocks": [ + "page_title", + "body_id", + "editor_content", + "extra_js_bottom" + ], + "extends": [ + "editor/editor_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "application_form/editor_application.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "body_id", + "file": "application_form/editor_application.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "editor_content", + "file": "application_form/editor_application.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/editorial_form_body.html", + "includes/_hotjar.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "application_form/editor_application.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/js/_form_js.html" + ] + }, + { + "type": "template", + "file": "application_form/public_application.html", + "blocks": [ + "page_title", + "content", + "extra_js_bottom" + ], + "extends": [ + "layouts/public_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "application_form/public_application.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "content", + "file": "application_form/public_application.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/_backend_validation.html", + "application_form/_fieldsets.html", + "application_form/07-review/index.html", + "application_form/_buttons.html", + "application_form/pagination_menu.html", + "application_form/aside_menu.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "application_form/public_application.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/js/_form_js.html" + ] + }, + { + "type": "template", + "file": "application_form/_fieldsets.html", + "includes": [ + "application_form/01-oa-compliance/index.html", + "application_form/02-about/index.html", + "application_form/03-copyright-licensing/index.html", + "application_form/04-editorial/index.html", + "application_form/05-business-model/index.html", + "application_form/06-best-practice/index.html" + ] + }, + { + "type": "template", + "file": "application_form/_form.html" + }, + { + "type": "template", + "file": "application_form/_entry_group.html" + }, + { + "type": "template", + "file": "application_form/readonly_application.html", + "blocks": [ + "page_title", + "publisher_content", + "extra_js_bottom" + ], + "extends": [ + "publisher/publisher_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "application_form/readonly_application.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "publisher_content", + "file": "application_form/readonly_application.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/_fieldsets.html", + "application_form/07-review/index.html", + "application_form/aside_menu.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "application_form/readonly_application.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/js/_form_js.html" + ] + }, + { + "type": "template", + "file": "application_form/_field.html", + "includes": [ + "application_form/modal.html" + ] + }, + { + "type": "template", + "file": "application_form/maned_application.html", + "blocks": [ + "page_title", + "body_id", + "content", + "extra_js_bottom" + ], + "extends": [ + "admin/admin_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "application_form/maned_application.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "body_id", + "file": "application_form/maned_application.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "content", + "file": "application_form/maned_application.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/editorial_form_body.html", + "includes/_hotjar.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "application_form/maned_application.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/js/_form_js.html" + ] + }, + { + "type": "template", + "file": "application_form/editorial_form_fields.html", + "dynamic_includes": [ + "field_template" + ] + }, + { + "type": "template", + "file": "application_form/_buttons.html", + "blocks": [ + "buttons" + ] + }, + { + "type": "block", + "name": "buttons", + "file": "application_form/_buttons.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "application_form/editorial_side_panel.html", + "includes": [ + "application_form/_contact.html" + ], + "dynamic_includes": [ + "field_template", + "field_template" + ] + }, + { + "type": "template", + "file": "application_form/_application_diff.html" + }, + { + "type": "template", + "file": "application_form/pagination_menu.html", + "blocks": [ + "pagination_menu" + ] + }, + { + "type": "block", + "name": "pagination_menu", + "file": "application_form/pagination_menu.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "application_form/_list.html", + "dynamic_includes": [ + "entry_template", + "entry_template" + ], + "includes": [ + "application_form/modal.html" + ] + }, + { + "type": "template", + "file": "application_form/_value.html" + }, + { + "type": "template", + "file": "application_form/maned_journal_bulk_edit.html" + }, + { + "type": "template", + "file": "application_form/maned_journal.html", + "blocks": [ + "page_title", + "body_id", + "content", + "extra_js_bottom" + ], + "extends": [ + "admin/admin_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "application_form/maned_journal.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "body_id", + "file": "application_form/maned_journal.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "content", + "file": "application_form/maned_journal.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/editorial_form_body.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "application_form/maned_journal.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/js/_form_js.html" + ] + }, + { + "type": "template", + "file": "application_form/pagination_menu_admin.html", + "blocks": [ + "pagination_menu" + ] + }, + { + "type": "block", + "name": "pagination_menu", + "file": "application_form/pagination_menu_admin.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "application_form/editorial_form_body.html", + "includes": [ + "application_form/_edit_status.html", + "application_form/_backend_validation.html", + "application_form/_autochecks.html", + "application_form/_application_diff.html", + "application_form/editorial_form_fields.html", + "application_form/_fieldsets.html", + "application_form/editorial_side_panel.html", + "includes/_hotjar.html" + ] + }, + { + "type": "template", + "file": "application_form/aside_menu.html", + "blocks": [ + "aside_menu" + ] + }, + { + "type": "block", + "name": "aside_menu", + "file": "application_form/aside_menu.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "template", + "file": "application_form/assed_application.html", + "blocks": [ + "page_title", + "body_id", + "editor_content", + "extra_js_bottom" + ], + "extends": [ + "editor/editor_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "application_form/assed_application.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "body_id", + "file": "application_form/assed_application.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "editor_content", + "file": "application_form/assed_application.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/editorial_form_body.html", + "includes/_hotjar.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "application_form/assed_application.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/js/_form_js.html" + ] + }, + { + "type": "template", + "file": "application_form/_backend_validation.html" + }, + { + "type": "template", + "file": "application_form/_application_warning_msg.html" + }, + { + "type": "template", + "file": "application_form/_autochecks.html" + }, + { + "type": "template", + "file": "application_form/assed_journal.html", + "blocks": [ + "page_title", + "body_id", + "editor_content", + "extra_js_bottom" + ], + "extends": [ + "editor/editor_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "application_form/assed_journal.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "body_id", + "file": "application_form/assed_journal.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "editor_content", + "file": "application_form/assed_journal.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/editorial_form_body.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "application_form/assed_journal.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/js/_form_js.html" + ] + }, + { + "type": "template", + "file": "application_form/_group.html", + "includes": [ + "application_form/modal.html" + ] + }, + { + "type": "template", + "file": "application_form/editor_journal.html", + "blocks": [ + "page_title", + "body_id", + "editor_content", + "extra_js_bottom" + ], + "extends": [ + "editor/editor_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "application_form/editor_journal.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "body_id", + "file": "application_form/editor_journal.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "editor_content", + "file": "application_form/editor_journal.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/editorial_form_body.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "application_form/editor_journal.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/js/_form_js.html" + ] + }, + { + "type": "template", + "file": "application_form/publisher_update_request.html", + "blocks": [ + "page_title", + "extra_stylesheets", + "publisher_content", + "extra_js_bottom" + ], + "extends": [ + "publisher/publisher_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "application_form/publisher_update_request.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "extra_stylesheets", + "file": "application_form/publisher_update_request.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "publisher_content", + "file": "application_form/publisher_update_request.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/_backend_validation.html", + "application_form/_fieldsets.html", + "application_form/07-review/index.html", + "application_form/_buttons.html", + "application_form/pagination_menu.html", + "application_form/aside_menu.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "application_form/publisher_update_request.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/js/_form_js.html" + ] + }, + { + "type": "template", + "file": "application_form/modal.html" + }, + { + "type": "template", + "file": "application_form/readonly_journal.html", + "blocks": [ + "page_title", + "content", + "extra_js_bottom" + ], + "extends": [ + "layouts/public_base.html" + ] + }, + { + "type": "block", + "name": "page_title", + "file": "application_form/readonly_journal.html", + "parent_block": null, + "content": true, + "scoped": false + }, + { + "type": "block", + "name": "content", + "file": "application_form/readonly_journal.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/_fieldsets.html", + "application_form/07-review/index.html", + "application_form/aside_menu.html" + ] + }, + { + "type": "block", + "name": "extra_js_bottom", + "file": "application_form/readonly_journal.html", + "parent_block": null, + "content": true, + "scoped": true, + "includes": [ + "application_form/js/_form_js.html" + ] + }, + { + "type": "template", + "file": "application_form/readonly/journal.html" + }, + { + "type": "template", + "file": "application_form/02-about/index.html" + }, + { + "type": "template", + "file": "application_form/07-review/index.html" + }, + { + "type": "template", + "file": "application_form/06-best-practice/index.html" + }, + { + "type": "template", + "file": "application_form/01-oa-compliance/index.html" + }, + { + "type": "template", + "file": "application_form/03-copyright-licensing/index.html" + }, + { + "type": "template", + "file": "application_form/05-business-model/index.html" + }, + { + "type": "template", + "file": "application_form/04-editorial/index.html" + }, + { + "type": "template", + "file": "application_form/js/_form_js.html" + } +] \ No newline at end of file diff --git a/docs/redhead/templates/redhead_tree.html b/docs/redhead/templates/redhead_tree.html new file mode 100644 index 0000000000..c4ded7a4c9 --- /dev/null +++ b/docs/redhead/templates/redhead_tree.html @@ -0,0 +1,14413 @@ + + + + +- + base_content + + + + + + + + + + + + + + + +
+ + + +- + extra_meta_tags + + + + + + + + + + + + + +
+ + + ++ + +
+ +- [+] Files +
+ ++ +
+ + + + +- + extra_stylesheets + + + + + + + + + + + + + +
+ + + ++ + +
+ +- [+] Files +
+ ++ +
+ + + + + + + + + + + + +- + meta_description + + + + + + + + + + + + + +
+ + + ++ + +
+ +- [+] Files +
+ ++ +
+ + + + + + + + + + +- + meta_og_description + + + + + + + + + + + + + +
+ + + ++ + +
+ +- [+] Files +
+ ++ +
+ + + + + + + + + + +- + meta_og_title + + + + + + + + + + + + + +
+ + + ++ + +
+ +- [+] Files +
+ ++ +
+ + + + + + + + + + +- + meta_twitter_description + + + + + + + + + + + + + +
+ + + ++ + +
+ +- [+] Files +
+ ++ +
+ + + + + + + + + + +- + meta_twitter_title + + + + + + + + + + + + + +
+ + + ++ + +
+ +- [+] Files +
+ ++ +
+ + + + + + + + + + +- + page_title + + + + + + + + + + + + + +
+ + + ++ + +
+ +- [+] Files +
+ ++ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +- + pagination_menu + + + + + + + + + + + + + +
+ + ++ + +
+ +- [+] Files +
+ ++ +
+ + + + +Redhead: Jinja2 template structure browser + + + + + + + + + + + + +File Inheritance | Block Inheritance | + Records JSON | Tree JSON | Blocks JSON
+ +File Inheritance
+ +Expand all | Collapse all + ++ + +
+ + + + + + + \ No newline at end of file diff --git a/docs/redhead/templates/redhead_tree.json b/docs/redhead/templates/redhead_tree.json new file mode 100644 index 0000000000..d3beafe486 --- /dev/null +++ b/docs/redhead/templates/redhead_tree.json @@ -0,0 +1,9977 @@ +[ + { + "name": "application_form/_application_warning_msg.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_entry_group.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_entry_group_horizontal.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_field.html", + "blocks": [], + "includes": [ + { + "name": "application_form/modal.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "application_form/_form.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_group.html", + "blocks": [], + "includes": [ + { + "name": "application_form/modal.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "application_form/_list.html", + "blocks": [], + "includes": [ + { + "name": "application_form/modal.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [], + "dynamic_includes": [ + "entry_template", + "entry_template" + ] + }, + { + "name": "application_form/_value.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/maned_journal_bulk_edit.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/pagination_menu_admin.html", + "blocks": [ + { + "name": "pagination_menu", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/readonly/journal.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "data/advisory-board-council.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "data/ambassadors.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "data/publisher-supporters.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "data/sponsors.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "data/team.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "data/volunteers.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "doaj/site_note.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/account_created.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/account_password_reset.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/admin_application_ready.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/admin_background_job_finished.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/assoc_editor_application_assigned.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/assoc_editor_application_inprogress.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/assoc_editor_journal_assigned.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/discontinue_soon.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/editor_application_assigned_group.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/editor_application_completed.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/editor_application_inprogress.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/editor_journal_assigned_group.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/notification_email.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/publisher_application_accepted.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/publisher_application_editor_assigned.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/publisher_application_inprogress.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/publisher_application_received.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/publisher_application_rejected.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/publisher_update_request_accepted.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/publisher_update_request_editor_assigned.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/publisher_update_request_inprogress.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/publisher_update_request_received.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/publisher_update_request_rejected.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/publisher_update_request_revisions.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/script_tag_detected.jinja2", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/workflow_reminder_fragments/admin_age_frag", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/workflow_reminder_fragments/admin_ready_frag", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/workflow_reminder_fragments/assoc_ed_age_frag", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/workflow_reminder_fragments/editor_age_frag", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "email/workflow_reminder_fragments/editor_groupcount_frag", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/_aside_in_case_of_rejection.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/_sidenav_donation.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/_sidenav_toc.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/_todo_item.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/_wechat_modal.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/contribution_rates.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "layouts/base.html", + "blocks": [ + { + "name": "base_content", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html" + ] + ] + }, + { + "file": "layouts/public_base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "extra_meta_tags", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "doaj/article.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/article.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "extra_stylesheets", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "admin/admin_base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html" + ] + ] + }, + { + "file": "api/current/api_docs.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "api/current/api_docs.html" + ] + ] + }, + { + "file": "application_form/publisher_update_request.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "application_form/publisher_update_request.html" + ] + ] + }, + { + "file": "editor/editor_base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "meta_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "doaj/article.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/article.html" + ] + ] + }, + { + "file": "doaj/articles_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + }, + { + "file": "doaj/journals_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + }, + { + "file": "layouts/toc_base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "meta_og_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "doaj/article.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/article.html" + ] + ] + }, + { + "file": "doaj/articles_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + }, + { + "file": "doaj/journals_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + }, + { + "file": "layouts/toc_base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "meta_og_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "doaj/article.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/article.html" + ] + ] + }, + { + "file": "doaj/articles_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + }, + { + "file": "doaj/journals_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + }, + { + "file": "layouts/toc_base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "meta_twitter_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "doaj/article.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/article.html" + ] + ] + }, + { + "file": "doaj/articles_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + }, + { + "file": "doaj/journals_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + }, + { + "file": "layouts/toc_base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "meta_twitter_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "doaj/article.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/article.html" + ] + ] + }, + { + "file": "doaj/articles_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + }, + { + "file": "doaj/journals_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + }, + { + "file": "layouts/toc_base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "400.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/single_col_page.html", + "400.html" + ] + ] + }, + { + "file": "401.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/single_col_page.html", + "401.html" + ] + ] + }, + { + "file": "404.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/single_col_page.html", + "404.html" + ] + ] + }, + { + "file": "500.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/single_col_page.html", + "500.html" + ] + ] + }, + { + "file": "admin/application_locked.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/application_locked.html" + ] + ] + }, + { + "file": "admin/applications.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/applications.html" + ] + ] + }, + { + "file": "admin/article_metadata.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/article_metadata.html" + ] + ] + }, + { + "file": "admin/background_jobs_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/background_jobs_search.html" + ] + ] + }, + { + "file": "admin/continuation.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/continuation.html" + ] + ] + }, + { + "file": "admin/editor_group.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/editor_group.html" + ] + ] + }, + { + "file": "admin/editor_group_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/editor_group_search.html" + ] + ] + }, + { + "file": "admin/global_notifications_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/global_notifications_search.html" + ] + ] + }, + { + "file": "admin/index.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/index.html" + ] + ] + }, + { + "file": "admin/journal_locked.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/journal_locked.html" + ] + ] + }, + { + "file": "admin/update_requests.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/update_requests.html" + ] + ] + }, + { + "file": "api/current/api_docs.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "api/current/api_docs.html" + ] + ] + }, + { + "file": "application_form/assed_application.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_application.html" + ] + ] + }, + { + "file": "application_form/assed_journal.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_journal.html" + ] + ] + }, + { + "file": "application_form/editor_application.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_application.html" + ] + ] + }, + { + "file": "application_form/editor_journal.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_journal.html" + ] + ] + }, + { + "file": "application_form/maned_application.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_application.html" + ] + ] + }, + { + "file": "application_form/maned_journal.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_journal.html" + ] + ] + }, + { + "file": "application_form/public_application.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "application_form/public_application.html" + ] + ] + }, + { + "file": "application_form/publisher_update_request.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "application_form/publisher_update_request.html" + ] + ] + }, + { + "file": "application_form/readonly_application.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "application_form/readonly_application.html" + ] + ] + }, + { + "file": "application_form/readonly_journal.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "application_form/readonly_journal.html" + ] + ] + }, + { + "file": "doaj/article.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/article.html" + ] + ] + }, + { + "file": "doaj/articles_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + }, + { + "file": "doaj/journals_search.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + }, + { + "file": "doaj/readonly.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/single_col_page.html", + "doaj/readonly.html" + ] + ] + }, + { + "file": "editor/application_locked.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/application_locked.html" + ] + ] + }, + { + "file": "editor/associate_applications.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/associate_applications.html" + ] + ] + }, + { + "file": "editor/associate_journals.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/associate_journals.html" + ] + ] + }, + { + "file": "editor/group_applications.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/group_applications.html" + ] + ] + }, + { + "file": "editor/group_journals.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/group_journals.html" + ] + ] + }, + { + "file": "editor/journal_locked.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/journal_locked.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html" + ] + ] + }, + { + "file": "layouts/toc_base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + }, + { + "file": "publisher/application_deleted.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/single_col_page.html", + "publisher/application_deleted.html" + ] + ] + }, + { + "file": "publisher/help.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/help.html" + ] + ] + }, + { + "file": "publisher/index.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/index.html" + ] + ] + }, + { + "file": "publisher/journal_csv.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/journal_csv.html" + ] + ] + }, + { + "file": "publisher/journals.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/journals.html" + ] + ] + }, + { + "file": "publisher/locked.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/locked.html" + ] + ] + }, + { + "file": "publisher/metadata.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/metadata.html" + ] + ] + }, + { + "file": "publisher/preservation.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/preservation.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html" + ] + ] + }, + { + "file": "publisher/readonly.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/readonly.html" + ] + ] + }, + { + "file": "publisher/updates_in_progress.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/updates_in_progress.html" + ] + ] + }, + { + "file": "publisher/uploadmetadata.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/uploadmetadata.html" + ] + ] + }, + { + "file": "unlocked.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "unlocked.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [ + { + "name": "doaj/cookie_consent.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [ + { + "name": "layouts/dashboard_base.html", + "blocks": [ + { + "name": "base_content", + "blocks": [ + { + "name": "body_class", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "unlocked.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "unlocked.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "body_id", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "application_form/assed_application.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_application.html" + ] + ] + }, + { + "file": "application_form/assed_journal.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_journal.html" + ] + ] + }, + { + "file": "application_form/editor_application.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_application.html" + ] + ] + }, + { + "file": "application_form/editor_journal.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_journal.html" + ] + ] + }, + { + "file": "application_form/maned_application.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_application.html" + ] + ] + }, + { + "file": "application_form/maned_journal.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_journal.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "extra_header", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [], + "overrides": [], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "admin/applications.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/applications.html" + ] + ] + }, + { + "file": "admin/article_metadata.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/article_metadata.html" + ] + ] + }, + { + "file": "admin/background_jobs_search.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/background_jobs_search.html" + ] + ] + }, + { + "file": "admin/editor_group.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/editor_group.html" + ] + ] + }, + { + "file": "admin/editor_group_search.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/editor_group_search.html" + ] + ] + }, + { + "file": "admin/global_notifications_search.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/global_notifications_search.html" + ] + ] + }, + { + "file": "admin/index.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/index.html" + ] + ] + }, + { + "file": "admin/update_requests.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/update_requests.html" + ] + ] + }, + { + "file": "application_form/assed_application.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_application.html" + ] + ] + }, + { + "file": "application_form/assed_journal.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_journal.html" + ] + ] + }, + { + "file": "application_form/editor_application.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_application.html" + ] + ] + }, + { + "file": "application_form/editor_journal.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_journal.html" + ] + ] + }, + { + "file": "application_form/maned_application.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_application.html" + ] + ] + }, + { + "file": "application_form/maned_journal.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_journal.html" + ] + ] + }, + { + "file": "dashboard/index.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "dashboard/index.html" + ] + ] + }, + { + "file": "dashboard/notifications.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "dashboard/notifications.html" + ] + ] + }, + { + "file": "editor/associate_applications.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/associate_applications.html" + ] + ] + }, + { + "file": "editor/associate_journals.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/associate_journals.html" + ] + ] + }, + { + "file": "editor/dashboard.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/dashboard.html" + ] + ] + }, + { + "file": "editor/group_applications.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/group_applications.html" + ] + ] + }, + { + "file": "editor/group_journals.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/group_journals.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "main_panel", + "blocks": [ + { + "name": "content", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "admin/admin_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html" + ] + ] + }, + { + "file": "application_form/maned_application.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_application.html" + ] + ] + }, + { + "file": "application_form/maned_journal.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_journal.html" + ] + ] + }, + { + "file": "dashboard/index.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "dashboard/index.html" + ] + ] + }, + { + "file": "dashboard/notifications.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "dashboard/notifications.html" + ] + ] + }, + { + "file": "editor/editor_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html" + ] + ] + }, + { + "file": "unlocked.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "unlocked.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "admin/application_locked.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/application_locked.html" + ] + ] + }, + { + "file": "admin/applications.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/applications.html" + ] + ] + }, + { + "file": "admin/article_metadata.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/article_metadata.html" + ] + ] + }, + { + "file": "admin/background_jobs_search.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/background_jobs_search.html" + ] + ] + }, + { + "file": "admin/continuation.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/continuation.html" + ] + ] + }, + { + "file": "admin/editor_group.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/editor_group.html" + ] + ] + }, + { + "file": "admin/editor_group_search.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/editor_group_search.html" + ] + ] + }, + { + "file": "admin/global_notifications_search.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/global_notifications_search.html" + ] + ] + }, + { + "file": "admin/index.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/index.html" + ] + ] + }, + { + "file": "admin/journal_locked.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/journal_locked.html" + ] + ] + }, + { + "file": "admin/update_requests.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/update_requests.html" + ] + ] + }, + { + "file": "application_form/assed_application.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_application.html" + ] + ] + }, + { + "file": "application_form/assed_journal.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_journal.html" + ] + ] + }, + { + "file": "application_form/editor_application.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_application.html" + ] + ] + }, + { + "file": "application_form/editor_journal.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_journal.html" + ] + ] + }, + { + "file": "application_form/maned_application.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_application.html" + ] + ] + }, + { + "file": "application_form/maned_journal.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_journal.html" + ] + ] + }, + { + "file": "editor/application_locked.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/application_locked.html" + ] + ] + }, + { + "file": "editor/associate_applications.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/associate_applications.html" + ] + ] + }, + { + "file": "editor/associate_journals.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/associate_journals.html" + ] + ] + }, + { + "file": "editor/group_applications.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/group_applications.html" + ] + ] + }, + { + "file": "editor/group_journals.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/group_journals.html" + ] + ] + }, + { + "file": "editor/journal_locked.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/journal_locked.html" + ] + ] + }, + { + "file": "unlocked.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "unlocked.html" + ] + ] + } + ], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [ + { + "name": "includes/_back-to-top.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/_flash_notification.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + }, + { + "name": "nav", + "blocks": [], + "includes": [ + { + "name": "dashboard/nav.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [ + { + "file": "admin/admin_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html" + ] + ] + }, + { + "file": "editor/editor_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [ + { + "name": "_js_includes.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/_tourist.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/_tourist_nav.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/svg/doaj-icon.svg", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": false, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html" + ] + ] + } + ], + "scoped": false, + "dynamic_includes": [ + "config.get(\"SITE_NOTE_TEMPLATE\")" + ] + } + ], + "includes": [], + "extensions": [ + { + "name": "admin/admin_base.html", + "blocks": [ + { + "name": "content", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "admin/application_locked.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "admin/application_locked.html" + ] + ] + }, + { + "file": "admin/applications.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "admin/applications.html" + ] + ] + }, + { + "file": "admin/article_metadata.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "admin/article_metadata.html" + ] + ] + }, + { + "file": "admin/background_jobs_search.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "admin/background_jobs_search.html" + ] + ] + }, + { + "file": "admin/continuation.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "admin/continuation.html" + ] + ] + }, + { + "file": "admin/editor_group.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "admin/editor_group.html" + ] + ] + }, + { + "file": "admin/editor_group_search.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "admin/editor_group_search.html" + ] + ] + }, + { + "file": "admin/global_notifications_search.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "admin/global_notifications_search.html" + ] + ] + }, + { + "file": "admin/index.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "admin/index.html" + ] + ] + }, + { + "file": "admin/journal_locked.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "admin/journal_locked.html" + ] + ] + }, + { + "file": "admin/update_requests.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "admin/update_requests.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [ + { + "name": "includes/_hotjar.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [ + { + "file": "application_form/maned_application.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "application_form/maned_application.html" + ] + ] + }, + { + "file": "application_form/maned_journal.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "application_form/maned_journal.html" + ] + ] + }, + { + "file": "dashboard/index.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "dashboard/index.html" + ] + ] + } + ], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_stylesheets", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": false, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "nav", + "blocks": [], + "includes": [ + { + "name": "dashboard/nav.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [ + { + "name": "admin/application_locked.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "admin/admin_base.html", + "content": false, + "paths": [ + [ + "admin/admin_base.html", + "admin/application_locked.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/application_locked.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/application_locked.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "admin/applications.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [ + { + "name": "management/admin/includes/_applications_and_update_requests_common.html", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "admin/admin_base.html", + "content": false, + "paths": [ + [ + "admin/admin_base.html", + "admin/applications.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "management/admin/includes/_applications_and_update_requests_common_js.html", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/applications.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/applications.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/applications.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [ + { + "name": "_edges_common_css.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "admin/article_metadata.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [ + { + "name": "_formhelpers.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "formcontext/_error_header.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "formcontext/article_metadata_form.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "admin/admin_base.html", + "content": false, + "paths": [ + [ + "admin/admin_base.html", + "admin/article_metadata.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/article_metadata.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/article_metadata.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/article_metadata.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "admin/background_jobs_search.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "admin/admin_base.html", + "content": false, + "paths": [ + [ + "admin/admin_base.html", + "admin/background_jobs_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/background_jobs_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/background_jobs_search.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/background_jobs_search.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [ + { + "name": "_edges_common_css.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "admin/continuation.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [ + { + "name": "_formhelpers.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "admin/admin_base.html", + "content": false, + "paths": [ + [ + "admin/admin_base.html", + "admin/continuation.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/continuation.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/continuation.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "admin/editor_group.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [ + { + "name": "_formhelpers.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "formcontext/_error_header.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "admin/admin_base.html", + "content": false, + "paths": [ + [ + "admin/admin_base.html", + "admin/editor_group.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/editor_group.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/editor_group.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/editor_group.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "admin/editor_group_search.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "admin/admin_base.html", + "content": false, + "paths": [ + [ + "admin/admin_base.html", + "admin/editor_group_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/editor_group_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/editor_group_search.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/editor_group_search.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [ + { + "name": "_edges_common_css.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "admin/global_notifications_search.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "admin/admin_base.html", + "content": false, + "paths": [ + [ + "admin/admin_base.html", + "admin/global_notifications_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/global_notifications_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/global_notifications_search.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/global_notifications_search.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [ + { + "name": "_edges_common_css.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "admin/index.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "admin/admin_base.html", + "content": false, + "paths": [ + [ + "admin/admin_base.html", + "admin/index.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/index.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/index.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/index.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [ + { + "name": "_edges_common_css.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "admin/journal_locked.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "admin/admin_base.html", + "content": false, + "paths": [ + [ + "admin/admin_base.html", + "admin/journal_locked.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/journal_locked.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/journal_locked.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "admin/update_requests.html", + "blocks": [ + { + "name": "admin_content", + "blocks": [], + "includes": [ + { + "name": "management/admin/includes/_applications_and_update_requests_common.html", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "admin/admin_base.html", + "content": false, + "paths": [ + [ + "admin/admin_base.html", + "admin/update_requests.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "management/admin/includes/_applications_and_update_requests_common_js.html", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/update_requests.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/update_requests.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "admin/update_requests.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [ + { + "name": "_edges_common_css.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "application_form/maned_application.html", + "blocks": [ + { + "name": "body_id", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_application.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "content", + "blocks": [], + "includes": [ + { + "name": "application_form/editorial_form_body.html", + "blocks": [], + "includes": [ + { + "name": "application_form/_application_diff.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_autochecks.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_backend_validation.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_edit_status.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_fieldsets.html", + "blocks": [], + "includes": [ + { + "name": "application_form/01-oa-compliance/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/02-about/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/03-copyright-licensing/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/04-editorial/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/05-business-model/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/06-best-practice/index.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "application_form/editorial_form_fields.html", + "blocks": [], + "includes": [], + "extensions": [], + "dynamic_includes": [ + "field_template" + ] + }, + { + "name": "application_form/editorial_side_panel.html", + "blocks": [], + "includes": [ + { + "name": "application_form/_contact.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [], + "dynamic_includes": [ + "field_template", + "field_template" + ] + }, + { + "name": "includes/_hotjar.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "includes/_hotjar.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "admin/admin_base.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "application_form/maned_application.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_application.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "application_form/js/_form_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_application.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_application.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_application.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/maned_journal.html", + "blocks": [ + { + "name": "body_id", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_journal.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "content", + "blocks": [], + "includes": [ + { + "name": "application_form/editorial_form_body.html", + "blocks": [], + "includes": [ + { + "name": "application_form/_application_diff.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_autochecks.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_backend_validation.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_edit_status.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_fieldsets.html", + "blocks": [], + "includes": [ + { + "name": "application_form/01-oa-compliance/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/02-about/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/03-copyright-licensing/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/04-editorial/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/05-business-model/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/06-best-practice/index.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "application_form/editorial_form_fields.html", + "blocks": [], + "includes": [], + "extensions": [], + "dynamic_includes": [ + "field_template" + ] + }, + { + "name": "application_form/editorial_side_panel.html", + "blocks": [], + "includes": [ + { + "name": "application_form/_contact.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [], + "dynamic_includes": [ + "field_template", + "field_template" + ] + }, + { + "name": "includes/_hotjar.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "admin/admin_base.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "application_form/maned_journal.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_journal.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "application_form/js/_form_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_journal.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_journal.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "application_form/maned_journal.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "dashboard/index.html", + "blocks": [ + { + "name": "content", + "blocks": [], + "includes": [ + { + "name": "dashboard/_todo.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "admin/admin_base.html", + "content": true, + "paths": [ + [ + "admin/admin_base.html", + "dashboard/index.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "dashboard/index.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "includes/_hotjar.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "admin/admin_base.html", + "dashboard/index.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + } + ] + }, + { + "name": "dashboard/notifications.html", + "blocks": [ + { + "name": "content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "dashboard/notifications.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "dashboard/notifications.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [ + { + "name": "_edges_common_css.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "editor/editor_base.html", + "blocks": [ + { + "name": "content", + "blocks": [ + { + "name": "editor_content", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "application_form/assed_application.html", + "content": true, + "paths": [ + [ + "editor/editor_base.html", + "application_form/assed_application.html" + ] + ] + }, + { + "file": "application_form/assed_journal.html", + "content": true, + "paths": [ + [ + "editor/editor_base.html", + "application_form/assed_journal.html" + ] + ] + }, + { + "file": "application_form/editor_application.html", + "content": true, + "paths": [ + [ + "editor/editor_base.html", + "application_form/editor_application.html" + ] + ] + }, + { + "file": "application_form/editor_journal.html", + "content": true, + "paths": [ + [ + "editor/editor_base.html", + "application_form/editor_journal.html" + ] + ] + }, + { + "file": "editor/application_locked.html", + "content": true, + "paths": [ + [ + "editor/editor_base.html", + "editor/application_locked.html" + ] + ] + }, + { + "file": "editor/associate_applications.html", + "content": true, + "paths": [ + [ + "editor/editor_base.html", + "editor/associate_applications.html" + ] + ] + }, + { + "file": "editor/associate_journals.html", + "content": true, + "paths": [ + [ + "editor/editor_base.html", + "editor/associate_journals.html" + ] + ] + }, + { + "file": "editor/dashboard.html", + "content": true, + "paths": [ + [ + "editor/editor_base.html", + "editor/dashboard.html" + ] + ] + }, + { + "file": "editor/group_applications.html", + "content": true, + "paths": [ + [ + "editor/editor_base.html", + "editor/group_applications.html" + ] + ] + }, + { + "file": "editor/group_journals.html", + "content": true, + "paths": [ + [ + "editor/editor_base.html", + "editor/group_journals.html" + ] + ] + }, + { + "file": "editor/journal_locked.html", + "content": true, + "paths": [ + [ + "editor/editor_base.html", + "editor/journal_locked.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [ + { + "name": "editor/nav.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/_hotjar.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_stylesheets", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": false, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "nav", + "blocks": [], + "includes": [ + { + "name": "editor/nav.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [ + { + "name": "application_form/assed_application.html", + "blocks": [ + { + "name": "body_id", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_application.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "editor_content", + "blocks": [], + "includes": [ + { + "name": "application_form/editorial_form_body.html", + "blocks": [], + "includes": [ + { + "name": "application_form/_application_diff.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_autochecks.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_backend_validation.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_edit_status.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_fieldsets.html", + "blocks": [], + "includes": [ + { + "name": "application_form/01-oa-compliance/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/02-about/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/03-copyright-licensing/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/04-editorial/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/05-business-model/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/06-best-practice/index.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "application_form/editorial_form_fields.html", + "blocks": [], + "includes": [], + "extensions": [], + "dynamic_includes": [ + "field_template" + ] + }, + { + "name": "application_form/editorial_side_panel.html", + "blocks": [], + "includes": [ + { + "name": "application_form/_contact.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [], + "dynamic_includes": [ + "field_template", + "field_template" + ] + }, + { + "name": "includes/_hotjar.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "includes/_hotjar.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "editor/editor_base.html", + "content": false, + "paths": [ + [ + "editor/editor_base.html", + "application_form/assed_application.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "application_form/js/_form_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_application.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_application.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_application.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/assed_journal.html", + "blocks": [ + { + "name": "body_id", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_journal.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "editor_content", + "blocks": [], + "includes": [ + { + "name": "application_form/editorial_form_body.html", + "blocks": [], + "includes": [ + { + "name": "application_form/_application_diff.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_autochecks.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_backend_validation.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_edit_status.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_fieldsets.html", + "blocks": [], + "includes": [ + { + "name": "application_form/01-oa-compliance/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/02-about/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/03-copyright-licensing/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/04-editorial/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/05-business-model/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/06-best-practice/index.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "application_form/editorial_form_fields.html", + "blocks": [], + "includes": [], + "extensions": [], + "dynamic_includes": [ + "field_template" + ] + }, + { + "name": "application_form/editorial_side_panel.html", + "blocks": [], + "includes": [ + { + "name": "application_form/_contact.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [], + "dynamic_includes": [ + "field_template", + "field_template" + ] + }, + { + "name": "includes/_hotjar.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "editor/editor_base.html", + "content": false, + "paths": [ + [ + "editor/editor_base.html", + "application_form/assed_journal.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "application_form/js/_form_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_journal.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_journal.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/assed_journal.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/editor_application.html", + "blocks": [ + { + "name": "body_id", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_application.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "editor_content", + "blocks": [], + "includes": [ + { + "name": "application_form/editorial_form_body.html", + "blocks": [], + "includes": [ + { + "name": "application_form/_application_diff.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_autochecks.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_backend_validation.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_edit_status.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_fieldsets.html", + "blocks": [], + "includes": [ + { + "name": "application_form/01-oa-compliance/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/02-about/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/03-copyright-licensing/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/04-editorial/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/05-business-model/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/06-best-practice/index.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "application_form/editorial_form_fields.html", + "blocks": [], + "includes": [], + "extensions": [], + "dynamic_includes": [ + "field_template" + ] + }, + { + "name": "application_form/editorial_side_panel.html", + "blocks": [], + "includes": [ + { + "name": "application_form/_contact.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [], + "dynamic_includes": [ + "field_template", + "field_template" + ] + }, + { + "name": "includes/_hotjar.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "includes/_hotjar.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "editor/editor_base.html", + "content": false, + "paths": [ + [ + "editor/editor_base.html", + "application_form/editor_application.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "application_form/js/_form_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_application.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_application.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_application.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/editor_journal.html", + "blocks": [ + { + "name": "body_id", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_journal.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "editor_content", + "blocks": [], + "includes": [ + { + "name": "application_form/editorial_form_body.html", + "blocks": [], + "includes": [ + { + "name": "application_form/_application_diff.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_autochecks.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_backend_validation.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_edit_status.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_fieldsets.html", + "blocks": [], + "includes": [ + { + "name": "application_form/01-oa-compliance/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/02-about/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/03-copyright-licensing/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/04-editorial/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/05-business-model/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/06-best-practice/index.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "application_form/editorial_form_fields.html", + "blocks": [], + "includes": [], + "extensions": [], + "dynamic_includes": [ + "field_template" + ] + }, + { + "name": "application_form/editorial_side_panel.html", + "blocks": [], + "includes": [ + { + "name": "application_form/_contact.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [], + "dynamic_includes": [ + "field_template", + "field_template" + ] + }, + { + "name": "includes/_hotjar.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "editor/editor_base.html", + "content": false, + "paths": [ + [ + "editor/editor_base.html", + "application_form/editor_journal.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "application_form/js/_form_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_journal.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_journal.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "application_form/editor_journal.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "editor/application_locked.html", + "blocks": [ + { + "name": "editor_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "editor/editor_base.html", + "content": false, + "paths": [ + [ + "editor/editor_base.html", + "editor/application_locked.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/application_locked.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/application_locked.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "editor/associate_applications.html", + "blocks": [ + { + "name": "editor_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "editor/editor_base.html", + "content": false, + "paths": [ + [ + "editor/editor_base.html", + "editor/associate_applications.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/associate_applications.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/associate_applications.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/associate_applications.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [ + { + "name": "_edges_common_css.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "editor/associate_journals.html", + "blocks": [ + { + "name": "editor_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "editor/editor_base.html", + "content": false, + "paths": [ + [ + "editor/editor_base.html", + "editor/associate_journals.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/associate_journals.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/associate_journals.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/associate_journals.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [ + { + "name": "_edges_common_css.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "editor/dashboard.html", + "blocks": [ + { + "name": "editor_content", + "blocks": [], + "includes": [ + { + "name": "dashboard/_todo.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "editor/editor_base.html", + "content": false, + "paths": [ + [ + "editor/editor_base.html", + "editor/dashboard.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/dashboard.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "editor/group_applications.html", + "blocks": [ + { + "name": "editor_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "editor/editor_base.html", + "content": false, + "paths": [ + [ + "editor/editor_base.html", + "editor/group_applications.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/group_applications.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/group_applications.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/group_applications.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [ + { + "name": "_edges_common_css.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "editor/group_journals.html", + "blocks": [ + { + "name": "editor_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "editor/editor_base.html", + "content": false, + "paths": [ + [ + "editor/editor_base.html", + "editor/group_journals.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/group_journals.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/group_journals.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/group_journals.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [ + { + "name": "_edges_common_css.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "editor/journal_locked.html", + "blocks": [ + { + "name": "editor_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "editor/editor_base.html", + "content": false, + "paths": [ + [ + "editor/editor_base.html", + "editor/journal_locked.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/journal_locked.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "editor/editor_base.html", + "editor/journal_locked.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + } + ] + }, + { + "name": "unlocked.html", + "blocks": [ + { + "name": "body_class", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "unlocked.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/dashboard_base.html", + "content": false, + "paths": [ + [ + "layouts/dashboard_base.html", + "unlocked.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/dashboard_base.html", + "unlocked.html" + ] + ] + }, + { + "file": "layouts/dashboard_base.html", + "content": true, + "paths": [ + [ + "layouts/dashboard_base.html", + "unlocked.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "extensions": [] + } + ] + }, + { + "name": "layouts/public_base.html", + "blocks": [ + { + "name": "base_content", + "blocks": [ + { + "name": "body_class", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "400.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "layouts/single_col_page.html", + "400.html" + ] + ] + }, + { + "file": "401.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "layouts/single_col_page.html", + "401.html" + ] + ] + }, + { + "file": "404.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "layouts/single_col_page.html", + "404.html" + ] + ] + }, + { + "file": "500.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "layouts/single_col_page.html", + "500.html" + ] + ] + }, + { + "file": "doaj/article.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "doaj/article.html" + ] + ] + }, + { + "file": "layouts/toc_base.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "extra_header", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [], + "overrides": [], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "api/current/api_docs.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "api/current/api_docs.html" + ] + ] + }, + { + "file": "application_form/public_application.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "application_form/public_application.html" + ] + ] + }, + { + "file": "application_form/publisher_update_request.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "application_form/publisher_update_request.html" + ] + ] + }, + { + "file": "application_form/readonly_application.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "application_form/readonly_application.html" + ] + ] + }, + { + "file": "application_form/readonly_journal.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "application_form/readonly_journal.html" + ] + ] + }, + { + "file": "doaj/articles_search.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + }, + { + "file": "doaj/contact.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "doaj/contact.html" + ] + ] + }, + { + "file": "doaj/journals_search.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + }, + { + "file": "doaj/toc_articles.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "layouts/toc_base.html", + "doaj/toc_articles.html" + ] + ] + }, + { + "file": "publisher/index.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/index.html" + ] + ] + }, + { + "file": "publisher/journal_csv.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/journal_csv.html" + ] + ] + }, + { + "file": "publisher/journals.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/journals.html" + ] + ] + }, + { + "file": "publisher/metadata.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/metadata.html" + ] + ] + }, + { + "file": "publisher/preservation.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/preservation.html" + ] + ] + }, + { + "file": "publisher/updates_in_progress.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/updates_in_progress.html" + ] + ] + }, + { + "file": "publisher/uploadmetadata.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/uploadmetadata.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "main_panel", + "blocks": [ + { + "name": "content", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "api/current/api_docs.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "api/current/api_docs.html" + ] + ] + }, + { + "file": "application_form/public_application.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "application_form/public_application.html" + ] + ] + }, + { + "file": "application_form/readonly_journal.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "application_form/readonly_journal.html" + ] + ] + }, + { + "file": "doaj/article.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "doaj/article.html" + ] + ] + }, + { + "file": "doaj/articles_search.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + }, + { + "file": "doaj/contact.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "doaj/contact.html" + ] + ] + }, + { + "file": "doaj/journals_search.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + }, + { + "file": "layouts/single_col_page.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "layouts/single_col_page.html" + ] + ] + }, + { + "file": "layouts/toc_base.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + }, + { + "file": "openurl/404.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "openurl/404.html" + ] + ] + }, + { + "file": "openurl/help.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "openurl/help.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + } + ], + "includes": [ + { + "name": "_js_includes.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/_flash_notification.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/_quick_search_modal.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/footer.html", + "blocks": [], + "includes": [ + { + "name": "includes/_back-to-top.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/_nav_modals.html", + "blocks": [], + "includes": [], + "extensions": [], + "dynamic_includes": [ + "entry.modal.include" + ] + }, + { + "name": "includes/footer-column.html", + "blocks": [], + "includes": [ + { + "name": "includes/menu-items.html", + "blocks": [], + "includes": [], + "extensions": [], + "dynamic_includes": [ + "entry.include" + ] + } + ], + "extensions": [] + }, + { + "name": "includes/menu-items.html", + "blocks": [], + "includes": [], + "extensions": [], + "dynamic_includes": [ + "entry.include" + ] + } + ], + "extensions": [] + }, + { + "name": "includes/header.html", + "blocks": [], + "includes": [ + { + "name": "includes/_header-secondary-navigation-account.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/header-primary-navigation.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/header-secondary-navigation.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": false, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html" + ] + ] + } + ], + "scoped": false, + "dynamic_includes": [ + "config.get(\"SITE_NOTE_TEMPLATE\")" + ] + } + ], + "includes": [], + "extensions": [ + { + "name": "api/current/api_docs.html", + "blocks": [ + { + "name": "content", + "blocks": [], + "includes": [ + { + "name": "api/current/extra_docs.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "api/current/swagger_description.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "api/current/api_docs.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "api/current/api_docs.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_stylesheets", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": false, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "api/current/api_docs.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "api/current/api_docs.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/public_application.html", + "blocks": [ + { + "name": "content", + "blocks": [], + "includes": [ + { + "name": "application_form/07-review/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_backend_validation.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_buttons.html", + "blocks": [ + { + "name": "buttons", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_fieldsets.html", + "blocks": [], + "includes": [ + { + "name": "application_form/01-oa-compliance/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/02-about/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/03-copyright-licensing/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/04-editorial/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/05-business-model/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/06-best-practice/index.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "application_form/aside_menu.html", + "blocks": [ + { + "name": "aside_menu", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/pagination_menu.html", + "blocks": [ + { + "name": "pagination_menu", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "application_form/public_application.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "application_form/js/_form_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "application_form/public_application.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "application_form/public_application.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/readonly_journal.html", + "blocks": [ + { + "name": "content", + "blocks": [], + "includes": [ + { + "name": "application_form/07-review/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_fieldsets.html", + "blocks": [], + "includes": [ + { + "name": "application_form/01-oa-compliance/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/02-about/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/03-copyright-licensing/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/04-editorial/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/05-business-model/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/06-best-practice/index.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "application_form/aside_menu.html", + "blocks": [ + { + "name": "aside_menu", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "application_form/readonly_journal.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "application_form/js/_form_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "application_form/readonly_journal.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "application_form/readonly_journal.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "doaj/article.html", + "blocks": [ + { + "name": "body_class", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "doaj/article.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "doaj/article.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_meta_tags", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": false, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/article.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_description", + "blocks": [], + "includes": [ + { + "name": "doaj/includes/_article_meta_description.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/article.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_og_description", + "blocks": [], + "includes": [ + { + "name": "doaj/includes/_article_meta_description.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/article.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_og_title", + "blocks": [], + "includes": [ + { + "name": "doaj/includes/_article_meta_title.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/article.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_twitter_description", + "blocks": [], + "includes": [ + { + "name": "doaj/includes/_article_meta_description.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/article.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_twitter_title", + "blocks": [], + "includes": [ + { + "name": "doaj/includes/_article_meta_title.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/article.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [ + { + "name": "doaj/includes/_article_meta_title.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/article.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "doaj/articles_search.html", + "blocks": [ + { + "name": "body_attrs", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + }, + { + "name": "content", + "blocks": [], + "includes": [ + { + "name": "includes/search-help-modal.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_og_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_og_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_twitter_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_twitter_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/articles_search.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "doaj/contact.html", + "blocks": [ + { + "name": "content", + "blocks": [], + "includes": [ + { + "name": "_formhelpers.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "doaj/contact.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "doaj/contact.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "doaj/journals_search.html", + "blocks": [ + { + "name": "body_attrs", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + }, + { + "name": "content", + "blocks": [], + "includes": [ + { + "name": "includes/search-help-modal.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_og_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_og_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_twitter_description", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_twitter_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "doaj/journals_search.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "layouts/single_col_page.html", + "blocks": [ + { + "name": "content", + "blocks": [ + { + "name": "single_col_content", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "400.html", + "content": true, + "paths": [ + [ + "layouts/single_col_page.html", + "400.html" + ] + ] + }, + { + "file": "401.html", + "content": true, + "paths": [ + [ + "layouts/single_col_page.html", + "401.html" + ] + ] + }, + { + "file": "404.html", + "content": true, + "paths": [ + [ + "layouts/single_col_page.html", + "404.html" + ] + ] + }, + { + "file": "500.html", + "content": true, + "paths": [ + [ + "layouts/single_col_page.html", + "500.html" + ] + ] + }, + { + "file": "doaj/readonly.html", + "content": true, + "paths": [ + [ + "layouts/single_col_page.html", + "doaj/readonly.html" + ] + ] + }, + { + "file": "publisher/application_deleted.html", + "content": true, + "paths": [ + [ + "layouts/single_col_page.html", + "publisher/application_deleted.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + }, + { + "name": "title", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "400.html", + "content": true, + "paths": [ + [ + "layouts/single_col_page.html", + "400.html" + ] + ] + }, + { + "file": "401.html", + "content": true, + "paths": [ + [ + "layouts/single_col_page.html", + "401.html" + ] + ] + }, + { + "file": "404.html", + "content": true, + "paths": [ + [ + "layouts/single_col_page.html", + "404.html" + ] + ] + }, + { + "file": "500.html", + "content": true, + "paths": [ + [ + "layouts/single_col_page.html", + "500.html" + ] + ] + }, + { + "file": "doaj/readonly.html", + "content": true, + "paths": [ + [ + "layouts/single_col_page.html", + "doaj/readonly.html" + ] + ] + }, + { + "file": "publisher/application_deleted.html", + "content": true, + "paths": [ + [ + "layouts/single_col_page.html", + "publisher/application_deleted.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "layouts/single_col_page.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [ + { + "name": "400.html", + "blocks": [ + { + "name": "body_class", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "layouts/single_col_page.html", + "400.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/single_col_page.html", + "400.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "single_col_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/single_col_page.html", + "content": false, + "paths": [ + [ + "layouts/single_col_page.html", + "400.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/single_col_page.html", + "content": false, + "paths": [ + [ + "layouts/single_col_page.html", + "400.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "401.html", + "blocks": [ + { + "name": "body_class", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "layouts/single_col_page.html", + "401.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/single_col_page.html", + "401.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "single_col_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/single_col_page.html", + "content": false, + "paths": [ + [ + "layouts/single_col_page.html", + "401.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/single_col_page.html", + "content": false, + "paths": [ + [ + "layouts/single_col_page.html", + "401.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "404.html", + "blocks": [ + { + "name": "body_class", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "layouts/single_col_page.html", + "404.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/single_col_page.html", + "404.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "single_col_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/single_col_page.html", + "content": false, + "paths": [ + [ + "layouts/single_col_page.html", + "404.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/single_col_page.html", + "content": false, + "paths": [ + [ + "layouts/single_col_page.html", + "404.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "500.html", + "blocks": [ + { + "name": "body_class", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "layouts/single_col_page.html", + "500.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/single_col_page.html", + "500.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "single_col_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/single_col_page.html", + "content": false, + "paths": [ + [ + "layouts/single_col_page.html", + "500.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/single_col_page.html", + "content": false, + "paths": [ + [ + "layouts/single_col_page.html", + "500.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "doaj/readonly.html", + "blocks": [ + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/single_col_page.html", + "doaj/readonly.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "single_col_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/single_col_page.html", + "content": false, + "paths": [ + [ + "layouts/single_col_page.html", + "doaj/readonly.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/single_col_page.html", + "content": false, + "paths": [ + [ + "layouts/single_col_page.html", + "doaj/readonly.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "publisher/application_deleted.html", + "blocks": [ + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/single_col_page.html", + "publisher/application_deleted.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "single_col_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/single_col_page.html", + "content": false, + "paths": [ + [ + "layouts/single_col_page.html", + "publisher/application_deleted.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/single_col_page.html", + "content": false, + "paths": [ + [ + "layouts/single_col_page.html", + "publisher/application_deleted.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + } + ] + }, + { + "name": "layouts/toc_base.html", + "blocks": [ + { + "name": "body_class", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "content", + "blocks": [ + { + "name": "toc_content", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "doaj/toc.html", + "content": true, + "paths": [ + [ + "layouts/toc_base.html", + "doaj/toc.html" + ] + ] + }, + { + "file": "doaj/toc_articles.html", + "content": true, + "paths": [ + [ + "layouts/toc_base.html", + "doaj/toc_articles.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [ + { + "name": "includes/_hotjar.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "includes/svg/seal.svg", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_description", + "blocks": [], + "includes": [ + { + "name": "doaj/includes/_journal_meta_description.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_og_description", + "blocks": [], + "includes": [ + { + "name": "doaj/includes/_journal_meta_description.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_og_title", + "blocks": [], + "includes": [ + { + "name": "doaj/includes/_journal_meta_title.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_twitter_description", + "blocks": [], + "includes": [ + { + "name": "doaj/includes/_journal_meta_description.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "meta_twitter_title", + "blocks": [], + "includes": [ + { + "name": "doaj/includes/_journal_meta_title.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [ + { + "name": "doaj/includes/_journal_meta_title.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "layouts/toc_base.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [ + { + "name": "doaj/toc.html", + "blocks": [ + { + "name": "toc_content", + "blocks": [], + "includes": [ + { + "name": "includes/svg/by.svg", + "unresolved": true + }, + { + "name": "includes/svg/cc.svg", + "unresolved": true + }, + { + "name": "includes/svg/copyright.svg", + "unresolved": true + }, + { + "name": "includes/svg/nc.svg", + "unresolved": true + }, + { + "name": "includes/svg/nd.svg", + "unresolved": true + }, + { + "name": "includes/svg/sa.svg", + "unresolved": true + }, + { + "name": "includes/svg/zero.svg", + "unresolved": true + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/toc_base.html", + "content": false, + "paths": [ + [ + "layouts/toc_base.html", + "doaj/toc.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "doaj/toc_articles.html", + "blocks": [ + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "layouts/toc_base.html", + "doaj/toc_articles.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "toc_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/toc_base.html", + "content": false, + "paths": [ + [ + "layouts/toc_base.html", + "doaj/toc_articles.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + } + ] + }, + { + "name": "openurl/404.html", + "blocks": [ + { + "name": "content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "openurl/404.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "openurl/help.html", + "blocks": [ + { + "name": "content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "openurl/help.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "publisher/publisher_base.html", + "blocks": [ + { + "name": "content", + "blocks": [ + { + "name": "publisher_content", + "blocks": [], + "includes": [], + "content": false, + "overridden_by": [ + { + "file": "application_form/publisher_update_request.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "application_form/publisher_update_request.html" + ] + ] + }, + { + "file": "application_form/readonly_application.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "application_form/readonly_application.html" + ] + ] + }, + { + "file": "publisher/application_already_submitted.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/application_already_submitted.html" + ] + ] + }, + { + "file": "publisher/help.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/help.html" + ] + ] + }, + { + "file": "publisher/index.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/index.html" + ] + ] + }, + { + "file": "publisher/journal_csv.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/journal_csv.html" + ] + ] + }, + { + "file": "publisher/journals.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/journals.html" + ] + ] + }, + { + "file": "publisher/locked.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/locked.html" + ] + ] + }, + { + "file": "publisher/metadata.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/metadata.html" + ] + ] + }, + { + "file": "publisher/preservation.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/preservation.html" + ] + ] + }, + { + "file": "publisher/readonly.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/readonly.html" + ] + ] + }, + { + "file": "publisher/updates_in_progress.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/updates_in_progress.html" + ] + ] + }, + { + "file": "publisher/uploadmetadata.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/uploadmetadata.html" + ] + ] + } + ], + "overrides": [], + "scoped": false + } + ], + "includes": [ + { + "name": "includes/_hotjar.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "publisher/nav.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "extra_stylesheets", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "application_form/publisher_update_request.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "application_form/publisher_update_request.html" + ] + ] + } + ], + "overrides": [ + { + "file": "layouts/base.html", + "content": false, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [ + { + "file": "application_form/publisher_update_request.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "application_form/publisher_update_request.html" + ] + ] + }, + { + "file": "application_form/readonly_application.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "application_form/readonly_application.html" + ] + ] + }, + { + "file": "publisher/help.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/help.html" + ] + ] + }, + { + "file": "publisher/index.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/index.html" + ] + ] + }, + { + "file": "publisher/journal_csv.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/journal_csv.html" + ] + ] + }, + { + "file": "publisher/journals.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/journals.html" + ] + ] + }, + { + "file": "publisher/locked.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/locked.html" + ] + ] + }, + { + "file": "publisher/metadata.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/metadata.html" + ] + ] + }, + { + "file": "publisher/preservation.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/preservation.html" + ] + ] + }, + { + "file": "publisher/readonly.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/readonly.html" + ] + ] + }, + { + "file": "publisher/updates_in_progress.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/updates_in_progress.html" + ] + ] + }, + { + "file": "publisher/uploadmetadata.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/uploadmetadata.html" + ] + ] + } + ], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [ + { + "name": "application_form/publisher_update_request.html", + "blocks": [ + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "application_form/js/_form_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "application_form/publisher_update_request.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "extra_stylesheets", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": false, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "application_form/publisher_update_request.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "application_form/publisher_update_request.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "application_form/publisher_update_request.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "application_form/publisher_update_request.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "publisher_content", + "blocks": [], + "includes": [ + { + "name": "application_form/07-review/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_backend_validation.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_buttons.html", + "blocks": [ + { + "name": "buttons", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_fieldsets.html", + "blocks": [], + "includes": [ + { + "name": "application_form/01-oa-compliance/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/02-about/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/03-copyright-licensing/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/04-editorial/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/05-business-model/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/06-best-practice/index.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "application_form/aside_menu.html", + "blocks": [ + { + "name": "aside_menu", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/pagination_menu.html", + "blocks": [ + { + "name": "pagination_menu", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "publisher/publisher_base.html", + "content": false, + "paths": [ + [ + "publisher/publisher_base.html", + "application_form/publisher_update_request.html" + ] + ] + } + ], + "scoped": true + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/readonly_application.html", + "blocks": [ + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "application_form/js/_form_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "application_form/readonly_application.html" + ] + ] + } + ], + "scoped": true + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "application_form/readonly_application.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "application_form/readonly_application.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "publisher_content", + "blocks": [], + "includes": [ + { + "name": "application_form/07-review/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/_fieldsets.html", + "blocks": [], + "includes": [ + { + "name": "application_form/01-oa-compliance/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/02-about/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/03-copyright-licensing/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/04-editorial/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/05-business-model/index.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "application_form/06-best-practice/index.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "extensions": [] + }, + { + "name": "application_form/aside_menu.html", + "blocks": [ + { + "name": "aside_menu", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [], + "scoped": false + } + ], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "publisher/publisher_base.html", + "content": false, + "paths": [ + [ + "publisher/publisher_base.html", + "application_form/readonly_application.html" + ] + ] + } + ], + "scoped": true + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "publisher/application_already_submitted.html", + "blocks": [ + { + "name": "publisher_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "publisher/publisher_base.html", + "content": false, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/application_already_submitted.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "publisher/help.html", + "blocks": [ + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/help.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/help.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "publisher_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "publisher/publisher_base.html", + "content": false, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/help.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "publisher/index.html", + "blocks": [ + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/index.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/index.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/index.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "publisher_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "publisher/publisher_base.html", + "content": false, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/index.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "publisher/journal_csv.html", + "blocks": [ + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/journal_csv.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/journal_csv.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/journal_csv.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "publisher_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "publisher/publisher_base.html", + "content": false, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/journal_csv.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "publisher/journals.html", + "blocks": [ + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/journals.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/journals.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/journals.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "publisher_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "publisher/publisher_base.html", + "content": false, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/journals.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "publisher/locked.html", + "blocks": [ + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/locked.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/locked.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "publisher_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "publisher/publisher_base.html", + "content": false, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/locked.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "publisher/metadata.html", + "blocks": [ + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/metadata.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/metadata.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/metadata.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "publisher_content", + "blocks": [], + "includes": [ + { + "name": "_formhelpers.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "formcontext/_error_header.html", + "blocks": [], + "includes": [], + "extensions": [] + }, + { + "name": "formcontext/article_metadata_form.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "publisher/publisher_base.html", + "content": false, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/metadata.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "publisher/preservation.html", + "blocks": [ + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/preservation.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/preservation.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/preservation.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "publisher_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "publisher/publisher_base.html", + "content": false, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/preservation.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "publisher/readonly.html", + "blocks": [ + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/readonly.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/readonly.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "publisher_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "publisher/publisher_base.html", + "content": false, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/readonly.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "publisher/updates_in_progress.html", + "blocks": [ + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [ + { + "name": "_edges_common_js.html", + "blocks": [], + "includes": [], + "extensions": [] + } + ], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/updates_in_progress.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/updates_in_progress.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/updates_in_progress.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "publisher_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "publisher/publisher_base.html", + "content": false, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/updates_in_progress.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + }, + { + "name": "publisher/uploadmetadata.html", + "blocks": [ + { + "name": "extra_js_bottom", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/public_base.html", + "content": false, + "paths": [ + [ + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/uploadmetadata.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "page_title", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "layouts/base.html", + "content": true, + "paths": [ + [ + "layouts/base.html", + "layouts/public_base.html", + "publisher/publisher_base.html", + "publisher/uploadmetadata.html" + ] + ] + }, + { + "file": "publisher/publisher_base.html", + "content": true, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/uploadmetadata.html" + ] + ] + } + ], + "scoped": false + }, + { + "name": "publisher_content", + "blocks": [], + "includes": [], + "content": true, + "overridden_by": [], + "overrides": [ + { + "file": "publisher/publisher_base.html", + "content": false, + "paths": [ + [ + "publisher/publisher_base.html", + "publisher/uploadmetadata.html" + ] + ] + } + ], + "scoped": false + } + ], + "includes": [], + "extensions": [] + } + ] + } + ] + } + ] + }, + { + "name": "testdrive/testdrive.html", + "blocks": [], + "includes": [], + "extensions": [] + } +] \ No newline at end of file diff --git a/history/history.json b/history/history.json index 7b3391ac39..ef284e37d7 100644 --- a/history/history.json +++ b/history/history.json @@ -1,17 +1,17 @@ { "new" : [ { - "tar" : "history.20210519.app1.tar.gz", - "source" : "web-2019" + "tar" : "history.20240905.app1.tar.gz", + "source" : "web-2021" }, { - "tar" : "history.20210519.bg1.tar.gz", - "source" : "background-2019" + "tar" : "history.20240905.bg1.tar.gz", + "source" : "background-2022" } ], "existing" : [ - "article_2021_background-2019.tar.gz", - "article_2021_web-2019.tar.gz", - "journal_2021_background-2019.tar.gz" + "article_2024_background-2022.tar.gz", + "article_2024_web-2021.tar.gz", + "journal_2024_background-2022.tar.gz" ] } \ No newline at end of file diff --git a/portality/api/common.py b/portality/api/common.py index 5a5bbf9932..9930182a5b 100644 --- a/portality/api/common.py +++ b/portality/api/common.py @@ -53,7 +53,7 @@ class Api(object): "contains bad data"} SWAG_API_KEY_REQ_PARAM = { - "description": "- + + + application_form/ + + _application_warning_msg.html + + +
+ + + +- + + + application_form/ + + _entry_group.html + + +
+ + + +- + + + application_form/ + + _entry_group_horizontal.html + + +
+ + + +- + + + application_form/ + + _field.html + + +
+ + + ++ + +
+ +- [+] Includes +
+ + + ++ + +
+ + + +- + + + application_form/ + + _form.html + + +
+ + + +- + + + application_form/ + + _group.html + + +
+ + + ++ + +
+ +- [+] Includes +
+ + + ++ + +
+ + + +- + + + application_form/ + + _list.html + + + + +
+ + + +- + + + application_form/ + + _value.html + + +
+ + + +- + + + application_form/ + + maned_journal_bulk_edit.html + + +
+ + + +- + + + application_form/ + + pagination_menu_admin.html + + +
+ + + ++ +
+ +- [+] Blocks +
+ + + + ++ + +
+ + + +- + + + application_form/ + + readonly/ + + journal.html + + +
+ + + +- + + + data/ + + advisory-board-council.html + + +
+ + + +- + + + data/ + + ambassadors.html + + +
+ + + +- + + + data/ + + publisher-supporters.html + + +
+ + + +- + + + data/ + + sponsors.html + + +
+ + + +- + + + data/ + + team.html + + +
+ + + +- + + + data/ + + volunteers.html + + +
+ + + +- + + + doaj/ + + site_note.html + + +
+ + + +- + + + email/ + + account_created.jinja2 + + +
+ + + +- + + + email/ + + account_password_reset.jinja2 + + +
+ + + +- + + + email/ + + admin_application_ready.jinja2 + + +
+ + + +- + + + email/ + + admin_background_job_finished.jinja2 + + +
+ + + +- + + + email/ + + assoc_editor_application_assigned.jinja2 + + +
+ + + +- + + + email/ + + assoc_editor_application_inprogress.jinja2 + + +
+ + + +- + + + email/ + + assoc_editor_journal_assigned.jinja2 + + +
+ + + +- + + + email/ + + discontinue_soon.jinja2 + + +
+ + + +- + + + email/ + + editor_application_assigned_group.jinja2 + + +
+ + + +- + + + email/ + + editor_application_completed.jinja2 + + +
+ + + +- + + + email/ + + editor_application_inprogress.jinja2 + + +
+ + + +- + + + email/ + + editor_journal_assigned_group.jinja2 + + +
+ + + +- + + + email/ + + notification_email.jinja2 + + +
+ + + +- + + + email/ + + publisher_application_accepted.jinja2 + + +
+ + + +- + + + email/ + + publisher_application_editor_assigned.jinja2 + + +
+ + + +- + + + email/ + + publisher_application_inprogress.jinja2 + + +
+ + + +- + + + email/ + + publisher_application_received.jinja2 + + +
+ + + +- + + + email/ + + publisher_application_rejected.jinja2 + + +
+ + + +- + + + email/ + + publisher_update_request_accepted.jinja2 + + +
+ + + +- + + + email/ + + publisher_update_request_editor_assigned.jinja2 + + +
+ + + +- + + + email/ + + publisher_update_request_inprogress.jinja2 + + +
+ + + +- + + + email/ + + publisher_update_request_received.jinja2 + + +
+ + + +- + + + email/ + + publisher_update_request_rejected.jinja2 + + +
+ + + +- + + + email/ + + publisher_update_request_revisions.jinja2 + + +
+ + + +- + + + email/ + + script_tag_detected.jinja2 + + +
+ + + +- + + + email/ + + workflow_reminder_fragments/ + + admin_age_frag + + +
+ + + +- + + + email/ + + workflow_reminder_fragments/ + + admin_ready_frag + + +
+ + + +- + + + email/ + + workflow_reminder_fragments/ + + assoc_ed_age_frag + + +
+ + + +- + + + email/ + + workflow_reminder_fragments/ + + editor_age_frag + + +
+ + + +- + + + email/ + + workflow_reminder_fragments/ + + editor_groupcount_frag + + +
+ + + +- + + + includes/ + + _aside_in_case_of_rejection.html + + +
+ + + +- + + + includes/ + + _sidenav_donation.html + + +
+ + + +- + + + includes/ + + _sidenav_toc.html + + +
+ + + +- + + + includes/ + + _todo_item.html + + +
+ + + +- + + + includes/ + + _wechat_modal.html + + +
+ + + +- + + + includes/ + + contribution_rates.html + + +
+ + + +- + + + layouts/ + + base.html + + + + +
+ + + +- + + + testdrive/ + + testdrive.html + + +
+ + +Go to 'MY ACCOUNT' and 'Settings' to find your API key. If there is no key, click 'Generate a new API key'. If you do not see that button, contact us.", + "description": """", "required": True, "schema": {"type" : "string"}, "name": "article_json", @@ -55,7 +56,7 @@ def __handle_journal_info(cls, am): try: am.add_journal_metadata() # overwrite journal part of metadata and in_doaj setting except models.NoJournalException as e: - raise Api400Error("No journal found to attach article to. Each article in DOAJ must belong to a journal and the (E)ISSNs provided in the bibjson.identifiers section of this article record do not match any DOAJ journal.") + raise Api400Error("No journal found to attach the article to. The ISSN(s) provided in the bibjson.identifiers section of this article record do not match any DOAJ journal.") # restore the user's data am.bibjson().number = number @@ -102,7 +103,7 @@ def create(cls, data, account): # Check we are allowed to create an article for this journal if result.get("fail", 0) == 1: - raise Api403Error("It is not possible to create an article for this journal. Have you included in the upload an ISSN which is not associated with any journal in your account? ISSNs must match exactly the ISSNs against the journal record.") + raise Api403Error("It is not possible to create an article for this journal. Does the upload include an ISSN that is not associated with any journal in your account? ISSNs must match exactly the ISSNs in the journal record.") return am @@ -137,7 +138,7 @@ def prep_article(cls, data: Dict, account: models.Account) -> models.Article: app_email.send_mail(to=to, fro=fro, subject=subject, - template_name="email/script_tag_detected.jinja2", + template_name=templates.EMAIL_SCRIPT_TAG_DETECTED, es_type=es_type, data=jdata) except app_email.EmailException: @@ -148,9 +149,9 @@ def prep_article(cls, data: Dict, account: models.Account) -> models.Article: am = ia.to_article_model() # the user may have supplied metadata in the model for id and created_date - # and we want to can that data. If this is a truly new article its fine for - # us to assign a new id here, and if it's a duplicate, it will get attached - # to its duplicate id anyway. + # and we want to can that data. If this is a truly new article, it's fine for + # us to assign a new ID here, and if it's a duplicate, it will get attached + # to its duplicate ID anyway. am.set_id() am.set_created() @@ -217,7 +218,7 @@ def update_swag(cls): @classmethod def update(cls, id, data, account): - # as long as authentication (in the layer above) has been successful, and the account exists, then + # as long as authentication (in the layer above) has been successful and the account exists, then # we are good to proceed if account is None: raise Api401Error() diff --git a/portality/api/current/crud/journals.py b/portality/api/current/crud/journals.py index 1650672ad4..1e125959bd 100644 --- a/portality/api/current/crud/journals.py +++ b/portality/api/current/crud/journals.py @@ -29,8 +29,7 @@ def retrieve_swag(cls): template['responses']['200'] = cls.R200 template['responses']['200']['schema'] = OutgoingJournal().struct_to_swag(schema_title='Journal schema', struct=JOURNAL_STRUCT) - template['responses']['200']['description'] = 'Detailed documentation on the response format is available here ' + template['responses']['200']['description'] = 'Detailed documentation on the response format is available. ' template['responses']['404'] = cls.R404 return cls._build_swag_response(template, api_key_override=False) diff --git a/portality/api/current/data_objects/application.py b/portality/api/current/data_objects/application.py index a88e9ff32c..5186d2fd0d 100644 --- a/portality/api/current/data_objects/application.py +++ b/portality/api/current/data_objects/application.py @@ -178,7 +178,7 @@ def custom_validate(self): # check they are not the same if pissn is not None and eissn is not None: if pissn == eissn: - raise seamless.SeamlessException("P-ISSN and E-ISSN should be different") + raise seamless.SeamlessException("Print ISSN and Online ISSN should be different") # A link to the journal homepage is required # diff --git a/portality/api/current/data_objects/article.py b/portality/api/current/data_objects/article.py index 081c6f4539..1c733e8051 100644 --- a/portality/api/current/data_objects/article.py +++ b/portality/api/current/data_objects/article.py @@ -210,7 +210,7 @@ def custom_validate(self): # check that there are identifiers at all identifiers = self.bibjson.identifier if identifiers is None or len(identifiers) == 0: - raise dataobj.DataStructureException("You must specify at least one of P-ISSN or E-ISSN in bibjson.identifier") + raise dataobj.DataStructureException("You must specify at least one Print ISSN or online ISSN in bibjson.identifier") # extract the p/e-issn identifier objects pissn = None @@ -223,7 +223,7 @@ def custom_validate(self): # check that at least one of them appears if pissn is None and eissn is None: - raise dataobj.DataStructureException("You must specify at least one of P-ISSN or E-ISSN in bibjson.identifier") + raise dataobj.DataStructureException("You must specify at least one Print ISSN or online ISSN in bibjson.identifier") # normalise the ids if pissn is not None: @@ -234,7 +234,7 @@ def custom_validate(self): # check they are not the same if pissn is not None and eissn is not None: if pissn.id == eissn.id: - raise dataobj.DataStructureException("P-ISSN and E-ISSN should be different") + raise dataobj.DataStructureException("Print ISSN and online ISSN should be different") # check removed: https://github.com/DOAJ/doajPM/issues/2950 diff --git a/portality/api/current/discovery_api_application_swag.json b/portality/api/current/discovery_api_application_swag.json index 1a58bec55c..4936d18646 100644 --- a/portality/api/current/discovery_api_application_swag.json +++ b/portality/api/current/discovery_api_application_swag.json @@ -264,28 +264,28 @@ }, "parameters": [ { - "description": "Go to 'DASHBOARD' and 'Settings' to find your API key. If there is no key, click 'Generate a new API key'. If you do not see that button, contact us.", "required": True, "type": "string", "name": "api_key", diff --git a/portality/api/current/bulk/applications.py b/portality/api/current/bulk/applications.py index 9665035bac..233e365366 100644 --- a/portality/api/current/bulk/applications.py +++ b/portality/api/current/bulk/applications.py @@ -12,14 +12,14 @@ class ApplicationsBulkApi(CrudApi): # ~~->API:Documentation~~ SWAG_TAG = 'Bulk API' SWAG_DELETE_PARAM = { - "description": """", "required": True, "schema": {"type" : "string"}, "name": "application_json", @@ -55,12 +56,12 @@ def create_swag(cls): @classmethod def create(cls, data, account, dry_run=False): - # as long as authentication (in the layer above) has been successful, and the account exists, then + # as long as authentication (in the layer above) has been successful and the account exists, then # we are good to proceed if account is None: raise Api401Error() - # first thing to do is a structural validation, by instantiating the data object + # first thing to do is a structural validation by instantiating the data object try: ia = IncomingApplication(data) # ~~-> APIIncomingApplication:Model~~ except seamless.SeamlessException as e: @@ -78,7 +79,7 @@ def create(cls, data, account, dry_run=False): app_email.send_mail(to=to, fro=fro, subject=subject, - template_name="email/script_tag_detected.jinja2", + template_name=templates.EMAIL_SCRIPT_TAG_DETECTED, es_type=es_type, data=jdata) except app_email.EmailException: @@ -185,7 +186,7 @@ def retrieve_swag(cls): @classmethod def retrieve(cls, id, account): - # as long as authentication (in the layer above) has been successful, and the account exists, then + # as long as authentication (in the layer above) has been successful and the account exists, then # we are good to proceed if account is None: raise Api401Error() @@ -195,12 +196,12 @@ def retrieve(cls, id, account): if ap is None: raise Api404Error() - # is the current account the owner of the application - # if not we raise a 404 because that id does not exist for that user account. + # is the current account the owner of the application? + # if not we raise a 404 because that ID does not exist for that user account. if not account.is_super and ap.owner != account.id: raise Api404Error() - # if we get to here we're going to give the user back the application + # if we get to here, we're going to give the user back the application oa = OutgoingApplication.from_model(ap) # ~~->APIOutgoingApplication:Model~~ return oa @@ -219,12 +220,12 @@ def update_swag(cls): @classmethod def update(cls, id, data, account): - # as long as authentication (in the layer above) has been successful, and the account exists, then + # as long as authentication (in the layer above) has been successful and the account exists, then # we are good to proceed if account is None: raise Api401Error() - # next thing to do is a structural validation of the replacement data, by instantiating the object + # next thing to do is a structural validation of the replacement data by instantiating the object try: ia = IncomingApplication(data) # ~~->APIIncomingApplication:Model~~ except seamless.SeamlessException as e: @@ -304,7 +305,7 @@ def update(cls, id, data, account): authService.can_edit_application(account, ap) except AuthoriseException as e: if e.reason == e.WRONG_STATUS: - raise Api403Error("The application is no longer in a state in which it can be edited via the API") + raise Api403Error("The application can no longer be edited via the API") else: raise Api404Error() @@ -337,7 +338,7 @@ def delete_swag(cls): @classmethod def delete(cls, id, account, dry_run=False): - # as long as authentication (in the layer above) has been successful, and the account exists, then + # as long as authentication (in the layer above) has been successful and the account exists, then # we are good to proceed if account is None: raise Api401Error() diff --git a/portality/api/current/crud/articles.py b/portality/api/current/crud/articles.py index 8ecbc63dd7..c416f5c1f0 100644 --- a/portality/api/current/crud/articles.py +++ b/portality/api/current/crud/articles.py @@ -15,6 +15,7 @@ IngestException from portality.dao import ElasticSearchWriteException, DAOSaveExceptionMaxRetriesReached from copy import deepcopy +from portality.ui import templates class ArticlesCrudApi(CrudApi): @@ -35,8 +36,8 @@ class ArticlesCrudApi(CrudApi): "description": """List of DOAJ application IDs to be deleted. You must own all of the ids, and they must all not have entered the DOAJ workflow yet, or none of them will be processed.e.g. [4cf8b72139a749c88d043129f00e1b07, 8e896b60-35f1-4cd3-b3f9-07f7f29d8a98].", + "description": "List of DOAJ application IDs to be deleted. You must own all the IDs, and none of them should have entered the DOAJ workflow yet. Otherwise, processing will stop. e.g. [4cf8b72139a749c88d043129f00e1b07, 8e896b60-35f1-4cd3-b3f9-07f7f29d8a98].", "required": True, "schema": {"type" : "string"}, "name": "application_ids", "in": "body" } SWAG_APPLICATION_BODY_PARAM = { - "description": "List of Application JSON objects that you would like to create. Each element of the list should comply with the schema displayed in the GET (Retrieve) an application route.", + "description": "List of Application JSON objects that you would like to create. Each element of the list should comply with the schema displayed in the 'GET (Retrieve) an application route' below.", "required": True, "schema": {"type" : "string"}, "name": "application_json", diff --git a/portality/api/current/bulk/articles.py b/portality/api/current/bulk/articles.py index 425293a13d..758ad8a999 100644 --- a/portality/api/current/bulk/articles.py +++ b/portality/api/current/bulk/articles.py @@ -23,7 +23,7 @@ def create_swag(cls): template = deepcopy(cls.SWAG_TEMPLATE) template['parameters'].append( { - "description": "A list/array of article JSON objects that you would like to create or update. The contents should be a list, and each object in the list should comply with the schema displayed in the GET (Retrieve) an article route. Partial updates are not allowed, you have to supply the full JSON.", + "description": "A list/array of article JSON objects that you would like to create or update. The contents should be a list, and each object in the list should comply with the schema displayed in the 'GET (Retrieve) an article route' below. Partial updates are not allowed; you have to supply the full JSON.", "required": True, "schema": {"type": "string"}, "name": "article_json", @@ -70,7 +70,7 @@ def create_async_swag(cls): template = deepcopy(cls.SWAG_TEMPLATE) template['parameters'].append( { - "description": "", + "description": "A list/array of article JSON objects that you would like to create or update. The contents should be a list, and each object in the list should comply with the schema displayed in the GET (Retrieve) an article route. Partial updates are not allowed, you have to supply the full JSON.
This request is asynchronous, the response will contain an upload_id, you can use this id to query the task status.
", "required": True, "schema": {"type": "string"}, "name": "article_json", @@ -85,12 +85,12 @@ def create_async_swag(cls): "msg": {"type": "string", }, "upload_id": {"type": "string", "description": "The upload id of the task, " - "User can use this id to check the bulk upload status."}, + "User can use this ID to check the bulk upload status."}, "status": {"type": "string", "description": "Link to the status URL for the task"} }, "type": "object" }, - "description": "Resources are being created asynchronously, response contains the task IDs " + "description": "Resources are being created asynchronously; response contains the task IDs " } template['responses']['400'] = cls.R400 return cls._build_swag_response(template) @@ -128,7 +128,7 @@ def get_async_status_swag(cls): "status": { "type": "string", "description": "The status of the task", - "enum": ["pending", "validated", "falied", "processed", "processed_partial"] + "enum": ["pending", "validated", "failed", "processed", "processed_partial"] }, "results": { 'type': 'object', diff --git a/portality/api/current/crud/applications.py b/portality/api/current/crud/applications.py index 643094c857..f9bfcd6df0 100644 --- a/portality/api/current/crud/applications.py +++ b/portality/api/current/crud/applications.py @@ -13,6 +13,7 @@ from portality import lock from portality.crosswalks.application_form import ApplicationFormXWalk from portality.forms.application_forms import ApplicationFormFactory +from portality.ui import templates from copy import deepcopy @@ -35,8 +36,8 @@ class ApplicationsCrudApi(CrudApi): "description": """A list/array of article JSON objects that you would like to create or update. The contents should be a list, and each object in the list should comply with the schema displayed in the 'GET (Retrieve) an article route' below. Partial updates are not allowed; you have to supply the full JSON.
This request is asynchronous; the response will contain an upload_id. You can use this id to query the task status.
Application JSON that you would like to create or update. The contents should comply with the schema displayed in the GET (Retrieve) an application route. - Explicit documentation for the structure of this data is also provided here. - Partial updates are not allowed, you have to supply the full JSON.""", + Explicit documentation for the structure of this data is available. + Partial updates are not allowed; you have to supply the full JSON.Article JSON that you would like to create or update. The contents should comply with the schema displayed in the GET (Retrieve) an article route. - Explicit documentation for the structure of this data is also provided here. - Partial updates are not allowed, you have to supply the full JSON.""", + Explicit documentation for the structure of this data is available. + Partial updates are not allowed; you have to supply the full JSON.Go to 'MY ACCOUNT' and 'Settings' to find your API key. If there is no key, click 'Generate a new API key'. If you do not see that button, contact us.", + "description": "Go to 'DASHBOARD' and 'Settings' to find your API key. If there is no key, click 'Generate a new API key'. If you do not see that button, contact us.", "required": true, "type": "string", "name": "api_key", "in": "query" }, { - "description": "-{% include "application_form/modal.html" %} +{% include "_application-form/includes/_modal.html" %} diff --git a/portality/templates/application_form/_list.html b/portality/templates-v2/_application-form/includes/_list.html similarity index 95% rename from portality/templates/application_form/_list.html rename to portality/templates-v2/_application-form/includes/_list.html index 02567676cc..656c3d118d 100644 --- a/portality/templates/application_form/_list.html +++ b/portality/templates-v2/_application-form/includes/_list.html @@ -1,4 +1,4 @@ -{% from "application_form/_value.html" import value %} +{% from "_application-form/includes/_value.html" import value %}What you are searching for, e.g. computers", + "description": "
You can search inside any field you see in the results or the schema. More details
For example, to search for all journals tagged with the keyword \"heritage\"bibjson.keywords:heritageShort-hand names are available for some fieldsissn:1874-9496publisher:doveWhat you are searching for, e.g. computers.", "required": true, "type": "string", "name": "search_query", "in": "path" }, { - "description": "Which page of the results you wish to see.", + "description": "Which page of the results you wish to see", "required": false, "type": "integer", "name": "page", "in": "query" }, { - "description": "How many results per page you wish to see, the default is 10.", + "description": "How many results per page you wish to see; the default is 10", "required": false, "type": "integer", "name": "pageSize", diff --git a/portality/api/current/discovery_api_article_swag.json b/portality/api/current/discovery_api_article_swag.json index 1c75e89b58..a082ae10d4 100644 --- a/portality/api/current/discovery_api_article_swag.json +++ b/portality/api/current/discovery_api_article_swag.json @@ -187,14 +187,14 @@ "in": "path" }, { - "description": "Which page of the results you wish to see.", + "description": "Which page of the results you want to see.", "required": false, "type": "integer", "name": "page", "in": "query" }, { - "description": "How many results per page you wish to see, the default is 10.", + "description": "How many results per page you want to see. The default is 10.", "required": false, "type": "integer", "name": "pageSize", @@ -211,4 +211,4 @@ "tags": [ "Search" ] -} \ No newline at end of file +} diff --git a/portality/api/current/discovery_api_journal_swag.json b/portality/api/current/discovery_api_journal_swag.json index a01b421294..352ce21666 100644 --- a/portality/api/current/discovery_api_journal_swag.json +++ b/portality/api/current/discovery_api_journal_swag.json @@ -271,14 +271,14 @@ "in": "path" }, { - "description": "Which page of the results you wish to see.", + "description": "Which page of the results you want to see.", "required": false, "type": "integer", "name": "page", "in": "query" }, { - "description": "How many results per page you wish to see, the default is 10.", + "description": "How many results per page you want to see. The default is 10.", "required": false, "type": "integer", "name": "pageSize", @@ -295,4 +295,4 @@ "tags": [ "Search" ] -} \ No newline at end of file +} diff --git a/portality/app.py b/portality/app.py index 2b6e5115a2..0ad6e4f609 100644 --- a/portality/app.py +++ b/portality/app.py @@ -26,6 +26,7 @@ from portality import settings from portality.lib import edges, dates from portality.lib.dates import FMT_DATETIME_STD, FMT_YEAR +from portality.ui import templates from portality.view.account import blueprint as account from portality.view.admin import blueprint as admin @@ -422,22 +423,22 @@ def get_site_key(): @app.errorhandler(400) def page_not_found(e): - return render_template('400.html'), 400 + return render_template(templates.ERROR_400), 400 @app.errorhandler(401) def page_not_found(e): - return render_template('401.html'), 401 + return render_template(templates.ERROR_401), 401 @app.errorhandler(404) def page_not_found(e): - return render_template('404.html'), 404 + return render_template(templates.ERROR_404), 404 @app.errorhandler(500) def page_not_found(e): - return render_template('500.html'), 500 + return render_template(templates.ERROR_500), 500 @app.errorhandler(elasticsearch.exceptions.RequestError) diff --git a/portality/bll/services/application.py b/portality/bll/services/application.py index 3f46cc14c1..bf25e82eeb 100644 --- a/portality/bll/services/application.py +++ b/portality/bll/services/application.py @@ -731,14 +731,14 @@ def validate_update_csv(self, file_path, account: models.Account): was = [v for q, v in journal_questions if q == question][0] if isinstance(v[0], dict): for sk, sv in v[0].items(): - validation.value(validation.ERROR, row_ix, pos, ". ".join(sv), + validation.value(validation.ERROR, row_ix, pos, ". ".join([str(x) for x in sv]), was=was, now=now) elif isinstance(v[0], list): # If we have a list, we must go a level deeper - validation.value(validation.ERROR, row_ix, pos, ". ".join(v[0]), + validation.value(validation.ERROR, row_ix, pos, ". ".join([str(x) for x in v[0]]), was=was, now=now) else: - validation.value(validation.ERROR, row_ix, pos, ". ".join(v), + validation.value(validation.ERROR, row_ix, pos, ". ".join([str(x) for x in v]), was=was, now=now) return validation diff --git a/portality/bll/services/notifications.py b/portality/bll/services/notifications.py index 50574d8fca..3dcd2a6a1f 100644 --- a/portality/bll/services/notifications.py +++ b/portality/bll/services/notifications.py @@ -6,7 +6,7 @@ from portality.bll.exceptions import NoSuchObjectException, NoSuchPropertyException from datetime import datetime from portality.lib import dates - +from portality.ui import templates class NotificationsService(object): def notify(self, notification: models.Notification): @@ -29,8 +29,8 @@ def notify(self, notification: models.Notification): app_email.send_markdown_mail(to=to, fro=fro, subject=subject, - template_name="email/notification_email.jinja2", - markdown_template_name="email/notification_email.jinja2", # for the moment the markdown and plaintext templates are the same + template_name=templates.EMAIL_NOTIFICATION, + markdown_template_name=templates.EMAIL_NOTIFICATION, # for the moment the markdown and plaintext templates are the same user=acc, message=notification.long, action=notification.action, diff --git a/portality/constants.py b/portality/constants.py index 2fec308772..4372aa503c 100644 --- a/portality/constants.py +++ b/portality/constants.py @@ -60,10 +60,6 @@ TODO_ASSOCIATE_START_PENDING = "todo_associate_start_pending" TODO_ASSOCIATE_ALL_APPLICATIONS = "todo_associate_all_applications" -# Roles -ROLE_ASSOCIATE_EDITOR = 'associate_editor' -ROLE_API = "api" - EVENT_ACCOUNT_CREATED = "account:created" EVENT_ACCOUNT_PASSWORD_RESET = "account:password_reset" EVENT_APPLICATION_STATUS = "application:status" @@ -88,9 +84,9 @@ # Role ROLE_ADMIN = "admin" ROLE_PUBLISHER = "publisher" +ROLE_EDITOR = "editor" ROLE_ASSOCIATE_EDITOR = 'associate_editor' ROLE_PUBLIC_DATA_DUMP = "public_data_dump" -ROLE_PUBLISHER = "publisher" ROLE_PUBLISHER_JOURNAL_CSV = "journal_csv" ROLE_PUBLISHER_PRESERVATION = "preservation" ROLE_API = "api" diff --git a/portality/core.py b/portality/core.py index 8280edc620..d1146d1224 100644 --- a/portality/core.py +++ b/portality/core.py @@ -13,6 +13,7 @@ from portality.error_handler import setup_error_logging from portality.lib import es_data_mapping, dates, paths from portality.ui.debug_toolbar import DoajDebugToolbar +from portality.ui import templates import esprit import elasticsearch @@ -283,6 +284,7 @@ def setup_jinja(app): app.jinja_env.globals['type'] = type #~~->Constants:Config~~ app.jinja_env.globals['constants'] = constants + app.jinja_env.globals['templates'] = templates #~~-> Dates:Library~~ app.jinja_env.globals['dates'] = dates #~~->Datasets:Data~~ @@ -291,7 +293,8 @@ def setup_jinja(app): app.jinja_env.globals['services'] = DOAJ _load_data(app) #~~->CMS:DataStore~~ - app.jinja_env.loader = FileSystemLoader([app.config['BASE_FILE_PATH'] + '/templates', + app.jinja_env.loader = FileSystemLoader([app.config['BASE_FILE_PATH'] + '/templates-v2', + app.config['BASE_FILE_PATH'] + '/templates', os.path.dirname(app.config['BASE_FILE_PATH']) + '/cms/fragments']) # a jinja filter that prints to the Flask log diff --git a/portality/decorators.py b/portality/decorators.py index 9779a7d806..ccaffacf6c 100644 --- a/portality/decorators.py +++ b/portality/decorators.py @@ -8,7 +8,7 @@ from portality.lib import dates from portality.models import Account from portality.models.harvester import HarvesterProgressReport as Report - +from portality.ui import templates def swag(swag_summary, swag_spec): """ @@ -119,7 +119,8 @@ def decorated_view(*args, **kwargs): resp.mimetype = "application/json" return resp else: - return render_template("doaj/readonly.html") + # FIXME: ideally, this would show a different page for each different user class + return render_template(templates.PUBLIC_READ_ONLY_MODE) return fn(*args, **kwargs) diff --git a/portality/events/consumers/account_created_email.py b/portality/events/consumers/account_created_email.py index 6f1f2ca171..b9012f3f9a 100644 --- a/portality/events/consumers/account_created_email.py +++ b/portality/events/consumers/account_created_email.py @@ -6,6 +6,7 @@ from portality import models from portality.core import app from portality.bll.exceptions import NoSuchPropertyException +from portality.ui import templates class AccountCreatedEmail(EventConsumer): @@ -44,7 +45,7 @@ def _send_account_created_email(cls, account: models.Account): app_email.send_mail(to=to, fro=fro, subject=subject, - template_name="email/account_created.jinja2", + template_name=templates.EMAIL_ACCOUNT_CREATED, reset_url=reset_url, email=account.email, timeout_days=password_create_timeout_days, diff --git a/portality/events/consumers/account_passwordreset_email.py b/portality/events/consumers/account_passwordreset_email.py index 92c00824e8..3c118137b8 100644 --- a/portality/events/consumers/account_passwordreset_email.py +++ b/portality/events/consumers/account_passwordreset_email.py @@ -6,6 +6,7 @@ from portality import models from portality.core import app from portality.bll.exceptions import NoSuchPropertyException +from portality.ui import templates class AccountPasswordResetEmail(EventConsumer): @@ -35,7 +36,7 @@ def _send_password_reset_email(cls, account: models.Account): app_email.send_mail(to=to, fro=fro, subject=subject, - template_name="email/account_password_reset.jinja2", + template_name=templates.EMAIL_PASSWORD_RESET, email=account.email, reset_url=reset_url, forgot_pw_url=app.config.get('BASE_URL', "https://doaj.org") + url_for('account.forgot') diff --git a/portality/events/consumers/application_assed_inprogress_notify.py b/portality/events/consumers/application_assed_inprogress_notify.py index 68520dd6d2..d79c32c32b 100644 --- a/portality/events/consumers/application_assed_inprogress_notify.py +++ b/portality/events/consumers/application_assed_inprogress_notify.py @@ -32,7 +32,9 @@ def consume(cls, event): notification.who = application.editor notification.created_by = cls.ID notification.classification = constants.NOTIFICATION_CLASSIFICATION_STATUS_CHANGE - notification.long = svc.long_notification(cls.ID).format(application_title=application.bibjson().title) + notification.long = svc.long_notification(cls.ID).format( + application_title=application.bibjson().title) + notification.short = svc.short_notification(cls.ID).format( issns=application.bibjson().issns_as_text() ) diff --git a/portality/events/consumers/application_maned_ready_notify.py b/portality/events/consumers/application_maned_ready_notify.py index ac4b70d9c2..00723a83eb 100644 --- a/portality/events/consumers/application_maned_ready_notify.py +++ b/portality/events/consumers/application_maned_ready_notify.py @@ -44,7 +44,8 @@ def consume(cls, event): notification.classification = constants.NOTIFICATION_CLASSIFICATION_STATUS_CHANGE notification.long = svc.long_notification(cls.ID).format( application_title=application.bibjson().title, - editor=editor + editor=editor, + group_name=application.editor_group ) notification.short = svc.short_notification(cls.ID).format( issns=application.bibjson().issns_as_text() diff --git a/portality/events/consumers/application_publisher_inprogress_notify.py b/portality/events/consumers/application_publisher_inprogress_notify.py index 04bc7b26b9..09203f21b4 100644 --- a/portality/events/consumers/application_publisher_inprogress_notify.py +++ b/portality/events/consumers/application_publisher_inprogress_notify.py @@ -45,7 +45,7 @@ def consume(cls, event): notification.long = svc.long_notification(cls.ID).format( title=title, date_applied=date_applied, - volunteers=volunteers + volunteers_url=volunteers ) notification.short = svc.short_notification(cls.ID).format( issns=application.bibjson().issns_as_text() diff --git a/portality/events/consumers/bg_job_finished_notify.py b/portality/events/consumers/bg_job_finished_notify.py index 32535eaf07..a6b72a58fa 100644 --- a/portality/events/consumers/bg_job_finished_notify.py +++ b/portality/events/consumers/bg_job_finished_notify.py @@ -44,7 +44,10 @@ def consume(cls, event): notification.who = acc.id notification.created_by = cls.ID notification.classification = constants.NOTIFICATION_CLASSIFICATION_FINISHED - notification.long = svc.long_notification(cls.ID).format(job_id=job.id, action=job.action, status=job.status) + notification.long = svc.long_notification(cls.ID).format( + job_id=job.id, + action=job.action, + status=job.status) notification.short = svc.short_notification(cls.ID) notification.action = url diff --git a/portality/events/consumers/journal_assed_assigned_notify.py b/portality/events/consumers/journal_assed_assigned_notify.py index 5788334e44..3fa2030d8a 100644 --- a/portality/events/consumers/journal_assed_assigned_notify.py +++ b/portality/events/consumers/journal_assed_assigned_notify.py @@ -43,6 +43,8 @@ def consume(cls, event): notification.short = svc.short_notification(cls.ID).format( issns=journal.bibjson().issns_as_text() ) - notification.action = url_for("editor.journal_page", journal_id=journal.id) + + # No action possible due to page removed (see portality.view.editor.journal_page(journal_id)) + # notification.action = url_for("editor.journal_page", journal_id=journal.id) svc.notify(notification) diff --git a/portality/events/consumers/journal_editor_group_assigned_notify.py b/portality/events/consumers/journal_editor_group_assigned_notify.py index 6f1637d019..0119bcaeb3 100644 --- a/portality/events/consumers/journal_editor_group_assigned_notify.py +++ b/portality/events/consumers/journal_editor_group_assigned_notify.py @@ -48,6 +48,8 @@ def consume(cls, event): notification.short = svc.short_notification(cls.ID).format( issns=journal.bibjson().issns_as_text() ) - notification.action = url_for("editor.journal_page", journal_id=journal.id) + + # No action possible due to page removed (see portality.view.editor.journal_page(journal_id)) + # notification.action = url_for("editor.journal_page", journal_id=journal.id) svc.notify(notification) diff --git a/portality/forms/application_forms.py b/portality/forms/application_forms.py index ff86584b7b..8d4adcd85d 100644 --- a/portality/forms/application_forms.py +++ b/portality/forms/application_forms.py @@ -46,6 +46,7 @@ from portality.models import EditorGroup from portality.regex import ISSN, ISSN_COMPILED from portality.ui.messages import Messages +from portality.ui import templates # Stop words used in the keywords field STOP_WORDS = [ @@ -1143,8 +1144,8 @@ class FieldDefinitions: "apc_currency", "apc_max" ], - "template": "application_form/_list.html", - "entry_template": "application_form/_entry_group_horizontal.html", + "template": templates.AF_LIST, + "entry_template": templates.AF_ENTRY_GROUP_HORIZONTAL, "widgets": [ "multiple_field" ] @@ -1972,8 +1973,8 @@ class FieldDefinitions: "note_id", "note_author_id", ], - "template": "application_form/_list.html", - "entry_template": "application_form/_entry_group.html", + "template": templates.AF_LIST, + "entry_template": templates.AF_ENTRY_GOUP, "widgets": [ {"infinite_repeat": {"enable_on_repeat": ["textarea"]}}, "note_modal" @@ -2367,9 +2368,9 @@ class ApplicationContextDefinitions: FieldSetDefinitions.UNIQUE_IDENTIFIERS["name"] ], "templates": { - "form": "application_form/public_application.html", - "default_field": "application_form/_field.html", - "default_group": "application_form/_group.html" + "form": templates.PUBLIC_APPLICATION_FORM, + "default_field": templates.AF_FIELD, + "default_group": templates.AF_GROUP }, "crosswalks": { "obj2form": ApplicationFormXWalk.obj2form, @@ -2384,14 +2385,14 @@ class ApplicationContextDefinitions: UPDATE = deepcopy(PUBLIC) UPDATE["name"] = "update_request" UPDATE["processor"] = application_processors.PublisherUpdateRequest - UPDATE["templates"]["form"] = "application_form/publisher_update_request.html" + UPDATE["templates"]["form"] = templates.PUBLISHER_UPDATE_REQUEST_FORM # ~~->$ ReadOnlyApplication:FormContext~~ # ~~^-> NewApplication:FormContext~~ READ_ONLY = deepcopy(PUBLIC) READ_ONLY["name"] = "application_read_only" READ_ONLY["processor"] = application_processors.NewApplication # FIXME: enter the real processor - READ_ONLY["templates"]["form"] = "application_form/readonly_application.html" + READ_ONLY["templates"]["form"] = templates.PUBLISHER_READ_ONLY_APPLICATION # ~~->$ AssociateEditorApplication:FormContext~~ # ~~^-> NewApplication:FormContext~~ @@ -2404,7 +2405,7 @@ class ApplicationContextDefinitions: FieldSetDefinitions.NOTES["name"] ] ASSOCIATE["processor"] = application_processors.AssociateApplication - ASSOCIATE["templates"]["form"] = "application_form/assed_application.html" + ASSOCIATE["templates"]["form"] = templates.ASSED_APPLICATION_FORM # ~~->$ EditorApplication:FormContext~~ # ~~^-> NewApplication:FormContext~~ @@ -2418,7 +2419,7 @@ class ApplicationContextDefinitions: FieldSetDefinitions.NOTES["name"] ] EDITOR["processor"] = application_processors.EditorApplication - EDITOR["templates"]["form"] = "application_form/editor_application.html" + EDITOR["templates"]["form"] = templates.EDITOR_APPLICATION_FORM # ~~->$ ManEdApplication:FormContext~~ # ~~^-> NewApplication:FormContext~~ @@ -2436,15 +2437,15 @@ class ApplicationContextDefinitions: FieldSetDefinitions.NOTES["name"] ] MANED["processor"] = application_processors.AdminApplication - MANED["templates"]["form"] = "application_form/maned_application.html" + MANED["templates"]["form"] = templates.MANED_APPLICATION_FORM class JournalContextDefinitions: # ~~->$ ReadOnlyJournal:FormContext~~ # ~~^-> JournalForm:Crosswalk~~ # ~~^-> ReadOnlyJournal:FormProcessor~~ - READ_ONLY = { - "name": "readonly", + ADMIN_READ_ONLY = { + "name": "admin_readonly", "fieldsets": [ FieldSetDefinitions.BASIC_COMPLIANCE["name"], FieldSetDefinitions.ABOUT_THE_JOURNAL["name"], @@ -2464,9 +2465,9 @@ class JournalContextDefinitions: FieldSetDefinitions.UNIQUE_IDENTIFIERS["name"] ], "templates": { - "form": "application_form/readonly_journal.html", - "default_field": "application_form/_field.html", - "default_group": "application_form/_group.html" + "form": templates.MANED_READ_ONLY_JOURNAL, + "default_field": templates.AF_FIELD, + "default_group": templates.AF_GROUP }, "crosswalks": { "obj2form": JournalFormXWalk.obj2form, @@ -2475,17 +2476,22 @@ class JournalContextDefinitions: "processor": application_processors.ReadOnlyJournal } + # identical context for editors, mostly to support the different view contexts + EDITOR_READ_ONLY = deepcopy(ADMIN_READ_ONLY) + EDITOR_READ_ONLY["name"] = "editor_readonly" + EDITOR_READ_ONLY["templates"]["form"] = templates.EDITOR_READ_ONLY_JOURNAL + # ~~->$ AssEditorJournal:FormContext~~ # ~~^-> ReadOnlyJournal:FormContext~~ # ~~^-> AssEdJournal:FormProcessor~~ - ASSOCIATE = deepcopy(READ_ONLY) + ASSOCIATE = deepcopy(ADMIN_READ_ONLY) ASSOCIATE["fieldsets"] += [ FieldSetDefinitions.SUBJECT["name"], FieldSetDefinitions.NOTES["name"] ] ASSOCIATE["name"] = "associate_editor" ASSOCIATE["processor"] = application_processors.AssEdJournalReview - ASSOCIATE["templates"]["form"] = "application_form/assed_journal.html" + ASSOCIATE["templates"]["form"] = templates.ASSED_JOURNAL_FORM # ~~->$ EditorJournal:FormContext~~ # ~~^-> AssEdJournal:FormContext~~ @@ -2496,7 +2502,7 @@ class JournalContextDefinitions: FieldSetDefinitions.REVIEWERS["name"] ] EDITOR["processor"] = application_processors.EditorJournalReview - EDITOR["templates"]["form"] = "application_form/editor_journal.html" + EDITOR["templates"]["form"] = templates.EDITOR_JOURNAL_FORM # ~~->$ ManEdJournal:FormContext~~ # ~~^-> EditorJournal:FormContext~~ @@ -2510,7 +2516,7 @@ class JournalContextDefinitions: FieldSetDefinitions.CONTINUATIONS["name"] ] MANED["processor"] = application_processors.ManEdJournalReview - MANED["templates"]["form"] = "application_form/maned_journal.html" + MANED["templates"]["form"] = templates.MANED_JOURNAL_FORM # ~~->$ BulkEditJournal:FormContext~~ # ~~^-> JournalForm:Crosswalk~~ @@ -2521,9 +2527,9 @@ class JournalContextDefinitions: FieldSetDefinitions.BULK_EDIT["name"] ], "templates": { - "form": "application_form/maned_journal_bulk_edit.html", - "default_field": "application_form/_field.html", - "default_group": "application_form/_group.html" + "form": templates.MANED_JOURNAL_BULK_EDIT, + "default_field": templates.AF_FIELD, + "default_group": templates.AF_GROUP }, "crosswalks": { "obj2form": JournalFormXWalk.obj2form, @@ -2552,7 +2558,8 @@ class JournalContextDefinitions: JOURNAL_FORMS = { "contexts": { - JournalContextDefinitions.READ_ONLY["name"]: JournalContextDefinitions.READ_ONLY, + JournalContextDefinitions.ADMIN_READ_ONLY["name"]: JournalContextDefinitions.ADMIN_READ_ONLY, + JournalContextDefinitions.EDITOR_READ_ONLY["name"]: JournalContextDefinitions.EDITOR_READ_ONLY, JournalContextDefinitions.BULK_EDIT["name"]: JournalContextDefinitions.BULK_EDIT, JournalContextDefinitions.ASSOCIATE["name"]: JournalContextDefinitions.ASSOCIATE, JournalContextDefinitions.EDITOR["name"]: JournalContextDefinitions.EDITOR, diff --git a/portality/forms/article_forms.py b/portality/forms/article_forms.py index e15f44f32e..28a84a6c62 100644 --- a/portality/forms/article_forms.py +++ b/portality/forms/article_forms.py @@ -1,5 +1,5 @@ from copy import deepcopy -from datetime import datetime +from typing import Literal, Optional from flask import render_template, url_for, request from flask_login import current_user @@ -15,6 +15,7 @@ from portality.forms.validate import OptionalIf, ThisOrThat, NoScriptTag, DifferentTo from portality.lib import dates from portality.ui.messages import Messages +from portality.ui import templates ######################################### @@ -70,7 +71,7 @@ def form(self, val): self._form = val @property - def source(self): + def source(self) -> Optional: return self._source @property @@ -525,15 +526,28 @@ def _render_checkbox(self, field, **kwargs): INITIAL_AUTHOR_FIELDS = 3 -def choices_for_article_issns(user, article_id=None): +def choices_for_article_issns(user, article_id=None, + issn_type: Literal['eissn', 'pissn', 'all'] = 'all'): + + owner = None if "admin" in user.role and article_id is not None: # ~~->Article:Model~~ a = models.Article.pull(article_id) - # ~~->Journal:Model~~ - issns = models.Journal.issns_by_owner(a.get_owner(), in_doaj=True) + if a: + owner = a.get_owner() + + if not owner: + owner = user.id + + if issn_type == 'eissn': + issn_field = 'bibjson.eissn.exact' + elif issn_type == 'pissn': + issn_field = 'bibjson.pissn.exact' else: - issns = models.Journal.issns_by_owner(user.id, in_doaj=True) + issn_field = 'index.issn.exact' + # ~~->Journal:Model~~ + issns = models.Journal.issns_by_owner(owner, in_doaj=True, issn_field=issn_field) ic = [("", "Select an ISSN")] + [(i, i) for i in issns] return ic @@ -556,8 +570,14 @@ class ArticleForm(Form): fulltext = StringField("Full-text URL", [OptionalIf("doi", "You must provide the Full-Text URL or the DOI"), validators.URL()]) publication_year = DOAJSelectField("Year", [validators.Optional()], choices=YEAR_CHOICES, default=str(dates.now().year)) publication_month = DOAJSelectField("Month", [validators.Optional()], choices=MONTH_CHOICES, default="" ) - pissn = DOAJSelectField("Print", [ThisOrThat("eissn", "Either this field or Online ISSN is required"), DifferentTo("eissn", message=IDENTICAL_ISSNS_ERROR)], choices=[]) # choices set at construction - eissn = DOAJSelectField("Online", [ThisOrThat("pissn", "Either this field or Print ISSN is required"), DifferentTo("pissn", message=IDENTICAL_ISSNS_ERROR)], choices=[]) # choices set at construction + pissn = DOAJSelectField("Print", [ + ThisOrThat("eissn", "Either this field or Online ISSN is required"), + DifferentTo("eissn", message=IDENTICAL_ISSNS_ERROR) + ], choices=[]) # choices set at construction + eissn = DOAJSelectField("Online", [ + ThisOrThat("pissn", "Either this field or Print ISSN is required"), + DifferentTo("pissn", message=IDENTICAL_ISSNS_ERROR) + ], choices=[]) # choices set at construction volume = StringField("Volume", [validators.Optional(), NoScriptTag()]) number = StringField("Issue", [validators.Optional(), NoScriptTag()]) @@ -566,13 +586,17 @@ class ArticleForm(Form): def __init__(self, *args, **kwargs): super(ArticleForm, self).__init__(*args, **kwargs) + self.set_choices() + + def set_choices(self, user=None, article_id=None): + user = user or current_user try: - self.pissn.choices = choices_for_article_issns(current_user) - self.eissn.choices = choices_for_article_issns(current_user) - except: + self.pissn.choices = choices_for_article_issns(user, issn_type='pissn', article_id=article_id) + self.eissn.choices = choices_for_article_issns(user, issn_type='eissn', article_id=article_id) + except Exception as e: # not logged in, and current_user is broken # probably you are loading the class from the command line - pass + app.logger.exception(str(e)) @@ -605,15 +629,8 @@ def __init__(self, source, form_data, user): super(MetadataForm, self).__init__(source=source, form_data=form_data) def _set_choices(self): - try: - ic = choices_for_article_issns(user=self.user, article_id=self.source.id) - self.form.pissn.choices = ic - self.form.eissn.choices = ic - except Exception as e: - print (str(e)) - # not logged in, and current_user is broken - # probably you are loading the class from the command line - pass + if self.source is not None: + self.form.set_choices(user=self.user, article_id=self.source.id) def modify_authors_if_required(self, request_data): @@ -699,7 +716,7 @@ def __init__(self, source, form_data, user): super(PublisherMetadataForm, self).__init__(source=source, form_data=form_data, user=user) def set_template(self): - self.template = "publisher/metadata.html" + self.template = templates.PUBLISHER_ARTICLE_METADATA def render_template(self, **kwargs): self._check_for_author_errors(**kwargs) @@ -716,7 +733,7 @@ def __init__(self, source, form_data, user): super(AdminMetadataArticleForm, self).__init__(source=source, form_data=form_data, user=user) def set_template(self): - self.template = "admin/article_metadata.html" + self.template = templates.ADMIN_ARTICLE_FORM def render_template(self, **kwargs): self._check_for_author_errors(**kwargs) diff --git a/portality/models/v2/journal.py b/portality/models/v2/journal.py index 972617f536..a8664ddec7 100644 --- a/portality/models/v2/journal.py +++ b/portality/models/v2/journal.py @@ -57,6 +57,7 @@ } + class ContinuationException(Exception): pass @@ -91,8 +92,8 @@ def find_by_issn_exact(cls, issns, in_doaj=None, max=2): return records @classmethod - def issns_by_owner(cls, owner, in_doaj=None): - q = IssnQuery(owner, in_doaj=in_doaj) + def issns_by_owner(cls, owner, in_doaj=None, issn_field=None): + q = IssnQuery(owner, in_doaj=in_doaj, issn_field=issn_field) res = cls.query(q=q.query()) issns = [term.get("key") for term in res.get("aggregations", {}).get("issns", {}).get("buckets", [])] return issns @@ -284,7 +285,6 @@ def add_note_by_dict(self, note): return self.add_note(note=note.get("note"), date=note.get("date"), id=note.get("id"), author_id=note.get("author_id")) - def remove_note(self, note): self.__seamless__.delete_from_list("admin.notes", matchsub=note) @@ -305,7 +305,7 @@ def ordered_notes(self): clusters = {} for note in notes: if "date" not in note: - note["date"] = DEFAULT_TIMESTAMP_VAL # this really means something is broken with note date setting, which needs to be fixed + note["date"] = DEFAULT_TIMESTAMP_VAL # this really means something is broken with note date setting, which needs to be fixed if note["date"] not in clusters: clusters[note["date"]] = [note] else: @@ -509,7 +509,7 @@ def __init__(self, **kwargs): if "_source" in kwargs: kwargs = kwargs["_source"] # FIXME: I have taken this out for the moment, as I'm not sure it's what we should be doing - #if kwargs: + # if kwargs: # self.add_autogenerated_fields(**kwargs) super(Journal, self).__init__(raw=kwargs) @@ -539,7 +539,7 @@ def add_autogenerated_fields(cls, **kwargs): bib["pid_scheme"] = {"has_pid_scheme": False} if "preservation" in bib and bib["preservation"] != '': bib["preservation"]["has_preservation"] = (len(bib["preservation"]) != 0 or - bib["national_library"] is not None) + bib["national_library"] is not None) else: bib["preservation"] = {"has_preservation": True} @@ -768,7 +768,8 @@ def remove_related_applications(self): self.__seamless__.delete("admin.related_applications") def remove_related_application(self, application_id): - self.set_related_applications([r for r in self.related_applications if r.get("application_id") != application_id]) + self.set_related_applications([r for r in self.related_applications + if r.get("application_id") != application_id]) def related_application_record(self, application_id): for record in self.related_applications: @@ -869,7 +870,6 @@ def propagate_in_doaj_status_to_articles(self): article.set_in_doaj(self.is_in_doaj()) article.save() - def prep(self, is_update=True): self._ensure_in_doaj() self.calculate_tick() @@ -1026,7 +1026,7 @@ def query(self): ] } }, - "size" : self.max + "size": self.max } if self.in_doaj is not None: q["query"]["bool"]["must"].append({"term": {"admin.in_doaj": self.in_doaj}}) @@ -1034,14 +1034,15 @@ def query(self): class IssnQuery(object): - def __init__(self, owner, in_doaj=None): + def __init__(self, owner, in_doaj=None, issn_field=None): self._owner = owner self._in_doaj = in_doaj + self._issn_field = issn_field or 'index.issn.exact' def query(self): - musts = [{"term": { "admin.owner.exact": self._owner}}] + musts = [{"term": {"admin.owner.exact": self._owner}}] if self._in_doaj is not None: - musts.append({"term": { "admin.in_doaj": self._in_doaj}}) + musts.append({"term": {"admin.in_doaj": self._in_doaj}}) return { "track_total_hits": True, "query": { @@ -1053,9 +1054,9 @@ def query(self): "aggs": { "issns": { "terms": { - "field": "index.issn.exact", + "field": self._issn_field, "size": 10000, - "order": { "_key": "asc" } + "order": {"_key": "asc"} } } } @@ -1178,9 +1179,9 @@ def __init__(self, max): def query(self): return { "track_total_hits": True, - "query" : {"match_all" : {}}, - "size" : self.max, - "sort" : [ - {"created_date" : {"order" : "desc"}} + "query": {"match_all": {}}, + "size": self.max, + "sort": [ + {"created_date": {"order": "desc"}} ] } diff --git a/portality/notifications/application_emails.py b/portality/notifications/application_emails.py index c0c65d92dd..2df06ae8b1 100644 --- a/portality/notifications/application_emails.py +++ b/portality/notifications/application_emails.py @@ -7,6 +7,7 @@ from portality.dao import Facetview2 from portality.ui.messages import Messages from portality.lib import dates +from portality.ui import templates def send_editor_completed_email(application): @@ -34,7 +35,7 @@ def send_editor_completed_email(application): app_email.send_mail(to=to, fro=fro, subject=subject, - template_name="email/editor_application_completed.jinja2", + template_name=templates.EMAIL_EDITOR_APPLICATION_COMPLETED, editor=editor_id, associate_editor=assoc_id, application_title=journal_name, @@ -56,7 +57,7 @@ def send_account_created_email(account): app_email.send_mail(to=to, fro=fro, subject=subject, - template_name="email/account_created.jinja2", + template_name=templates.EMAIL_ACCOUNT_CREATED, reset_url=reset_url, email=account.email, timeout_days=password_create_timeout_days, @@ -74,7 +75,7 @@ def send_account_password_reset_email(account): app_email.send_mail(to=to, fro=fro, subject=subject, - template_name="email/account_password_reset.jinja2", + template_name=templates.EMAIL_PASSWORD_RESET, email=account.email, reset_url=reset_url, forgot_pw_url=url_for('account.forgot', _external=True) diff --git a/portality/scripts/journals_last_manual_update_between.py b/portality/scripts/journals_last_manual_update_between.py index 16977a5816..c68d785651 100644 --- a/portality/scripts/journals_last_manual_update_between.py +++ b/portality/scripts/journals_last_manual_update_between.py @@ -1,22 +1,24 @@ """ Create a CSV of journals last updated before a given date. Headings are: Journal title Journal URL -Journal ISSN (print version) Journal EISSN (online version) +Journal ISSN (print version) +DOAJ Form URL Created date Owner Owner's email address Country Publisher +Editor Group """ import csv from portality.lib.dates import DEFAULT_TIMESTAMP_VAL from portality.models import Journal, Account -from portality.core import es_connection +from portality.core import es_connection, app from portality.lib import dates - +from portality.util import url_for LAST_MANUAL_UPDATE_BETWEEN = { "query": { @@ -72,11 +74,13 @@ "Journal URL", "E-ISSN", "P-ISSN", + "DOAJ Form URL", "Created Date", "Owner", "Owner's email address", "Country", - "Publisher"]) + "Publisher", + "Editor Group"]) for journal in Journal.iterate(q=LAST_MANUAL_UPDATE_BETWEEN, keepalive='5m', wrap=True): bibjson = journal.bibjson() @@ -89,9 +93,11 @@ bibjson.get_single_url(urltype="homepage"), bibjson.get_one_identifier(bibjson.E_ISSN), bibjson.get_one_identifier(bibjson.P_ISSN), + app.config.get("BASE_URL") + url_for("admin.journal_page", journal_id=journal.id), journal.created_date, owner, account.email if account else "Not Found", index["country"], - bibjson.publisher + bibjson.publisher, + journal.editor_group ]) diff --git a/portality/scripts/priorities.csv b/portality/scripts/priorities.csv index 75c95cf037..bae43cd738 100644 --- a/portality/scripts/priorities.csv +++ b/portality/scripts/priorities.csv @@ -1,7 +1,7 @@ id,labels,columns HP/DaR,"Priority: High, Type: Data at Risk", HP/bug,"Priority: High, bug", -Deadline,Priority: Deadline, +Deadline,Priority: Deadline,"Review, In progress, To Do" HP/PfL,"Prioroty: High, Workflow: Pending for Live",Review HP/sup,"Priority: High, Origin: Support", Test1,Workflow: On Test,Review @@ -10,6 +10,7 @@ HP/PfT,"Priority: High, Workflow: Pending for Test",Review HP/rev,Priority: High,Review PfT,Workflow: Pending for Test,Review PfL,Workflow: Pending for Live,Review +Inv,Workflow: Initial Investigation,"Review, In progress, To Do" Rev,,Review Near,Scale: Nearly Finished, Sch,Priority: Scheduled, diff --git a/portality/scripts/redhead.py b/portality/scripts/redhead.py new file mode 100644 index 0000000000..a2045c5834 --- /dev/null +++ b/portality/scripts/redhead.py @@ -0,0 +1,571 @@ +import re, json, os +from flask import render_template +from portality.app import app +from copy import deepcopy + + +BLOCK_RE = "{%[-]{0,1} block (.*?) (.*?)%}" +ENDBLOCK_RE = "{%[-]{0,1} endblock (.*?)%}" +EXTENDS_RE = "{% extends [\"'](.*?)[\"'] %}" +INCLUDES_RE = "{% include [\"'](.*?)[\"'].*?%}" +IMPORTS_RE = "{% from [\"'](.*?)[\"'].*?%}" +DYNAMIC_INCLUDES_RE = "{% include ([^\"'].*?) %}" + + +def analyse_template(template, template_dir, file_prefix): + with open(template, "r") as f: + lines = f.readlines() + + structure = destructure(lines) + records = analyse(structure, template, template_dir, file_prefix) + return records + + +def destructure(lines): + structure = {"content": []} + + while len(lines) > 0: + block_until = -1 + post_end_block_line_content = "" + for i, line in enumerate(lines): + bm = re.search(BLOCK_RE, line) + if bm: + current_block = bm.group(1) + is_scoped = "scoped" in bm.group(2) + idx0 = line.index(bm.group(0)) + idx1 = idx0 + len(bm.group(0)) + before = line[:idx0] + after = line[idx1:] + + structure["content"].append(before) + + if "blocks" not in structure: + structure["blocks"] = {} + structure["blocks"][current_block] = {"content": [], "scoped": is_scoped} + + l, pos1, pos2 = _find_block_end([after] + lines[i+1:]) + + if l is None: + structure["blocks"][current_block] = {"content": [after]} + structure["blocks"][current_block]["content"] += lines[i+1:] + elif l == 0: + structure["blocks"][current_block] = {"content": [after[:pos1]]} + post_end_block_line_content = after[pos2:] + block_until = l + i + else: + block_until = l + i + structure["blocks"][current_block]["content"] += lines[i+1:block_until] + pre_end_block_line_content = lines[block_until][:pos1] + post_end_block_line_content = lines[block_until][pos2:] + structure["blocks"][current_block]["content"].append(pre_end_block_line_content) + + break + + else: + structure["content"].append(line) + + remaining = [] + if post_end_block_line_content != "" and post_end_block_line_content is not None: + remaining.append(post_end_block_line_content) + if block_until != -1: + remaining += lines[block_until+1:] + lines = remaining + + for k, v in structure.get("blocks", {}).items(): + structure["blocks"][k]["structure"] = destructure(v["content"]) + + return structure + + +def _find_block_end(lines): + blockcount = 0 + + for i, line in enumerate(lines): + block_commands = [] + for bsm in re.finditer(BLOCK_RE, line): + block_commands.append((bsm.start(), 1, bsm)) + for bem in re.finditer(ENDBLOCK_RE, line): + block_commands.append((bem.start(), -1, bem)) + block_commands.sort() + for bc in block_commands: + blockcount += bc[1] + if blockcount < 0: + return i, bc[0], bc[0] + len(bc[2].group(0)) + + return None, None, None + + +def analyse(structure, template_name, template_dir, file_prefix): + records = [] + tr = { + "type": "template", + "file": file_prefix + template_name[len(template_dir):] + } + + if structure.get("blocks"): + tr["blocks"] = list(structure.get("blocks", {}).keys()) + + for i, line in enumerate(structure["content"]): + ems = re.finditer(EXTENDS_RE, line) + for em in ems: + if "extends" not in tr: + tr["extends"] = [] + tr["extends"].append(em.group(1)) + + im = re.search(INCLUDES_RE, line) + if im: + if "includes" not in tr: + tr["includes"] = [] + tr["includes"].append(im.group(1)) + + dim = re.search(DYNAMIC_INCLUDES_RE, line) + if dim: + if "dynamic_includes" not in tr: + tr["dynamic_includes"] = [] + tr["dynamic_includes"].append(dim.group(1)) + + records.append(tr) + + for k, v in structure.get("blocks", {}).items(): + records += _analyse_block(v["structure"], k, template_name, template_dir, file_prefix, scoped=v.get("scoped", False)) + + return records + + +def _analyse_block(block, block_name, template_name, template_dir, file_prefix, parent_block=None, scoped=False): + records = [] + br = { + "type": "block", + "name": block_name, + "file": file_prefix + template_name[len(template_dir):], + "parent_block": parent_block, + "content": False, + "scoped": scoped + } + + if block.get("blocks"): + br["blocks"] = list(block.get("blocks", {}).keys()) + + if len([l for l in block.get("content", []) if l.strip() != ""]) > 0: + br["content"] = True + + for i, line in enumerate(block["content"]): + im = re.search(INCLUDES_RE, line) + if im: + if "includes" not in br: + br["includes"] = [] + br["includes"].append(im.group(1)) + + dim = re.search(DYNAMIC_INCLUDES_RE, line) + if dim: + if "dynamic_includes" not in br: + br["dynamic_includes"] = [] + br["dynamic_includes"].append(dim.group(1)) + + ip = re.search(IMPORTS_RE, line) + if ip: + if "includes" not in br: + br["includes"] = [] + br["includes"].append(ip.group(1)) + + records.append(br) + + for k, v in block.get("blocks", {}).items(): + substructure = v["structure"] + if substructure: + records += _analyse_block(substructure, k, template_name, template_dir, file_prefix, parent_block=block_name) + + return records + + +def treeify(records): + base = _get_base_templates(records) + base.sort(key=lambda x: x["file"]) + + tree = [] + for b in base: + tree.append(_expand_file_node(b, records)) + + return tree + + +def _expand_file_node(record, records): + b = record + + node = { + "name": b["file"], + "blocks": [], + "includes": [], + "extensions": [] + } + + blockset = [] + for block in b.get("blocks", []): + for r in records: + if r["type"] == "block" and r["file"] == b["file"] and r["name"] == block: + blockset.append(r) + + blockset.sort(key=lambda x: x["name"]) + for bs in blockset: + br = _expand_block_node(bs, records) + node["blocks"].append(br) + + extensions = [] + for r in records: + if r["type"] == "template" and b["file"] in r.get("extends", []): + extensions.append(r) + + extensions.sort(key=lambda x: x["file"]) + for ex in extensions: + exr = _expand_file_node(ex, records) + node["extensions"].append(exr) + + includes = [] + if "includes" in b: + for r in records: + if r["type"] == "template" and r["file"] in b["includes"]: + includes.append(r) + + includes.sort(key=lambda x: x["file"]) + for inc in includes: + incn = _expand_file_node(inc, records) + node["includes"].append(incn) + + if "dynamic_includes" in b: + node["dynamic_includes"] = b["dynamic_includes"] + node["dynamic_includes"].sort() + + return node + + +def _expand_block_node(record, records): + b = record + + node = { + "name": b["name"], + "blocks": [], + "includes": [], + "content": b["content"], + "overridden_by": [], + "overrides": [], + "scoped": b.get("scoped", False) + } + + blockset = [] + for block in b.get("blocks", []): + for r in records: + if r["type"] == "block" and r["file"] == b["file"] and r["name"] == block: + blockset.append(r) + + blockset.sort(key=lambda x: x["name"]) + for bs in blockset: + br = _expand_block_node(bs, records) + node["blocks"].append(br) + + includes = [] + if "includes" in b: + resolved = [] + for r in records: + if r["type"] == "template" and r["file"] in b["includes"]: + includes.append(r) + resolved.append(r["file"]) + for inc in b["includes"]: + if inc not in resolved: + includes.append({ + "name": inc, + "file": inc, + "unresolved": True + }) + + includes.sort(key=lambda x: x["file"]) + for inc in includes: + if inc.get("unresolved"): + incn = {"name": inc["name"], "unresolved": True} + else: + incn = _expand_file_node(inc, records) + node["includes"].append(incn) + + if "dynamic_includes" in b: + node["dynamic_includes"] = b["dynamic_includes"] + node["dynamic_includes"].sort() + + overridden_by = [] + for r in records: + if r["type"] == "block" and r["name"] == b["name"] and r["file"] != b["file"]: + paths = _extension_paths(r["file"], b["file"], records) + if len(paths) > 0: + overridden_by.append((r, paths)) + + overridden_by.sort(key=lambda x: x[0]["file"]) + for ov, paths in overridden_by: + node["overridden_by"].append({ + "file": ov["file"], + "content": ov["content"], + "paths": paths + }) + + overrides = [] + for r in records: + if r["type"] == "block" and r["name"] == b["name"] and r["file"] != b["file"]: + paths = _extension_paths(b["file"], r["file"], records) + if len(paths) > 0: + overrides.append((r, paths)) + + overrides.sort(key=lambda x: x[0]["file"]) + for ov, paths in overrides: + node["overrides"].append({ + "file": ov["file"], + "content": ov["content"], + "paths": paths + }) + + return node + + +def _extension_paths(child, parent, records): + paths = [[child]] + + def get_record(file): + for r in records: + if r["type"] == "template" and r["file"] == file: + return r + return None + + def navigate(node, path): + paths = [] + current_record = get_record(node) + extends = current_record.get("extends", []) + if len(extends) == 0: + return [path] + for ex in extends: + local_path = deepcopy(path) + local_path.append(ex) + paths.append(local_path) + return paths + + while True: + all_new_paths = [] + for p in paths: + new_paths = navigate(p[-1], p) + all_new_paths += new_paths + + if all_new_paths != paths: + paths = all_new_paths + else: + paths = all_new_paths + break + + parent_paths = [] + for p in paths: + p.reverse() + if parent in p: + idx = p.index(parent) + parent_paths.append(p[idx:]) + return parent_paths + + +def serialise(tree): + ctx = app.test_request_context("/") + ctx.push() + return render_template("dev/redhead/tree.html", tree=tree) + +def serialise_blocks(tree): + ctx = app.test_request_context("/") + ctx.push() + return render_template("dev/redhead/blocks.html", tree=tree) + +def _get_base_templates(records): + base = [] + includes = set() + for r in records: + if r["type"] == "template" and r.get("extends") is None: + base.append(r) + if "includes" in r: + includes.update(r["includes"]) + + base_index = [r.get("file") for r in base] + + removes = [] + for inc in includes: + if inc in base_index: + idx = base_index.index(inc) + removes.append(idx) + + removes.sort(reverse=True) + for r in removes: + del base[r] + + return base + + +def _expand_block_tree_node(record, records): + b = record + + node = { + "name": b["name"], + "blocks": [], + # "includes": [], + # "content": b["content"], + # "overridden_by": [], + # "overrides": [], + # "scoped": b.get("scoped", False), + "files": [] + } + + all_block_definitions = [b] + for r in records: + if r["type"] == "block" and r["name"] == b["name"] and r["file"] != b["file"]: + all_block_definitions.append(r) + + node["files"] += [x["file"] for x in all_block_definitions] + + blocklist = [] + for entry in all_block_definitions: + for block in entry.get("blocks", []): + for r in records: + if r["type"] == "block" and r["file"] == entry["file"] and r["name"] == block: + isnew = True + for b in blocklist: + if b["name"] == r["name"] and b["file"] == r["file"]: + isnew = False + if isnew: + blocklist.append(r) + + blocklist.sort(key=lambda x: x["name"]) + for bs in blocklist: + br = _expand_block_tree_node(bs, records) + node["blocks"].append(br) + + # includes = [] + # if "includes" in b: + # for r in records: + # if r["type"] == "template" and r["file"] in b["includes"]: + # includes.append(r) + # + # includes.sort(key=lambda x: x["file"]) + # for inc in includes: + # incn = _expand_file_node(inc, records) + # node["includes"].append(incn) + # + # overridden_by = [] + # for r in records: + # if r["type"] == "block" and r["name"] == b["name"] and r["file"] != b["file"]: + # paths = _extension_paths(r["file"], b["file"], records) + # if len(paths) > 0: + # overridden_by.append((r, paths)) + # + # overridden_by.sort(key=lambda x: x[0]["file"]) + # for ov, paths in overridden_by: + # node["overridden_by"].append({ + # "file": ov["file"], + # "content": ov["content"], + # "paths": paths + # }) + # + # overrides = [] + # for r in records: + # if r["type"] == "block" and r["name"] == b["name"] and r["file"] != b["file"]: + # paths = _extension_paths(b["file"], r["file"], records) + # if len(paths) > 0: + # overrides.append((r, paths)) + # + # overrides.sort(key=lambda x: x[0]["file"]) + # for ov, paths in overrides: + # node["overrides"].append({ + # "file": ov["file"], + # "content": ov["content"], + # "paths": paths + # }) + + return node + +def block_treeify(records): + base = _get_base_templates(records) + + tree = [] + for b in base: + blockset = [] + for block in b.get("blocks", []): + for r in records: + if r["type"] == "block" and r["file"] == b["file"] and r["name"] == block: + blockset.append(r) + + blockset.sort(key=lambda x: x["name"]) + for bs in blockset: + tree.append(_expand_block_tree_node(bs, records)) + + return tree + + +def redhead(out_dir, template_dir, template_root=None, template_filters=None): + file_prefix = "" + + if not template_dir.endswith("/"): + template_dir += "/" + + if template_root is None: + template_root = template_dir + + if not template_root.endswith("/"): + template_root += "/" + + if not template_root == template_dir: + file_prefix = template_dir[len(template_root):] + + if not os.path.exists(out_dir): + os.makedirs(out_dir, exist_ok=True) + + records = [] + + for (root, dirs, files) in os.walk(template_dir, topdown=True): + for f in files: + passed_filter = False + if template_filters is not None: + for tf in template_filters: + if re.match(tf, f): + passed_filter = True + break + else: + passed_filter = True + if passed_filter: + template = os.path.join(root, f) + print("Analysing", template) + records += analyse_template(template, template_dir, file_prefix) + else: + print("Skipping", f) + + with open(os.path.join(out_dir, "redhead_records.json"), "w") as f: + f.write(json.dumps(records, indent=2)) + + tree = treeify(records) + + with open(os.path.join(out_dir, "redhead_tree.json"), "w") as f: + f.write(json.dumps(tree, indent=2)) + + html = serialise(tree) + with open(os.path.join(out_dir, "redhead_tree.html"), "w") as f: + f.write(html) + + block_tree = block_treeify(records) + + with open(os.path.join(out_dir, "redhead_blocks.json"), "w") as f: + f.write(json.dumps(block_tree, indent=2)) + + block_html = serialise_blocks(block_tree) + with open(os.path.join(out_dir, "redhead_blocks.html"), "w") as f: + f.write(block_html) + + +if __name__ == "__main__": + import argparse + import json + + parser = argparse.ArgumentParser() + parser.add_argument("config", help="The config file of run configurations") + args = parser.parse_args() + + with open(args.config, "r") as f: + config = json.load(f) + + for c in config: + redhead(c["out_dir"], c["template_dir"], template_root=c.get("template_root"), template_filters=c.get("template_filters")) diff --git a/portality/settings.py b/portality/settings.py index 6368014316..86c9722ba3 100644 --- a/portality/settings.py +++ b/portality/settings.py @@ -9,7 +9,7 @@ # Application Version information # ~~->API:Feature~~ -DOAJ_VERSION = "6.8.4" +DOAJ_VERSION = "7.0.0" API_VERSION = "4.0.0" ###################################### @@ -39,7 +39,7 @@ DEBUG_PYCHARM_SERVER = 'localhost' DEBUG_PYCHARM_PORT = 6000 -#~~->DebugToolbar:Framework~~ +# ~~->DebugToolbar:Framework~~ DEBUG_TB_TEMPLATE_EDITOR_ENABLED = True DEBUG_TB_INTERCEPT_REDIRECTS = False @@ -48,7 +48,7 @@ ####################################### # Elasticsearch configuration -#~~->Elasticsearch:Technology +# ~~->Elasticsearch:Technology # elasticsearch settings # TODO: changing from single host / esprit to multi host on ES & correct the default ELASTIC_SEARCH_HOST = os.getenv('ELASTIC_SEARCH_HOST', 'http://localhost:9200') # remember the http:// or https:// @@ -66,7 +66,7 @@ ELASTIC_SEARCH_DB_PREFIX = "doaj-" # note: include the separator ELASTIC_SEARCH_TEST_DB_PREFIX = "doajtest-" -INITIALISE_INDEX = True # whether or not to try creating the index and required index types on startup +INITIALISE_INDEX = True # whether or not to try creating the index and required index types on startup ELASTIC_SEARCH_VERSION = "7.10.2" ELASTIC_SEARCH_SNAPSHOT_REPOSITORY = None ELASTIC_SEARCH_SNAPSHOT_TTL = 366 @@ -233,7 +233,7 @@ ] # GitHub base url where static content can be edited by the DOAJ team (you can leave out the trailing slash) -#~~->GitHub:ExternalService~~ +# ~~->GitHub:ExternalService~~ CMS_EDIT_BASE_URL = "https://github.com/DOAJ/doaj/edit/static_pages/cms" # Where static files are served from - in case we need to serve a file @@ -267,7 +267,6 @@ SITE_NOTE_KEY = "doaj-site-note" SITE_NOTE_SLEEP = 259200 # every 3 days SITE_NOTE_COOKIE_VALUE = "You have seen our most recent site wide announcement" -SITE_NOTE_TEMPLATE = "doaj/site_note.html" #################################### # Authorisation settings @@ -285,7 +284,7 @@ # amount of time a reset token for a new account is valid for PASSWORD_CREATE_TIMEOUT = PASSWORD_RESET_TIMEOUT * 14 -#"api" top-level role is added to all acounts on creation; it can be revoked per account by removal of the role. +# "api" top-level role is added to all accounts on creation; it can be revoked per account by removal of the role. TOP_LEVEL_ROLES = [ "admin", "publisher", @@ -447,6 +446,7 @@ "article_bulk_create": {"month": "*", "day": "*", "day_of_week": "*", "hour": "*", "minute": "20"}, } + HUEY_TASKS = { "ingest_articles": {"retries": 10, "retry_delay": 15}, "preserve": {"retries": 0, "retry_delay": 15}, @@ -695,15 +695,6 @@ 'settings': DEFAULT_INDEX_SETTINGS } } -# MAPPINGS['article'] = {'article': DEFAULT_DYNAMIC_MAPPING} #~~->Article:Model~~ -# MAPPINGS['upload'] = {'upload': DEFAULT_DYNAMIC_MAPPING} #~~->Upload:Model~~ -# MAPPINGS['cache'] = {'cache': DEFAULT_DYNAMIC_MAPPING} #~~->Cache:Model~~ -# MAPPINGS['lcc'] = {'lcc': DEFAULT_DYNAMIC_MAPPING} #~~->LCC:Model~~ -# MAPPINGS['editor_group'] = {'editor_group': DEFAULT_DYNAMIC_MAPPING} #~~->EditorGroup:Model~~ -# MAPPINGS['news'] = {'news': DEFAULT_DYNAMIC_MAPPING} #~~->News:Model~~ -# MAPPINGS['lock'] = {'lock': DEFAULT_DYNAMIC_MAPPING} #~~->Lock:Model~~ -# MAPPINGS['provenance'] = {'provenance': DEFAULT_DYNAMIC_MAPPING} #~~->Provenance:Model~~ -# MAPPINGS['preserve'] = {'preserve': DEFAULT_DYNAMIC_MAPPING} #~~->Preservation:Model~~ MAPPINGS['upload'] = MAPPINGS["account"] #~~->Upload:Model~~ MAPPINGS['bulk_articles'] = MAPPINGS["account"] #~~->BulkArticles:Model~~ @@ -721,222 +712,223 @@ # ~~->Query:WebRoute~~ QUERY_ROUTE = { - "query" : { + "query": { # ~~->PublicJournalQuery:Endpoint~~ - "journal" : { - "auth" : False, - "role" : None, - "query_validators" : ["non_public_fields_validator", "public_query_validator"], - "query_filters" : ["only_in_doaj", "last_update_fallback", "search_all_meta"], - "result_filters" : ["public_result_filter"], - "dao" : "portality.models.Journal", # ~~->Journal:Model~~ - "required_parameters" : {"ref" : ["ssw", "public_journal", "subject_page"]} + "journal": { + "auth": False, + "role": None, + "query_validators": ["non_public_fields_validator", "public_query_validator"], + "query_filters": ["only_in_doaj", "last_update_fallback", "search_all_meta"], + "result_filters": ["public_result_filter"], + "dao": "portality.models.Journal", # ~~->Journal:Model~~ + "required_parameters": {"ref": ["ssw", "public_journal", "subject_page"]} }, # ~~->PublicArticleQuery:Endpoint~~ - "article" : { - "auth" : False, - "role" : None, - "query_validators" : ["non_public_fields_validator", "public_query_validator"], - "query_filters" : ["only_in_doaj"], - "result_filters" : ["public_result_filter"], - "dao" : "portality.models.Article", # ~~->Article:Model~~ - "required_parameters" : {"ref" : ["public_article", "toc", "subject_page"]} + "article": { + "auth": False, + "role": None, + "query_validators": ["non_public_fields_validator", "public_query_validator"], + "query_filters": ["only_in_doaj"], + "result_filters": ["public_result_filter"], + "dao": "portality.models.Article", # ~~->Article:Model~~ + "required_parameters": {"ref": ["public_article", "toc", "subject_page"]} }, # back-compat for fixed query widget # ~~->PublicJournalArticleQuery:Endpoint~~ - "journal,article" : { - "auth" : False, - "role" : None, - "query_validators" : ["non_public_fields_validator", "public_query_validator"], - "query_filters" : ["only_in_doaj", "strip_facets", "es_type_fix", "journal_article_filter"], - "result_filters" : ["public_result_filter", "add_fqw_facets", "fqw_back_compat"], - "dao" : "portality.models.JournalArticle", # ~~->JournalArticle:Model~~ - "required_parameters" : {"ref" : ["fqw"]} + "journal,article": { + "auth": False, + "role": None, + "query_validators": ["non_public_fields_validator", "public_query_validator"], + "query_filters": ["only_in_doaj", "strip_facets", "es_type_fix", "journal_article_filter"], + "result_filters": ["public_result_filter", "add_fqw_facets", "fqw_back_compat"], + "dao": "portality.models.JournalArticle", # ~~->JournalArticle:Model~~ + "required_parameters": {"ref": ["fqw"]} } }, - "publisher_query" : { + "publisher_query": { # ~~->PublisherJournalQuery:Endpoint~~ - "journal" : { - "auth" : True, - "role" : "publisher", - "query_validators" : ["non_public_fields_validator"], - "query_filters" : ["owner", "only_in_doaj", "search_all_meta"], - "result_filters" : ["publisher_result_filter"], - "dao" : "portality.models.Journal" # ~~->Journal:Model~~ + "journal": { + "auth": True, + "role": "publisher", + "query_validators": ["non_public_fields_validator"], + "query_filters": ["owner", "only_in_doaj", "search_all_meta"], + "result_filters": ["publisher_result_filter"], + "dao": "portality.models.Journal" # ~~->Journal:Model~~ }, # ~~->PublisherApplicationQuery:Endpoint~~ - "applications" : { - "auth" : True, - "role" : "publisher", - "query_validators" : ["non_public_fields_validator"], - "query_filters" : ["owner", "not_update_request", "search_all_meta"], - "result_filters" : ["publisher_result_filter"], - "dao" : "portality.models.AllPublisherApplications" # ~~->AllPublisherApplications:Model~~ + "applications": { + "auth": True, + "role": "publisher", + "query_validators": ["non_public_fields_validator"], + "query_filters": ["owner", "not_update_request", "search_all_meta"], + "result_filters": ["publisher_result_filter"], + "dao": "portality.models.AllPublisherApplications" # ~~->AllPublisherApplications:Model~~ }, # ~~->PublisherUpdateRequestsQuery:Endpoint~~ - "update_requests" : { - "auth" : True, - "role" : "publisher", - "query_validators" : ["non_public_fields_validator"], - "query_filters" : ["owner", "update_request", "search_all_meta"], - "result_filters" : ["publisher_result_filter"], - "dao" : "portality.models.Application" # ~~->Application:Model~~ + "update_requests": { + "auth": True, + "role": "publisher", + "query_validators": ["non_public_fields_validator"], + "query_filters": ["owner", "update_request", "search_all_meta"], + "result_filters": ["publisher_result_filter"], + "dao": "portality.models.Application" # ~~->Application:Model~~ } }, - "admin_query" : { + "admin_query": { # ~~->AdminJournalQuery:Endpoint~~ - "journal" : { - "auth" : True, - "role" : "admin", - "dao" : "portality.models.Journal" # ~~->Journal:Model~~ + "journal": { + "auth": True, + "role": "admin", + "dao": "portality.models.Journal" # ~~->Journal:Model~~ }, # ~~->AdminApplicationQuery:Endpoint~~ - "suggestion" : { - "auth" : True, - "role" : "admin", - "query_filters" : ["not_update_request"], - "dao" : "portality.models.Application" # ~~->Application:Model~~ + "suggestion": { + "auth": True, + "role": "admin", + "query_filters": ["not_update_request"], + "dao": "portality.models.Application" # ~~->Application:Model~~ }, # ~~->AdminUpdateRequestQuery:Endpoint~~ "update_requests": { "auth": True, "role": "admin", - "query_filters" : ["update_request"], + "query_filters": ["update_request"], "dao": "portality.models.Application" # ~~->Application:Model~~ }, # ~~->AdminEditorGroupQuery:Endpoint~~ - "editor,group" : { - "auth" : True, - "role" : "admin", - "dao" : "portality.models.EditorGroup" # ~~->EditorGroup:Model~~ + "editor,group": { + "auth": True, + "role": "admin", + "dao": "portality.models.EditorGroup" # ~~->EditorGroup:Model~~ }, # ~~->AdminAccountQuery:Endpoint~~ - "account" : { - "auth" : True, - "role" : "admin", - "dao" : "portality.models.Account" # ~~->Account:Model~~ + "account": { + "auth": True, + "role": "admin", + "dao": "portality.models.Account" # ~~->Account:Model~~ }, # ~~->AdminJournalArticleQuery:Endpoint~~ - "journal,article" : { - "auth" : True, - "role" : "admin", - "dao" : "portality.models.search.JournalArticle" # ~~->JournalArticle:Model~~ + "journal,article": { + "auth": True, + "role": "admin", + "dao": "portality.models.search.JournalArticle" # ~~->JournalArticle:Model~~ }, # ~~->AdminBackgroundJobQuery:Endpoint~~ - "background,job" : { - "auth" : True, - "role" : "admin", - "dao" : "portality.models.BackgroundJob" # ~~->BackgroundJob:Model~~ + "background,job": { + "auth": True, + "role": "admin", + "dao": "portality.models.BackgroundJob" # ~~->BackgroundJob:Model~~ }, # ~~->APINotificationQuery:Endpoint~~ - "notifications" : { - "auth" : False, - "role" : "admin", - "dao" : "portality.models.Notification", # ~~->Notification:Model~~ - "required_parameters" : None + "notifications": { + "auth": False, + "role": "admin", + "dao": "portality.models.Notification", # ~~->Notification:Model~~ + "required_parameters": None } }, - "associate_query" : { + "associate_query": { # ~~->AssEdJournalQuery:Endpoint~~ - "journal" : { - "auth" : True, - "role" : "associate_editor", - "query_validators" : ["non_public_fields_validator"], - "query_filters" : ["associate", "search_all_meta"], - "dao" : "portality.models.Journal" # ~~->Journal:Model~~ + "journal": { + "auth": True, + "role": "associate_editor", + "query_validators": ["non_public_fields_validator"], + "query_filters": ["associate", "search_all_meta"], + "dao": "portality.models.Journal" # ~~->Journal:Model~~ }, # ~~->AssEdApplicationQuery:Endpoint~~ - "suggestion" : { - "auth" : True, - "role" : "associate_editor", - "query_validators" : ["non_public_fields_validator"], - "query_filters" : ["associate", "search_all_meta"], - "dao" : "portality.models.Application" # ~~->Application:Model~~ + "suggestion": { + "auth": True, + "role": "associate_editor", + "query_validators": ["non_public_fields_validator"], + "query_filters": ["associate", "search_all_meta"], + "dao": "portality.models.Application" # ~~->Application:Model~~ } }, - "editor_query" : { + "editor_query": { # ~~->EditorJournalQuery:Endpoint~~ - "journal" : { - "auth" : True, - "role" : "editor", - "query_validators" : ["non_public_fields_validator"], - "query_filters" : ["editor", "search_all_meta"], - "dao" : "portality.models.Journal" # ~~->Journal:Model~~ + "journal": { + "auth": True, + "role": "editor", + "query_validators": ["non_public_fields_validator"], + "query_filters": ["editor", "search_all_meta"], + "dao": "portality.models.Journal" # ~~->Journal:Model~~ }, # ~~->EditorApplicationQuery:Endpoint~~ - "suggestion" : { - "auth" : True, - "role" : "editor", - "query_validators" : ["non_public_fields_validator"], - "query_filters" : ["editor", "search_all_meta"], - "dao" : "portality.models.Application" # ~~->Application:Model~~ + "suggestion": { + "auth": True, + "role": "editor", + "query_validators": ["non_public_fields_validator"], + "query_filters": ["editor", "search_all_meta"], + "dao": "portality.models.Application" # ~~->Application:Model~~ } }, - "api_query" : { + "api_query": { # ~~->APIArticleQuery:Endpoint~~ - "article" : { - "auth" : False, - "role" : None, - "query_filters" : ["only_in_doaj", "public_source"], - "dao" : "portality.models.Article", # ~~->Article:Model~~ - "required_parameters" : None, - "keepalive" : "10m" + "article": { + "auth": False, + "role": None, + "query_filters": ["only_in_doaj", "public_source"], + "dao": "portality.models.Article", # ~~->Article:Model~~ + "required_parameters": None, + "keepalive": "10m" }, # ~~->APIJournalQuery:Endpoint~~ - "journal" : { - "auth" : False, - "role" : None, + "journal": { + "auth": False, + "role": None, "query_validators": ["non_public_fields_validator"], - "query_filters" : ["only_in_doaj", "public_source", "search_all_meta"], - "dao" : "portality.models.Journal", # ~~->Journal:Model~~ - "required_parameters" : None + "query_filters": ["only_in_doaj", "public_source", "search_all_meta"], + "dao": "portality.models.Journal", # ~~->Journal:Model~~ + "required_parameters": None }, # ~~->APIApplicationQuery:Endpoint~~ - "application" : { - "auth" : True, - "role" : None, + "application": { + "auth": True, + "role": None, "query_validators": ["non_public_fields_validator"], - "query_filters" : ["owner", "private_source", "search_all_meta"], - "dao" : "portality.models.Suggestion", # ~~->Application:Model~~ - "required_parameters" : None + "query_filters": ["owner", "private_source", "search_all_meta"], + "dao": "portality.models.Suggestion", # ~~->Application:Model~~ + "required_parameters": None } }, "dashboard_query": { # ~~->APINotificationQuery:Endpoint~~ - "notifications" : { - "auth" : False, - "role" : "read_notifications", - "query_filters" : ["who_current_user"], # ~~-> WhoCurrentUser:Query - "dao" : "portality.models.Notification", # ~~->Notification:Model~~ - "required_parameters" : None + "notifications": { + "auth": False, + "role": "read_notifications", + "query_filters": ["who_current_user"], # ~~-> WhoCurrentUser:Query + "dao": "portality.models.Notification", # ~~->Notification:Model~~ + "required_parameters": None } } } QUERY_FILTERS = { # sanitisers - "public_query_validator" : "portality.lib.query_filters.public_query_validator", - "non_public_fields_validator" : "portality.lib.query_filters.non_public_fields_validator", + "public_query_validator": "portality.lib.query_filters.public_query_validator", + "non_public_fields_validator": "portality.lib.query_filters.non_public_fields_validator", # query filters - "only_in_doaj" : "portality.lib.query_filters.only_in_doaj", - "owner" : "portality.lib.query_filters.owner", - "update_request" : "portality.lib.query_filters.update_request", - "associate" : "portality.lib.query_filters.associate", - "editor" : "portality.lib.query_filters.editor", - "strip_facets" : "portality.lib.query_filters.strip_facets", - "es_type_fix" : "portality.lib.query_filters.es_type_fix", - "last_update_fallback" : "portality.lib.query_filters.last_update_fallback", - "not_update_request" : "portality.lib.query_filters.not_update_request", - "who_current_user" : "portality.lib.query_filters.who_current_user", # ~~-> WhoCurrentUser:Query ~~ - "search_all_meta" : "portality.lib.query_filters.search_all_meta", # ~~-> SearchAllMeta:Query ~~ - "journal_article_filter" : "portality.lib.query_filters.journal_article_filter", # ~~-> JournalArticleFilter:Query ~~ + "only_in_doaj": "portality.lib.query_filters.only_in_doaj", + "owner": "portality.lib.query_filters.owner", + "update_request": "portality.lib.query_filters.update_request", + "associate": "portality.lib.query_filters.associate", + "editor": "portality.lib.query_filters.editor", + "strip_facets": "portality.lib.query_filters.strip_facets", + "es_type_fix": "portality.lib.query_filters.es_type_fix", + "last_update_fallback": "portality.lib.query_filters.last_update_fallback", + "not_update_request": "portality.lib.query_filters.not_update_request", + "who_current_user": "portality.lib.query_filters.who_current_user", # ~~-> WhoCurrentUser:Query ~~ + "search_all_meta": "portality.lib.query_filters.search_all_meta", # ~~-> SearchAllMeta:Query ~~ + "journal_article_filter": "portality.lib.query_filters.journal_article_filter", + # ~~-> JournalArticleFilter:Query ~~ # result filters "public_result_filter": "portality.lib.query_filters.public_result_filter", "publisher_result_filter": "portality.lib.query_filters.publisher_result_filter", - "add_fqw_facets" : "portality.lib.query_filters.add_fqw_facets", - "fqw_back_compat" : "portality.lib.query_filters.fqw_back_compat", + "add_fqw_facets": "portality.lib.query_filters.add_fqw_facets", + "fqw_back_compat": "portality.lib.query_filters.fqw_back_compat", # source filters "private_source": "portality.lib.query_filters.private_source", @@ -951,7 +943,7 @@ ] ADMIN_NOTES_INDEX_ONLY_FIELDS = { - "all_meta" : { + "all_meta": { "type": "text", "fields": { "exact": { @@ -1013,8 +1005,8 @@ # ~~->BibJSON:Model~~ AUTOCOMPLETE_ADVANCED_FIELD_MAPS = { - "bibjson.publisher.name" : "index.publisher_ac", - "bibjson.institution.name" : "index.institution_ac" + "bibjson.publisher.name": "index.publisher_ac", + "bibjson.institution.name": "index.institution_ac" } #################################################### @@ -1040,7 +1032,7 @@ # Licensing terms for feed content # ~~->SiteLicence:Content~~ -FEED_LICENCE = "(c) DOAJ 2013. CC BY-SA." +FEED_LICENCE = "(c) DOAJ 2024. CC BY-SA." # name of the feed generator (goes in the atom:generator element) FEED_GENERATOR = "CottageLabs feed generator" @@ -1143,7 +1135,6 @@ TOC_CHANGEFREQ = "monthly" - ################################################## # News feed settings # ~~->News:Feature~~ @@ -1179,9 +1170,6 @@ # ENTER YOUR OWN TOKEN IN APPROPRIATE .cfg FILE #BITLY_OAUTH_TOKEN = "" -############################################### -# Date handling -# See portality.lib.dates - moved to prevent circular import ################################################# # API configuration @@ -1196,42 +1184,42 @@ # ~~->ArticleBibJSON:Model~~ DISCOVERY_ARTICLE_SEARCH_SUBS = { - "title" : "bibjson.title", - "doi" : "bibjson.identifier.id.exact", - "issn" : "index.issn.exact", - "publisher" : "bibjson.journal.publisher", - "journal" : "bibjson.journal.title", - "abstract" : "bibjson.abstract" + "title": "bibjson.title", + "doi": "bibjson.identifier.id.exact", + "issn": "index.issn.exact", + "publisher": "bibjson.journal.publisher", + "journal": "bibjson.journal.title", + "abstract": "bibjson.abstract" } DISCOVERY_ARTICLE_SORT_SUBS = { - "title" : "index.unpunctitle.exact" + "title": "index.unpunctitle.exact" } # ~~->JournalBibJSON:Model~~ DISCOVERY_JOURNAL_SEARCH_SUBS = { - "title" : "index.title", - "issn" : "index.issn.exact", - "publisher" : "bibjson.publisher", - "license" : "index.license.exact", - "username" : "admin.owner.exact" + "title": "index.title", + "issn": "index.issn.exact", + "publisher": "bibjson.publisher", + "license": "index.license.exact", + "username": "admin.owner.exact" } DISCOVERY_JOURNAL_SORT_SUBS = { - "title" : "index.unpunctitle.exact", - "issn" : "index.issn.exact" + "title": "index.unpunctitle.exact", + "issn": "index.issn.exact" } DISCOVERY_APPLICATION_SEARCH_SUBS = { - "title" : "index.title", - "issn" : "index.issn.exact", - "publisher" : "bibjson.publisher", - "license" : "index.license.exact" + "title": "index.title", + "issn": "index.issn.exact", + "publisher": "bibjson.publisher", + "license": "index.license.exact" } DISCOVERY_APPLICATION_SORT_SUBS = { - "title" : "index.unpunctitle.exact", - "issn" : "index.issn.exact" + "title": "index.unpunctitle.exact", + "issn": "index.issn.exact" } # API data dump settings @@ -1352,12 +1340,12 @@ ############################################# -## Harvester Configuration +# Harvester Configuration # ~~->Harvester:Feature~~ -## Configuration options for the DOAJ API Client +# Configuration options for the DOAJ API Client -## EPMC Client configuration +# EPMC Client configuration # ~~-> EPMC:ExternalService~~ EPMC_REST_API = "https://www.ebi.ac.uk/europepmc/webservices/rest/" EPMC_TARGET_VERSION = "6.9" # doc here: https://europepmc.org/docs/Europe_PMC_RESTful_Release_Notes.pdf @@ -1487,7 +1475,7 @@ } ################################################## -## Public data dump settings +# Public data dump settings # how long should the temporary URL for public data dumps last PUBLIC_DATA_DUMP_URL_TIMEOUT = 3600 @@ -1565,7 +1553,7 @@ # Datalog # ~~->Datalog:Feature~~ -### Datalog for Journal Added +# Datalog for Journal Added # google sheet filename for datalog ja DATALOG_JA_FILENAME = 'DOAJ: journals added and withdrawn' diff --git a/portality/static/js/application_form.js b/portality/static/js/application_form.js index b3c646dfac..e7959a2db3 100644 --- a/portality/static/js/application_form.js +++ b/portality/static/js/application_form.js @@ -35,7 +35,9 @@ doaj.af.journalFormFactory = (params) => { return doaj.af.newEditorJournalForm(params); case "associate_editor": return doaj.af.newAssociateJournalForm(params); - case "readonly": + case "admin_readonly": + return doaj.af.newReadOnlyJournalForm(params); + case "editor_readonly": return doaj.af.newReadOnlyJournalForm(params); default: throw "Could not extract a context from the form"; diff --git a/portality/tasks/async_workflow_notifications.py b/portality/tasks/async_workflow_notifications.py index b0236af7ec..70de3eb70e 100644 --- a/portality/tasks/async_workflow_notifications.py +++ b/portality/tasks/async_workflow_notifications.py @@ -11,6 +11,7 @@ from portality.lib.dates import FMT_DATETIME_STD from portality.tasks.helpers import background_helper from portality.tasks.redis_huey import main_queue, schedule +from portality.ui import templates class AgeQuery(object): @@ -200,7 +201,7 @@ def managing_editor_notifications(emails_dict): idle_res = models.Suggestion.query(q=age_query.query()) num_idle = idle_res.get('hits', {}).get('total', {}).get('value', 0) - text = render_template('email/workflow_reminder_fragments/admin_age_frag', num_idle=num_idle, x_weeks=X_WEEKS) + text = render_template(templates.EMAIL_WF_ADMIN_AGE, num_idle=num_idle, x_weeks=X_WEEKS) _add_email_paragraph(emails_dict, MAN_ED_EMAIL, 'Managing Editors', text) # The second notification - the number of ready records @@ -214,7 +215,7 @@ def managing_editor_notifications(emails_dict): ready_res = models.Suggestion.query(q=ready_query.query()) num_ready = ready_res.get('hits').get('total', {}).get('value', 0) - text = render_template('email/workflow_reminder_fragments/admin_ready_frag', num=num_ready, url=ready_url) + text = render_template(templates.EMAIL_WF_ADMIN_READY, num=num_ready, url=ready_url) _add_email_paragraph(emails_dict, MAN_ED_EMAIL, 'Managing Editors', text) @@ -255,7 +256,7 @@ def editor_notifications(emails_dict, limit=None): editor = eg.get_editor_account() ed_email = editor.email - text = render_template('email/workflow_reminder_fragments/editor_groupcount_frag', num=group_count, ed_group=group_name, url=ed_url) + text = render_template(templates.EMAIL_WF_EDITOR_GROUPCOUNT, num=group_count, ed_group=group_name, url=ed_url) _add_email_paragraph(emails_dict, ed_email, eg.editor, text) # Second note - records within editor group not touched for so long @@ -286,7 +287,7 @@ def editor_notifications(emails_dict, limit=None): editor = eg.get_editor_account() ed_email = editor.email - text = render_template('email/workflow_reminder_fragments/editor_age_frag', num=group_count, ed_group=group_name, url=ed_age_url, x_weeks=X_WEEKS) + text = render_template(templates.EMAIL_WF_EDITOR_AGE, num=group_count, ed_group=group_name, url=ed_age_url, x_weeks=X_WEEKS) _add_email_paragraph(emails_dict, ed_email, eg.editor, text) @@ -336,7 +337,7 @@ def associate_editor_notifications(emails_dict, limit=None): app.logger.warning("No account found for ID {0}".format(assoc_id)) continue - text = render_template('email/workflow_reminder_fragments/assoc_ed_age_frag', num_idle=idle, x_days=X_DAYS, num_very_idle=very_idle, y_weeks=Y_WEEKS, url=url) + text = render_template(templates.EMAIL_WF_ASSED_AGE, num_idle=idle, x_days=X_DAYS, num_very_idle=very_idle, y_weeks=Y_WEEKS, url=url) _add_email_paragraph(emails_dict, assoc_email, assoc_id, text) diff --git a/portality/templates-v2/README.md b/portality/templates-v2/README.md new file mode 100644 index 0000000000..096ea35409 --- /dev/null +++ b/portality/templates-v2/README.md @@ -0,0 +1,42 @@ +# Template directory structure + +Every level of the template directory structure can look like this: + +``` +├── base.html => the base file for all templates in this level or below. It must inherit from the template in the level above +├── [sub level] => All template files associated with the next level down in the hierarcy. For example, the `management` directory under the base +├── _[common infrastructure] => application forms, email templates, anything else that is used in many places at this level or below +├── includes => Any files that are included generally at this level or below +├── layouts => any layouts that are used generally at this level or below +``` + +For example + +``` +├── base.html +├── management + ├── base.html => extends ../base.html + ├── maned + ├── editor + ├── assed +├──public + ├── layouts + ├── static-pages.html + ├── publisher +├── _application_forms +├── _emails +├── includes + ├── _cookie-consent.html +├── layouts + ├── sidenav.html +``` + +Files should be named according to these rules: + +* If a file is called directly by a view, it should be named with `-` providing any spaces in the name. For example `static-pages.html` +* If a file is included or imported within a template, it should be named with a `_` prefix and `-` providing any spaces in the name. For example: `_edges-common-css.html` +* If a file has a close relationship with another template file, it may be prefixed with an `_` that template's name, and separated with a `_`. For example: `_static-pages_no-sidenav.html` + + +# Block hierarchy + diff --git a/portality/templates-v2/_account/includes/_api-access.html b/portality/templates-v2/_account/includes/_api-access.html new file mode 100644 index 0000000000..0353448f1d --- /dev/null +++ b/portality/templates-v2/_account/includes/_api-access.html @@ -0,0 +1,22 @@ +{% if account.has_role("api") %} + +{% endif %} \ No newline at end of file diff --git a/portality/templates-v2/_account/includes/_edit_form_js.html b/portality/templates-v2/_account/includes/_edit_form_js.html new file mode 100644 index 0000000000..bb6cf3ebfe --- /dev/null +++ b/portality/templates-v2/_account/includes/_edit_form_js.html @@ -0,0 +1,38 @@ + + + diff --git a/portality/templates-v2/_account/includes/_edit_user_form.html b/portality/templates-v2/_account/includes/_edit_user_form.html new file mode 100644 index 0000000000..bca8acce8a --- /dev/null +++ b/portality/templates-v2/_account/includes/_edit_user_form.html @@ -0,0 +1,54 @@ +{% from "includes/_formhelpers.html" import render_field %} + +
You can search in any field in the results or schema. More details
For example, to search for all journals tagged with the keyword \"heritage\"bibjson.keywords:heritageShort-hand names are available for some fieldsissn:2212-4276publisher:sciendoEdit your details
+ + diff --git a/portality/templates-v2/_account/includes/_login_form.html b/portality/templates-v2/_account/includes/_login_form.html new file mode 100644 index 0000000000..8582f5ed3f --- /dev/null +++ b/portality/templates-v2/_account/includes/_login_form.html @@ -0,0 +1,12 @@ +{% from "includes/_formhelpers.html" import render_field %} + + diff --git a/portality/templates-v2/_account/includes/_marketing-consent.html b/portality/templates-v2/_account/includes/_marketing-consent.html new file mode 100644 index 0000000000..8ef8b8a009 --- /dev/null +++ b/portality/templates-v2/_account/includes/_marketing-consent.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/portality/templates-v2/_account/includes/_register_form.html b/portality/templates-v2/_account/includes/_register_form.html new file mode 100644 index 0000000000..718fee8793 --- /dev/null +++ b/portality/templates-v2/_account/includes/_register_form.html @@ -0,0 +1,30 @@ +{% from "includes/_formhelpers.html" import render_field %} + + diff --git a/portality/templates-v2/_account/includes/_reset_form.html b/portality/templates-v2/_account/includes/_reset_form.html new file mode 100644 index 0000000000..373ecb6491 --- /dev/null +++ b/portality/templates-v2/_account/includes/_reset_form.html @@ -0,0 +1,10 @@ +{% from "includes/_formhelpers.html" import render_field %} + + \ No newline at end of file diff --git a/portality/templates/application_form/_application_warning_msg.html b/portality/templates-v2/_application-form/includes/_application_warning_msg.html similarity index 99% rename from portality/templates/application_form/_application_warning_msg.html rename to portality/templates-v2/_application-form/includes/_application_warning_msg.html index 85c706816e..f693240700 100644 --- a/portality/templates/application_form/_application_warning_msg.html +++ b/portality/templates-v2/_application-form/includes/_application_warning_msg.html @@ -1,4 +1,3 @@ - {% macro build_journal_withdrawn_deleted_msg(obj) -%} {% if obj["es_type"] == "application" and obj.application_type == "update_request" diff --git a/portality/templates-v2/_application-form/includes/_backend_validation.html b/portality/templates-v2/_application-form/includes/_backend_validation.html new file mode 100644 index 0000000000..294b0f9785 --- /dev/null +++ b/portality/templates-v2/_application-form/includes/_backend_validation.html @@ -0,0 +1,11 @@ +{% if formulaic_context.wtform_inst.errors %} ++ This form has errors which prevented its submission. The following fields are invalid: ++{% endif %} diff --git a/portality/templates/application_form/_entry_group.html b/portality/templates-v2/_application-form/includes/_entry_group.html similarity index 100% rename from portality/templates/application_form/_entry_group.html rename to portality/templates-v2/_application-form/includes/_entry_group.html diff --git a/portality/templates/application_form/_entry_group_horizontal.html b/portality/templates-v2/_application-form/includes/_entry_group_horizontal.html similarity index 100% rename from portality/templates/application_form/_entry_group_horizontal.html rename to portality/templates-v2/_application-form/includes/_entry_group_horizontal.html diff --git a/portality/templates/application_form/_field.html b/portality/templates-v2/_application-form/includes/_field.html similarity index 95% rename from portality/templates/application_form/_field.html rename to portality/templates-v2/_application-form/includes/_field.html index 0e1d37e1d5..a7ee3ec44e 100644 --- a/portality/templates/application_form/_field.html +++ b/portality/templates-v2/_application-form/includes/_field.html @@ -1,4 +1,4 @@ -{% from "application_form/_value.html" import value %} +{% from "_application-form/includes/_value.html" import value %} -{% include "application_form/modal.html" %} +{% include "_application-form/includes/_modal.html" %} diff --git a/portality/templates/application_form/02-about/index.html b/portality/templates-v2/_application-form/includes/_fieldset_about.html similarity index 100% rename from portality/templates/application_form/02-about/index.html rename to portality/templates-v2/_application-form/includes/_fieldset_about.html diff --git a/portality/templates/application_form/06-best-practice/index.html b/portality/templates-v2/_application-form/includes/_fieldset_best-practice.html similarity index 100% rename from portality/templates/application_form/06-best-practice/index.html rename to portality/templates-v2/_application-form/includes/_fieldset_best-practice.html diff --git a/portality/templates/application_form/05-business-model/index.html b/portality/templates-v2/_application-form/includes/_fieldset_business-model.html similarity index 100% rename from portality/templates/application_form/05-business-model/index.html rename to portality/templates-v2/_application-form/includes/_fieldset_business-model.html diff --git a/portality/templates/application_form/03-copyright-licensing/index.html b/portality/templates-v2/_application-form/includes/_fieldset_copyright-licensing.html similarity index 100% rename from portality/templates/application_form/03-copyright-licensing/index.html rename to portality/templates-v2/_application-form/includes/_fieldset_copyright-licensing.html diff --git a/portality/templates/application_form/04-editorial/index.html b/portality/templates-v2/_application-form/includes/_fieldset_editorial.html similarity index 100% rename from portality/templates/application_form/04-editorial/index.html rename to portality/templates-v2/_application-form/includes/_fieldset_editorial.html diff --git a/portality/templates/application_form/01-oa-compliance/index.html b/portality/templates-v2/_application-form/includes/_fieldset_oa_compliance.html similarity index 100% rename from portality/templates/application_form/01-oa-compliance/index.html rename to portality/templates-v2/_application-form/includes/_fieldset_oa_compliance.html diff --git a/portality/templates/application_form/js/_form_js.html b/portality/templates-v2/_application-form/includes/_form_js.html similarity index 91% rename from portality/templates/application_form/js/_form_js.html rename to portality/templates-v2/_application-form/includes/_form_js.html index 323b90b656..1329ce8f53 100644 --- a/portality/templates/application_form/js/_form_js.html +++ b/portality/templates-v2/_application-form/includes/_form_js.html @@ -1,8 +1,5 @@ - - -{# #} diff --git a/portality/templates/application_form/_group.html b/portality/templates-v2/_application-form/includes/_group.html similarity index 95% rename from portality/templates/application_form/_group.html rename to portality/templates-v2/_application-form/includes/_group.html index cb0d98f64c..2d20c25cb8 100644 --- a/portality/templates/application_form/_group.html +++ b/portality/templates-v2/_application-form/includes/_group.html @@ -27,4 +27,4 @@ {% endif %}+ {% for field, errors in formulaic_context.wtform_inst.errors.items() %} + {% set field_def = formulaic_context.get(field) %} +
+- {{ field_def.label }}
+ {% endfor %} +@@ -59,5 +59,5 @@diff --git a/portality/templates/application_form/modal.html b/portality/templates-v2/_application-form/includes/_modal.html similarity index 100% rename from portality/templates/application_form/modal.html rename to portality/templates-v2/_application-form/includes/_modal.html diff --git a/portality/templates-v2/_application-form/includes/_public_fieldsets.html b/portality/templates-v2/_application-form/includes/_public_fieldsets.html new file mode 100644 index 0000000000..04c3a1a025 --- /dev/null +++ b/portality/templates-v2/_application-form/includes/_public_fieldsets.html @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/portality/templates/application_form/_value.html b/portality/templates-v2/_application-form/includes/_value.html similarity index 100% rename from portality/templates/application_form/_value.html rename to portality/templates-v2/_application-form/includes/_value.html diff --git a/portality/templates-v2/_articles/includes/_article_metadata_form.html b/portality/templates-v2/_articles/includes/_article_metadata_form.html new file mode 100644 index 0000000000..09ec2c9f13 --- /dev/null +++ b/portality/templates-v2/_articles/includes/_article_metadata_form.html @@ -0,0 +1,109 @@ + + + + + + + + + + + + + diff --git a/portality/templates/includes/_tourist.html b/portality/templates-v2/_tourist/includes/_tourist.html similarity index 100% rename from portality/templates/includes/_tourist.html rename to portality/templates-v2/_tourist/includes/_tourist.html diff --git a/portality/templates/includes/_tourist_nav.html b/portality/templates-v2/_tourist/includes/_tourist_nav.html similarity index 100% rename from portality/templates/includes/_tourist_nav.html rename to portality/templates-v2/_tourist/includes/_tourist_nav.html diff --git a/portality/templates-v2/base.html b/portality/templates-v2/base.html new file mode 100644 index 0000000000..1fe3553814 --- /dev/null +++ b/portality/templates-v2/base.html @@ -0,0 +1,75 @@ + + + + + +{{ f.help("short_help") | safe }}
{% endif %} - {% include "application_form/modal.html" %} + {% include "_application-form/includes/_modal.html" %}{% block page_title %}Directory of Open Access Journals{% endblock %} – DOAJ + + + + + + + + + + + + + {% block base_meta %}{% endblock %} + + + + + + + + + + + {# FIXME: probably just on the application form? #} + + + {# Page-specific styles todo: select2 could possibly go here #} + {% block base_stylesheets %}{% endblock %} + + + + + + + + +{% if not request.cookies.get(config.get("CONSENT_COOKIE_KEY")) %} + {% include "includes/_cookie_consent.html" %} +{% endif %} + +{% block base_content %}{% endblock %} + +{% include 'includes/_js_includes.html' %} + +{% if not request.cookies.get("doaj-consent") %} + +{% endif %} + +{% block base_js %}{% endblock %} + + + + diff --git a/portality/templates-v2/dev/redhead/blocks.html b/portality/templates-v2/dev/redhead/blocks.html new file mode 100644 index 0000000000..7679c0db0e --- /dev/null +++ b/portality/templates-v2/dev/redhead/blocks.html @@ -0,0 +1,164 @@ + + + + +Redhead: Jinja2 template structure browser + + + + + + + +{% macro render_block_node(node, display) %} ++ {{ node.name }} +{# #} +{# {% if not node.content %}[Empty]{% else %}[Has Content]{% endif %}#} +{# {% if node.overrides|length == 0 %}[New Definition]{% endif %}#} +{# {% if node.scoped %}[Scoped]{% endif %}#} +{# {% if node.overridden_by|length == 0 and not node.content %}[WARNING: Unused block]{% endif %}#} +{# {% for over in node.overrides %}#} +{# {% if not loop.first %} +{% endmacro %} + +{% macro path_layout(path) %} + {% set bits = path.split("/") %} + {%- for bit in bits %} + {{ bit }}{% if not loop.last %}/{% endif %} + {% endfor -%} +{% endmacro %} + +File Inheritance | Block Inheritance | + Records JSON | Tree JSON | Blocks JSON
{% endif %}#} +{# {% for p in over.paths %}#} +{# [{{ p|join(" < ") }}]#} +{# {% endfor %}#} +{# {% endfor %}#} +{# #} + {% if node.blocks|length > 0 or node.files|length > 0 %} + + {% endif %} +
+ +Block Inheritance
+ +Expand all | Collapse all + ++ {% for node in tree %} + {{ render_block_node(node, true) }} + {% endfor %} +
+ + + + + + + \ No newline at end of file diff --git a/portality/templates-v2/dev/redhead/tree.html b/portality/templates-v2/dev/redhead/tree.html new file mode 100644 index 0000000000..eaf11244f6 --- /dev/null +++ b/portality/templates-v2/dev/redhead/tree.html @@ -0,0 +1,240 @@ + + + + +Redhead: Jinja2 template structure browser + + + + + + +{% macro render_file_node(node, display) %} ++ {{ path_layout(node.name) }} {% if node.unresolved %}[WARNING: unresolved file]{% endif %} + {% if node.blocks|length > 0 or node.includes|length > 0 or node.extensions|length > 0 or node.dynamic_includes|length > 0 %} + +{% endmacro %} + +{% macro render_block_node(node) %} + +{% endmacro %} + +{% macro path_layout(path) %} + {% set bits = path.split("/") %} + {%- for bit in bits %} + {{ bit }}{% if not loop.last %}/{% endif %} + {% endfor -%} +{% endmacro %} + +File Inheritance | Block Inheritance | + Records JSON | Tree JSON | Blocks JSON+ {% if node.blocks|length > 0 %} +
+ {% endif %} +- [+] Blocks +
+ {% endif %} + {% if node.includes|length > 0 %} ++ {% for block in node.blocks %} + {{ render_block_node(block) }} + {% endfor %} +
+- [+] Includes +
+ {% endif %} + {% if node.dynamic_includes|length > 0 %} ++ {% for include in node.includes %} + {{ render_file_node(include) }} + {% endfor %} +
+- [+] Dynamic Includes +
+ {% endif %} + {% if node.extensions|length > 0 %} ++ {% for include in node.dynamic_includes %} +
+ + {% endfor %} +- [+] Extensions +
+ {% endif %} ++ {% for extension in node.extensions %} + {{ render_file_node(extension) }} + {% endfor %} +
+
+ +File Inheritance
+ +Expand all | Collapse all + ++ {% for node in tree %} + {{ render_file_node(node, true) }} + {% endfor %} +
+ + + + + + + \ No newline at end of file diff --git a/portality/templates/testdrive/testdrive.html b/portality/templates-v2/dev/testdrive/testdrive.html similarity index 100% rename from portality/templates/testdrive/testdrive.html rename to portality/templates-v2/dev/testdrive/testdrive.html diff --git a/portality/templates/email/account_created.jinja2 b/portality/templates-v2/email/account_created.jinja2 similarity index 100% rename from portality/templates/email/account_created.jinja2 rename to portality/templates-v2/email/account_created.jinja2 diff --git a/portality/templates/email/account_password_reset.jinja2 b/portality/templates-v2/email/account_password_reset.jinja2 similarity index 100% rename from portality/templates/email/account_password_reset.jinja2 rename to portality/templates-v2/email/account_password_reset.jinja2 diff --git a/portality/templates/email/editor_application_completed.jinja2 b/portality/templates-v2/email/editor_application_completed.jinja2 similarity index 100% rename from portality/templates/email/editor_application_completed.jinja2 rename to portality/templates-v2/email/editor_application_completed.jinja2 diff --git a/portality/templates/email/notification_email.jinja2 b/portality/templates-v2/email/notification_email.jinja2 similarity index 100% rename from portality/templates/email/notification_email.jinja2 rename to portality/templates-v2/email/notification_email.jinja2 diff --git a/portality/templates/email/script_tag_detected.jinja2 b/portality/templates-v2/email/script_tag_detected.jinja2 similarity index 100% rename from portality/templates/email/script_tag_detected.jinja2 rename to portality/templates-v2/email/script_tag_detected.jinja2 diff --git a/portality/templates/email/workflow_reminder_fragments/admin_age_frag b/portality/templates-v2/email/workflow_reminder_fragments/admin_age_frag.jinja2 similarity index 100% rename from portality/templates/email/workflow_reminder_fragments/admin_age_frag rename to portality/templates-v2/email/workflow_reminder_fragments/admin_age_frag.jinja2 diff --git a/portality/templates/email/workflow_reminder_fragments/admin_ready_frag b/portality/templates-v2/email/workflow_reminder_fragments/admin_ready_frag.jinja2 similarity index 100% rename from portality/templates/email/workflow_reminder_fragments/admin_ready_frag rename to portality/templates-v2/email/workflow_reminder_fragments/admin_ready_frag.jinja2 diff --git a/portality/templates/email/workflow_reminder_fragments/assoc_ed_age_frag b/portality/templates-v2/email/workflow_reminder_fragments/assoc_ed_age_frag.jinja2 similarity index 100% rename from portality/templates/email/workflow_reminder_fragments/assoc_ed_age_frag rename to portality/templates-v2/email/workflow_reminder_fragments/assoc_ed_age_frag.jinja2 diff --git a/portality/templates/email/workflow_reminder_fragments/editor_age_frag b/portality/templates-v2/email/workflow_reminder_fragments/editor_age_frag.jinja2 similarity index 100% rename from portality/templates/email/workflow_reminder_fragments/editor_age_frag rename to portality/templates-v2/email/workflow_reminder_fragments/editor_age_frag.jinja2 diff --git a/portality/templates/email/workflow_reminder_fragments/editor_groupcount_frag b/portality/templates-v2/email/workflow_reminder_fragments/editor_groupcount_frag.jinja2 similarity index 100% rename from portality/templates/email/workflow_reminder_fragments/editor_groupcount_frag rename to portality/templates-v2/email/workflow_reminder_fragments/editor_groupcount_frag.jinja2 diff --git a/portality/templates-v2/includes/_back-to-top.html b/portality/templates-v2/includes/_back-to-top.html new file mode 100644 index 0000000000..62fd115147 --- /dev/null +++ b/portality/templates-v2/includes/_back-to-top.html @@ -0,0 +1,4 @@ + + + Back to top + diff --git a/portality/templates/doaj/cookie_consent.html b/portality/templates-v2/includes/_cookie_consent.html similarity index 100% rename from portality/templates/doaj/cookie_consent.html rename to portality/templates-v2/includes/_cookie_consent.html diff --git a/portality/templates/_edges_common_js.html b/portality/templates-v2/includes/_edges_common_js.html similarity index 100% rename from portality/templates/_edges_common_js.html rename to portality/templates-v2/includes/_edges_common_js.html diff --git a/portality/templates-v2/includes/_error_header.html b/portality/templates-v2/includes/_error_header.html new file mode 100644 index 0000000000..fc2c21c4ea --- /dev/null +++ b/portality/templates-v2/includes/_error_header.html @@ -0,0 +1,3 @@ +{% if there_were_errors %} +There is a problem with the submitted form.
+{% endif %} \ No newline at end of file diff --git a/portality/templates/includes/_flash_notification.html b/portality/templates-v2/includes/_flash_notification.html similarity index 100% rename from portality/templates/includes/_flash_notification.html rename to portality/templates-v2/includes/_flash_notification.html diff --git a/portality/templates/_formhelpers.html b/portality/templates-v2/includes/_formhelpers.html similarity index 100% rename from portality/templates/_formhelpers.html rename to portality/templates-v2/includes/_formhelpers.html diff --git a/portality/templates/includes/_hotjar.html b/portality/templates-v2/includes/_hotjar.html similarity index 100% rename from portality/templates/includes/_hotjar.html rename to portality/templates-v2/includes/_hotjar.html diff --git a/portality/templates/_js_includes.html b/portality/templates-v2/includes/_js_includes.html similarity index 100% rename from portality/templates/_js_includes.html rename to portality/templates-v2/includes/_js_includes.html diff --git a/portality/templates-v2/includes/_site_note.html b/portality/templates-v2/includes/_site_note.html new file mode 100644 index 0000000000..76daabd42b --- /dev/null +++ b/portality/templates-v2/includes/_site_note.html @@ -0,0 +1,4 @@ ++ Enter the site note herediff --git a/portality/templates/includes/svg/20yrs-stacked.svg b/portality/templates-v2/includes/svg/20yrs-stacked.svg similarity index 100% rename from portality/templates/includes/svg/20yrs-stacked.svg rename to portality/templates-v2/includes/svg/20yrs-stacked.svg diff --git a/portality/templates/includes/svg/20yrs.svg b/portality/templates-v2/includes/svg/20yrs.svg similarity index 100% rename from portality/templates/includes/svg/20yrs.svg rename to portality/templates-v2/includes/svg/20yrs.svg diff --git a/portality/templates/includes/svg/at-20/theme_global.svg b/portality/templates-v2/includes/svg/at-20/theme_global.svg similarity index 100% rename from portality/templates/includes/svg/at-20/theme_global.svg rename to portality/templates-v2/includes/svg/at-20/theme_global.svg diff --git a/portality/templates/includes/svg/at-20/theme_open.svg b/portality/templates-v2/includes/svg/at-20/theme_open.svg similarity index 100% rename from portality/templates/includes/svg/at-20/theme_open.svg rename to portality/templates-v2/includes/svg/at-20/theme_open.svg diff --git a/portality/templates/includes/svg/at-20/theme_trusted.svg b/portality/templates-v2/includes/svg/at-20/theme_trusted.svg similarity index 100% rename from portality/templates/includes/svg/at-20/theme_trusted.svg rename to portality/templates-v2/includes/svg/at-20/theme_trusted.svg diff --git a/portality/templates/includes/svg/by.svg b/portality/templates-v2/includes/svg/by.svg similarity index 100% rename from portality/templates/includes/svg/by.svg rename to portality/templates-v2/includes/svg/by.svg diff --git a/portality/templates/includes/svg/cc.svg b/portality/templates-v2/includes/svg/cc.svg similarity index 100% rename from portality/templates/includes/svg/cc.svg rename to portality/templates-v2/includes/svg/cc.svg diff --git a/portality/templates/includes/svg/copyright.svg b/portality/templates-v2/includes/svg/copyright.svg similarity index 100% rename from portality/templates/includes/svg/copyright.svg rename to portality/templates-v2/includes/svg/copyright.svg diff --git a/portality/templates/includes/svg/doaj-icon.svg b/portality/templates-v2/includes/svg/doaj-icon.svg similarity index 100% rename from portality/templates/includes/svg/doaj-icon.svg rename to portality/templates-v2/includes/svg/doaj-icon.svg diff --git a/portality/templates/includes/svg/logo.svg b/portality/templates-v2/includes/svg/logo.svg similarity index 100% rename from portality/templates/includes/svg/logo.svg rename to portality/templates-v2/includes/svg/logo.svg diff --git a/portality/templates/includes/svg/nc.svg b/portality/templates-v2/includes/svg/nc.svg similarity index 100% rename from portality/templates/includes/svg/nc.svg rename to portality/templates-v2/includes/svg/nc.svg diff --git a/portality/templates/includes/svg/nd.svg b/portality/templates-v2/includes/svg/nd.svg similarity index 100% rename from portality/templates/includes/svg/nd.svg rename to portality/templates-v2/includes/svg/nd.svg diff --git a/portality/templates/includes/svg/sa.svg b/portality/templates-v2/includes/svg/sa.svg similarity index 100% rename from portality/templates/includes/svg/sa.svg rename to portality/templates-v2/includes/svg/sa.svg diff --git a/portality/templates/includes/svg/seal.svg b/portality/templates-v2/includes/svg/seal.svg similarity index 100% rename from portality/templates/includes/svg/seal.svg rename to portality/templates-v2/includes/svg/seal.svg diff --git a/portality/templates/includes/svg/wechat.svg b/portality/templates-v2/includes/svg/wechat.svg similarity index 100% rename from portality/templates/includes/svg/wechat.svg rename to portality/templates-v2/includes/svg/wechat.svg diff --git a/portality/templates/includes/svg/zero.svg b/portality/templates-v2/includes/svg/zero.svg similarity index 100% rename from portality/templates/includes/svg/zero.svg rename to portality/templates-v2/includes/svg/zero.svg diff --git a/portality/templates-v2/management/_application-form/includes/_application_diff.html b/portality/templates-v2/management/_application-form/includes/_application_diff.html new file mode 100644 index 0000000000..4e9f514750 --- /dev/null +++ b/portality/templates-v2/management/_application-form/includes/_application_diff.html @@ -0,0 +1,40 @@ +{% from "_application-form/includes/_value.html" import value %} + +{% if current_journal %} +
+ Dismiss ++ + The following fields have changed: +
+ ++ +
+{% endif %} diff --git a/portality/templates/application_form/_autochecks.html b/portality/templates-v2/management/_application-form/includes/_autochecks.html similarity index 100% rename from portality/templates/application_form/_autochecks.html rename to portality/templates-v2/management/_application-form/includes/_autochecks.html diff --git a/portality/templates/application_form/_contact.html b/portality/templates-v2/management/_application-form/includes/_contact.html similarity index 100% rename from portality/templates/application_form/_contact.html rename to portality/templates-v2/management/_application-form/includes/_contact.html diff --git a/portality/templates/application_form/_edit_status.html b/portality/templates-v2/management/_application-form/includes/_edit_status.html similarity index 100% rename from portality/templates/application_form/_edit_status.html rename to portality/templates-v2/management/_application-form/includes/_edit_status.html diff --git a/portality/templates/application_form/editorial_form_body.html b/portality/templates-v2/management/_application-form/includes/_editorial_form_body.html similarity index 54% rename from portality/templates/application_form/editorial_form_body.html rename to portality/templates-v2/management/_application-form/includes/_editorial_form_body.html index 9750c1ceff..5e4d1d07b2 100644 --- a/portality/templates/application_form/editorial_form_body.html +++ b/portality/templates-v2/management/_application-form/includes/_editorial_form_body.html @@ -1,8 +1,8 @@ -{% include "application_form/_edit_status.html" %} -{% include "application_form/_backend_validation.html" %} -{% include "application_form/_autochecks.html" %} +{% include "management/_application-form/includes/_edit_status.html" %} +{% include "_application-form/includes/_backend_validation.html" %} +{% include "management/_application-form/includes/_autochecks.html" %} +{% import "_application-form/includes/_application_warning_msg.html" as _msg %} -{% import "application_form/_application_warning_msg.html" as _msg %} {% if obj and (obj.es_type == 'journal' and obj.is_in_doaj()) %} {{ _msg.build_journal_withdrawn_deleted_msg(obj) }} See this journal in DOAJ @@ -21,15 +21,13 @@+ + + + {% for f in formulaic_context.list_fields_in_order() %} + {% if f.name in form_diff %} + {% set previous = form_diff[f.name]['a'] %} + {% set new = form_diff[f.name]['b'] %} ++ Previous +New ++ + {% endif %} + {% endfor %} + ++ {% if f.diff_table_context %} + +{{ f.diff_table_context }} information
+ {% endif %} + {{ f.label }} ++ {{ value(previous, f.name, formulaic_context) }} + ++ {{ value(new, f.name, formulaic_context) }} + +{% if diff_table %} - {% include 'application_form/_application_diff.html' %} + {% include 'management/_application-form/includes/_application_diff.html' %} {% endif %} - {% include 'application_form/editorial_form_fields.html' %} - {% include "application_form/_fieldsets.html" %} + {% include 'management/_application-form/includes/_editorial_form_fields.html' %} + {% include "_application-form/includes/_public_fieldsets.html" %} - {% include "application_form/editorial_side_panel.html" %} + {% include "management/_application-form/includes/_editorial_side_panel.html" %}- -{% include "includes/_hotjar.html" %} diff --git a/portality/templates/application_form/editorial_form_fields.html b/portality/templates-v2/management/_application-form/includes/_editorial_form_fields.html similarity index 100% rename from portality/templates/application_form/editorial_form_fields.html rename to portality/templates-v2/management/_application-form/includes/_editorial_form_fields.html diff --git a/portality/templates/application_form/editorial_side_panel.html b/portality/templates-v2/management/_application-form/includes/_editorial_side_panel.html similarity index 95% rename from portality/templates/application_form/editorial_side_panel.html rename to portality/templates-v2/management/_application-form/includes/_editorial_side_panel.html index 9ddf55698f..f7047bd426 100644 --- a/portality/templates/application_form/editorial_side_panel.html +++ b/portality/templates-v2/management/_application-form/includes/_editorial_side_panel.html @@ -1,5 +1,5 @@- {% include "application_form/_contact.html" %} + {% include "management/_application-form/includes/_contact.html" %} {% if obj %}diff --git a/portality/templates-v2/management/admin/_application-form/layouts/maned_journal_bulk_edit.html b/portality/templates-v2/management/admin/_application-form/layouts/maned_journal_bulk_edit.html new file mode 100644 index 0000000000..e1ece1d205 --- /dev/null +++ b/portality/templates-v2/management/admin/_application-form/layouts/maned_journal_bulk_edit.html @@ -0,0 +1,15 @@ +{% if formulaic_context.errors %} +Locked for editing until {{ lock.expire_formatted() }} @@ -56,7 +56,5 @@
Locked for editing until - - {# #}
There is a problem with the form.
+{% endif %} + ++\ No newline at end of file diff --git a/portality/templates-v2/management/admin/account/create.html b/portality/templates-v2/management/admin/account/create.html new file mode 100644 index 0000000000..105deb99c6 --- /dev/null +++ b/portality/templates-v2/management/admin/account/create.html @@ -0,0 +1,41 @@ +{% extends "management/admin/base.html" %} + +{% block page_title %}Create User{% endblock %} + +{% block admin_stylesheets %} + +{% endblock %} + +{% block admin_content %} ++ + {% set fs = formulaic_context.fieldset("bulk_edit") %} + {% for f in fs.fields() %} + {% set field_template = f.template %} + {% include field_template %} + {% endfor %} + ++++{% endblock %} + +{% block admin_js %} + {% if current_user.is_authenticated and current_user.has_role("create_user") %} + + + {% endif %} + + {% if config.get("RECAPTCHA_ENABLE") %} + + + + {% endif %} +{% endblock %} diff --git a/portality/templates-v2/management/admin/account/edit.html b/portality/templates-v2/management/admin/account/edit.html new file mode 100644 index 0000000000..b51b97c9fa --- /dev/null +++ b/portality/templates-v2/management/admin/account/edit.html @@ -0,0 +1,49 @@ +{% extends "management/admin/base.html" %} +{# ~~Account:Page~~ #} + +{% block page_title %}{{ account.name if account.name else account.email }}’s profile{% endblock %} + +{% block admin_content %} ++ ++++ {% include "_account/includes/_register_form.html" %} ++++ +{% endblock %} + +{% block admin_js %} + {% include "_account/includes/_edit_form_js.html" %} +{% endblock %} diff --git a/portality/templates-v2/management/admin/account/users.html b/portality/templates-v2/management/admin/account/users.html new file mode 100644 index 0000000000..f50d5c2a54 --- /dev/null +++ b/portality/templates-v2/management/admin/account/users.html @@ -0,0 +1,34 @@ +{% extends "management/admin/base.html" %} + +{% block admin_stylesheets %} + {% include "management/includes/_edges_common_css.html" %} + {# FIXME: for some reason this is not in edges common, why is that? #} + +{% endblock %} + +{% block page_title %}List of users{% endblock %} + +{% block admin_content %} ++ ++ + + + {% if current_user.id != account.id %} ++ + You are editing a user account that is not your own. Be careful! +
+ {% endif %} + + {% include '_account/includes/_edit_user_form.html' %} + + {% if current_user.is_super %} +
+Delete this account
+This irrevocably deletes the account.
+ + {% endif %} + ++ {% include "_account/includes/_marketing-consent.html" %} + {% include "_account/includes/_api-access.html" %} ++List of users
+ + {% if current_user.has_role("create_user") %}{% endif %} + + + +{% endblock %} + +{% block admin_js %} + + + + {% include "includes/_edges_common_js.html" %} + + +{% endblock %} diff --git a/portality/templates-v2/management/admin/admin_site_search.html b/portality/templates-v2/management/admin/admin_site_search.html new file mode 100644 index 0000000000..57f84dfa23 --- /dev/null +++ b/portality/templates-v2/management/admin/admin_site_search.html @@ -0,0 +1,75 @@ +{% extends "management/admin/base.html" %} + +{% block admin_stylesheets %} + {% include "management/includes/_edges_common_css.html" %} + {# FIXME: for some reason this is not in edges common, why is that? #} + +{% endblock %} + +{% block page_title %}Search journals & articles{% endblock %} + +{% block admin_content %} +Search journals & articles
+ + + +++ + + +{% endblock %} + +{% block admin_js %} + + + + {% include "includes/_edges_common_js.html" %} + + + +{% endblock %} diff --git a/portality/templates-v2/management/admin/application_locked.html b/portality/templates-v2/management/admin/application_locked.html new file mode 100644 index 0000000000..d90b3c0698 --- /dev/null +++ b/portality/templates-v2/management/admin/application_locked.html @@ -0,0 +1,25 @@ +{% extends "management/admin/base.html" %} + +{% block page_title %}(Locked) {{ application.bibjson().title }}{% endblock %} + +{% block admin_content %} +Bulk edit records
++ ++++{% endblock %} diff --git a/portality/templates/admin/applications.html b/portality/templates-v2/management/admin/applications.html similarity index 50% rename from portality/templates/admin/applications.html rename to portality/templates-v2/management/admin/applications.html index e6b6c2b4d4..77cad565f8 100644 --- a/portality/templates/admin/applications.html +++ b/portality/templates-v2/management/admin/applications.html @@ -1,28 +1,33 @@ -{% extends "admin/admin_base.html" %} +{% extends "management/admin/base.html" %} + +{% block admin_stylesheets %} + {% include "management/includes/_edges_common_css.html" %} + {# FIXME: for some reason this is not in edges common, why is that? #} + +{% endblock %} -{% include "_edges_common_css.html" %} {% block page_title %}Applications{% endblock %} {% block admin_content %}++ ++ Application for Journal —
+ {% if application.last_updated %} +
+ {{application.bibjson().title}} +Last updated: {{application.last_updated}}
+ {% endif %} +++You cannot currently edit this application
+ +The user {{lock.username}} is currently editing this record, and has an edit-lock until {{lock.expire_formatted()}}
+ +Please try again later!
+Applications
- {% include "admin/_applications_and_update_requests_common.html" %} + {% include "management/admin/includes/_applications_and_update_requests_common.html" %} {% endblock %} -{% block extra_js_bottom %} +{% block admin_js %} - {% include "admin/_applications_and_update_requests_common_js.html" %} + {% include "management/admin/includes/_applications_and_update_requests_common_js.html" %} {% endblock %} diff --git a/portality/templates-v2/management/admin/article_metadata.html b/portality/templates-v2/management/admin/article_metadata.html new file mode 100644 index 0000000000..64384654e4 --- /dev/null +++ b/portality/templates-v2/management/admin/article_metadata.html @@ -0,0 +1,53 @@ +{# ~~AdminArticleMetadata:Page~~ #} +{% extends "management/admin/base.html" %} + +{% block page_title %}{{ form_context.source.bibjson().title }} – Article metadata{% endblock %} + +{% block admin_content %} + {% set object_type = 'article' %} + {% set heading_object_type = 'Article' %} + {% set form_context = form_context %} + +++ +{% endblock %} + +{% block admin_js %} + + + +{% endblock %} diff --git a/portality/templates-v2/management/admin/background_jobs_search.html b/portality/templates-v2/management/admin/background_jobs_search.html new file mode 100644 index 0000000000..c6ad2dd155 --- /dev/null +++ b/portality/templates-v2/management/admin/background_jobs_search.html @@ -0,0 +1,28 @@ +{% extends "management/admin/base.html" %} + +{% block admin_stylesheets %} + {% include "management/includes/_edges_common_css.html" %} + {# FIXME: for some reason this is not in edges common, why is that? #} + +{% endblock %} + +{% block page_title %}Background jobs{% endblock %} + +{% block admin_content %} ++ {% if form_context.source.last_updated %} ++ +Last updated: {{form_context.source.last_updated}}
+ {% endif %} ++ {{ heading_object_type }} —
+ + See this article in DOAJ + {% if form_context.source.current_journal %} + + {% endif %} +
+ {{form_context.source.bibjson().title}} ++ {% include "includes/_error_header.html" %} + + {% from "includes/_formhelpers.html" import render_field_horizontal %} + {% from "includes/_formhelpers.html" import render_field %} + + ++Background jobs
+ + +{% endblock %} + +{% block admin_js %} + + + {% include "includes/_edges_common_js.html" %} + +{% endblock %} diff --git a/portality/templates-v2/management/admin/base.html b/portality/templates-v2/management/admin/base.html new file mode 100644 index 0000000000..0c07fc1cba --- /dev/null +++ b/portality/templates-v2/management/admin/base.html @@ -0,0 +1,18 @@ +{% extends "management/base.html" %} + +{% block management_stylesheets %} + {% block admin_stylesheets %}{% endblock %} +{% endblock %} + +{% block nav %} + {% include "management/admin/includes/_nav.html" %} +{% endblock %} + +{% block management_content %} + {% block admin_content %}{% endblock %} +{% endblock %} + +{% block management_js %} + {% include "includes/_hotjar.html" %} + {% block admin_js %}{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/portality/templates-v2/management/admin/continuation.html b/portality/templates-v2/management/admin/continuation.html new file mode 100644 index 0000000000..f2f60c3aee --- /dev/null +++ b/portality/templates-v2/management/admin/continuation.html @@ -0,0 +1,51 @@ +{% extends "management/admin/base.html" %} + +{% block page_title %} + {% if form.type.data == "replaces" %} + {{ current.bibjson().title }} continues… + {% else %} + {{ current.bibjson().title }} is continued by… + {% endif %} +{% endblock %} + +{% block admin_content %} +++{% endblock %} diff --git a/portality/templates-v2/management/admin/dashboard.html b/portality/templates-v2/management/admin/dashboard.html new file mode 100644 index 0000000000..440d2bda05 --- /dev/null +++ b/portality/templates-v2/management/admin/dashboard.html @@ -0,0 +1,79 @@ +{% extends "management/admin/base.html" %} +{# ~~Dashboard:Page~~ #} + +{% block page_title %}Managing Editor Dashboard{% endblock %} + +{% block page_header %} + Hi, {% if current_user.name %}{{ current_user.name }}{% else %} + {{ current_user.id }}{% endif %}! +{% endblock %} + +{% block admin_content %} ++ {% if form.type.data == "replaces" %} ++ +{{ current.bibjson().title }} continues…
++ Please provide the Journal Title and ISSN(s) for the journal that is continued by {{ current.bibjson().title }}. +
++ This will create a record in DOAJ so do not use this option if the journal + already exists. Once you submit this form, a new journal record will be created and + you may edit the other associated metadata fields. +
+ {% endif %} + + {% if form.type.data == "is_replaced_by" %} +{{ current.bibjson().title }} is continued by…
++ Please provide the new Journal Title and new ISSN(s) that + continue {{ current.bibjson().title }}. Once you submit this form, a new journal record will + be created and you may edit the other associated metadata fields. +
+ {% endif %} ++ {% from "includes/_formhelpers.html" import render_field_horizontal %} + {% from "includes/_formhelpers.html" import render_field %} + + +++ {% if request.values.get("filter") == None %} + Show all + {% else %} + Show all + {% endif %} + + {% if request.values.get("filter") == "na" %} + New Applications + {% else %} + New Applications + {% endif %} + + {% if request.values.get("filter") == "ur" %} + Update Requests + {% else %} + Update Requests + {% endif %} ++ {% include "management/includes/_todo.html" %} ++ {# ~~->$GroupStatus:Feature~~ #} + +{% endblock %} + +{% block admin_js %} + + +{% endblock %} diff --git a/portality/templates-v2/management/admin/editor_group.html b/portality/templates-v2/management/admin/editor_group.html new file mode 100644 index 0000000000..db1b3c6b1b --- /dev/null +++ b/portality/templates-v2/management/admin/editor_group.html @@ -0,0 +1,85 @@ +{% extends "management/admin/base.html" %} + +{% block page_title %}Editor group{% endblock %} + +{% block admin_content %} +Activity
++ + + {# TODO: there’s a bit of a11y work to be done here; we need to indicate which tabs are hidden and which + aren’t using ARIA attributes. #} + {# TODO: the first tab content needs to be shown by default, without a "click to see" message. #} +++ ++++{% endblock %} + +{% block admin_js %} + + +{% endblock %} diff --git a/portality/templates-v2/management/admin/editor_group_search.html b/portality/templates-v2/management/admin/editor_group_search.html new file mode 100644 index 0000000000..d31fc54300 --- /dev/null +++ b/portality/templates-v2/management/admin/editor_group_search.html @@ -0,0 +1,33 @@ +{% extends "management/admin/base.html" %} + +{% block admin_stylesheets %} + {% include "management/includes/_edges_common_css.html" %} + {# FIXME: for some reason this is not in edges common, why is that? #} + +{% endblock %} + +{% block page_title %}Editor groups{% endblock %} + +{% block admin_content %} ++ {% include "includes/_error_header.html" %} + {% from "includes/_formhelpers.html" import render_field_horizontal %} + + ++Editor groups
+ + + + +{% endblock %} + +{% block admin_js %} + + + + {% include "includes/_edges_common_js.html" %} + + +{% endblock %} diff --git a/portality/templates/admin/global_notifications_search.html b/portality/templates-v2/management/admin/global_notifications_search.html similarity index 68% rename from portality/templates/admin/global_notifications_search.html rename to portality/templates-v2/management/admin/global_notifications_search.html index a7b018236c..f748bc745c 100644 --- a/portality/templates/admin/global_notifications_search.html +++ b/portality/templates-v2/management/admin/global_notifications_search.html @@ -1,8 +1,12 @@ -{% extends "admin/admin_base.html" %} +{% extends "management/admin/base.html" %} {# ~~ AdminNotificationsSearch:Page~~ #} {# ~~-> Edges:Technology ~~ #} -{% include "_edges_common_css.html" %} +{% block admin_stylesheets %} + {% include "management/includes/_edges_common_css.html" %} + {# FIXME: for some reason this is not in edges common, why is that? #} + +{% endblock %} {% block page_title %}Notifications{% endblock %} @@ -11,7 +15,7 @@Notifications
{% endblock %} -{% block extra_js_bottom %} +{% block admin_js %} {# ~~-> Edges:Technology ~~ #} - {% include "_edges_common_js.html" %} + {% include "includes/_edges_common_js.html" %} diff --git a/portality/templates/admin/_applications_and_update_requests_common.html b/portality/templates-v2/management/admin/includes/_applications_and_update_requests_common.html similarity index 100% rename from portality/templates/admin/_applications_and_update_requests_common.html rename to portality/templates-v2/management/admin/includes/_applications_and_update_requests_common.html diff --git a/portality/templates/admin/_applications_and_update_requests_common_js.html b/portality/templates-v2/management/admin/includes/_applications_and_update_requests_common_js.html similarity index 69% rename from portality/templates/admin/_applications_and_update_requests_common_js.html rename to portality/templates-v2/management/admin/includes/_applications_and_update_requests_common_js.html index c4c7ddd923..e4c57fe1a7 100644 --- a/portality/templates/admin/_applications_and_update_requests_common_js.html +++ b/portality/templates-v2/management/admin/includes/_applications_and_update_requests_common_js.html @@ -1,2 +1,2 @@ -{% include "_edges_common_js.html" %} +{% include "includes/_edges_common_js.html" %} diff --git a/portality/templates-v2/management/admin/includes/_nav.html b/portality/templates-v2/management/admin/includes/_nav.html new file mode 100644 index 0000000000..88eb542c8e --- /dev/null +++ b/portality/templates-v2/management/admin/includes/_nav.html @@ -0,0 +1,38 @@ +{# ~~ DashboardNav:Fragment ~~ #} + +{% set index = url_for("dashboard.top_todo") %} +{% set journals = url_for("admin.index") %} +{% set applications = url_for("admin.suggestions") %} +{% set update_requests = url_for("admin.update_requests") %} +{% set site_search = url_for("admin.admin_site_search") %} +{% set users = url_for("account.index") %} +{% set editor_groups = url_for("admin.editor_group_search") %} +{% set bg = url_for("admin.background_jobs_search") %} +{% set notifications = url_for("admin.global_notifications_search") %} {# ~~-> AdminNotificationsSearch:Page ~~ #} + +{% set tabs = [ + (index, "Dashboard", "list"), + (journals, "Journals", "book-open"), + (applications, "Applications", "file-text"), + (update_requests, "Update requests", "edit"), + (site_search, "Journals & articles", "search"), + (users, "Users", "user"), + (editor_groups, "Editor groups", "users"), + (bg, "Background jobs", "tool"), + (notifications, "All Notifications", "bell") + ] +%} + + diff --git a/portality/templates-v2/management/admin/journal_locked.html b/portality/templates-v2/management/admin/journal_locked.html new file mode 100644 index 0000000000..b6ca446cb3 --- /dev/null +++ b/portality/templates-v2/management/admin/journal_locked.html @@ -0,0 +1,25 @@ +{% extends "management/admin/base.html" %} + +{% block page_title %}(Locked) {{ journal.bibjson().title }}{% endblock %} + +{% block admin_content %} +++{% endblock %} diff --git a/portality/templates-v2/management/admin/journals_search.html b/portality/templates-v2/management/admin/journals_search.html new file mode 100644 index 0000000000..a2820d4ded --- /dev/null +++ b/portality/templates-v2/management/admin/journals_search.html @@ -0,0 +1,30 @@ +{% extends "management/admin/base.html" %} + +{% block admin_stylesheets %} + {% include "management/includes/_edges_common_css.html" %} + {# FIXME: for some reason this is not in edges common, why is that? #} + +{% endblock %} + +{% block page_title %}Journals{% endblock %} + +{% block admin_content %} +++ ++ Journal —
+ {% if journal.last_updated %} +
+ {{journal.bibjson().title}} +Last updated: {{journal.last_updated}}
+ {% endif %} +++You cannot currently edit this journal
+ +The user {{lock.username}} is currently editing this record, and has an edit-lock until {{lock.expire_formatted()}}
+ +Please try again later!
+Journals
+ + +{% endblock %} + +{% block admin_js %} + + + {% include "includes/_edges_common_js.html" %} + +{% endblock %} diff --git a/portality/templates-v2/management/admin/maned_application.html b/portality/templates-v2/management/admin/maned_application.html new file mode 100644 index 0000000000..0c7bbe8086 --- /dev/null +++ b/portality/templates-v2/management/admin/maned_application.html @@ -0,0 +1,55 @@ +{% extends "management/admin/base.html" %} + +{% set form_id = "maned_form" %} +{% set formulaic_after = url_for("admin.application", application_id=obj.id) %} +{% set form_action = url_for("admin.application", application_id=obj.id) %} + +{% set js_validation = True %} +{% set auto_save = 0 %} +{% set notabs = true %} +{% set diff_table = true %} +{% set quick_reject = true %} + +{% block page_title %}{% if obj.application_type == constants.APPLICATION_TYPE_UPDATE_REQUEST %}Update Request{% else %}Application{% endif %}: {{ obj.bibjson().title }}{% endblock %} +{% block body_id %}apply{% endblock %} + +{% block admin_content scoped %} + {% include "management/_application-form/includes/_editorial_form_body.html" %} + + {% if obj.application_status not in ["accepted", "rejected"] %} + {% set fs = formulaic_context.fieldset("quick_reject") %} +++ {% endif %} +{% endblock %} + +{% block admin_js scoped %} + {% if autochecks %} + + + {% endif %} + {% include "_application-form/includes/_form_js.html" %} + {% if autochecks %} + + {% endif %} +{% endblock %} diff --git a/portality/templates-v2/management/admin/maned_journal.html b/portality/templates-v2/management/admin/maned_journal.html new file mode 100644 index 0000000000..aeb4063ae3 --- /dev/null +++ b/portality/templates-v2/management/admin/maned_journal.html @@ -0,0 +1,101 @@ +{% extends "management/admin/base.html" %} + +{% macro show_cont_list(cont_list, cont_name) %} + {% if cont_list %} + {{ cont_name }} ++++ ++ “{{ fs.label | safe }}” +
+ Close× +{{ obj.id }}
+ ++ {% for issn, jid, title in cont_list %} +
+ {% endif %} +{% endmacro %} + +{% set form_id = "maned_form" %} +{% set formulaic_after = url_for("admin.journal_page", journal_id=obj.id) %} +{% set form_action = url_for("admin.journal_page", journal_id=obj.id) %} + +{% set js_validation = True %} +{% set auto_save = 0 %} +{% set notabs = true %} +{% set diff_table = false %} +{% set quick_reject = false %} +{% set withdrawable = true %} + +{% block page_title %}Journal: {{ obj.bibjson().title }}{% endblock %} +{% block body_id %}apply{% endblock %} + +{% block admin_content scoped %} + {% include "management/_application-form/includes/_editorial_form_body.html" %} + +- + {% if jid %} + + [{{ issn }}]{{ title }} ( {{ jid }} ) + + {% else %} + {{ issn }} ( Related journal not found ) + {% endif %} +
+ {% endfor %} +++{% endblock %} + +{% block admin_js scoped %} + {% if autochecks %} + + + {% endif %} + {% set factory = "journal" %} + {% include "_application-form/includes/_form_js.html" %} + {% if autochecks %} + + {% endif %} +{% endblock %} diff --git a/portality/templates-v2/management/admin/notifications.html b/portality/templates-v2/management/admin/notifications.html new file mode 100644 index 0000000000..57be1dc49d --- /dev/null +++ b/portality/templates-v2/management/admin/notifications.html @@ -0,0 +1,28 @@ +{% extends "management/admin/base.html" %} +{# ~~NotificationsSearch:Page -> Notificaitons:Edge~~ #} + +{% block admin_stylesheets %} + {% include "management/includes/_edges_common_css.html" %} + {# FIXME: for some reason this is not in edges common, why is that? #} + +{% endblock %} + +{% block admin_content %} + +{% endblock %} + +{% block admin_js %} + + + + {% include "includes/_edges_common_js.html" %} + + + +{% endblock %} diff --git a/portality/templates/application_form/readonly_journal.html b/portality/templates-v2/management/admin/readonly_journal.html similarity index 55% rename from portality/templates/application_form/readonly_journal.html rename to portality/templates-v2/management/admin/readonly_journal.html index fe429eea08..4620077ee1 100644 --- a/portality/templates/application_form/readonly_journal.html +++ b/portality/templates-v2/management/admin/readonly_journal.html @@ -1,8 +1,8 @@ -{% extends "layouts/public_base.html" %} +{% extends "management/admin/base.html" %} -{% set formulaic_after = url_for("doaj.journal_readonly", journal_id=obj.id) %} +{% set formulaic_after = url_for("admin.journal_readonly", journal_id=obj.id) %} {% set form_id = "ro_form" %} -{% set form_action = url_for("doaj.journal_readonly", journal_id=obj.id) %} +{% set form_action = url_for("admin.journal_readonly", journal_id=obj.id) %} {% set js_validation = False %} {% set auto_save = 0 %} @@ -17,41 +17,34 @@ {% set FORM = [TAB1, TAB2, TAB3, TAB4, TAB5, TAB6, TAB_ED] %} {% block page_title %}(Read-only) {{ obj.bibjson().title }}{% endblock %} +{% block body_id %}apply{% endblock %} -{% block content scoped %} - +{% block admin_content scoped %}+ {% set action_label = "Withdraw" if obj.is_in_doaj() else "Reinstate" %} + {% set message = "Are you sure you want to " + action_label + " " + obj.id %} + + {% if job %} + {% set action_label = "Withdrawing" if obj.is_in_doaj() else "Reinstating" %} + {% set job_url = "/admin/background_jobs?source=%7B%22query%22%3A%7B%22query_string%22%3A%7B%22query%22%3A%22" + job.id + "%22%2C%22default_operator%22%3A%22AND%22%7D%7D%2C%22sort%22%3A%5B%7B%22created_date%22%3A%7B%22order%22%3A%22desc%22%7D%7D%5D%2C%22from%22%3A0%2C%22size%22%3A25%7D" %} + {% set message = "There is currently a background job " + action_label + " " + obj.id + ". You can view the progress of this job here (opens in new tab). You will get an email when your request has been processed; this could take anything from a few minutes to a few hours." %} + {% endif %} +++ {{ action_label }} +
+{% autoescape off %}{{ message }}{% endautoescape %}
+ + {% if not job %} + + {# withdraw or reinstate only this journal #} + {% set url_name = "admin.journal_deactivate" if obj.is_in_doaj() else "admin.journal_activate" %} + {% set action = url_for(url_name, journal_id=obj.id) %} + + + + {# withdraw or reinstate all continuations #} + {% if obj.is_in_doaj() and ( + obj.bibjson().replaces or obj.bibjson().is_replaced_by + ) %} + ++ {% autoescape off %} + This journal is connected to another/others by a continuation. + Please remember to withdraw all affected records. + {% endautoescape %} +
+ + {{ show_cont_list(past_cont_list, "Older") }} + {{ show_cont_list(future_cont_list, "Newer") }} + + {% endif %} + {% endif %} + +-- {% endblock %} -{% block extra_js_bottom scoped %} +{% block admin_js scoped %} {% set factory = "journal" %} - {% include "application_form/js/_form_js.html" %} + {% include "_application-form/includes/_form_js.html" %} {% endblock %} diff --git a/portality/templates-v2/management/admin/unlocked.html b/portality/templates-v2/management/admin/unlocked.html new file mode 100644 index 0000000000..0b1f3fe31f --- /dev/null +++ b/portality/templates-v2/management/admin/unlocked.html @@ -0,0 +1,8 @@ +{% extends "management/admin/base.html" %} + +{% block page_title %}Unlocked record{% endblock %} +{% block title %}This record is now unlocked{% endblock %} + +{% block admin_content %} ++- -+ class="application_form" + novalidate + action="{{ form_action }}" + method="post" + data-formulaic-after="{{ formulaic_after }}"> + + {% include "_application-form/includes/_public_fieldsets.html" %} + + + {% include "public/_application-form/includes/_review.html" %} ++-- {% include "application_form/aside_menu.html" %} --You may close this tab safely.
+{% endblock %} diff --git a/portality/templates/admin/update_requests.html b/portality/templates-v2/management/admin/update_requests.html similarity index 51% rename from portality/templates/admin/update_requests.html rename to portality/templates-v2/management/admin/update_requests.html index 91bc49e670..36fe314fbc 100644 --- a/portality/templates/admin/update_requests.html +++ b/portality/templates-v2/management/admin/update_requests.html @@ -1,28 +1,32 @@ -{% extends "admin/admin_base.html" %} +{% extends "management/admin/base.html" %} -{% include "_edges_common_css.html" %} +{% block admin_stylesheets %} + {% include "management/includes/_edges_common_css.html" %} + {# FIXME: for some reason this is not in edges common, why is that? #} + +{% endblock %} {% block page_title %}Update requests{% endblock %} {% block admin_content %}Update requests
- {% include "admin/_applications_and_update_requests_common.html" %} + {% include "management/admin/includes/_applications_and_update_requests_common.html" %} {% endblock %} -{% block extra_js_bottom %} +{% block admin_js %} - {% include "admin/_applications_and_update_requests_common_js.html" %} + {% include "management/admin/includes/_applications_and_update_requests_common_js.html" %} {% endblock %} diff --git a/portality/templates-v2/management/base.html b/portality/templates-v2/management/base.html new file mode 100644 index 0000000000..bde4236224 --- /dev/null +++ b/portality/templates-v2/management/base.html @@ -0,0 +1,190 @@ +{% extends "base.html" %} +{# ~~Dashboard:Template~~ #} + +{# we're potentially going need this in a few places in inherited files, so lets just put it here #} +{# ~~-> EditorGroup:Model ~~ #} +{% set managed_groups, maned_assignments = maned_of() %} +{% set editor_of_groups, editor_of_assignments = editor_of() %} +{% set associate_of_groups, associate_of_assignments = associate_of() %} + +{% block base_meta %} + {% block management_meta %}{% endblock %} +{% endblock %} + +{% block base_stylesheets %} + {% block management_stylesheets %}{% endblock %} +{% endblock %} + +{% block body_class %}dashboard{% endblock %} + +{# ~~Dashboard:Template~~ #} +{% block base_content %} + {# global site note #} + {% if config.get("SITE_NOTE_ACTIVE", False) and not request.cookies.get(config.get("SITE_NOTE_KEY")) %} + {% include templates.SITE_NOTE %} + {% endif %} + ++ + + +DOAJ Dashboard
+ + + {% block nav %}{% endblock %} ++ + {% include "includes/_back-to-top.html" %} + +{% endblock %} + +{% block base_js %} + + {% include "_tourist/includes/_tourist.html" %} + + {% block management_js %}{% endblock %} +{% endblock %} + + diff --git a/portality/templates-v2/management/editor/account/edit.html b/portality/templates-v2/management/editor/account/edit.html new file mode 100644 index 0000000000..91e5ff85a5 --- /dev/null +++ b/portality/templates-v2/management/editor/account/edit.html @@ -0,0 +1,22 @@ +{% extends "management/editor/base.html" %} + +{% block page_title %}{{ account.name if account.name else account.email }}’s profile{% endblock %} + +{% block editor_content %} + ++ + {% include "includes/_flash_notification.html" %} + {% block management_content %}{% endblock %} + ++++ + + ++ {% block page_header %} + {{ self.page_title() }} + {% endblock %} +
++ + + + Log out + + + + Settings + + +
+++ +{% endblock %} + +{% block editor_js %} + {% include "_account/includes/_edit_form_js.html" %} +{% endblock %} diff --git a/portality/templates-v2/management/editor/application_locked.html b/portality/templates-v2/management/editor/application_locked.html new file mode 100644 index 0000000000..bace5ee9d8 --- /dev/null +++ b/portality/templates-v2/management/editor/application_locked.html @@ -0,0 +1,25 @@ +{% extends "management/editor/base.html" %} + +{% block page_title %}(Locked) {{ application.bibjson().title }}{% endblock %} + +{% block editor_content %} ++ {% include '_account/includes/_edit_user_form.html' %} ++ ++ {% include "_account/includes/_marketing-consent.html" %} + {% include "_account/includes/_api-access.html" %} ++++{% endblock %} diff --git a/portality/templates/application_form/assed_application.html b/portality/templates-v2/management/editor/assed_application.html similarity index 67% rename from portality/templates/application_form/assed_application.html rename to portality/templates-v2/management/editor/assed_application.html index 5b904d6236..cb4e69eb20 100644 --- a/portality/templates/application_form/assed_application.html +++ b/portality/templates-v2/management/editor/assed_application.html @@ -1,4 +1,4 @@ -{% extends "editor/editor_base.html" %} +{% extends "management/editor/base.html" %} {% set form_id = "assed_form" %} {% set formulaic_after = url_for("editor.application", application_id=obj.id) %} @@ -14,14 +14,10 @@ {% block body_id %}apply{% endblock %} {% block editor_content scoped %} -++ ++ Application for Journal —
+ {% if application.last_updated %} +
+ {{application.bibjson().title}} +Last updated: {{application.last_updated}}
+ {% endif %} +++You cannot currently edit this application
+ +The user {{lock.username}} is currently editing this record, and has an edit-lock until {{lock.expire_formatted()}}
+ +Please try again later!
+{{ obj.bibjson().title }}
-- {% include "application_form/editorial_form_body.html" %} - - -{% include "includes/_hotjar.html" %} +{{ obj.bibjson().title }}
+ {% include "management/_application-form/includes/_editorial_form_body.html" %} {% endblock %} -{% block extra_js_bottom scoped %} - {% include "application_form/js/_form_js.html" %} +{% block editor_js scoped %} + {% include "_application-form/includes/_form_js.html" %} {% endblock %} diff --git a/portality/templates/application_form/assed_journal.html b/portality/templates-v2/management/editor/assed_journal.html similarity index 59% rename from portality/templates/application_form/assed_journal.html rename to portality/templates-v2/management/editor/assed_journal.html index 11fa25edf2..a6ec92f9bf 100644 --- a/portality/templates/application_form/assed_journal.html +++ b/portality/templates-v2/management/editor/assed_journal.html @@ -1,4 +1,6 @@ -{% extends "editor/editor_base.html" %} +{% extends "management/editor/base.html" %} +{# NOTE: this file is not currently used, as editors are not assigned journals, +but we are leaving it in place in case that changes #} {% set form_id = "assed_form" %} {% set formulaic_after = url_for("editor.journal_page", journal_id=obj.id) %} @@ -15,13 +17,11 @@ {% block body_id %}apply{% endblock %} {% block editor_content scoped %} -{{ obj.bibjson().title }}
-- {% include "application_form/editorial_form_body.html" %} - +{{ obj.bibjson().title }}
+ {% include "management/_application-form/includes/_editorial_form_body.html" %} {% endblock %} -{% block extra_js_bottom scoped %} +{% block editor_js scoped %} {% set factory = "journal" %} - {% include "application_form/js/_form_js.html" %} + {% include "_application-form/includes/_form_js.html" %} {% endblock %} diff --git a/portality/templates-v2/management/editor/base.html b/portality/templates-v2/management/editor/base.html new file mode 100644 index 0000000000..728f489ffe --- /dev/null +++ b/portality/templates-v2/management/editor/base.html @@ -0,0 +1,19 @@ +{% extends "management/base.html" %} + +{% block management_stylesheets %} + + {% block editor_stylesheets %}{% endblock %} +{% endblock %} + +{% block nav %} + {% include 'management/editor/includes/_nav.html' %} +{% endblock %} + +{% block management_content %} + {% block editor_content %}{% endblock %} +{% endblock %} + +{% block management_js %} + {% include "includes/_hotjar.html" %} + {% block editor_js %}{% endblock %} +{% endblock %} diff --git a/portality/templates-v2/management/editor/dashboard.html b/portality/templates-v2/management/editor/dashboard.html new file mode 100644 index 0000000000..6c32571a21 --- /dev/null +++ b/portality/templates-v2/management/editor/dashboard.html @@ -0,0 +1,57 @@ +{% extends "management/editor/base.html" %} + +{% block page_title %}Editor Dashboard{% endblock %} + +{% block page_header %} + Hi, {% if current_user.name %}{{ current_user.name }}{% else %} + {{ current_user.id }}{% endif %}! +{% endblock %} + +{% block editor_content %} ++ {% include "management/includes/_todo.html" %} ++{% endblock %} + +{% block editor_js %} + + +{% endblock %} \ No newline at end of file diff --git a/portality/templates/application_form/editor_application.html b/portality/templates-v2/management/editor/editor_application.html similarity index 67% rename from portality/templates/application_form/editor_application.html rename to portality/templates-v2/management/editor/editor_application.html index 6f30c0ffdb..01b1dad841 100644 --- a/portality/templates/application_form/editor_application.html +++ b/portality/templates-v2/management/editor/editor_application.html @@ -1,4 +1,4 @@ -{% extends "editor/editor_base.html" %} +{% extends "management/editor/base.html" %} {% set form_id = "ed_form" %} {% set formulaic_after = url_for("editor.application", application_id=obj.id) %} @@ -14,14 +14,10 @@ {% block body_id %}apply{% endblock %} {% block editor_content scoped %} -+ {# ~~->$GroupStatus:Feature~~ #} + {% if editor_of_groups | length != 0 %} + +Activity
++ + {% endif %} + + {# TODO: there’s a bit of a11y work to be done here; we need to indicate which tabs are hidden and which + aren’t using ARIA attributes. #} + {# TODO: the first tab content needs to be shown by default, without a "click to see" message. #} +++ ++{{ obj.bibjson().title }}
-- {% include "application_form/editorial_form_body.html" %} - - -{% include "includes/_hotjar.html" %} +{{ obj.bibjson().title }}
+ {% include "management/_application-form/includes/_editorial_form_body.html" %} {% endblock %} -{% block extra_js_bottom scoped %} - {% include "application_form/js/_form_js.html" %} +{% block editor_js scoped %} + {% include "_application-form/includes/_form_js.html" %} {% endblock %} diff --git a/portality/templates/application_form/editor_journal.html b/portality/templates-v2/management/editor/editor_journal.html similarity index 58% rename from portality/templates/application_form/editor_journal.html rename to portality/templates-v2/management/editor/editor_journal.html index 0c2c04c72d..42c03d72df 100644 --- a/portality/templates/application_form/editor_journal.html +++ b/portality/templates-v2/management/editor/editor_journal.html @@ -1,5 +1,6 @@ -{% extends "editor/editor_base.html" %} - +{% extends "management/editor/base.html" %} +{# NOTE: this file is not currently used, as editors are not assigned journals, +but we are leaving it in place in case that changes #} {% set form_id = "ed_form" %} {% set formulaic_after = url_for("editor.journal_page", journal_id=obj.id) %} {% set form_action = url_for("editor.journal_page", journal_id=obj.id) %} @@ -15,13 +16,11 @@ {% block body_id %}apply{% endblock %} {% block editor_content scoped %} -{{ obj.bibjson().title }}
-- {% include "application_form/editorial_form_body.html" %} - +{{ obj.bibjson().title }}
+ {% include "management/_application-form/includes/_editorial_form_body.html" %} {% endblock %} -{% block extra_js_bottom scoped %} +{% block editor_js scoped %} {% set factory = "journal" %} - {% include "application_form/js/_form_js.html" %} + {% include "_application-form/includes/_form_js.html" %} {% endblock %} diff --git a/portality/templates/editor/group_applications.html b/portality/templates-v2/management/editor/group_applications.html similarity index 52% rename from portality/templates/editor/group_applications.html rename to portality/templates-v2/management/editor/group_applications.html index bb0bd2053e..73023a28d2 100644 --- a/portality/templates/editor/group_applications.html +++ b/portality/templates-v2/management/editor/group_applications.html @@ -1,24 +1,28 @@ -{% extends "editor/editor_base.html" %} +{% extends "management/editor/base.html" %} -{% include "_edges_common_css.html" %} +{% block editor_stylesheets %} + {% include "management/includes/_edges_common_css.html" %} + {# FIXME: for some reason this is not in edges common, why is that? #} + +{% endblock %} {% block page_title %}Your group’s applications{% endblock %} {% block editor_content %} - + {% endblock %} -{% block extra_js_bottom %} +{% block editor_js %} - {% include "_edges_common_js.html" %} + {% include "includes/_edges_common_js.html" %} {% endblock %} diff --git a/portality/templates/editor/nav.html b/portality/templates-v2/management/editor/includes/_nav.html similarity index 76% rename from portality/templates/editor/nav.html rename to portality/templates-v2/management/editor/includes/_nav.html index 2ab38010b1..2aa7b1e41b 100644 --- a/portality/templates/editor/nav.html +++ b/portality/templates-v2/management/editor/includes/_nav.html @@ -1,15 +1,6 @@ {% set index = url_for("editor.index") %} {% set group_apps = url_for('editor.group_suggestions') %} -{% set group_journals = url_for('editor.group_journals') %} {% set ass_apps = url_for('editor.associate_suggestions') %} -{% set ass_journals = url_for('editor.associate_journals') %} - - -{# -Tabs removed for https://github.com/DOAJ/doajPM/issues/3422 -(ass_journals, "Journals assigned to you", None, "book-open") -(group_journals, "Your group’s journals", "list_group_journals", "book") -#} {% set tabs = [ (index, "Dashboard", None, "list"), diff --git a/portality/templates-v2/management/editor/journal_locked.html b/portality/templates-v2/management/editor/journal_locked.html new file mode 100644 index 0000000000..f362fa636f --- /dev/null +++ b/portality/templates-v2/management/editor/journal_locked.html @@ -0,0 +1,27 @@ +{% extends "management/editor/base.html" %} + +{# NOTE: this file is not currently in use, and the code that calls it is commented out #} + +{% block page_title %}(Locked) {{ journal.bibjson().title }}{% endblock %} + +{% block editor_content %} +++{% endblock %} diff --git a/portality/templates-v2/management/editor/readonly_journal.html b/portality/templates-v2/management/editor/readonly_journal.html new file mode 100644 index 0000000000..ffa0dd9098 --- /dev/null +++ b/portality/templates-v2/management/editor/readonly_journal.html @@ -0,0 +1,50 @@ +{% extends "management/editor/base.html" %} + +{% set formulaic_after = url_for("editor.journal_readonly", journal_id=obj.id) %} +{% set form_id = "ro_form" %} +{% set form_action = url_for("editor.journal_readonly", journal_id=obj.id) %} + +{% set js_validation = False %} +{% set auto_save = 0 %} + +{% set TAB1 = {"title": "Open access compliance", "fieldsets": ["basic_compliance"]} %} +{% set TAB2 = {"title": "About the Journal", "fieldsets": ["about_the_journal", "publisher", "society_or_institution"]} %} +{% set TAB3 = {"title": "Copyright & licensing", "fieldsets": ["licensing", "embedded_licensing", "copyright"]} %} +{% set TAB4 = {"title": "Editorial", "fieldsets": ["peer_review", "plagiarism", "editorial"]} %} +{% set TAB5 = {"title": "Business model", "fieldsets": ["apc", "apc_waivers", "other_fees"]} %} +{% set TAB6 = {"title": "Best practice", "fieldsets": ["archiving_policy", "deposit_policy", "unique_identifiers"]} %} +{% set TAB_ED = {"title": "Admin", "fieldsets": ["subject", "notes"]} %} +{% set FORM = [TAB1, TAB2, TAB3, TAB4, TAB5, TAB6, TAB_ED] %} + +{% block page_title %}(Read-only) {{ obj.bibjson().title }}{% endblock %} +{% block body_id %}apply{% endblock %} + +{% block editor_content scoped %} +++ ++ Journal —
+ {% if journal.last_updated %} +
+ {{journal.bibjson().title}} +Last updated: {{journal.last_updated}}
+ {% endif %} +++You cannot currently edit this journal
+ +The user {{lock.username}} is currently editing this record, and has an edit-lock until {{lock.expire_formatted()}}
+ +Please try again later!
+++{% endblock %} + +{% block editor_js scoped %} + {% set factory = "journal" %} + {% include "_application-form/includes/_form_js.html" %} +{% endblock %} diff --git a/portality/templates-v2/management/editor/unlocked.html b/portality/templates-v2/management/editor/unlocked.html new file mode 100644 index 0000000000..ac1c9902c3 --- /dev/null +++ b/portality/templates-v2/management/editor/unlocked.html @@ -0,0 +1,8 @@ +{% extends "management/editor/base.html" %} + +{% block page_title %}Unlocked record{% endblock %} +{% block title %}This record is now unlocked{% endblock %} + +{% block editor_content %} ++++++ + +You may close this tab safely.
+{% endblock %} diff --git a/portality/templates/editor/associate_applications.html b/portality/templates-v2/management/editor/your_applications.html similarity index 51% rename from portality/templates/editor/associate_applications.html rename to portality/templates-v2/management/editor/your_applications.html index 4b12ca16a1..fc3ea6bfaf 100644 --- a/portality/templates/editor/associate_applications.html +++ b/portality/templates-v2/management/editor/your_applications.html @@ -1,24 +1,28 @@ -{% extends "editor/editor_base.html" %} +{% extends "management/editor/base.html" %} -{% include "_edges_common_css.html" %} +{% block editor_stylesheets %} + {% include "management/includes/_edges_common_css.html" %} + {# FIXME: for some reason this is not in edges common, why is that? #} + +{% endblock %} {% block page_title %}Applications assigned to you{% endblock %} {% block editor_content %} - + {% endblock %} -{% block extra_js_bottom %} +{% block editor_js %} - {% include "_edges_common_js.html" %} + {% include "includes/_edges_common_js.html" %} {% endblock %} diff --git a/portality/templates/_edges_common_css.html b/portality/templates-v2/management/includes/_edges_common_css.html similarity index 100% rename from portality/templates/_edges_common_css.html rename to portality/templates-v2/management/includes/_edges_common_css.html diff --git a/portality/templates/dashboard/_todo.html b/portality/templates-v2/management/includes/_todo.html similarity index 65% rename from portality/templates/dashboard/_todo.html rename to portality/templates-v2/management/includes/_todo.html index 069ba89633..14d29431b2 100644 --- a/portality/templates/dashboard/_todo.html +++ b/portality/templates-v2/management/includes/_todo.html @@ -97,25 +97,25 @@ "link" : url_for('editor.associate_suggestions') } } -%} + %}{% if todos|length == 0 %} \ No newline at end of file + \ No newline at end of file diff --git a/portality/templates-v2/public/400.html b/portality/templates-v2/public/400.html new file mode 100644 index 0000000000..10857594b5 --- /dev/null +++ b/portality/templates-v2/public/400.html @@ -0,0 +1,17 @@ +{% extends "public/layouts/single_col_page.html" %} + +{% block body_class %}error-page{% endblock %} +{% block page_title %}400: Bad request{% endblock %} + +{% block single_col_content %} +-{% endif %}- +
+ {% if current_user.has_role("admin") %} - {% set source = search_query_source( + {% set source = search_query_source( term=[ {"admin.editor.exact" : current_user.id}, {"index.application_type.exact" : "new application"} ], sort=[{"admin.date_applied": {"order": "asc"}}] ) - %} - All priority tasks have been done. Check your queue for more open applications + %} + All priority tasks have been done. Check your queue for more open applications {% elif current_user.has_role("editor") %} {% set source = search_query_source( term=[ @@ -123,7 +123,7 @@ ], sort=[{"admin.date_applied": {"order": "asc"}}] ) - %} + %} All priority tasks have been done. Check your queue for more open applications. If you need more applications to be assigned to your group, contact your Managing Editor. {% elif current_user.has_role("associate_editor") %} {% set source = search_query_source( @@ -132,71 +132,62 @@ ], sort=[{"admin.date_applied": {"order": "asc"}}] ) - %} + %} All priority tasks have been done. Check your queue for more open applications. If you need more to be assigned to you, contact your Editor or Managing Editor. {% endif %} -
+- {% for todo in todos %} - {# TODO only show tasks for this user’s groups #} - {# TODO integrated priority in list display - {{ todo.boost }} - #} - {% set action = TODOS[todo.action_id[0]] %} - {% set app_route = "admin.application" if current_user.has_role("admin") else "editor.application" %} - {% set app_url = url_for(app_route, application_id=todo.object_id) %} - {% set app_date = todo.object.date_applied_timestamp %} -
- {# TODO to be displayed once we implement page listing out all tasks - - #} -- -
+ {% endfor %}- +- - - -+ +-+- - -- {{ todo.title | truncate(25, True) }} -
-+ {% for todo in todos %} + {% set action = TODOS[todo.action_id[0]] %} + {% set app_route = "admin.application" if current_user.has_role("admin") else "editor.application" %} + {% set app_url = url_for(app_route, application_id=todo.object_id) %} + {% set app_date = todo.object.date_applied_timestamp %} ++- +
- {% endfor %} ++ - - -400 —
+
Bad request!Uh-oh! An error has occured. It looks like something has gone wrong.
++ If you are trying to reset your password, the link may have expired.
+
+ Try resetting the password again ++ If you are looking for a specific journal, it might have been withdrawn from the index.
+{% endblock %} diff --git a/portality/templates-v2/public/401.html b/portality/templates-v2/public/401.html new file mode 100644 index 0000000000..797bbfee36 --- /dev/null +++ b/portality/templates-v2/public/401.html @@ -0,0 +1,13 @@ +{% extends "public/layouts/single_col_page.html" %} + +{% block body_class %}error-page{% endblock %} +{% block page_title %}401: Unauthorised{% endblock %} + +{% block single_col_content %} +
+ Contact us +401 —
+
UnauthorisedSorry, you are not authorised to view this page.
++ If you are looking for a specific journal, it might have been withdrawn from the index.
+{% endblock %} diff --git a/portality/templates-v2/public/404.html b/portality/templates-v2/public/404.html new file mode 100644 index 0000000000..6649585782 --- /dev/null +++ b/portality/templates-v2/public/404.html @@ -0,0 +1,17 @@ +{% extends "public/layouts/single_col_page.html" %} + +{% block body_class %}error-page{% endblock %} +{% block page_title %}404: Page not found{% endblock %} + +{% block single_col_content %} +
+ Contact us +404 —
+
Page not found!That didn't work. The content you are looking for may have moved.
++ If you are trying to reset your password, the link may have expired.
+
+ Try resetting the password again ++ If you are looking for a specific journal, it might have been withdrawn from the index.
+{% endblock %} diff --git a/portality/templates-v2/public/500.html b/portality/templates-v2/public/500.html new file mode 100644 index 0000000000..7c94935665 --- /dev/null +++ b/portality/templates-v2/public/500.html @@ -0,0 +1,13 @@ +{% extends "public/layouts/single_col_page.html" %} + +{% block body_class %}error-page{% endblock %} +{% block page_title %}500: Internal server error{% endblock %} + +{% block single_col_content %} +
+ Contact us +500 —
+
Internal server errorAn error has occurred. It looks like something has gone wrong.
++ If you are looking for a specific journal, it might have been withdrawn from the index.
+{% endblock %} diff --git a/portality/templates/application_form/aside_menu.html b/portality/templates-v2/public/_application-form/includes/_aside_menu.html similarity index 94% rename from portality/templates/application_form/aside_menu.html rename to portality/templates-v2/public/_application-form/includes/_aside_menu.html index a1b1422f9a..56feb41a86 100644 --- a/portality/templates/application_form/aside_menu.html +++ b/portality/templates-v2/public/_application-form/includes/_aside_menu.html @@ -1,5 +1,3 @@ -{% block aside_menu %} - - -{% endblock %} diff --git a/portality/templates/application_form/_buttons.html b/portality/templates-v2/public/_application-form/includes/_buttons.html similarity index 100% rename from portality/templates/application_form/_buttons.html rename to portality/templates-v2/public/_application-form/includes/_buttons.html diff --git a/portality/templates-v2/public/_application-form/includes/_pagination_menu.html b/portality/templates-v2/public/_application-form/includes/_pagination_menu.html new file mode 100644 index 0000000000..cbc7ab080c --- /dev/null +++ b/portality/templates-v2/public/_application-form/includes/_pagination_menu.html @@ -0,0 +1,26 @@ + diff --git a/portality/templates-v2/public/_application-form/includes/_review.html b/portality/templates-v2/public/_application-form/includes/_review.html new file mode 100644 index 0000000000..dfd41eb8f0 --- /dev/null +++ b/portality/templates-v2/public/_application-form/includes/_review.html @@ -0,0 +1,23 @@ +{% if not notabs %} +
+ Contact us +← Back
+Page 7 of {{ FORM | length + 1}}
+{% endif %} + +{% set t = { "val": 0} %} +{% if obj %} + +{% else %} + +{% endif %} + ++ {# JS fills in this gap #} +
+
+ +{% if formulaic_context.name == "public" or formulaic_context.name == "update_request" %} ++ + ++{% endif %} diff --git a/portality/templates-v2/public/account/edit.html b/portality/templates-v2/public/account/edit.html new file mode 100644 index 0000000000..c6b808964e --- /dev/null +++ b/portality/templates-v2/public/account/edit.html @@ -0,0 +1,22 @@ +{% extends "public/base.html" %} + +{% block page_title %}{{ account.name if account.name else account.email }}’s profile{% endblock %} + +{% block public_content %} ++ +{% endblock %} + +{% block public_js %} + {% include "_account/includes/_edit_form_js.html" %} +{% endblock %} diff --git a/portality/templates/account/forgot.html b/portality/templates-v2/public/account/forgot.html similarity index 94% rename from portality/templates/account/forgot.html rename to portality/templates-v2/public/account/forgot.html index d8f5e9c837..ad81ec5436 100644 --- a/portality/templates/account/forgot.html +++ b/portality/templates-v2/public/account/forgot.html @@ -1,8 +1,8 @@ -{% extends "layouts/public_base.html" %} +{% extends "public/base.html" %} {% block page_title %}Reset your password{% endblock %} -{% block content %} +{% block public_content %}+++ {% include '_account/includes/_edit_user_form.html' %} ++ ++ {% include "_account/includes/_marketing-consent.html" %} + {% include "_account/includes/_api-access.html" %} ++diff --git a/portality/templates/doaj/includes/_journal_meta_description.html b/portality/templates-v2/public/includes/_journal_meta_description.html similarity index 100% rename from portality/templates/doaj/includes/_journal_meta_description.html rename to portality/templates-v2/public/includes/_journal_meta_description.html diff --git a/portality/templates/doaj/includes/_journal_meta_title.html b/portality/templates-v2/public/includes/_journal_meta_title.html similarity index 100% rename from portality/templates/doaj/includes/_journal_meta_title.html rename to portality/templates-v2/public/includes/_journal_meta_title.html diff --git a/portality/templates/includes/menu-items.html b/portality/templates-v2/public/includes/_menu-items.html similarity index 100% rename from portality/templates/includes/menu-items.html rename to portality/templates-v2/public/includes/_menu-items.html diff --git a/portality/templates/includes/_nav_modals.html b/portality/templates-v2/public/includes/_nav_modals.html similarity index 100% rename from portality/templates/includes/_nav_modals.html rename to portality/templates-v2/public/includes/_nav_modals.html diff --git a/portality/templates/data/publisher-supporters.html b/portality/templates-v2/public/includes/_publisher-supporters.html similarity index 100% rename from portality/templates/data/publisher-supporters.html rename to portality/templates-v2/public/includes/_publisher-supporters.html diff --git a/portality/templates/includes/_quick_search_modal.html b/portality/templates-v2/public/includes/_quick_search_modal.html similarity index 100% rename from portality/templates/includes/_quick_search_modal.html rename to portality/templates-v2/public/includes/_quick_search_modal.html diff --git a/portality/templates/includes/search-help-modal.html b/portality/templates-v2/public/includes/_search-help-modal.html similarity index 100% rename from portality/templates/includes/search-help-modal.html rename to portality/templates-v2/public/includes/_search-help-modal.html diff --git a/portality/templates/includes/_sidenav_toc.html b/portality/templates-v2/public/includes/_sidenav_toc.html similarity index 100% rename from portality/templates/includes/_sidenav_toc.html rename to portality/templates-v2/public/includes/_sidenav_toc.html diff --git a/portality/templates/data/sponsors.html b/portality/templates-v2/public/includes/_sponsors.html similarity index 100% rename from portality/templates/data/sponsors.html rename to portality/templates-v2/public/includes/_sponsors.html diff --git a/portality/templates/data/team.html b/portality/templates-v2/public/includes/_team.html similarity index 100% rename from portality/templates/data/team.html rename to portality/templates-v2/public/includes/_team.html diff --git a/portality/templates/data/volunteers.html b/portality/templates-v2/public/includes/_volunteers.html similarity index 100% rename from portality/templates/data/volunteers.html rename to portality/templates-v2/public/includes/_volunteers.html diff --git a/portality/templates-v2/public/includes/_wechat_modal.html b/portality/templates-v2/public/includes/_wechat_modal.html new file mode 100644 index 0000000000..2e4ed6ec01 --- /dev/null +++ b/portality/templates-v2/public/includes/_wechat_modal.html @@ -0,0 +1,12 @@ +{# WeChat QR code modal #} + diff --git a/portality/templates/account/login.html b/portality/templates-v2/public/account/login.html similarity index 84% rename from portality/templates/account/login.html rename to portality/templates-v2/public/account/login.html index 726831e9e3..414aff77cc 100644 --- a/portality/templates/account/login.html +++ b/portality/templates-v2/public/account/login.html @@ -1,8 +1,8 @@ -{% extends "layouts/public_base.html" %} +{% extends "public/base.html" %} {% block page_title %}Login to your account{% endblock %} -{% block content %} +{% block public_content %}\ No newline at end of file diff --git a/portality/templates/includes/footer.html b/portality/templates-v2/public/includes/_footer.html similarity index 92% rename from portality/templates/includes/footer.html rename to portality/templates-v2/public/includes/_footer.html index 82a08817a7..086dd047e4 100644 --- a/portality/templates/includes/footer.html +++ b/portality/templates-v2/public/includes/_footer.html @@ -1,4 +1,4 @@ -{% include "includes/_nav_modals.html" %} +{% include "public/includes/_nav_modals.html" %}diff --git a/portality/templates/account/login_to_apply.html b/portality/templates-v2/public/account/login_to_apply.html similarity index 94% rename from portality/templates/account/login_to_apply.html rename to portality/templates-v2/public/account/login_to_apply.html index 6c5e7d879b..939e1f744c 100644 --- a/portality/templates/account/login_to_apply.html +++ b/portality/templates-v2/public/account/login_to_apply.html @@ -1,8 +1,8 @@ -{% extends "layouts/public_base.html" %} +{% extends "public/base.html" %} {% block page_title %}Login to apply{% endblock %} -{% block content %} +{% block public_content %} @@ -12,7 +12,7 @@Login
You only need an account if you have a journal in DOAJ or you are a volunteer.
- {% include "account/_login_form.html" %} + {% include "_account/includes/_login_form.html" %}If you cannot log in, reset your password. If you still cannot login, contact us.
{% endblock %} -{% block extra_js_bottom %} +{% block public_js %} diff --git a/portality/templates/api/v4/extra_docs.html b/portality/templates-v2/public/api/v4/includes/_extra_docs.html similarity index 100% rename from portality/templates/api/v4/extra_docs.html rename to portality/templates-v2/public/api/v4/includes/_extra_docs.html diff --git a/portality/templates/api/v4/sidenav.html b/portality/templates-v2/public/api/v4/includes/_sidenav.html similarity index 100% rename from portality/templates/api/v4/sidenav.html rename to portality/templates-v2/public/api/v4/includes/_sidenav.html diff --git a/portality/templates/doaj/article.html b/portality/templates-v2/public/article.html similarity index 93% rename from portality/templates/doaj/article.html rename to portality/templates-v2/public/article.html index b1fc9caf4a..e853224192 100644 --- a/portality/templates/doaj/article.html +++ b/portality/templates-v2/public/article.html @@ -1,15 +1,15 @@ -{% extends "layouts/public_base.html" %} +{% extends "public/base.html" %} -{% block body_class %}article-details{% endblock %} +{% block page_title %}{% include "public/includes/_article_meta_title.html" %}{% endblock %} + +{% block meta_og_title %}{% include "public/includes/_article_meta_title.html" %}{% endblock %} +{% block meta_twitter_title %}{% include "public/includes/_article_meta_title.html" %}{% endblock %} -{% block page_title %}{% include "doaj/includes/_article_meta_title.html" %}{% endblock %} -{% block meta_og_title %}{% include "doaj/includes/_article_meta_title.html" %}{% endblock %} -{% block meta_twitter_title %}{% include "doaj/includes/_article_meta_title.html" %}{% endblock %} -{%- block meta_description -%}{% include "doaj/includes/_article_meta_description.html" %}{%- endblock -%} -{%- block meta_og_description -%}{% include "doaj/includes/_article_meta_description.html" %}{%- endblock -%} -{%- block meta_twitter_description -%}{% include "doaj/includes/_article_meta_description.html" %}{%- endblock -%} +{%- block meta_description -%}{% include "public/includes/_article_meta_description.html" %}{%- endblock -%} +{%- block meta_og_description -%}{% include "public/includes/_article_meta_description.html" %}{%- endblock -%} +{%- block meta_twitter_description -%}{% include "public/includes/_article_meta_description.html" %}{%- endblock -%} -{% block extra_meta_tags %} +{% block public_meta %} {% set bibjson = article.bibjson() %} {% set jbib = journal.bibjson() %} {% set jtitle, cite = bibjson.vancouver_citation() %} @@ -51,7 +51,9 @@ {% endfor %} {% endblock %} -{% block content %} +{% block body_class %}article-details{% endblock %} + +{% block public_content %} {% set TYN = { diff --git a/portality/templates/doaj/articles_search.html b/portality/templates-v2/public/articles_search.html similarity index 77% rename from portality/templates/doaj/articles_search.html rename to portality/templates-v2/public/articles_search.html index 4a518fb3ae..393cadff52 100644 --- a/portality/templates/doaj/articles_search.html +++ b/portality/templates-v2/public/articles_search.html @@ -1,6 +1,4 @@ -{% extends "layouts/public_base.html" %} - -{% block body_attrs %}class="search"{% endblock %} +{% extends "public/base.html" %} {% block page_title %}Articles{% endblock %} {% block meta_og_title %}Articles{% endblock %} @@ -9,14 +7,14 @@ {%- block meta_og_description -%}Find open access articles in DOAJ.{%- endblock -%} {%- block meta_twitter_description -%}Find open access articles in DOAJ.{%- endblock -%} -{% block content %} +{% block public_content %}{% endblock %} -{% block extra_js_bottom %} +{% block public_js %} {% if current_user.is_authenticated and current_user.has_role("create_user") %} - - + + + {% endif %} -{% endif %} {% if config.get("RECAPTCHA_ENABLE") %} - - - + + + {% endif %} {% endblock %} diff --git a/portality/templates/account/reset.html b/portality/templates-v2/public/account/reset.html similarity index 80% rename from portality/templates/account/reset.html rename to portality/templates-v2/public/account/reset.html index fdacc27620..cf7e15b120 100644 --- a/portality/templates/account/reset.html +++ b/portality/templates-v2/public/account/reset.html @@ -1,8 +1,8 @@ -{% extends "layouts/public_base.html" %} +{% extends "public/base.html" %} {% block page_title %}Reset your password{% endblock %} -{% block content %} +{% block public_content %}@@ -20,7 +20,7 @@diff --git a/portality/templates/account/register.html b/portality/templates-v2/public/account/register.html similarity index 58% rename from portality/templates/account/register.html rename to portality/templates-v2/public/account/register.html index a497bd396a..579777747e 100644 --- a/portality/templates/account/register.html +++ b/portality/templates-v2/public/account/register.html @@ -1,8 +1,8 @@ -{% extends "layouts/public_base.html" %} +{% extends "public/base.html" %} {% block page_title %}Register{% endblock %} -{% block extra_stylesheets %} +{% block public_stylesheets %} {% endblock %} -{% block content %} +{% block public_content %}Application form
Log in to your account
→ Don’t have an account? Register here.
- {% include "account/_login_form.html" %} + {% include "_account/includes/_login_form.html" %}If you cannot log in, reset your password. If you still cannot login, contact us.
@@ -33,19 +33,19 @@ @@ -25,7 +25,7 @@Register
{% endif %}- {% include "account/_register_form.html" %} + {% include "_account/includes/_register_form.html" %}If you have difficulty registering, contact us.
Register
{% endblock %} -{% block extra_js_bottom %} +{% block public_js %} diff --git a/portality/templates/api/v3/extra_docs.html b/portality/templates-v2/public/api/v3/includes/_extra_docs.html similarity index 100% rename from portality/templates/api/v3/extra_docs.html rename to portality/templates-v2/public/api/v3/includes/_extra_docs.html diff --git a/portality/templates/api/v3/sidenav.html b/portality/templates-v2/public/api/v3/includes/_sidenav.html similarity index 100% rename from portality/templates/api/v3/sidenav.html rename to portality/templates-v2/public/api/v3/includes/_sidenav.html diff --git a/portality/templates/api/v4/api_docs.html b/portality/templates-v2/public/api/v4/api_docs.html similarity index 92% rename from portality/templates/api/v4/api_docs.html rename to portality/templates-v2/public/api/v4/api_docs.html index a90016d56d..1e0a453bb9 100644 --- a/portality/templates/api/v4/api_docs.html +++ b/portality/templates-v2/public/api/v4/api_docs.html @@ -1,15 +1,15 @@ -{% extends "layouts/public_base.html" %} +{% extends "public/base.html" %} {% block page_title %}API{% endblock %} -{% block extra_stylesheets %} +{% block public_stylesheets %} {% endblock %} -{% block content %} +{% block public_content %}@@ -13,7 +13,7 @@ Hi {{ account.name or account.email }}
Please set your new password.
- {% include "account/_reset_form.html" %} + {% include "_account/includes/_reset_form.html" %}If you have any difficulties with your account, please contact us.
diff --git a/portality/templates/api/includes/swagger_description.html b/portality/templates-v2/public/api/includes/_swagger_description.html similarity index 100% rename from portality/templates/api/includes/swagger_description.html rename to portality/templates-v2/public/api/includes/_swagger_description.html diff --git a/portality/templates/api/includes/_version-history.html b/portality/templates-v2/public/api/includes/_version-history.html similarity index 100% rename from portality/templates/api/includes/_version-history.html rename to portality/templates-v2/public/api/includes/_version-history.html diff --git a/portality/templates/api/v3/api_docs.html b/portality/templates-v2/public/api/v3/api_docs.html similarity index 86% rename from portality/templates/api/v3/api_docs.html rename to portality/templates-v2/public/api/v3/api_docs.html index fc95ca6569..363d54c0b3 100644 --- a/portality/templates/api/v3/api_docs.html +++ b/portality/templates-v2/public/api/v3/api_docs.html @@ -1,15 +1,15 @@ -{% extends "layouts/public_base.html" %} +{% extends "public/base.html" %} {% block page_title %}API{% endblock %} -{% block extra_stylesheets %} +{% block public_stylesheets %} {% endblock %} -{% block content %} +{% block public_content %}@@ -21,23 +21,23 @@- {% include "api/includes/swagger_description.html" %} + {% include "public/api/includes/_swagger_description.html" %}API
A new version of the API is available here. You should review the release notes and migration instructions as soon as possible.
Full API reference
- {% include "api/v3/extra_docs.html" %} - {% include "api/includes/_version-history.html" %} + {% include "public/api/v3/includes/_extra_docs.html" %} + {% include "public/api/includes/_version-history.html" %}- {% include "api/v3/sidenav.html" %} + {% include "public/api/v3/includes/_sidenav.html" %}@@ -46,23 +46,23 @@- {% include "api/includes/swagger_description.html" %} + {% include "public/api/includes/_swagger_description.html" %}Timeline
Please get in touch if you have any questions.
Full API reference
- {% include "api/v4/extra_docs.html" %} - {% include "api/includes/_version-history.html" %} + {% include "public/api/v4/includes/_extra_docs.html" %} + {% include "public/api/includes/_version-history.html" %}- {% include "api/v4/sidenav.html" %} + {% include "public/api/v4/includes/_sidenav.html" %}- {% include "includes/search-help-modal.html" %} + {% include "public/includes/_search-help-modal.html" %}{% endblock %} -{% block extra_js_bottom %} +{% block public_js %} - {% include "_edges_common_js.html" %} + {% include "includes/_edges_common_js.html" %} -{% endblock extra_js_bottom %} +{% endblock %} diff --git a/portality/templates-v2/public/base.html b/portality/templates-v2/public/base.html new file mode 100644 index 0000000000..3802ef461c --- /dev/null +++ b/portality/templates-v2/public/base.html @@ -0,0 +1,63 @@ +{% extends "base.html" %} + +{% block base_meta %} + + + + + + + + + + + + + + + + + + + {% block public_meta %}{% endblock %} +{% endblock %} + +{% block base_stylesheets %} + {% block public_stylesheets %}{% endblock %} +{% endblock %} + +{% block base_content %} + + + ++ {% include "public/includes/_header.html" %} + + + {% include "public/includes/_quick_search_modal.html" %} + + {# global site note #} + {% if config.get("SITE_NOTE_ACTIVE", False) and not request.cookies.get(config.get("SITE_NOTE_KEY")) %} +{% include "includes/_flash_notification.html" %}+ {% block extra_header %}{% endblock %} +++ {% endif %} + ++++ {% include templates.SITE_NOTE %} +++ {% block public_content %}{% endblock %} + + + {% include "public/includes/_footer.html" %} + +{% endblock %} + +{% block base_js %} + {% block public_js %}{% endblock %} +{% endblock %} + diff --git a/portality/templates/data/advisory-board-council.html b/portality/templates-v2/public/includes/_advisory-board-council.html similarity index 100% rename from portality/templates/data/advisory-board-council.html rename to portality/templates-v2/public/includes/_advisory-board-council.html diff --git a/portality/templates/data/ambassadors.html b/portality/templates-v2/public/includes/_ambassadors.html similarity index 100% rename from portality/templates/data/ambassadors.html rename to portality/templates-v2/public/includes/_ambassadors.html diff --git a/portality/templates/doaj/includes/_article_meta_description.html b/portality/templates-v2/public/includes/_article_meta_description.html similarity index 100% rename from portality/templates/doaj/includes/_article_meta_description.html rename to portality/templates-v2/public/includes/_article_meta_description.html diff --git a/portality/templates/doaj/includes/_article_meta_title.html b/portality/templates-v2/public/includes/_article_meta_title.html similarity index 100% rename from portality/templates/doaj/includes/_article_meta_title.html rename to portality/templates-v2/public/includes/_article_meta_title.html diff --git a/portality/templates/includes/_aside_in_case_of_rejection.html b/portality/templates-v2/public/includes/_aside_in_case_of_rejection.html similarity index 100% rename from portality/templates/includes/_aside_in_case_of_rejection.html rename to portality/templates-v2/public/includes/_aside_in_case_of_rejection.html diff --git a/portality/templates/includes/footer-column.html b/portality/templates-v2/public/includes/_footer-column.html similarity index 77% rename from portality/templates/includes/footer-column.html rename to portality/templates-v2/public/includes/_footer-column.html index 1ef4307c82..06f07f0cd0 100644 --- a/portality/templates/includes/footer-column.html +++ b/portality/templates-v2/public/includes/_footer-column.html @@ -4,6 +4,6 @@{{ entry.label }}
- {% include "includes/menu-items.html" %} + {% include "public/includes/_menu-items.html" %}
+diff --git a/portality/templates-v2/public/index.html b/portality/templates-v2/public/index.html new file mode 100644 index 0000000000..89b61a4d5a --- /dev/null +++ b/portality/templates-v2/public/index.html @@ -0,0 +1,254 @@ +{% extends "public/base.html" %} + +{% block body_class %}homepage{% endblock %} + +{% block extra_header %} ++++ WeChat QR code +
+ ++ ++++ +{% endblock %} + +{% block public_content %} ++ +++Directory of Open Access Journals
+Find open access journals & articles.
+ + ++ +DOAJ in numbers
++ 80 + languages +
++ {{ statistics.countries }} + countries represented +
++ {% set source = search_query_source(term=[{"bibjson.apc.has_apc":False},{"bibjson.other_charges.has_other_charges":False}]) %} + + {{ statistics.no_apc }} + journals without APCs + +
+ + ++ ++ +{% endblock %} diff --git a/portality/templates/doaj/journals_search.html b/portality/templates-v2/public/journals_search.html similarity index 77% rename from portality/templates/doaj/journals_search.html rename to portality/templates-v2/public/journals_search.html index 8eef0d2c63..cc83c3d5d3 100644 --- a/portality/templates/doaj/journals_search.html +++ b/portality/templates-v2/public/journals_search.html @@ -1,6 +1,4 @@ -{% extends "layouts/public_base.html" %} - -{% block body_attrs %}class="search"{% endblock %} +{% extends "public/base.html" %} {% block page_title %}Journals{% endblock %} {% block meta_og_title %}Journals{% endblock %} @@ -9,14 +7,14 @@ {%- block meta_og_description -%}Find open access journals in DOAJ.{%- endblock -%} {%- block meta_twitter_description -%}Find open access journals in DOAJ.{%- endblock -%} -{% block content %} +{% block public_content %}+ + + ++++++ + +About the directory
+DOAJ is a unique and extensive index of diverse open access journals from around the world, driven by a growing community, and is committed to ensuring quality content is freely available online for everyone.
+DOAJ is committed to keeping its services free of charge, including being indexed, and its data freely available.
+ + ++ Apply now +
+DOAJ is twenty years old in 2023.
+ ++ +Funding
++ DOAJ is independent. All support is via donations. +
++++ 82% + + from academic organisations + +
++ 18% + + from contributors + +
++ Support DOAJ +
++ Publishers don't need to donate to be part of DOAJ. +
++ + + +++News Service
+ ++ {# Latest posts #} + {% for n in news %} ++ + + + {# TODO: we don't have the mechanics for special themed posts yet + ++ + + + {% endfor %} +{{ n.title|safe }}
+ ++ + #} +Special post series: Myth busting
+ ++ + + ++++ + +Volunteers
+We would not be able to work without our volunteers, such as these top-performing editors and associate editors.
+ ++ {% for volunteer in data.volunteers.ed %} + {% if volunteer.featured == true %} +++ {# TODO: Still need volunteer photos + #} + + {% endif %} + {% endfor %} + {% for volunteer in data.volunteers.ass_ed %} + {% if volunteer.featured == true %} +{{ volunteer.area }}
+{{ volunteer.name }}
+{{ volunteer.city }}, {{ volunteer.country }} ({{ volunteer.language }})
++ {# TODO: Still need volunteer photos + #} + + {% endif %} + {% endfor %} +{{ volunteer.area }}
+{{ volunteer.name }}
+{{ volunteer.city }}, {{ volunteer.country }} ({{ volunteer.language }})
++ ++++++ ++++ +Recently-added journals
+DOAJ’s team of managing editors, editors, and volunteers work with publishers to index new journals. As soon as they’re accepted, these journals are displayed on our website freely accessible to everyone.
+ {# TODO: Make sure these links work #} + + + ++++ {% for r in recent_journals %} + {% if r.bibjson().get_preferred_issn() %} +
+- + {{ r.bibjson().title }} +
+ {% endif %} + {% endfor %} +- {% include "includes/search-help-modal.html" %} + {% include "public/includes/_search-help-modal.html" %}{% endblock %} -{% block extra_js_bottom %} +{% block public_js %} - {% include "_edges_common_js.html" %} + {% include "includes/_edges_common_js.html" %} -{% endblock extra_js_bottom %} +{% endblock %} diff --git a/portality/templates/layouts/no-sidenav.html b/portality/templates-v2/public/layouts/_static-page_no-sidenav.html similarity index 100% rename from portality/templates/layouts/no-sidenav.html rename to portality/templates-v2/public/layouts/_static-page_no-sidenav.html diff --git a/portality/templates/layouts/sidenav.html b/portality/templates-v2/public/layouts/_static-page_sidenav.html similarity index 96% rename from portality/templates/layouts/sidenav.html rename to portality/templates-v2/public/layouts/_static-page_sidenav.html index fba33badf5..2d3afe60e6 100644 --- a/portality/templates/layouts/sidenav.html +++ b/portality/templates-v2/public/layouts/_static-page_sidenav.html @@ -1,4 +1,3 @@ - @@ -21,7 +20,7 @@{{ page.title }}
{% if page.toc %} {% else %} {% if page.sidenav_include %} diff --git a/portality/templates/layouts/single_col_page.html b/portality/templates-v2/public/layouts/single_col_page.html similarity index 61% rename from portality/templates/layouts/single_col_page.html rename to portality/templates-v2/public/layouts/single_col_page.html index a8bc801cf0..1a4ccd4513 100644 --- a/portality/templates/layouts/single_col_page.html +++ b/portality/templates-v2/public/layouts/single_col_page.html @@ -1,10 +1,8 @@ -{% extends "layouts/public_base.html" %} +{% extends "public/base.html" %} -{% block content %} +{% block public_content %}diff --git a/portality/templates/layouts/static_page.html b/portality/templates-v2/public/layouts/static-page.html similarity index 78% rename from portality/templates/layouts/static_page.html rename to portality/templates-v2/public/layouts/static-page.html index c6012b4b58..7d6aa622e9 100644 --- a/portality/templates/layouts/static_page.html +++ b/portality/templates-v2/public/layouts/static-page.html @@ -1,13 +1,17 @@ -{% extends "layouts/public_base.html" %} +{% extends "public/base.html" %} {% set page = data.frontmatter[page_frag] %} {% block page_title %}{{ page.title }}{% endblock %} +{% block meta_og_title %}{{ page.title }}{% endblock %} +{% block meta_twitter_title %}{{ page.title }}{% endblock %} {% if page.meta_description %} {% block meta_description %}{{ page.meta_description }}{% endblock %} + {% block meta_og_description %}{{ page.meta_description }}{% endblock %} + {% block meta_twitter_description %}{{ page.meta_description }}{% endblock %} {% endif %} -{% block content %} +{% block public_content %} {# content editing buttons for admins #} {% if not current_user.is_anonymous and current_user.has_role("admin") %} Edit text content @@ -23,7 +27,7 @@ {% endif %} {% if page.layout %} - {% set inc = "layouts/" + page.layout + ".html" %} + {% set inc = templates.STATIC_PAGE_LAYOUT.format(layout=page.layout) %} {% include inc %} {% else %} {% include page.frag %} diff --git a/portality/templates/layouts/toc_base.html b/portality/templates-v2/public/layouts/toc.html similarity index 70% rename from portality/templates/layouts/toc_base.html rename to portality/templates-v2/public/layouts/toc.html index ef69f847cd..44abe4938a 100644 --- a/portality/templates/layouts/toc_base.html +++ b/portality/templates-v2/public/layouts/toc.html @@ -1,37 +1,36 @@ -{% extends "layouts/public_base.html" %} +{% extends "public/base.html" %} -{% block body_class %} - journal-details -{% endblock %} - -{% block page_title %}{% include "doaj/includes/_journal_meta_title.html" %}{% endblock %} -{% block meta_og_title %}{% include "doaj/includes/_journal_meta_title.html" %}{% endblock %} -{% block meta_twitter_title %}{% include "doaj/includes/_journal_meta_title.html" %}{% endblock %} -{%- block meta_description -%}{% include "doaj/includes/_journal_meta_description.html" %}{%- endblock -%} -{%- block meta_og_description -%}{% include "doaj/includes/_journal_meta_description.html" %}{%- endblock -%} -{%- block meta_twitter_description -%}{% include "doaj/includes/_journal_meta_description.html" %}{%- endblock -%} +{% block body_class %}journal-details{% endblock %} -{% block content %} +{% block page_title %}{% include "public/includes/_journal_meta_title.html" %}{% endblock %} +{% block meta_og_title %}{% include "public/includes/_journal_meta_title.html" %}{% endblock %} +{% block meta_twitter_title %}{% include "public/includes/_journal_meta_title.html" %}{% endblock %} +{%- block meta_description -%}{% include "public/includes/_journal_meta_description.html" %}{%- endblock -%} +{%- block meta_og_description -%}{% include "public/includes/_journal_meta_description.html" %}{%- endblock -%} +{%- block meta_twitter_description -%}{% include "public/includes/_journal_meta_description.html" %}{%- endblock -%} +{% block public_content %}- {% block title %}{% endblock %}
- {% block single_col_content %}{% endblock %}{% if not current_user.is_anonymous and current_user.has_role("admin") %} - Edit this journal + Edit + this journal {% endif %} {% if journal.last_manually_updated_since(days=30) %} - - Updated recently - + + Updated recently + {% endif %} + - - {{ bibjson.title }} - {% if bibjson.alternative_title %} - + - {% endif %} - + {{ bibjson.title }} + {% if bibjson.alternative_title %} + {%- set seal = journal.has_seal() -%} {%- if seal -%} + {% endif %} +
+@@ -42,12 +41,13 @@{%- endif %}
- - {# this next bit has to be all on one line so that the spacing is correct #} - {% if bibjson.pissn %}{{ bibjson.pissn }} (Print){% endif %}{% if bibjson.eissn %} - {% if bibjson.pissn %} / {% endif %}{{ bibjson.eissn }} (Online){% endif %} + + {# this next bit has to be all on one line so that the spacing is correct #} + {% if bibjson.pissn %}{{ bibjson.pissn }} (Print){% endif %}{% if bibjson.eissn %} + {% if bibjson.pissn %} / {% endif %}{{ bibjson.eissn }} (Online){% endif %}
@@ -117,14 +117,14 @@
{% set _url =url_for('doaj.toc', identifier=journal.toc_id) %} + aria-selected="{{ 'true' if tab=="main" else 'false' }}"> About {% set _url =url_for('doaj.toc_articles', identifier=journal.toc_id) %} + aria-selected="{{ 'true' if tab=="articles" else 'false' }}"> Articles @@ -139,8 +139,7 @@