Skip to content

Commit 8a072a6

Browse files
refactor: Move Linked Users Filter and Scope Display Selected
Fix issue found in testing, move linked user filter to display whether or not there are holds found and ensure display selected effectd only the unavailable holds section
1 parent 1a003e4 commit 8a072a6

File tree

2 files changed

+54
-42
lines changed

2 files changed

+54
-42
lines changed

code/web/interface/themes/responsive/MyAccount/holdsList.tpl

+20-19
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
11
{assign var="hideCoversFormDisplayed" value=false}
2-
{assign var="linkedUsersDropdownDisplayed" value=false}
2+
3+
{if count($linkedUsers) > 0 && empty($linkedUsersDropdownDisplayed)}
4+
<div id="linkedUsersDropdownContainer" class="form-group mt-2 mt-md-0 ms-md-3">
5+
<label for="linkedUsersDropdown" class="control-label me-2 mb-0">{translate text="Linked Users" isPublicFacing=true}&nbsp;</label>
6+
<select id="linkedUsersDropdown" class="form-control" name="linkedUserIds[]" multiple="multiple" size="2">
7+
<option value="" {if empty($selectedUsers)}selected{/if}>All</option>
8+
<option value="{$currentUserId}" {if in_array($currentUserId, $selectedUsers)} selected="selected"{/if}>
9+
{$currentUserName}
10+
</option>
11+
{foreach from=$linkedUsers item=user}
12+
<option value="{$user->id}"{if in_array($user->id, $selectedUsers)} selected="selected"{/if}>{$user->displayName}</option>
13+
{/foreach}
14+
</select>
15+
<button type="button" class="btn btn-primary" style="margin-top: 10px;" onclick="AspenDiscovery.Account.filterOutLinkedUsers();">
16+
{translate text="Show Users" isPublicFacing=true}
17+
</button>
18+
</div>
19+
{/if}
20+
321
{foreach from=$recordList item=sectionData key=sectionKey}
422
<h2>{if $sectionKey == 'available'}{translate text="Holds Ready For Pickup" isPublicFacing=true}{else}{if $source=='interlibrary_loan'}{translate text="Pending Requests" isPublicFacing=true}{else}{translate text="Pending Holds" isPublicFacing=true}{/if}{/if}</h2>
523
<p class="alert alert-info">
@@ -33,24 +51,7 @@
3351
{/foreach}
3452
</select>
3553

36-
{if count($linkedUsers) > 0 && empty($linkedUsersDropdownDisplayed)}
37-
<div id="linkedUsersDropdownContainer" class="form-group d-flex align-items-center mt-2 mt-md-0 ms-md-3">
38-
<label for="linkedUsersDropdown" class="control-label me-2 mb-0">{translate text="Linked Users" isPublicFacing=true}&nbsp;</label>
39-
<select id="linkedUsersDropdown" class="form-control me-2 mt-2 mt-md-0" name="linkedUserIds[]" multiple="multiple" size="2">
40-
<option value="" {if empty($selectedUsers)}selected{/if}>All</option>
41-
<option value="{$currentUserId}" {if in_array($currentUserId, $selectedUsers)} selected="selected"{/if}>
42-
{$currentUserName}
43-
</option>
44-
{foreach from=$linkedUsers item=user}
45-
<option value="{$user->id}"{if in_array($user->id, $selectedUsers)} selected="selected"{/if}>{$user->displayName}</option>
46-
{/foreach}
47-
</select>
48-
<button type="button" class="btn btn-primary mt-2 mt-md-0" onclick="AspenDiscovery.Account.filterOutLinkedUsers();">
49-
{translate text="Show Users" isPublicFacing=true}
50-
</button>
51-
</div>
52-
{assign var="linkedUsersDropdownDisplayed" value=true}
53-
{/if}
54+
5455

5556
{if empty($hideCoversFormDisplayed)}
5657
{* Display the Hide Covers switch above the first section that has holds; and only display it once *}

code/web/services/MyAccount/AJAX.php

+34-23
Original file line numberDiff line numberDiff line change
@@ -3578,36 +3578,44 @@ public function filterHolds(array $allHolds, array $selectedUsers, $selectedHold
35783578

35793579
$allUsersSelected = in_array("", $selectedUsers);
35803580

3581-
foreach (['available', 'unavailable'] as $type) {
3582-
foreach ($allHolds[$type] as $key => $hold) {
3583-
$includeHold = false;
3581+
foreach ($allHolds['available'] as $key => $hold) {
3582+
$includeHold = false;
35843583

3585-
if ($allUsersSelected || empty($selectedUsers) || in_array($hold->userId, $selectedUsers)) {
3586-
$includeHold = true;
3587-
}
3584+
if ($allUsersSelected || empty($selectedUsers) || in_array($hold->userId, $selectedUsers)) {
3585+
$includeHold = true;
3586+
}
35883587

3589-
if (!empty($selectedHolds)) {
3590-
$matchFound = false;
3591-
foreach ($selectedHolds as $selectedHold) {
3588+
if ($includeHold) {
3589+
$filteredHolds['available'][$key] = $hold;
3590+
}
3591+
}
35923592

3593-
$holdRecordId = intval(trim($hold->recordId));
3594-
$selectedHoldRecordId = intval(trim($selectedHold['recordId']));
3595-
$holdUserId = intval(trim($hold->userId));
3596-
$selectedHoldUserId = intval(trim($selectedHold['userId']));
3597-
if ($holdRecordId == $selectedHoldRecordId && $holdUserId == $selectedHoldUserId){
3598-
$matchFound = true;
3599-
break;
3600-
}
3601-
}
3602-
if (!$matchFound) {
3603-
$includeHold = false;
3593+
foreach ($allHolds['unavailable'] as $key => $hold) {
3594+
$includeHold = false;
3595+
3596+
if ($allUsersSelected || empty($selectedUsers) || in_array($hold->userId, $selectedUsers)) {
3597+
$includeHold = true;
3598+
}
3599+
if (!empty($selectedHolds)) {
3600+
$matchFound = false;
3601+
foreach ($selectedHolds as $selectedHold) {
3602+
$holdRecordId = intval(trim($hold->recordId));
3603+
$selectedHoldRecordId = intval(trim($selectedHold['recordId']));
3604+
$holdUserId = intval(trim($hold->userId));
3605+
$selectedHoldUserId = intval(trim($selectedHold['userId']));
3606+
if ($holdRecordId == $selectedHoldRecordId && $holdUserId == $selectedHoldUserId){
3607+
$matchFound = true;
3608+
break;
36043609
}
36053610
}
3606-
3607-
if ($includeHold) {
3608-
$filteredHolds[$type][$key] = $hold;
3611+
if (!$matchFound) {
3612+
$includeHold = false;
36093613
}
36103614
}
3615+
3616+
if ($includeHold) {
3617+
$filteredHolds['unavailable'][$key] = $hold;
3618+
}
36113619
}
36123620
return $filteredHolds;
36133621
}
@@ -3737,6 +3745,9 @@ public function getHolds(): array {
37373745
if (!$offlineMode) {
37383746
if ($user) {
37393747
$allHolds = $this->filterHolds($user->getHolds(true, $selectedUnavailableSortOption, $selectedAvailableSortOption, $source), $selectedUsers, $selectedHolds);
3748+
error_log('Available Holds: ' . print_r($allHolds['available'], true));
3749+
error_log('Unavailable Holds: ' . print_r($allHolds['unavailable'], true));
3750+
37403751
$interface->assign('recordList', $allHolds);
37413752
}
37423753
}

0 commit comments

Comments
 (0)