Skip to content

Commit

Permalink
Correct 24.11 issues found during testing
Browse files Browse the repository at this point in the history
- When showing multi-select options within a One To Many Block, show all selected options
- Correct sorting of formats within a grouped work if the grouped work display settings do not have valid format sorting options.
- Do not allow adding OverDrive Scopes from the OverDrive Scopes list. They should be added within the settings instead.
- Update the list of libraries and locations that apply to an OverDrive scope to be checkboxes rather than individual dropdowns.
- Add additional notes to Library Settings and Scopes within OverDrive settings to better explain what they do.
- Do not allow sorting requests needing holds based on Format.
- Make cloudSourceBaseUrl within Library Settings a TINYTEXT field instead of VARCHAR to avoid row size limits.
  • Loading branch information
mdnoble73 authored and Jacobomara901 committed Dec 18, 2024
1 parent 83bfe1a commit 18fa923
Show file tree
Hide file tree
Showing 8 changed files with 663 additions and 74 deletions.
26 changes: 16 additions & 10 deletions code/web/RecordDrivers/GroupedWorkDriver.php
Original file line number Diff line number Diff line change
Expand Up @@ -417,17 +417,23 @@ function compareRelatedManifestations($a, $b) {
$groupedWorkDisplaySettings = $library->getGroupedWorkDisplaySettings();
$this->_formatSorting = $groupedWorkDisplaySettings->getFormatSortingGroup();
}
$groupedWork = $this->getGroupedWorkObject();
if ($groupedWork->grouping_category == 'book') {
$sortMethod = $this->_formatSorting->bookSortMethod;
}elseif ($groupedWork->grouping_category == 'comic') {
$sortMethod = $this->_formatSorting->comicSortMethod;
}elseif ($groupedWork->grouping_category == 'movie') {
$sortMethod = $this->_formatSorting->movieSortMethod;
}elseif ($groupedWork->grouping_category == 'music') {
$sortMethod = $this->_formatSorting->musicSortMethod;

//Format sorting can still be null before the format sorting is fully setup
if ($this->_formatSorting == null) {
$sortMethod = 1;
}else{
$sortMethod = $this->_formatSorting->otherSortMethod;
$groupedWork = $this->getGroupedWorkObject();
if ($groupedWork->grouping_category == 'book') {
$sortMethod = $this->_formatSorting->bookSortMethod;
}elseif ($groupedWork->grouping_category == 'comic') {
$sortMethod = $this->_formatSorting->comicSortMethod;
}elseif ($groupedWork->grouping_category == 'movie') {
$sortMethod = $this->_formatSorting->movieSortMethod;
}elseif ($groupedWork->grouping_category == 'music') {
$sortMethod = $this->_formatSorting->musicSortMethod;
}else{
$sortMethod = $this->_formatSorting->otherSortMethod;
}
}

if ($sortMethod == 1) {
Expand Down
16 changes: 13 additions & 3 deletions code/web/interface/themes/responsive/DataObjectUtil/oneToMany.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<th>{translate text="Sort" isAdminFacing=true}</th>
{/if}
{foreach from=$property.structure item=subProperty}
{if (in_array($subProperty.type, array('text', 'regularExpression', 'multilineRegularExpression', 'enum', 'date', 'checkbox', 'integer', 'textarea', 'html', 'dynamic_label')) || ($subProperty.type == 'multiSelect' && $subProperty.listStyle == 'checkboxList')) && empty($subProperty.hideInLists) }
{if (in_array($subProperty.type, array('text', 'regularExpression', 'multilineRegularExpression', 'enum', 'date', 'checkbox', 'integer', 'textarea', 'html', 'dynamic_label', 'multiSelect')) || ($subProperty.type == 'multiSelect' && $subProperty.listStyle == 'checkboxList')) && empty($subProperty.hideInLists) }
<th{if in_array($subProperty.type, array('text', 'regularExpression', 'multilineRegularExpression', 'enum', 'html', 'multiSelect'))} style="min-width:150px"{/if}>{translate text=$subProperty.label isAdminFacing=true}</th>
{/if}
{/foreach}
Expand All @@ -29,7 +29,7 @@
</td>
{/if}
{foreach from=$property.structure item=subProperty}
{if in_array($subProperty.type, array('text', 'regularExpression', 'enum', 'date', 'checkbox', 'integer', 'textarea', 'html', 'dynamic_label')) && empty($subProperty.hideInLists)}
{if in_array($subProperty.type, array('text', 'regularExpression', 'enum', 'date', 'checkbox', 'integer', 'textarea', 'html', 'dynamic_label', 'multiSelect')) && empty($subProperty.hideInLists)}
<td>
{assign var=subPropName value=$subProperty.property}
{assign var=subPropValue value=$subObject->$subPropName}
Expand All @@ -46,6 +46,16 @@
{if $subPropValue == 1}{translate text='Yes' isAdminFacing=true}{else}{translate text='No' isAdminFacing=true}{/if}
{/if}
<input type='checkbox' name='{$propName}_{$subPropName}[{$subObject->id}]' {if $subPropValue == 1}checked='checked'{/if} {if !empty($subProperty.readOnly) || !empty($property.readOnly)} style="display: none"{/if} data-id="{$subObject->id}"/>
{elseif $subProperty.type=='multiSelect'}
<span id="{$propName}_{$subPropName}_{$subObject->id}" data-id="{$subObject->id}">
{if is_array($subPropValue) && count($subPropValue) > 0}
{foreach from=$subProperty.values item=propertyName key=propertyValue}
{if array_key_exists($propertyValue, $subPropValue)}{$propertyName|escape}<br/>{/if}
{/foreach}
{else}
{translate text="No values selected" isAdminFacing='true'}
{/if}
<span>
{else}
{if $subObject->canActiveUserChangeSelection()}
<select name='{$propName}_{$subPropName}[{$subObject->id}]' id='{$propName}{$subPropName}_{$subObject->id}' class='form-control {if !empty($subProperty.required)} required{/if}' {if !empty($subProperty.onchange)}onchange="{$subProperty.onchange}"{/if} {if !empty($subProperty.readOnly) || !empty($property.readOnly)} readonly disabled{/if} data-id="{$subObject->id}">
Expand Down Expand Up @@ -205,4 +215,4 @@
}
{/literal}
</script>
</div>
</div>
218 changes: 218 additions & 0 deletions code/web/release_notes/24.11.00.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
## Aspen LiDA Updates
- Show the home library name of linked accounts on the Library Card page. Only show the library logo if it's correct for the home library. (Ticket 128681) (*KP*)
- Fixed a bug where holds needing confirmation were causing the app to crash. (Ticket 139245) (*KK*)
- Fixed a bug where Koha was returning a 400 error when placing a hold. (Ticket 137232) (*KK*)
- Updated functions for renewing checkouts, returning checkouts, thawing/freezing holds that are OverDrive items to send sourceId instead of recordId to accommodate for multiple OverDrive settings. (DIS-40) (*KK-G*)
- For libraries with multiple OverDrive connections, holds and checkouts will now display Collection name. (DIS-40) (*KK-G*)
- On the Grouped Work screen, OverDrive items will now display "Where Is It?" to give patrons the Collection name when multiple OverDrive are present. (DIS-40) (*KK-G*)
- Added Self Registration to the Login screen. (*KK*)
- To comply with the app store rules when enabling self-registration, users can now delete their Aspen Discovery account within Aspen LiDA in the 'More' menu. This only deletes user data related to Aspen Discovery such as lists, searches, cached holds/checkouts, etc. and does not affect their account with the ILS. (*KK*)
- When looking at which Greenhouse call to make for fetching libraries, updated checking the app slug to only look at the beginning of the string to start with "aspen-lida" to determine if it's the Aspen LiDA Community app, or a branded/alternative app. (*KK-G*)

## Aspen Discovery Updates
### Admin Updates
- Create a new Background Process that will allow long-running tasks to be executed in the background. This is currently used for generating reading history for test users, and recalculating cost savings. When executed, a user message is displayed when the task finishes so the user can do other tasks while the process runs. When results of the process are viewed, the message is automatically cleared. (*MDN*)
- Null pointer check when updating translatable text blocks (*MDN*)
- When showing multi-select options within a One To Many Block, show all selected options. This is currently used within OverDrive Scopes to show a list of all libraries when viewing scopes for the library. (*MDN*)

<div markdown="1" class="settings">

#### New Settings
- System Reports > Background Processes

</div>

### API Updates
- Avoid recursive call when no libraries can be found in the greenhouse. (*MDN*)

### CARL.X Updates
- When checking for order records based on shelf location, allow any casing of XORD. (*MDN*)

### eCommerce Updates
- Add extra error logging for NCR Payments (Ticket 134771) (*KL*)
- Fix an issue where staff users with permissions to see only their library's ecommerce report yielded no results (Ticket 140792) (*KL*)

### Greenhouse Updates
- Add additional debugging information to Aspen LiDA Site Listing Cache. (*MDN*)

### Indexing Updates
- When determining CD+Book format, do not mark as CD+Book if the 300e includes booklet rather than book. (*MDN*)
- Add a new format for Zines based on the 655a (*MDN*)
- Update indexer to avoid errors during concurrent (multithreaded) indexing of materials. (*MDN*)
- When determining Book+DVD format, check for videodisc in addition to dvd in 300e (Ticket 139639) (*KL*)

### Install Updates
- Make it easier to create new Symphony sites by creating account profiles and indexing profiles (similar to how Koha sites can be set up). (*MDN*)
- Update Debian servers to install Java 17 by default rather than Java 11. (*MDN*)
- Remove setting permissions on old solr directory that is no longer used. (*MDN*)

### Koha Updates
- Fixed an issue that caused Aspen to ignore the OPACSuggestionUnwantedFields setting (from Koha) by displaying fields even if they were there. (Ticket 105308) (*LM*)

### Library Savings
- Update recalculating library cost savings from the Replacement Costs page to be done in the background to support libraries which have a large number of patrons with reading history. (*MDN*)
- Correct loading the default text for library cost savings. (*MDN*)

### Library System Updates
- Carl.X only: Add the ability to set the payment branch for fines and eCommerce transactions. (*JStaub*)
- Update default username and password labels in library settings.

<div markdown="1" class="settings">

#### New Settings
- Primary Configuration > Library Systems > Fines/eCommerce > Payment Branch Source (Carl.X only)
- Primary Configuration > Library Systems > Fines/eCommerce > Specified Payment Branch Code (Carl.X only)

</div>

### Linked Account Updates
- Add the patron's display name to Aspen when adding a Linked Account. (Tickets 136957, 127427, 128681 (partial)) (*KP*)
- Include the expiry date for linked accounts in the API and LiDA. (Ticket 136902) (*KP*)

### Masquerade Updates
- Change the Masquerade flow. A Masquerade session will start on the page the guiding user was on when they initiated Masquerade instead of the active user's MyAccount page. When a Masquerade session is ended, the guiding user will return to the page they were on when they initiated Masquerade, instead of being redirected to the guiding user's MyAccount page (*JStaub*)

### Materials Request Updates
- Correct updating the internal formatId of requests when a request is created or updated. (*MDN*)
- Update hold candidate generation log to sort newest to oldest. (*MDN*)
- Correct pagination on the requests needing holds page. (*MDN*)
- Do not allow sorting requests needing holds based on Format. (*MDN*)

### OverDrive Updates
- Allow a single library to access multiple OverDrive collections. (DIS-29) (*MDN*)
- Split the information within OverDrive Scopes into:
- Scopes which define the records to include for a library (Adult, Teen, Kids)
- Library Settings which define the information about how to connect to the OverDrive collection which does not change based on the records included
- Allow multiple OverDrive Settings to be attached to a single library.
- When loading information from OverDrive about the records that are owned by a library, add an item for each collection that provides the title.
- If a library has access to more than one OverDrive collection, add a "Where is it?" link to search results and full record views.
- When selecting the "Where is it?" link, Aspen will display a list of owning collections with the total number of copies, available copies, and number of holds.
- Within the Copies section of full record view, display the number of holds on each collection for each copy.
- Display information about what collection a title is from within Holds and Checkouts if the library has access to more than one collection.
- When placing a hold or checking out a title, determine the best collection to place the hold in or borrow the title from. This takes into account whether the patron has remaining checkouts and/or holds, the availability of the title within each collection, and the hold ratio of titles in each collection if the title is not available.
- When freezing holds, thawing holds, returning titles, and accessing titles, ensure that the credentials for the proper collection are used.
- Allow patrons to view and modify the default loan periods for each collection.
- Update API data page to properly handle multiple OverDrive collections for a library.
- Display additional information on the Aspen Data page to more easily see the information stored in the database about each title and the collections it belongs in.
- Rename the old Format section to Available Platforms within the OverDrive full record page to meet OverDrive implementation standards. (*MDN*)
- When displaying format information, drop references to EPUB, PDF, etc. and use preferred terminology of Libby eBook, Libby eAudiobook. Where Libby will be automatically renamed with the reader name defined in settings. (*MDN*)
- Remove the old fulfillment interface that was deprecated by OverDrive. Fulfillment will be done using the new iFrame method. (*MDN*)
- Simplify loading number of copies owned, number of copies checked out, and number of holds for records within each collection. (*MDN*)
- Allow naming the OverDrive platform within settings, so it can be used independently of the reader name. (DIS-29) (*MDN*)
- Clean up usage of the OverDrive reader name to properly separate the reader name from the OverDrive platform. (DIS-29) (*MDN*)
- Fix spacing after reader name within the account menu so the count of titles on hold or checked out is not directly after the label. (*MDN*)
- Add handling within staff view if an OverDrive record is not attached to a Grouped Work and does not have bookcover information. (*MDN*)
- Default PIN required on within OverDrive Settings. (*MDN*)
- Remove unused code within OverDrive indexer. (*MDN*)
- Cleanup all OverDrive related code to remove style issues and warnings. (*MDN*)
- Do not allow adding OverDrive Scopes from the OverDrive Scopes list. They should be added within the settings instead. (*MDN*)
- Update the list of libraries and locations that apply to an OverDrive scope to be checkboxes rather than individual dropdowns. (*MDN*)
- Add additional notes to Library Settings and Scopes within OverDrive settings to better explain what they do. (*MDN*)

<div markdown="1" class="settings">

#### New Settings
- Primary Configuration > OverDrive > Settings > Name
- Primary Configuration > OverDrive > Settings > Reader Name
- Primary Configuration > OverDrive > Settings > Library Settings
- Primary Configuration > Library Systems > OverDrive > OverDrive Settings
- Primary Configuration > Library Systems > OverDrive > OverDrive Scopes

</div>

### Reports Updates
- Nashville-specific: Student report now includes book cover images. (*JStaub*)
- Nashville-specific: Student report now includes Masquerade links. (*JStaub*)

### SHAREit Updates
- Add the ability to search SHAREit as an Inter Library Loan Service. (DIS-27) (*MDN*)
- Patrons can repeat their search in SHAREit from the search bar.
- Search results from SHAREit are automatically shown at the bottom of search results.
- Results from SHAREit can be configured to show within Combined Results.
- Results from SHAREit can be enabled to be shown within full record displays.

<div markdown="1" class="settings">

#### New Settings
- Primary Configuration > Library Systems > Interlibrary loans > Interlibrary Loan System: Added SHAREit as an option
- Primary Configuration > Library Systems > Interlibrary loans > SHAREit > Repeat in SHAREit
- Primary Configuration > Library Systems > Interlibrary loans > SHAREit > SHAREit CID
- Primary Configuration > Library Systems > Interlibrary loans > SHAREit > SHAREit LID
- Primary Configuration > Library Systems > Interlibrary loans > SHAREit > SHAREit Username
- Primary Configuration > Library Systems > Interlibrary loans > SHAREit > SHAREit Password
- Primary Configuration > Library Systems > Locations > Searching > Search Box > Repeat in SHAREit
- Catalog / Grouped Works > Grouped Work Display > Full Record Options: Added SHAREit as an option

</div>

### Sierra Updates
- Hide the update username link in My Account if updating username is not allowed for the patron (Ticket 139915) (*KL*)

### Testing Updates
- Add the ability to generate test users. Up to 1000 test users can be generated at a time using popular names from around the world. The new tool is located at Greenhouse > Testing Tools > Generate Test Users. (*MDN*)
- Update the ability to generate reading history to process all test users, or all test users with no reading history in addition to generating reading history for a specific user. (*MDN*)

### Other Updates
- Fix uploading covers for a grouped work or individual record from a URL. (*MDN*)
- If no status is returned from a database update that uses a function call, return an appropriate message. (*MDN*)
- Properly set whether Explore More is shown within EBSCOhost results from a location interface. (*MDN*)
- Remove some deprecated variables related to Self Registration from Library Settings Code. (*MDN*)
- Remove old unused SSO code from Library Settings. (*MDN*)
- Cleanup all Library and Location settings to remove style issues and warnings. (*MDN*)
- Cleanup code for cached holds and checkouts to remove style issues and warnings. (*MDN*)
- Do not display settings for inactive modules within Location settings. (*MDN*)
- Make cloudSourceBaseUrl within Library Settings a TINYTEXT field instead of VARCHAR to avoid row size limits. (*MDN*)
- Correct sorting of formats within a grouped work if the grouped work display settings do not have valid format sorting options. (*MDN*)
- Use natural sort for selecting items to place a hold so that volumes are in order. (Ticket 137784 (partial)) (*KP*)
- Add an [EditorConfig](https://editorconfig.org) file to the project source. (*TC*)
- Github actions improvements to avoid false positives (*TC*)
- Fix typos in GitHub Actions for building docker images (*KMH*)
- Remove partner-specific directories in the /sites directory (*KL*)
- Increase the allowed length for the alternate library card label (*KL*)
- Make the setting to enable the Grapes Editor visible to any with the appropriate permissions (*KL*)
- Add check to saveToList function to ensure the user attempting to add a book to the list is authorised to do so. (*AB*)
- Ebsco EDS and host passwords are encrypted before being stored in the Aspen database (*CZ*)
- Fix issue where the Available Now At facet was not showing related locations and home locations at the top of the list (Ticket 122986 (partial)) (*KL*)
- Make sure cURL decodes the compressed response contents automatically (*TC*)

## This release includes code contributions from
###ByWater Solutions
- Katherine Perdue (KP)
- Kirstien Kroeger (KK)
- Kodi Lein (KL)

###Grove For Libraries
- Mark Noble (MDN)
- Kirstien Kroeger (KK-G)

###Nashville Public Library
- James Staub (JStaub)

###PTFS-Europe
- Alexander Blanchard (AB)
- Chloe Zermatten (CZ)

###Theke Solutions
- Lucas Montoya (LM)
- Tomás Cohen Arazi (TC)

## Special Testing thanks to
- Myranda Fuentes (Grove)
- Bryan Jones (Nashville Public Library)
- James Staub (Nashville Public Library)
- Janeal Walker (Metropolitan Public Library)
- Tricia Andrews (Metropolitan Public Library)
- Kate Lozyk (ByWater Solutions)
- Olivia Montolin (SWAN Library Services)
- Chloe Zermatten (PTFS-Europe)
- Aude Charillon (PTFS-Europe)
- Tara Wood (SWAN Library Services)
- Jordan Fields (Grove)

## Special Documentation thanks to
- Myranda Fuentes (Grove)
- Jordan Fields (Grove)

## This release includes sponsored developments from
- Helen Plum Public Library
- Panhandle Public Library Cooperative System
6 changes: 5 additions & 1 deletion code/web/services/OverDrive/Scopes.php
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,8 @@ function getActiveAdminSection(): string {
function canView(): bool {
return UserAccount::userHasPermission('Administer Libby/Sora');
}
}

function canAddNew() {
return false;
}
}
Loading

0 comments on commit 18fa923

Please sign in to comment.