
[GIT] Evergreen ILS branch main updated. 816692fd3a50131d7857c5d47786fd73bdbb0e50
by Git User 08 Apr '25
by Git User 08 Apr '25
08 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, main has been updated
via 816692fd3a50131d7857c5d47786fd73bdbb0e50 (commit)
from d81515428da33041f070bbe6f9427692f671c58e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 816692fd3a50131d7857c5d47786fd73bdbb0e50
Author: IanSkelskey <ianskelskey(a)gmail.com>
Date: Thu Apr 3 14:56:13 2025 -0700
Resolves LP#2106488 Docs
Add tt2 syntax highlighting and fix various documentation issues
- Added `tt2` syntax highlighting to appropriate code blocks across multiple files.
- Escaped `{2}` and `{4}` in regex string examples in the library settings document to prevent Antora from interpreting them as attributes.
- Left a commented-out reference to `modules/course/nav.adoc` for further review, as the file does not exist.
- Fixed incomplete rows in tables within the reporter template terminology page.
- Corrected duplicate level 1 headings in the reports security IDL document.
Release-Note: Added `tt2` syntax highlighting to appropriate code blocks across multiple files.
Signed-off-by: IanSkelskey <ianskelskey(a)gmail.com>
Signed-off-by: Gina Monti <gmonti(a)biblio.org>
diff --git a/docs/antora.yml b/docs/antora.yml
index a050c6d9a5..a728dbe693 100644
--- a/docs/antora.yml
+++ b/docs/antora.yml
@@ -14,7 +14,7 @@ nav:
- modules/serials/nav.adoc
- modules/circulation/nav.adoc
- modules/reports/nav.adoc
-- modules/course/nav.adoc
+# - modules/course/nav.adoc
- modules/opac/nav.adoc
- modules/course_materials/nav.adoc
- modules/integrations/nav.adoc
diff --git a/docs/modules/admin/pages/apache_rewrite_tricks.adoc b/docs/modules/admin/pages/apache_rewrite_tricks.adoc
index 4b775d8970..7f0cb01fff 100644
--- a/docs/modules/admin/pages/apache_rewrite_tricks.adoc
+++ b/docs/modules/admin/pages/apache_rewrite_tricks.adoc
@@ -44,7 +44,7 @@ Variables. From within Template Toolkit templates you can access environment
variables with the ENV object.
.Template Toolkit ENV example, link library name/url if set
-[source,html]
+[source,tt2]
----
[% IF ENV.eglibname && ENV.egliburl %]<a href="[% ENV.egliburl %]">[% ENV.eglibname %]</a>[% END %]
----
diff --git a/docs/modules/admin/pages/librarysettings.adoc b/docs/modules/admin/pages/librarysettings.adoc
index 1961dc2bd4..217f4e51a2 100644
--- a/docs/modules/admin/pages/librarysettings.adoc
+++ b/docs/modules/admin/pages/librarysettings.adoc
@@ -6,7 +6,7 @@
With the *Library Settings Editor* one can optionally customize
Evergreen's behavior for a particular library or library system. For
-descriptions of available settings see the xref:#settings_overview[Settings Overview] table below.
+descriptions of available settings see the xref:#_settings_overview[Settings Overview] table below.
== Editing Library Settings ==
@@ -32,7 +32,7 @@ You can revert back to an old value by clicking *revert*.
image::library_settings/history_lib_setting.png[Library Setting History]
NOTE: Please note that different settings may require different data
-formats, which are listed in the xref:#settings_overview[Settings Overview] table. Refer to the xref:#data_types[Data Types] table at the
+formats, which are listed in the xref:#_settings_overview[Settings Overview] table. Refer to the xref:#_data_types[Data Types] table at the
bottom of this page for more information.
== Exporting/Importing Library Settings ==
@@ -53,7 +53,6 @@ contents. Click *Paste* in the pop-up window. Click *Submit*.
+
image::library_settings/import_lib_settings.png[Importing Library Settings]
-[#settings_overview]
== Settings Overview ==
The settings are grouped together in separate tables based on functions
@@ -61,7 +60,7 @@ and modules, which are affected by the setting. They are in the same
sequence as you see in the staff client. Each table describes the
available settings in the group and shows which can be changed on a
per-library basis. At the bottom is the table with a list of
- xref:#data_types[data types] with details about acceptable settings
+ xref:#_data_types[data types] with details about acceptable settings
values.
Jump to a specific table:
@@ -113,7 +112,7 @@ Jump to a specific table:
|Upload Merge on Single Match by Default|Merge records on single match by default during ACQ file upload|True/False|
|========
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
((("Booking", "Library Settings Editor")))
((("Cataloging", "Library Settings Editor")))
@@ -141,7 +140,7 @@ Jump to a specific table:
|Spine label maximum lines|Set the default maximum number of lines for spine labels.|Number|
|======================
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
((("Circulation", "Library Settings Editor")))
@@ -215,7 +214,7 @@ Jump to a specific table:
|Warn when patron account is about to expire|If set, the staff client displays a warning this number of days before the expiry of a patron account. Value is in number of days.|Duration|
|===========
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
((("Credit Card Processing", "Library Settings Editor")))
@@ -246,7 +245,7 @@ Jump to a specific table:
|Stripe secret key|Secret API key from stripe.|Text|
|======================
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
((("Finances", "Library Settings Editor")))
@@ -277,7 +276,7 @@ Jump to a specific table:
|Void overdue fines when items are marked lost|If true overdue fines are voided when an item is marked lost|True/False|
|========
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
((("GUI", "Library Settings Editor")))
((("Graphic User Interface", "Library Settings Editor")))
@@ -317,11 +316,11 @@ Jump to a specific table:
!Record in-house use: # of uses threshold for Are You Sure? dialog.!In the Record In-House Use interface, a submission attempt will warn if the # of uses field exceeds the value of this setting.!Number!
!Record In-House Use: Maximum # of uses allowed per entry.!The # of uses entry in the Record In-House Use interface may not exceed the value of this setting.!Number!
!Regex for barcodes on patron registration!The Regular Expression for validation on barcodes in patron registration.!Regular Expression!
-!Regex for Day_phone field on patron registration! The Regular Expression for validation on the Day_phone field in patron registration. Note: The first capture group will be used for the "last 4 digits of phone number" as patron password feature, if enabled. Ex: "+[2-9]\d{2}-\d{3}-(\d{4})( x\d+)?+" will ignore the extension on a NANP number.!Regular expression!
+!Regex for Day_phone field on patron registration! The Regular Expression for validation on the Day_phone field in patron registration. Note: The first capture group will be used for the "last 4 digits of phone number" as patron password feature, if enabled. Ex: `+[2-9]\d\{2\}-\d\{3\}-(\d\{4\})( x\d+)?+` will ignore the extension on a NANP number.!Regular expression!
!Regex for Email field on patron registration!The Regular Expression on validation on the Email field in patron registration.!Regular expression!
!Regex for Evening-phone on patron registration!The Regular Expression on validation on the Evening-phone field in patron registration.!Regular expression!
!Regex for Other-phone on patron registration!The Regular Expression on validation on the Other-phone field in patron registration.!Regular expression!
-!Regex for phone fields on patron registration!The Regular Expression on validation on phone fields in patron registration. Applies to all phone fields without their own setting.!Regular expression!`+^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$+` is a US phone number
+!Regex for phone fields on patron registration!The Regular Expression on validation on phone fields in patron registration. Applies to all phone fields without their own setting.!Regular expression!`+^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]\{2\})\s*(?:[.-]\s*)?([0-9]\{4\})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$+` is a US phone number
!Regex for Postal Code field on patron registration!The Regular Expression on validation on the Postal Code field in patron registration.!Regular expression!
!Require at least one address for Patron Registration!Enforces a requirement for having at least one address for a patron during registration. If set to False, you need to delete the empty address before saving the record. If set to True, deletion is not allowed.!True/False!
!Require XXXXX field on patron registration!The XXXXX field will be required on the patron registration screen.!True/False!XXXXX can be Country, State, Day-phone, Evening-phone, Other-phone, DOB, Email, or Prefix.
@@ -340,7 +339,7 @@ Jump to a specific table:
!Work Log: maximum patrons logged!Maximum entries for "Most Recently Affected Patrons..." section of the Work Log interface.!Number!
!===========================
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
((("Global", "Library Settings Editor")))
@@ -357,7 +356,7 @@ Jump to a specific table:
|Patron username format|Regular expression defining the patron username format, used for patron registration and self-service username changing only|Regular expression|
|======
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
((("Holds", "Library Settings Editor")))
@@ -399,7 +398,7 @@ For multiple branch libraries
|Use weight-based hold targeting|Use library weight based hold targeting|True/False|
|=====
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
((("Library", "Library Settings Editor")))
@@ -421,7 +420,7 @@ The default is at midnight each night for items with "Reshelving" status for ove
|Telephony: Arbitrary line(s) to include in each notice callfile|This overrides lines from opensrf.xml. Line(s) must be valid for your target server and platform (e.g. Asterisk 1.4).|Text|
|=======
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
((("OPAC", "Library Settings Editor")))
@@ -448,7 +447,7 @@ The default is at midnight each night for items with "Reshelving" status for ove
|Warn patrons when adding to a temporary book list|Present a warning dialogue when a patron adds a book to the temporary book list.|True/False|
|====
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
((("Offline", "Library Settings Editor")))
((("Program", "Library Settings Editor")))
@@ -466,7 +465,7 @@ The default is at midnight each night for items with "Reshelving" status for ove
|Sending email address for patron notices|This email address is for automatically generated patron notices (e.g. email overdues, email holds notification). It is good practice to set up a generic account, like info(a)nameofyourlibrary.org, so that one person’s individual email inbox doesn’t get cluttered with emails that were not delivered.|Text|
|===================
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
((("Receipt Templates", "Library Settings Editor")))
((("SMS Settings", "Library Settings Editor")))
@@ -486,7 +485,7 @@ The default is at midnight each night for items with "Reshelving" status for ove
|Enable features that send SMS text messages.|Current features that use SMS include hold-ready-for-pickup notifications and a "Send Text" action for call numbers in the OPAC. If this setting is not enabled, the SMS options will not be offered to the user. Unless you are carefully silo-ing patrons and their use of the OPAC, the context org for this setting should be the top org in the org hierarchy, otherwise patrons can trample their user settings when jumping between orgs.|True/False|
|======================================
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
((("Security", "Library Settings Editor")))
@@ -510,7 +509,7 @@ usernames in addition to barcode. For this setting to work, a barcode format mus
|Staff login inactivity timeout (in seconds)|Number of seconds of inactivity before staff client prompts for login and password.|Number|
|========
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
((("Self Check", "Library Settings Editor")))
@@ -535,7 +534,7 @@ usernames in addition to barcode. For this setting to work, a barcode format mus
|Number of seconds to wait between URL test attempts|Throttling mechanism for batch URL verification runs. Each running process will wait this number of seconds after a URL test before performing the next.|Duration|
|=====================
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
((("Vandelay", "Library Settings Editor")))
@@ -553,9 +552,8 @@ usernames in addition to barcode. For this setting to work, a barcode format mus
|Vandelay Generate Default Call Numbers|Auto-generate default item call numbers when no item call number is present|True/False|These are pulled from the MARC Record.
|========
-<<settings_overview,Return to Settings Overview>>
+xref:#_settings_overview[Return to Settings Overview]
-[#data_types]
=== Data Types ===
((("Data Types", "Library Settings Editor")))
diff --git a/docs/modules/admin/pages/template_toolkit.adoc b/docs/modules/admin/pages/template_toolkit.adoc
index ac474487ab..178453e17c 100644
--- a/docs/modules/admin/pages/template_toolkit.adoc
+++ b/docs/modules/admin/pages/template_toolkit.adoc
@@ -71,7 +71,7 @@ template files. For example, the `home.tt2` template currently involves a
number of other template files to generate a single HTML file:
.Example Template Toolkit file: opac/home.tt2
-[source, html]
+[source, tt2]
------------------------------------------------------------------------------
[% PROCESS "opac/parts/header.tt2";
WRAPPER "opac/parts/base.tt2";
@@ -231,7 +231,7 @@ bash$ vim /openils/var/templates_BR1/opac/parts/topnav_links.tt2
Finally, we edit the link text in `opac/parts/header.tt2`.
.Content of the opac/parts/header.tt2 file
-[source,html]
+[source,tt2]
------------------------------------------------------------------------------
<div id="gold-links-holder">
<div id="gold-links">
diff --git a/docs/modules/admin_initial_setup/pages/designing_your_catalog.adoc b/docs/modules/admin_initial_setup/pages/designing_your_catalog.adoc
index c3d78582bb..e52f1f5808 100644
--- a/docs/modules/admin_initial_setup/pages/designing_your_catalog.adoc
+++ b/docs/modules/admin_initial_setup/pages/designing_your_catalog.adoc
@@ -48,6 +48,7 @@ template files. For example, the _home.tt2_ template currently involves a number
of other template files to generate a single HTML file.
Example Template Toolkit file: _opac/home.tt2_.
+[source,tt2]
----
[% PROCESS "opac/parts/header.tt2";
WRAPPER "opac/parts/base.tt2";
@@ -166,6 +167,7 @@ bash$ vim /openils/var/templates_custom/opac/parts/topnav_links.tt2
Finally, edit the link text in _opac/parts/header.tt2_. Content of the
_opac/parts/header.tt2_ file.
+[source, tt2]
----
<div id="gold-links-holder">
<div id="gold-links">
@@ -261,6 +263,7 @@ template variable for the MARC field to display.
For example, to display the date of publication code you created in the
_misc_util.tt2_ file, add these lines:
+[source, tt2]
----
[% IF attrs.pubdate; %]
<span itemprop="datePublished">[% attrs.pubdate | html; %]</span>
@@ -364,12 +367,14 @@ Libraries with same-day circulations may want their patrons to be able to view
the due *time* as well as due date when they log in to their OPAC account. To
accomplish this, go to _opac/myopac/circs.tt2_. Find the line that reads:
+[source, tt2]
----
[% date.format(due_date, DATE_FORMAT) %]
----
Replace it with:
+[source, tt2]
----
[% date.format(due_date, '%D %I:%M %p') %]
----
diff --git a/docs/modules/opac/pages/new_skin_customizations.adoc b/docs/modules/opac/pages/new_skin_customizations.adoc
index 47ebef0817..a4f8566fd1 100644
--- a/docs/modules/opac/pages/new_skin_customizations.adoc
+++ b/docs/modules/opac/pages/new_skin_customizations.adoc
@@ -125,6 +125,7 @@ Search > Numeric search. If you wanted to add a bib call number search option,
which is different from the item copy call number; you would add the following
code to `numeric.tt2`.
+
+[source, tt2]
------------------------------------------------------------------------------
<option value="identifier|bibcn">[% l('Bib Call Number') %]</option>
------------------------------------------------------------------------------
diff --git a/docs/modules/reports/pages/reporter_cloning_shared_templates.adoc b/docs/modules/reports/pages/reporter_cloning_shared_templates.adoc
index 8d48110794..058a24a609 100644
--- a/docs/modules/reports/pages/reporter_cloning_shared_templates.adoc
+++ b/docs/modules/reports/pages/reporter_cloning_shared_templates.adoc
@@ -76,8 +76,7 @@ select *Clone Template*.
. In the _Clone Template_ modal that opens enter a name for your template.
By default, the system will take the original name and add _(Clone)_ to the end.
. Select *Confirm*.
-. The template editor will open. For information on modifying templates, see
-the section on xref:reporter_modifying_templates.adoc[Modifying Templates].
+. The template editor will open.
. Update the template name and/or template description if desired.
. Select *Save*. Once a template is saved it is not possible to edit the template.
To make changes, clone a template and change the clone.
diff --git a/docs/modules/reports/pages/reporter_template_terminology.adoc b/docs/modules/reports/pages/reporter_template_terminology.adoc
index 74436c00df..05e3a52f89 100644
--- a/docs/modules/reports/pages/reporter_template_terminology.adoc
+++ b/docs/modules/reports/pages/reporter_template_terminology.adoc
@@ -17,36 +17,16 @@ is associated with a data type. This indicates what kind of information is store
[options="header"]
|===
|Data Type |Description |Notes
-|Boolean |Contains either "true" or "false". |Examples in Evergreen: "deleted"
- in item/patron record, "circulate?" in item record.
-|ID |Unique number assigned by the database to identify a record |IDs look like
- numbers, but the ID
-data type is treated specially by the software for determining how tables are l
-inked. ID is a good candidate field for counting records.
-|Integer |A number like 1, 2, 3. |Examples in Evergreen: "remaining renewal count"
- in circulation record, "claimed returned count" in patron record.
-|Interval |Time intervals, such as "2 weeks" and "6 months" |Examples in
-Evergreen: "loan duration" and "grace period" in circulation record,
-|Link |It is similar to the id data type. It is the id of a record in another
- table. |Examples in Evergreen: "user id" and "item id" in a circulation record.
- Link outputs a number that is a meaningful reference for the database but not
- of much use to a human user. You will usually want to drill further down the
- tree in the Sources pane and select fields from the linked table. However, in
- some instances you might want to use a link field. For example, to count the
- number of patrons who borrowed items, you could do a count on the "user id" in
- the circulation record.
-|Money |Monetary amount |Examples in Evergreen: "price" in item record, "billing
- amount" in billing record.
-|Org_unit |Organizational unit. It is a number. It acts like a link data type. |
-In Evergreen, libraries are organizational units. In some contexts, they are o
-rganized into a tree structure with consortium, library systems, and branches for
-library systems. To filter on a library, make sure you choose the field having
-org_unit data type. To display a library, it is a better option to drill down
-to the org unit record to display the "name" of it.
-|Text |Text field. Usually it takes whatever is typed into the field. |Examples:
- "call number label" in call number record, "patron's names".
-|Timestamp |A very detailed time such as 2018-11-25 17:54:26-07 |Example: checkout
- time in circulation record, last status date in item record.
+|Boolean |Contains either "true" or "false". |Examples in Evergreen: "deleted" in item/patron record, "circulate?" in item record.
+|ID |Unique number assigned by the database to identify a record. |IDs look like numbers, but the ID data type is treated specially by the software for determining how tables are linked. ID is a good candidate field for counting records.
+|Integer |A number like 1, 2, 3. |Examples in Evergreen: "remaining renewal count" in circulation record, "claimed returned count" in patron record.
+|Interval |Time intervals, such as "2 weeks" and "6 months". |Examples in
+Evergreen: "loan duration" and "grace period" in circulation record.
+|Link |It is similar to the ID data type. It is the ID of a record in another table. |Examples in Evergreen: "user id" and "item id" in a circulation record. Link outputs a number that is a meaningful reference for the database but not of much use to a human user. You will usually want to drill further down the tree in the Sources pane and select fields from the linked table. However, in some instances you might want to use a link field. For example, to count the number of patrons who borrowed items, you could do a count on the "user id" in the circulation record.
+|Money |Monetary amount. |Examples in Evergreen: "price" in item record, "billing amount" in billing record.
+|Org_unit |Organizational unit. It is a number. It acts like a link data type. |In Evergreen, libraries are organizational units. In some contexts, they are organized into a tree structure with consortium, library systems, and branches for library systems. To filter on a library, make sure you choose the field having org_unit data type. To display a library, it is a better option to drill down to the org unit record to display the "name" of it.
+|Text |Text field. Usually it takes whatever is typed into the field. |Examples: "call number label" in call number record, "patron's names".
+|Timestamp |A very detailed time such as 2018-11-25 17:54:26-07. |Example: checkout time in circulation record, last status date in item record.
|===
[[report_field_transforms]]
@@ -63,41 +43,17 @@ Transforms determine how data is processed when it is retrieved from the databas
[options="header"]
|===
|Transform |Applicable Data Types |Description | Notes
-|Raw Data |All Data Types |To display the data exactly as it is stored in the
-database. | Most commonly used transform .
-|Date |Timestamps | This transform presents a timestamp as a human-readable
-date in yyyy-mm-dd format. |For example, timestamp 2018-11-25 17:54:26-07 will
- be displayed as 2018-11-25.
-|Year \+ Month |Timestamps | Presents a timestamp as the year and month in yyyy-mm
- format. |For example, 2018-11-25 17:54:26-07 will be displayed as 2018-11. If
- filtering on a timestamp transformed to Year + Month, all days in the calendar
- month are included.
-|Upper Case |Text | Transforms text to all upper case. |
-|Lower Case |Text | Transforms text to all lower case. |
-|Substring |Text | This transform can be applied to filters, not display fields.
- It matches the given value with a continuous string of characters in the field.
- |For example, if a given value is "123" and the match is with a call number
- field, call numbers like "123.34", "ANF 123.34", "JNF 233.123", etc. will be in
- the result list.
-|First Continuous Non-space string |Text | The first word (or string of numbers
-and/or characters until the first spacing) in a field is returned by this transform.
- |For example, this transform will return "E" from text "E DOR", "E 123", etc.
-|Count |Text, Integer, ID, Money, Timestamp, Org_unit | This transform counts the
- records found. |Though you can count by any field, very often id field is used.
-|Count Distinct |Text, Integer, ID, Money, Timestamp, Org_unit | This transform
-counts the number of records with unique value in the field. If two records have
- the same value in the field, they will be counted once only. |A typical example
- of using Count Distinct is counting the number of active patrons who borrowed
- items at a library. Each patron can be counted once only but they may borrow
- multiple items. Transforming the patron id in circulation record with Count
- Distinct will result in the required number. Since each patron has a unique id,
- they will be counted once only.
-|Max |Text, Integer, Money, and Timestamp | It compares the values in the field
-of all result records and then returns the one record with the highest value.
-For timestamp, the highest value meansthe latest date. |For example, if a checkout
- date is transformed by Max, the returned date is the last checkout date.
-|Min |Text, Integer, Money, and Timestamp | It works the same way as Max except
-that it returns the lowest value. |
+|Raw Data |All Data Types |To display the data exactly as it is stored in the database. |Most commonly used transform.
+|Date |Timestamps |This transform presents a timestamp as a human-readable date in yyyy-mm-dd format. |For example, timestamp 2018-11-25 17:54:26-07 will be displayed as 2018-11-25.
+|Year \+ Month |Timestamps |Presents a timestamp as the year and month in yyyy-mm format. |For example, 2018-11-25 17:54:26-07 will be displayed as 2018-11. If filtering on a timestamp transformed to Year + Month, all days in the calendar month are included.
+|Upper Case |Text |Transforms text to all upper case. |
+|Lower Case |Text |Transforms text to all lower case. |
+|Substring |Text |This transform can be applied to filters, not display fields. It matches the given value with a continuous string of characters in the field. |For example, if a given value is "123" and the match is with a call number field, call numbers like "123.34", "ANF 123.34", "JNF 233.123", etc. will be in the result list.
+|First Continuous Non-space string |Text |The first word (or string of numbers and/or characters until the first spacing) in a field is returned by this transform. |For example, this transform will return "E" from text "E DOR", "E 123", etc.
+|Count |Text, Integer, ID, Money, Timestamp, Org_unit |This transform counts the records found. |Though you can count by any field, very often ID field is used.
+|Count Distinct |Text, Integer, ID, Money, Timestamp, Org_unit |This transform counts the number of records with unique value in the field. If two records have the same value in the field, they will be counted once only. |A typical example of using Count Distinct is counting the number of active patrons who borrowed items at a library. Each patron can be counted once only but they may borrow multiple items. Transforming the patron ID in circulation record with Count Distinct will result in the required number. Since each patron has a unique ID, they will be counted once only.
+|Max |Text, Integer, Money, and Timestamp |It compares the values in the field of all result records and then returns the one record with the highest value. For timestamp, the highest value means the latest date. |For example, if a checkout date is transformed by Max, the returned date is the last checkout date.
+|Min |Text, Integer, Money, and Timestamp |It works the same way as Max except that it returns the lowest value. |
|===
[[report_operators]]
@@ -111,46 +67,20 @@ be included in the result. The record is included when the comparison returns
"TRUE". The possible ways of comparing data are related to data type and data
transforms. The available operators are:
-[options="header"]
+[options="header",cols="4*"]
|===
-|Operator |Description |Notes
-|Equals | Compares two operands and returns TRUE if they are exactly the same. |
-|Contains Matching Substring | This operator checks if any part of the field
-matches the given parameter. |It is case-sensitive.
-|Contains Matching Substring (Ignore Case) | This operator is identical to
-Contains Matching Substring, except it is not case-sensitive. |
-|Greater Than | This operator returns TRUE if a field is greater than your
-parameter. | For text fields, the string is compared character by character in
- accordance with the general rule that numerical characters are smaller than
- alphabetical characters and uppercase alphabeticals are smaller than lowercase
- alphabeticals For timestamps, "Greater Than" can be thought of as "later than"
- or "after".
-|Greater than or equal to |This operator returns TRUE if a field is greater than
- or equal to your parameter. | For text fields, the string is compared character
- by character in accordance with the general rule that numerical characters are
- smaller than alphabetical characters and uppercase alphabeticals are smaller
- than lower case alphabeticals. For timestamps, "Greater Than or equal to" can
- be thought of as "later than or equal to" or "after or equal to".
-|Less Than | This operator returns TRUE if a field is less than, lower than,
-earlier than, or smaller than your parameter. |
-|In List| It is similar to Equals, except it allows you to specify multiple
-parameters and returns "TRUE" if the field is equal to any one of the given
-values. |
-|Not In List | It is the opposite of In List. Multiple parameters can be specified.
- TRUE will be returned only when none of the parameters is matched with the value
- in the field. |
-|Between | Two parameters are required by this operator. TRUE is returned when the
-field value is Greater Than or Equal to the smaller given value and Less Than or
-Equal to the bigger given value. | The smaller parameter should always come first
-when filling in a filter with this operator. For example: between 3 and 5 is
-correct. Between 5 and 3 will return FALSE on the Reports interface. For timestamp,
- the earlier date always comes first.
-|Is NULL | Returns TRUE for fields that contain no data.| For example, an overdue
- report will include a filter for Check In Date/Time is NULL as an item is no
- longer overdue if there is a value for Check In Date/Time.
-|Is NULL or Blank | Returns TRUE for fields that contain no data or blank string.
- | For most intents and purposes, this operator should be used when there is no
- visible value in the field. |
+|Operator |Description |Notes |Example
+|Equals |Compares two operands and returns TRUE if they are exactly the same. | |Field value = "123".
+|Contains Matching Substring |This operator checks if any part of the field matches the given parameter. |It is case-sensitive. |Field value contains "abc".
+|Contains Matching Substring (Ignore Case) |This operator is identical to Contains Matching Substring, except it is not case-sensitive. | |Field value contains "ABC" (case-insensitive).
+|Greater Than |This operator returns TRUE if a field is greater than your parameter. |For text fields, the string is compared character by character in accordance with the general rule that numerical characters are smaller than alphabetical characters and uppercase alphabeticals are smaller than lowercase alphabeticals. For timestamps, "Greater Than" can be thought of as "later than" or "after". |Field value > "2023-01-01".
+|Greater than or equal to |This operator returns TRUE if a field is greater than or equal to your parameter. |For text fields, the string is compared character by character in accordance with the general rule that numerical characters are smaller than alphabetical characters and uppercase alphabeticals are smaller than lowercase alphabeticals. For timestamps, "Greater Than or equal to" can be thought of as "later than or equal to" or "after or equal to". |Field value >= "2023-01-01".
+|Less Than |This operator returns TRUE if a field is less than, lower than, earlier than, or smaller than your parameter. | |Field value < "2023-01-01".
+|In List |It is similar to Equals, except it allows you to specify multiple parameters and returns "TRUE" if the field is equal to any one of the given values. | |Field value in ("123", "456").
+|Not In List |It is the opposite of In List. Multiple parameters can be specified. TRUE will be returned only when none of the parameters is matched with the value in the field. | |Field value not in ("123", "456").
+|Between |Two parameters are required by this operator. TRUE is returned when the field value is Greater Than or Equal to the smaller given value and Less Than or Equal to the bigger given value. |The smaller parameter should always come first when filling in a filter with this operator. For example: between 3 and 5 is correct. Between 5 and 3 will return FALSE on the Reports interface. For timestamp, the earlier date always comes first. |Field value between "2023-01-01" and "2023-12-31".
+|Is NULL |Returns TRUE for fields that contain no data. |For example, an overdue report will include a filter for Check In Date/Time is NULL as an item is no longer overdue if there is a value for Check In Date/Time. |Field value is NULL.
+|Is NULL or Blank |Returns TRUE for fields that contain no data or blank string. |For most intents and purposes, this operator should be used when there is no visible value in the field. |Field value is NULL or blank.
|===
[[report_filter_values]]
diff --git a/docs/modules/reports/pages/reports_security_idl.adoc b/docs/modules/reports/pages/reports_security_idl.adoc
index 08b8fe6298..983cc74c27 100644
--- a/docs/modules/reports/pages/reports_security_idl.adoc
+++ b/docs/modules/reports/pages/reports_security_idl.adoc
@@ -1,5 +1,5 @@
-= Reports Security IDL Configuration =
-:toc:
+= Reports Security IDL
+== Introduction
The new Report Security functionality is primarily configured through the addition of XML attributes to elements in the Fieldmapper XML file, fm_IDL.xml. These new attributes fall into three categories:
@@ -10,7 +10,7 @@ The new Report Security functionality is primarily configured through the additi
These attributes, explained below, are defined within a new XML namespace with the URI `http://open-ils.org/spec/opensrf/IDL/reporter/v1/security` , and the common namespace prefix of `repsec` . An accompanying XSD is provided to confirm that the locations and values of the attributes, when supplied, do not fall outside their defined scope and that the fm_IDL.xml file remains both well-formed and valid.
-= Field value redaction =
+== Field value redaction ==
Fields used in the SELECT and ORDER BY SQL clauses can be redacted, either outputting NULL or, optionally, a data type compatible alternate literal value. This is configured through the addition of several XML attributes to the fields to which redaction should be applied.
-----------------------------------------------------------------------
Summary of changes:
docs/antora.yml | 2 +-
.../modules/admin/pages/apache_rewrite_tricks.adoc | 2 +-
docs/modules/admin/pages/librarysettings.adoc | 42 +++----
docs/modules/admin/pages/template_toolkit.adoc | 4 +-
.../pages/designing_your_catalog.adoc | 5 +
.../opac/pages/new_skin_customizations.adoc | 1 +
.../pages/reporter_cloning_shared_templates.adoc | 3 +-
.../pages/reporter_template_terminology.adoc | 138 +++++----------------
.../reports/pages/reports_security_idl.adoc | 6 +-
9 files changed, 68 insertions(+), 135 deletions(-)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch rel_3_14 updated. 59817e6e8761039d876e9735fc0db7f98be9c9a4
by Git User 08 Apr '25
by Git User 08 Apr '25
08 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, rel_3_14 has been updated
via 59817e6e8761039d876e9735fc0db7f98be9c9a4 (commit)
from b95e57d89a5325bcaad8df613bea0ea8ce45db97 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 59817e6e8761039d876e9735fc0db7f98be9c9a4
Author: spmorrison <101879901+spmorrison(a)users.noreply.github.com>
Date: Tue Nov 12 15:02:54 2024 -0500
Resolves LP#2063846
Docs: Update emergency_closing_handler.adoc
- Consolidated with https://docs.evergreen-ils.org/docs/latest/admin/closed_dates.html to create one page on closed dates
- updated screenshots
- added line about ability to see upcoming closures in library info page
Signed-off-by: Gina Monti <gmonti(a)biblio.org>
diff --git a/docs/modules/admin/pages/emergency_closing_handler.adoc b/docs/modules/admin/pages/emergency_closing_handler.adoc
index 831e0cc680..0bf77ccc8e 100644
--- a/docs/modules/admin/pages/emergency_closing_handler.adoc
+++ b/docs/modules/admin/pages/emergency_closing_handler.adoc
@@ -1,101 +1,138 @@
-= Emergency Closing Handler =
+= Closed Dates Editor =
:toc:
-== Introduction ==
+indexterm:[Closed Dates]
-The *Closed Dates Editor* now includes an Emergency Closing feature that allows libraries to shift due dates and expiry dates to the next open day. Overdue fines will be automatically voided for the day(s) the library is marked closed. Once an Emergency Closing is processed, it is permanent and cannot be rolled back.
+The *Closed Dates Editor* can be accessed via *Administration -> Local Administration -> Closed Dates Editor*.
-== Administration ==
+Within the Closed Dates Editor screen, scheduled closed dates are listed and can be scoped by a specific organizational unit and date. The date filter in the upper right-hand corner will show upcoming library closures on or after the selected date in the filter.
-=== Permissions ===
+Entries in the Closed Dates Editor are in addition to the regular weekly closed days for each organizational unit. Both regular closed days and those entered in the Closed Dates Editor affect due dates and fines:
-To create an Emergency Closing, the EMERGENCY_CLOSING permission needs to be granted to the user for all locations to be affected by an emergency closing.
-
-== Create an emergency closing ==
+* *Due dates.* Due dates that would fall on closed days are automatically pushed forward to the next open day. Likewise, if an item is checked out at 8pm, for example, and would normally be due on a day when the library closes before 8pm, Evergreen pushes the due date forward to the next open day.
+* *Overdue fines.* Overdue fines may not be charged on days when the library is closed. This fine behavior depends on how the _Charge fines on overdue circulations when closed_ setting is configured in the Library Settings Editor.
-The Emergency Closing feature is located within the *Closed Dates Editor* screen, which can be accessed via *Administration -> Local Administration -> Closed Dates Editor*.
+Closed dates do not affect the processing delays for Action/Triggers. For example, if your library has a trigger event that marks items as lost after 30 days, that 30-day period will include both open and closed dates.
-Within the closed dates editor screen, scheduled closed dates are listed and can be scoped by specific org unit and date. The date filter in the upper right-hand corner will show upcoming library closings on or after the selected date in the filter.
+Any closed dates entered in the interface will also appear on the xref:opac:linked_libraries.adoc[organizational unit’s library information page] under *Upcoming Closures*
-[NOTE]
-========================
-*NOTE* Before creating an Emergency Closure, delete any previously entered closures that overlap the Emergency Closure you wish to enter. Overlapping closed dates can cause issues in processing the Emergency Closure.
-========================
+image::emergency_closing/upcoming closure listing.png[Upcoming closures]
-Select *Add closing* to begin the emergency closing process.
+== Adding a closure ==
+. Select _Administration -> Local Administration_.
+. Select _Closed Dates Editor_.
+. Select _Add Closing_.
++
image::emergency_closing/ECHClosedDatesEditorAddClosing.png[Add Closing]
++
+. A pop-up will appear with fields to fill out.
++
+image::emergency_closing/example closing.png[Create Closing for One Full Day]
++
+* *Library* - Using the dropdown window, select the organizational unit which will be closing.
+* *Apply to all of my libraries* - When selected, this checkbox will apply the closing date to the selected organizational unit and any associated child organizational units.
++
+[NOTE]
+====
+By default, creating a closed date in a parent organizational unit does _not_ also
+close the child unit. For example, adding a system-level closure will not also
+close all of that system's branches, unless you check the *Apply to all of my libraries* box.
+====
++
+
+* *Closing type* - Available options in the dropdown window are _One Full Day_, _Multiple Days_, and _Detailed_ (for partial day closures). The _Multiple Days_ and _Detailed_ options will display different date options (e.g., start and end dates) in the next field if selected.
++
+image::emergency_closing/ECHLibraryClosingMultipleDays.png[Create Closing for Multiple Days]
++
-A pop-up will appear with fields to fill out.
++
+image::emergency_closing/ECHLibraryClosingDetailed.png[Create Detailed Closing]
++
+* *Date* - Click the calendar gadget to select which day or days the library will be closed.
++
+[NOTE]
+====
+The Closed Dates editor is now date-aware. If a selected closed date is either in the past, or nearer in time than the end of the longest configured circulation period, staff will see a notification that says _Possible Emergency Closing_ in both the dialog box and in the bottom right-hand corner. See the Emergency Closing Handler section for information on how to manage emergency closures.
+====
++
+* *Reason* - Optionally enter the reason for the closure. Note that this will appear on the library’s contact page.
+. Click *OK*.
-image::emergency_closing/ECHLibraryClosingConstruction.png[Create Closing for One Full Day]
+== Editing a closure ==
-*Library* - Using the dropdown window, select the org unit which will be closing.
+To edit a closure, go to *Actions -> Edit closing*.
-*Apply to all of my libraries* - When selected, this checkbox will apply the emergency closing date to the selected org unit and any associated child org unit(s).
+image::emergency_closing/ECHEditClosing.png[Edit Closing]
-*Closing Type* - The following Closing Type options are available in a drop down window:
-* One full day
-* Multiple days
-* Detailed closing
+A pop-up display will appear with the same format as creating a Closed Dates event. Once you make the changes, click *OK*. The Closed Dates Editor display will update.
-The _Multiple days_ and _Detailed closing_ options will display different date options (e.g. start and end dates) in the next field if selected.
+image::emergency_closing/ECHEditClosingModal.png[Edit Closing Pop-Up]
-[NOTE]
-========================
-*NOTE* There is an existing bug that pushes the due dates to the first day after the Emergency Closure even if that day is normally closed. So, if you need to enter an Emergency Closure for a Friday, but you are normally closed on Saturday and Sunday, be sure to enter the Emergency Closure for Friday through Sunday.
-========================
+== Emergency closing handler ==
-image::emergency_closing/ECHLibraryClosingMultipleDays.png[Create Closing for Multiple Days]
+The *Closed Dates Editor* includes an Emergency Closing feature that allows libraries to shift due dates and expiry dates to the next open day. Overdue fines will be automatically voided for the day(s) the library is marked closed. Once an Emergency Closing is processed, it is permanent and cannot be rolled back.
-image::emergency_closing/ECHLibraryClosingDetailed.png[Create Detailed Closing]
+When a date is chosen that is nearer in time than the end of the longest configured circulation period or in the past, then a _Possible Emergency Closing_ message will appear as a pop-up in the bottom right-hand corner of the screen.
-*Date* - Select which day or days the library will be closed.
+image::emergency_closing/possibly emergency closure_toast.png[Possible Emergency Closure Toast]
-[NOTE]
-========================
-*NOTE* The Closed Dates editor is now date-aware. If a selected closed date is either in the past, or nearer in time than the end of the longest configured circulation period, staff will see a notification that says "Possible Emergency Closing" in both the dialog box and in the bottom right-hand corner.
-========================
+A _Possible Emergency Closure_ section will also appear in the Library Closing form.
-*Reason* - Label the reason for library closing accordingly, e.g. 3/15 Snow Day
+image::emergency_closing/possibly emergency closure_section.png[Possible Emergency Closure Section]
-=== Emergency Closing Handler ===
+=== Adding an emergency closure ===
-When a date is chosen that is nearer in time than the end of the longest configured circulation period or in the past, then a *Possible Emergency Closing* message will appear in the pop-up and in the bottom right-hand corner of the screen. Below the Possible Emergency Closing message, two checkboxes appear: *Emergency* and *Process Immediately*. Both checkboxes must be manually selected in
+[NOTE]
+====
+Before creating an Emergency Closure, delete any previously entered closures that overlap the Emergency Closure you wish to enter. Overlapping closed dates can cause issues in processing the closure.
+====
+
+To add an emergency closure, follow the process for entering a regular closed date until you reach the *Possible Emergency Closure* section.
[NOTE]
-=========================
-*NOTE* The *Emergency* checkbox must still be manually selected in order to actually set the closing as an Emergency Closing.
-=========================
+====
+There is an existing bug that pushes the due dates to the first day after the Emergency Closure even if that day is normally closed. So, if you need to enter an Emergency Closure for a Friday, but you are normally closed on Saturday and Sunday, be sure to enter the Emergency Closure for Friday through Sunday.
+====
+
+Below the Possible Emergency Closing message, two checkboxes appear: *Emergency* and *Process Immediately*. Both checkboxes must be manually selected in order to set the closure as an Emergency Closing.
-By selecting the *Emergency* checkbox, the system will void any overdue fines incurred for that emergency closed day or days and push back any of the following dates to the next open day as determined by the library’s settings:
+By selecting the *Emergency* checkbox, the system will void any overdue fines incurred for that emergency closed day(s) and push back any of the following dates to the next open day as determined by the library’s settings:
* item due dates
* shelf expire times
* booking start times
-image::emergency_closing/ECHClosingSnowDay.png[Create Emergency Closing]
-
-When selecting the *Process immediately* checkbox, Evergreen will enact the Emergency Closing changes immediately once the Emergency Closed Date information is saved. If Process immediately is not selected at the time of creation, staff will need to delete the original Emergency Closing and create a new one to make sure the Process immediately option is checked. If you go back to edit an entry to select the Process immediately checkbox, the Emergency processing will not occur.
+When selecting the *Process immediately* checkbox, Evergreen will enact the Emergency Closing changes immediately once the Emergency Closed Date information is saved.
Upon clicking *OK*, a progress bar will appear on-screen. After completion, the Closed Dates Editor screen will update, and under the Emergency Closing Processing Summary column, the number of affected/processed Circulations, Holds, and Reservations will be listed.
image::emergency_closing/ECHLibraryClosingDone.png[Emergency Closing Processing Complete]
[NOTE]
-=========================
-*NOTE* Processing can take some time, especially if you are creating an Emergency Closure at the system level and applying it to all branches. It's best to let it run and check back later to make sure that all circulations and holds processed. A successful processing is indicated by the green bar in the Emergency Closing Processing Summary column (shown in the screenshot above). If the bar is blue after processing, this indicates the processing did not complete correctly.
-=========================
+====
+Processing can take some time, especially if you are creating an Emergency Closure at the system level and applying it to all branches. It's best to let it run and check back later to make sure that all circulations and holds processed. A successful processing is indicated by the green bar in the Emergency Closing Processing Summary column (shown in the screenshot above). If the bar is blue after processing, this indicates the processing did not complete correctly.
+====
-=== Editing Emergency Closings ===
+=== Editing an emergency closure ===
-If *Process immediately* is not selected during an Emergency Closing event creation, editing the existing Emergency Closing entry does not allow for proper processing. Staff will need to delete the original entry and create a new entry, making sure to select both the *Emergency Closing* and *Process immediately* options.
+If *Process immediately* is not selected during an Emergency Closing event creation, staff can edit the closure entry, select the _Process immediately_ checkbox, and click *OK* to process the closure; however, the grid display does not update to show that the circulations and holds have been processed.
-This caveat applies to editing the dates of an Emergency Closure as well. If the Emergency Closure dates need to be changed or extended, editing the existing entry does not process the circulations and holds properly. Either the original entry should be deleted and a new one created that encompasses the full date range, or a second Emergency Closure should be created to for the extended date range.
+If the emergency closure dates need to be changed or extended, editing the existing entry _does not_ process the circulations and holds properly. Either the original entry should be deleted and a new one created that encompasses the full date range, or a second emergency closure should be created for the extended date range.
-To edit the Reason field of an existing Emergency Closing event, go to *Actions -> Edit closing*.
+== Deleting a closure ==
-image::emergency_closing/ECHEditClosing.png[Edit Closing]
+To delete a regular or emergency closure, select the closure in the grid and go to *Actions -> Delete closing*.
-A pop-up display will appear with the same format as creating a Closed Dates event. Once you make the changes, click *OK*. The Closed Dates Editor display will update.
+image::emergency_closing/delete closing.png[Delete Closing]
-image::emergency_closing/ECHEditClosingModal.png[Edit Closing Pop-Up]
+== Permissions ==
+
+To manage entries in the Closed Dates Editor, staff need the following permissions:
+
+* actor.org_unit.closed_date.create
+* actor.org_unit.closed_date.update
+* actor.org_unit.closed_date.delete
+
+To manage emergency closures, staff need the following additional permission:
+
+* EMERGENCY_CLOSING
-----------------------------------------------------------------------
Summary of changes:
.../admin/pages/emergency_closing_handler.adoc | 147 +++++++++++++--------
1 file changed, 92 insertions(+), 55 deletions(-)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch main updated. d81515428da33041f070bbe6f9427692f671c58e
by Git User 08 Apr '25
by Git User 08 Apr '25
08 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, main has been updated
via d81515428da33041f070bbe6f9427692f671c58e (commit)
from 4c0ed6b480349977b296b74ac7283c56ae75c1e8 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit d81515428da33041f070bbe6f9427692f671c58e
Author: spmorrison <101879901+spmorrison(a)users.noreply.github.com>
Date: Tue Nov 12 15:02:54 2024 -0500
Resolves LP#2063846
Docs: Update emergency_closing_handler.adoc
- Consolidated with https://docs.evergreen-ils.org/docs/latest/admin/closed_dates.html to create one page on closed dates
- updated screenshots
- added line about ability to see upcoming closures in library info page
Signed-off-by: Gina Monti <gmonti(a)biblio.org>
diff --git a/docs/modules/admin/pages/emergency_closing_handler.adoc b/docs/modules/admin/pages/emergency_closing_handler.adoc
index 831e0cc680..0bf77ccc8e 100644
--- a/docs/modules/admin/pages/emergency_closing_handler.adoc
+++ b/docs/modules/admin/pages/emergency_closing_handler.adoc
@@ -1,101 +1,138 @@
-= Emergency Closing Handler =
+= Closed Dates Editor =
:toc:
-== Introduction ==
+indexterm:[Closed Dates]
-The *Closed Dates Editor* now includes an Emergency Closing feature that allows libraries to shift due dates and expiry dates to the next open day. Overdue fines will be automatically voided for the day(s) the library is marked closed. Once an Emergency Closing is processed, it is permanent and cannot be rolled back.
+The *Closed Dates Editor* can be accessed via *Administration -> Local Administration -> Closed Dates Editor*.
-== Administration ==
+Within the Closed Dates Editor screen, scheduled closed dates are listed and can be scoped by a specific organizational unit and date. The date filter in the upper right-hand corner will show upcoming library closures on or after the selected date in the filter.
-=== Permissions ===
+Entries in the Closed Dates Editor are in addition to the regular weekly closed days for each organizational unit. Both regular closed days and those entered in the Closed Dates Editor affect due dates and fines:
-To create an Emergency Closing, the EMERGENCY_CLOSING permission needs to be granted to the user for all locations to be affected by an emergency closing.
-
-== Create an emergency closing ==
+* *Due dates.* Due dates that would fall on closed days are automatically pushed forward to the next open day. Likewise, if an item is checked out at 8pm, for example, and would normally be due on a day when the library closes before 8pm, Evergreen pushes the due date forward to the next open day.
+* *Overdue fines.* Overdue fines may not be charged on days when the library is closed. This fine behavior depends on how the _Charge fines on overdue circulations when closed_ setting is configured in the Library Settings Editor.
-The Emergency Closing feature is located within the *Closed Dates Editor* screen, which can be accessed via *Administration -> Local Administration -> Closed Dates Editor*.
+Closed dates do not affect the processing delays for Action/Triggers. For example, if your library has a trigger event that marks items as lost after 30 days, that 30-day period will include both open and closed dates.
-Within the closed dates editor screen, scheduled closed dates are listed and can be scoped by specific org unit and date. The date filter in the upper right-hand corner will show upcoming library closings on or after the selected date in the filter.
+Any closed dates entered in the interface will also appear on the xref:opac:linked_libraries.adoc[organizational unit’s library information page] under *Upcoming Closures*
-[NOTE]
-========================
-*NOTE* Before creating an Emergency Closure, delete any previously entered closures that overlap the Emergency Closure you wish to enter. Overlapping closed dates can cause issues in processing the Emergency Closure.
-========================
+image::emergency_closing/upcoming closure listing.png[Upcoming closures]
-Select *Add closing* to begin the emergency closing process.
+== Adding a closure ==
+. Select _Administration -> Local Administration_.
+. Select _Closed Dates Editor_.
+. Select _Add Closing_.
++
image::emergency_closing/ECHClosedDatesEditorAddClosing.png[Add Closing]
++
+. A pop-up will appear with fields to fill out.
++
+image::emergency_closing/example closing.png[Create Closing for One Full Day]
++
+* *Library* - Using the dropdown window, select the organizational unit which will be closing.
+* *Apply to all of my libraries* - When selected, this checkbox will apply the closing date to the selected organizational unit and any associated child organizational units.
++
+[NOTE]
+====
+By default, creating a closed date in a parent organizational unit does _not_ also
+close the child unit. For example, adding a system-level closure will not also
+close all of that system's branches, unless you check the *Apply to all of my libraries* box.
+====
++
+
+* *Closing type* - Available options in the dropdown window are _One Full Day_, _Multiple Days_, and _Detailed_ (for partial day closures). The _Multiple Days_ and _Detailed_ options will display different date options (e.g., start and end dates) in the next field if selected.
++
+image::emergency_closing/ECHLibraryClosingMultipleDays.png[Create Closing for Multiple Days]
++
-A pop-up will appear with fields to fill out.
++
+image::emergency_closing/ECHLibraryClosingDetailed.png[Create Detailed Closing]
++
+* *Date* - Click the calendar gadget to select which day or days the library will be closed.
++
+[NOTE]
+====
+The Closed Dates editor is now date-aware. If a selected closed date is either in the past, or nearer in time than the end of the longest configured circulation period, staff will see a notification that says _Possible Emergency Closing_ in both the dialog box and in the bottom right-hand corner. See the Emergency Closing Handler section for information on how to manage emergency closures.
+====
++
+* *Reason* - Optionally enter the reason for the closure. Note that this will appear on the library’s contact page.
+. Click *OK*.
-image::emergency_closing/ECHLibraryClosingConstruction.png[Create Closing for One Full Day]
+== Editing a closure ==
-*Library* - Using the dropdown window, select the org unit which will be closing.
+To edit a closure, go to *Actions -> Edit closing*.
-*Apply to all of my libraries* - When selected, this checkbox will apply the emergency closing date to the selected org unit and any associated child org unit(s).
+image::emergency_closing/ECHEditClosing.png[Edit Closing]
-*Closing Type* - The following Closing Type options are available in a drop down window:
-* One full day
-* Multiple days
-* Detailed closing
+A pop-up display will appear with the same format as creating a Closed Dates event. Once you make the changes, click *OK*. The Closed Dates Editor display will update.
-The _Multiple days_ and _Detailed closing_ options will display different date options (e.g. start and end dates) in the next field if selected.
+image::emergency_closing/ECHEditClosingModal.png[Edit Closing Pop-Up]
-[NOTE]
-========================
-*NOTE* There is an existing bug that pushes the due dates to the first day after the Emergency Closure even if that day is normally closed. So, if you need to enter an Emergency Closure for a Friday, but you are normally closed on Saturday and Sunday, be sure to enter the Emergency Closure for Friday through Sunday.
-========================
+== Emergency closing handler ==
-image::emergency_closing/ECHLibraryClosingMultipleDays.png[Create Closing for Multiple Days]
+The *Closed Dates Editor* includes an Emergency Closing feature that allows libraries to shift due dates and expiry dates to the next open day. Overdue fines will be automatically voided for the day(s) the library is marked closed. Once an Emergency Closing is processed, it is permanent and cannot be rolled back.
-image::emergency_closing/ECHLibraryClosingDetailed.png[Create Detailed Closing]
+When a date is chosen that is nearer in time than the end of the longest configured circulation period or in the past, then a _Possible Emergency Closing_ message will appear as a pop-up in the bottom right-hand corner of the screen.
-*Date* - Select which day or days the library will be closed.
+image::emergency_closing/possibly emergency closure_toast.png[Possible Emergency Closure Toast]
-[NOTE]
-========================
-*NOTE* The Closed Dates editor is now date-aware. If a selected closed date is either in the past, or nearer in time than the end of the longest configured circulation period, staff will see a notification that says "Possible Emergency Closing" in both the dialog box and in the bottom right-hand corner.
-========================
+A _Possible Emergency Closure_ section will also appear in the Library Closing form.
-*Reason* - Label the reason for library closing accordingly, e.g. 3/15 Snow Day
+image::emergency_closing/possibly emergency closure_section.png[Possible Emergency Closure Section]
-=== Emergency Closing Handler ===
+=== Adding an emergency closure ===
-When a date is chosen that is nearer in time than the end of the longest configured circulation period or in the past, then a *Possible Emergency Closing* message will appear in the pop-up and in the bottom right-hand corner of the screen. Below the Possible Emergency Closing message, two checkboxes appear: *Emergency* and *Process Immediately*. Both checkboxes must be manually selected in
+[NOTE]
+====
+Before creating an Emergency Closure, delete any previously entered closures that overlap the Emergency Closure you wish to enter. Overlapping closed dates can cause issues in processing the closure.
+====
+
+To add an emergency closure, follow the process for entering a regular closed date until you reach the *Possible Emergency Closure* section.
[NOTE]
-=========================
-*NOTE* The *Emergency* checkbox must still be manually selected in order to actually set the closing as an Emergency Closing.
-=========================
+====
+There is an existing bug that pushes the due dates to the first day after the Emergency Closure even if that day is normally closed. So, if you need to enter an Emergency Closure for a Friday, but you are normally closed on Saturday and Sunday, be sure to enter the Emergency Closure for Friday through Sunday.
+====
+
+Below the Possible Emergency Closing message, two checkboxes appear: *Emergency* and *Process Immediately*. Both checkboxes must be manually selected in order to set the closure as an Emergency Closing.
-By selecting the *Emergency* checkbox, the system will void any overdue fines incurred for that emergency closed day or days and push back any of the following dates to the next open day as determined by the library’s settings:
+By selecting the *Emergency* checkbox, the system will void any overdue fines incurred for that emergency closed day(s) and push back any of the following dates to the next open day as determined by the library’s settings:
* item due dates
* shelf expire times
* booking start times
-image::emergency_closing/ECHClosingSnowDay.png[Create Emergency Closing]
-
-When selecting the *Process immediately* checkbox, Evergreen will enact the Emergency Closing changes immediately once the Emergency Closed Date information is saved. If Process immediately is not selected at the time of creation, staff will need to delete the original Emergency Closing and create a new one to make sure the Process immediately option is checked. If you go back to edit an entry to select the Process immediately checkbox, the Emergency processing will not occur.
+When selecting the *Process immediately* checkbox, Evergreen will enact the Emergency Closing changes immediately once the Emergency Closed Date information is saved.
Upon clicking *OK*, a progress bar will appear on-screen. After completion, the Closed Dates Editor screen will update, and under the Emergency Closing Processing Summary column, the number of affected/processed Circulations, Holds, and Reservations will be listed.
image::emergency_closing/ECHLibraryClosingDone.png[Emergency Closing Processing Complete]
[NOTE]
-=========================
-*NOTE* Processing can take some time, especially if you are creating an Emergency Closure at the system level and applying it to all branches. It's best to let it run and check back later to make sure that all circulations and holds processed. A successful processing is indicated by the green bar in the Emergency Closing Processing Summary column (shown in the screenshot above). If the bar is blue after processing, this indicates the processing did not complete correctly.
-=========================
+====
+Processing can take some time, especially if you are creating an Emergency Closure at the system level and applying it to all branches. It's best to let it run and check back later to make sure that all circulations and holds processed. A successful processing is indicated by the green bar in the Emergency Closing Processing Summary column (shown in the screenshot above). If the bar is blue after processing, this indicates the processing did not complete correctly.
+====
-=== Editing Emergency Closings ===
+=== Editing an emergency closure ===
-If *Process immediately* is not selected during an Emergency Closing event creation, editing the existing Emergency Closing entry does not allow for proper processing. Staff will need to delete the original entry and create a new entry, making sure to select both the *Emergency Closing* and *Process immediately* options.
+If *Process immediately* is not selected during an Emergency Closing event creation, staff can edit the closure entry, select the _Process immediately_ checkbox, and click *OK* to process the closure; however, the grid display does not update to show that the circulations and holds have been processed.
-This caveat applies to editing the dates of an Emergency Closure as well. If the Emergency Closure dates need to be changed or extended, editing the existing entry does not process the circulations and holds properly. Either the original entry should be deleted and a new one created that encompasses the full date range, or a second Emergency Closure should be created to for the extended date range.
+If the emergency closure dates need to be changed or extended, editing the existing entry _does not_ process the circulations and holds properly. Either the original entry should be deleted and a new one created that encompasses the full date range, or a second emergency closure should be created for the extended date range.
-To edit the Reason field of an existing Emergency Closing event, go to *Actions -> Edit closing*.
+== Deleting a closure ==
-image::emergency_closing/ECHEditClosing.png[Edit Closing]
+To delete a regular or emergency closure, select the closure in the grid and go to *Actions -> Delete closing*.
-A pop-up display will appear with the same format as creating a Closed Dates event. Once you make the changes, click *OK*. The Closed Dates Editor display will update.
+image::emergency_closing/delete closing.png[Delete Closing]
-image::emergency_closing/ECHEditClosingModal.png[Edit Closing Pop-Up]
+== Permissions ==
+
+To manage entries in the Closed Dates Editor, staff need the following permissions:
+
+* actor.org_unit.closed_date.create
+* actor.org_unit.closed_date.update
+* actor.org_unit.closed_date.delete
+
+To manage emergency closures, staff need the following additional permission:
+
+* EMERGENCY_CLOSING
-----------------------------------------------------------------------
Summary of changes:
.../admin/pages/emergency_closing_handler.adoc | 147 +++++++++++++--------
1 file changed, 92 insertions(+), 55 deletions(-)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch rel_3_15 updated. 8e875d535885816c0b771798e4d2a7f0fd2978d9
by Git User 08 Apr '25
by Git User 08 Apr '25
08 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, rel_3_15 has been updated
via 8e875d535885816c0b771798e4d2a7f0fd2978d9 (commit)
from 90182438f4dbe91678026bb83c14088918b03c04 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
docs/RELEASE_NOTES_3_15.adoc | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch main updated. 4c0ed6b480349977b296b74ac7283c56ae75c1e8
by Git User 07 Apr '25
by Git User 07 Apr '25
07 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, main has been updated
via 4c0ed6b480349977b296b74ac7283c56ae75c1e8 (commit)
from 59fe7c70ffef54c5de5140ac1a5e0517f8bbba74 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 4c0ed6b480349977b296b74ac7283c56ae75c1e8
Author: Jane Sandberg <sandbergja(a)gmail.com>
Date: Sun Feb 2 06:59:28 2025 -0800
LP2069646: Add a github actions check that the Angular client can compile
Release-note: Add an automated check that the staff client can build successfully.
Signed-off-by: Jane Sandberg <sandbergja(a)gmail.com>
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
diff --git a/.github/workflows/ng-build.yml b/.github/workflows/ng-build.yml
new file mode 100644
index 0000000000..3526b1dfc4
--- /dev/null
+++ b/.github/workflows/ng-build.yml
@@ -0,0 +1,29 @@
+name: Run ng build --configuration production
+on:
+ push:
+ paths:
+ - '.github/workflows/**'
+ - 'Open-ILS/src/eg2/**'
+ pull_request:
+ paths:
+ - '.github/workflows/**'
+ - 'Open-ILS/src/eg2/**'
+defaults:
+ run:
+ working-directory: Open-ILS/src/eg2
+jobs:
+ lint:
+ name: Run Angular build
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: 'npm'
+ cache-dependency-path: Open-ILS/src/eg2/package-lock.json
+ - name: Install dependencies
+ run: npm ci --ignore-scripts
+ - name: build
+ run: npx ng build --configuration production
+
-----------------------------------------------------------------------
Summary of changes:
.github/workflows/{ng-lint.yml => ng-build.yml} | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
copy .github/workflows/{ng-lint.yml => ng-build.yml} (60%)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch rel_3_13 updated. 467ab204b6387171d59be722669d272c04685371
by Git User 07 Apr '25
by Git User 07 Apr '25
07 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, rel_3_13 has been updated
via 467ab204b6387171d59be722669d272c04685371 (commit)
from c90e011eb2cf6cec58625a800d79ba07ac2fca4b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 467ab204b6387171d59be722669d272c04685371
Author: Jane Sandberg <sandbergja(a)gmail.com>
Date: Sun Feb 2 06:59:28 2025 -0800
LP2069646: Add a github actions check that the Angular client can compile
Release-note: Add an automated check that the staff client can build successfully.
Signed-off-by: Jane Sandberg <sandbergja(a)gmail.com>
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
diff --git a/.github/workflows/ng-build.yml b/.github/workflows/ng-build.yml
new file mode 100644
index 0000000000..3526b1dfc4
--- /dev/null
+++ b/.github/workflows/ng-build.yml
@@ -0,0 +1,29 @@
+name: Run ng build --configuration production
+on:
+ push:
+ paths:
+ - '.github/workflows/**'
+ - 'Open-ILS/src/eg2/**'
+ pull_request:
+ paths:
+ - '.github/workflows/**'
+ - 'Open-ILS/src/eg2/**'
+defaults:
+ run:
+ working-directory: Open-ILS/src/eg2
+jobs:
+ lint:
+ name: Run Angular build
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: 'npm'
+ cache-dependency-path: Open-ILS/src/eg2/package-lock.json
+ - name: Install dependencies
+ run: npm ci --ignore-scripts
+ - name: build
+ run: npx ng build --configuration production
+
-----------------------------------------------------------------------
Summary of changes:
.github/workflows/{ng-lint.yml => ng-build.yml} | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
copy .github/workflows/{ng-lint.yml => ng-build.yml} (56%)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch rel_3_14 updated. b95e57d89a5325bcaad8df613bea0ea8ce45db97
by Git User 07 Apr '25
by Git User 07 Apr '25
07 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, rel_3_14 has been updated
via b95e57d89a5325bcaad8df613bea0ea8ce45db97 (commit)
from ffb1c9b5693c41dfa927869d8631f6da4f1a2074 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit b95e57d89a5325bcaad8df613bea0ea8ce45db97
Author: Jane Sandberg <sandbergja(a)gmail.com>
Date: Sun Feb 2 06:59:28 2025 -0800
LP2069646: Add a github actions check that the Angular client can compile
Release-note: Add an automated check that the staff client can build successfully.
Signed-off-by: Jane Sandberg <sandbergja(a)gmail.com>
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
diff --git a/.github/workflows/ng-build.yml b/.github/workflows/ng-build.yml
new file mode 100644
index 0000000000..3526b1dfc4
--- /dev/null
+++ b/.github/workflows/ng-build.yml
@@ -0,0 +1,29 @@
+name: Run ng build --configuration production
+on:
+ push:
+ paths:
+ - '.github/workflows/**'
+ - 'Open-ILS/src/eg2/**'
+ pull_request:
+ paths:
+ - '.github/workflows/**'
+ - 'Open-ILS/src/eg2/**'
+defaults:
+ run:
+ working-directory: Open-ILS/src/eg2
+jobs:
+ lint:
+ name: Run Angular build
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: 'npm'
+ cache-dependency-path: Open-ILS/src/eg2/package-lock.json
+ - name: Install dependencies
+ run: npm ci --ignore-scripts
+ - name: build
+ run: npx ng build --configuration production
+
-----------------------------------------------------------------------
Summary of changes:
.github/workflows/{ng-lint.yml => ng-build.yml} | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
copy .github/workflows/{ng-lint.yml => ng-build.yml} (56%)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch rel_3_13 updated. c90e011eb2cf6cec58625a800d79ba07ac2fca4b
by Git User 07 Apr '25
by Git User 07 Apr '25
07 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, rel_3_13 has been updated
via c90e011eb2cf6cec58625a800d79ba07ac2fca4b (commit)
from 87d7b6c85a97ad5164e8839127ff0ad4860804b2 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit c90e011eb2cf6cec58625a800d79ba07ac2fca4b
Author: Jason Stephenson <jason(a)sigio.com>
Date: Thu Mar 20 10:13:35 2025 -0400
LP#2103714: Do not decode item fields in marc_export
This commit removes the call to Encode::decode_utf8 on item fields in
marc_export. It turns out that decoding them produces gibberish in
the output for some multibyte sequences.
To reproduce the bug/test the fix:
Find a record with a diacritic in the call number, call number prefix, or call number suffix.
Export it via marc_export with the --items option and format XML:
echo <record id> | marc_export --pipe --items -f XML > output.xml
Examine the file with your favorite UTF-8 editor and note that the
diacritic character in the call number is very like wrong or has the
unknown character glyph.
After applying the patch, repeat the above steps and the character
should appear as expected.
NB: You cannot currently test this bug in concerto without editing a
call number to add a Unicode charater, "ê" should work.
Release-note: Fix handling of diacritics in marc_export items export.
Signed-off-by: Jason Stephenson <jason(a)sigio.com>
Signed-off-by: Llewellyn Marshall <llewellyn.marshall(a)dncr.nc.gov>
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
diff --git a/Open-ILS/src/support-scripts/marc_export.in b/Open-ILS/src/support-scripts/marc_export.in
index 23cbd40a1d..399a0b3d0b 100755
--- a/Open-ILS/src/support-scripts/marc_export.in
+++ b/Open-ILS/src/support-scripts/marc_export.in
@@ -22,7 +22,6 @@ use MARC::Field;
use MARC::Record;
use MARC::File::XML (BinaryEncoding => 'UTF-8');
use Date::Manip::Date;
-use Encode;
my $U = 'OpenILS::Application::AppUtils';
binmode(STDERR, ':utf8');
@@ -726,16 +725,16 @@ sub next {
my $f852b_option = $Marque::config->option_value('852b');
if ($f852b_option eq 'owning_lib') {
@sfb = (
- b => Encode::decode_utf8($acp->call_number()->owning_lib()->shortname()),
+ b => $acp->call_number()->owning_lib()->shortname(),
);
} elsif ($f852b_option eq 'circ_lib') {
@sfb = (
- b => Encode::decode_utf8($acp->circ_lib()->shortname()),
+ b => $acp->circ_lib()->shortname(),
);
} else {
@sfb = (
- b => Encode::decode_utf8($acp->call_number()->owning_lib()->shortname()),
- b => Encode::decode_utf8($acp->circ_lib()->shortname()),
+ b => $acp->call_number()->owning_lib()->shortname(),
+ b => $acp->circ_lib()->shortname(),
);
}
@@ -746,14 +745,14 @@ sub next {
'852', '4', ' ',
($location ? ('a' => $location) : ()),
@sfb,
- c => Encode::decode_utf8($acp->location()->name()),
- ($prefix ? (k => Encode::decode_utf8($prefix)) : ()),
- j => Encode::decode_utf8($acp->call_number()->label()),
- ($suffix ? (m => Encode::decode_utf8($suffix)) : ()),
- ($acp->circ_modifier() ? (g => Encode::decode_utf8($acp->circ_modifier())) : ()),
- p => Encode::decode_utf8($acp->barcode()),
- s => Encode::decode_utf8($status),
- ($price ? (y => Encode::decode_utf8($price)) : ()),
+ c => $acp->location()->name(),
+ ($prefix ? (k => $prefix) : ()),
+ j => $acp->call_number()->label(),
+ ($suffix ? (m => $suffix) : ()),
+ ($acp->circ_modifier() ? (g => $acp->circ_modifier()) : ()),
+ p => $acp->barcode(),
+ s => $status,
+ ($price ? (y => $price) : ()),
($acp->copy_number() ? (t => $acp->copy_number()) : ()),
($U->is_true($acp->ref()) ? (x => 'reference') : ()),
(!$U->is_true($acp->holdable()) ? (x => 'unholdable') : ()),
-----------------------------------------------------------------------
Summary of changes:
Open-ILS/src/support-scripts/marc_export.in | 25 ++++++++++++-------------
1 file changed, 12 insertions(+), 13 deletions(-)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch rel_3_14 updated. ffb1c9b5693c41dfa927869d8631f6da4f1a2074
by Git User 07 Apr '25
by Git User 07 Apr '25
07 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, rel_3_14 has been updated
via ffb1c9b5693c41dfa927869d8631f6da4f1a2074 (commit)
from 148c9782ba073c322b01bae9dd22f9429cd9f042 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit ffb1c9b5693c41dfa927869d8631f6da4f1a2074
Author: Jason Stephenson <jason(a)sigio.com>
Date: Thu Mar 20 10:13:35 2025 -0400
LP#2103714: Do not decode item fields in marc_export
This commit removes the call to Encode::decode_utf8 on item fields in
marc_export. It turns out that decoding them produces gibberish in
the output for some multibyte sequences.
To reproduce the bug/test the fix:
Find a record with a diacritic in the call number, call number prefix, or call number suffix.
Export it via marc_export with the --items option and format XML:
echo <record id> | marc_export --pipe --items -f XML > output.xml
Examine the file with your favorite UTF-8 editor and note that the
diacritic character in the call number is very like wrong or has the
unknown character glyph.
After applying the patch, repeat the above steps and the character
should appear as expected.
NB: You cannot currently test this bug in concerto without editing a
call number to add a Unicode charater, "ê" should work.
Release-note: Fix handling of diacritics in marc_export items export.
Signed-off-by: Jason Stephenson <jason(a)sigio.com>
Signed-off-by: Llewellyn Marshall <llewellyn.marshall(a)dncr.nc.gov>
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
diff --git a/Open-ILS/src/support-scripts/marc_export.in b/Open-ILS/src/support-scripts/marc_export.in
index 727b28a105..57b290f24f 100755
--- a/Open-ILS/src/support-scripts/marc_export.in
+++ b/Open-ILS/src/support-scripts/marc_export.in
@@ -22,7 +22,6 @@ use MARC::Field;
use MARC::Record;
use MARC::File::XML (BinaryEncoding => 'UTF-8');
use Date::Manip::Date;
-use Encode;
my $U = 'OpenILS::Application::AppUtils';
binmode(STDERR, ':utf8');
@@ -728,16 +727,16 @@ sub next {
my $f852b_option = $Marque::config->option_value('852b');
if ($f852b_option eq 'owning_lib') {
@sfb = (
- b => Encode::decode_utf8($acp->call_number()->owning_lib()->shortname()),
+ b => $acp->call_number()->owning_lib()->shortname(),
);
} elsif ($f852b_option eq 'circ_lib') {
@sfb = (
- b => Encode::decode_utf8($acp->circ_lib()->shortname()),
+ b => $acp->circ_lib()->shortname(),
);
} else {
@sfb = (
- b => Encode::decode_utf8($acp->call_number()->owning_lib()->shortname()),
- b => Encode::decode_utf8($acp->circ_lib()->shortname()),
+ b => $acp->call_number()->owning_lib()->shortname(),
+ b => $acp->circ_lib()->shortname(),
);
}
@@ -748,14 +747,14 @@ sub next {
'852', '4', ' ',
($location ? ('a' => $location) : ()),
@sfb,
- c => Encode::decode_utf8($acp->location()->name()),
- ($prefix ? (k => Encode::decode_utf8($prefix)) : ()),
- j => Encode::decode_utf8($acp->call_number()->label()),
- ($suffix ? (m => Encode::decode_utf8($suffix)) : ()),
- ($acp->circ_modifier() ? (g => Encode::decode_utf8($acp->circ_modifier())) : ()),
- p => Encode::decode_utf8($acp->barcode()),
- s => Encode::decode_utf8($status),
- ($price ? (y => Encode::decode_utf8($price)) : ()),
+ c => $acp->location()->name(),
+ ($prefix ? (k => $prefix) : ()),
+ j => $acp->call_number()->label(),
+ ($suffix ? (m => $suffix) : ()),
+ ($acp->circ_modifier() ? (g => $acp->circ_modifier()) : ()),
+ p => $acp->barcode(),
+ s => $status,
+ ($price ? (y => $price) : ()),
($acp->copy_number() ? (t => $acp->copy_number()) : ()),
($U->is_true($acp->ref()) ? (x => 'reference') : ()),
(!$U->is_true($acp->holdable()) ? (x => 'unholdable') : ()),
-----------------------------------------------------------------------
Summary of changes:
Open-ILS/src/support-scripts/marc_export.in | 25 ++++++++++++-------------
1 file changed, 12 insertions(+), 13 deletions(-)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch main updated. 59fe7c70ffef54c5de5140ac1a5e0517f8bbba74
by Git User 07 Apr '25
by Git User 07 Apr '25
07 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, main has been updated
via 59fe7c70ffef54c5de5140ac1a5e0517f8bbba74 (commit)
from 951eec731369ffa6225cef12c3fb4473c35874a9 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 59fe7c70ffef54c5de5140ac1a5e0517f8bbba74
Author: Jason Stephenson <jason(a)sigio.com>
Date: Thu Mar 20 10:13:35 2025 -0400
LP#2103714: Do not decode item fields in marc_export
This commit removes the call to Encode::decode_utf8 on item fields in
marc_export. It turns out that decoding them produces gibberish in
the output for some multibyte sequences.
To reproduce the bug/test the fix:
Find a record with a diacritic in the call number, call number prefix, or call number suffix.
Export it via marc_export with the --items option and format XML:
echo <record id> | marc_export --pipe --items -f XML > output.xml
Examine the file with your favorite UTF-8 editor and note that the
diacritic character in the call number is very like wrong or has the
unknown character glyph.
After applying the patch, repeat the above steps and the character
should appear as expected.
NB: You cannot currently test this bug in concerto without editing a
call number to add a Unicode charater, "ê" should work.
Release-note: Fix handling of diacritics in marc_export items export.
Signed-off-by: Jason Stephenson <jason(a)sigio.com>
Signed-off-by: Llewellyn Marshall <llewellyn.marshall(a)dncr.nc.gov>
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
diff --git a/Open-ILS/src/support-scripts/marc_export.in b/Open-ILS/src/support-scripts/marc_export.in
index 727b28a105..57b290f24f 100755
--- a/Open-ILS/src/support-scripts/marc_export.in
+++ b/Open-ILS/src/support-scripts/marc_export.in
@@ -22,7 +22,6 @@ use MARC::Field;
use MARC::Record;
use MARC::File::XML (BinaryEncoding => 'UTF-8');
use Date::Manip::Date;
-use Encode;
my $U = 'OpenILS::Application::AppUtils';
binmode(STDERR, ':utf8');
@@ -728,16 +727,16 @@ sub next {
my $f852b_option = $Marque::config->option_value('852b');
if ($f852b_option eq 'owning_lib') {
@sfb = (
- b => Encode::decode_utf8($acp->call_number()->owning_lib()->shortname()),
+ b => $acp->call_number()->owning_lib()->shortname(),
);
} elsif ($f852b_option eq 'circ_lib') {
@sfb = (
- b => Encode::decode_utf8($acp->circ_lib()->shortname()),
+ b => $acp->circ_lib()->shortname(),
);
} else {
@sfb = (
- b => Encode::decode_utf8($acp->call_number()->owning_lib()->shortname()),
- b => Encode::decode_utf8($acp->circ_lib()->shortname()),
+ b => $acp->call_number()->owning_lib()->shortname(),
+ b => $acp->circ_lib()->shortname(),
);
}
@@ -748,14 +747,14 @@ sub next {
'852', '4', ' ',
($location ? ('a' => $location) : ()),
@sfb,
- c => Encode::decode_utf8($acp->location()->name()),
- ($prefix ? (k => Encode::decode_utf8($prefix)) : ()),
- j => Encode::decode_utf8($acp->call_number()->label()),
- ($suffix ? (m => Encode::decode_utf8($suffix)) : ()),
- ($acp->circ_modifier() ? (g => Encode::decode_utf8($acp->circ_modifier())) : ()),
- p => Encode::decode_utf8($acp->barcode()),
- s => Encode::decode_utf8($status),
- ($price ? (y => Encode::decode_utf8($price)) : ()),
+ c => $acp->location()->name(),
+ ($prefix ? (k => $prefix) : ()),
+ j => $acp->call_number()->label(),
+ ($suffix ? (m => $suffix) : ()),
+ ($acp->circ_modifier() ? (g => $acp->circ_modifier()) : ()),
+ p => $acp->barcode(),
+ s => $status,
+ ($price ? (y => $price) : ()),
($acp->copy_number() ? (t => $acp->copy_number()) : ()),
($U->is_true($acp->ref()) ? (x => 'reference') : ()),
(!$U->is_true($acp->holdable()) ? (x => 'unholdable') : ()),
-----------------------------------------------------------------------
Summary of changes:
Open-ILS/src/support-scripts/marc_export.in | 25 ++++++++++++-------------
1 file changed, 12 insertions(+), 13 deletions(-)
hooks/post-receive
--
Evergreen ILS
1
0