net: NetService;
displayHighlights: {[name: string]: string | string[]} = {};
eResourceUrls: EResourceUrl[] = [];
+ isHoldable: boolean;
constructor(record: IdlObject, orgId: number, orgDepth?: number) {
this.id = Number(record.id());
summary.holdCount = bibSummary.hold_count;
summary.holdingsSummary = bibSummary.copy_counts;
summary.eResourceUrls = bibSummary.urls;
+ summary.isHoldable = bibSummary.record.deleted() == 'f'
+ && bibSummary.has_holdable_copy;
return summary;
}));
}
summary.attributes = metabibSummary.attributes;
summary.holdCount = metabibSummary.hold_count;
summary.holdingsSummary = metabibSummary.copy_counts;
+ summary.isHoldable = metabibSummary.record.deleted() == 'f'
+ && metabibSummary.has_holdable_copy;
return summary;
}));
}
<div class="row ml-0 mr-0">
- <a routerLink="/staff/catalog/hold/T" [queryParams]="{target: recId}">
+ <a routerLink="/staff/catalog/hold/T" [queryParams]="{target: recId}"
+ *ngIf="isHoldable">
<button class="btn btn-outline-primary ml-1" i18n>Place Hold</button>
</a>
+ <button class="btn btn-outline-secondary ml-1" *ngIf="!isHoldable" disabled i18n>
+ Place Hold
+ </button>
<button class="btn btn-outline-primary ml-1" (click)="addHoldings()" i18n>
Add Holdings
}
}
+ @Input() isHoldable: boolean;
+
constructor(
private router: Router,
private store: StoreService,
<div class="flex-1"></div>
<div id='staff-catalog-bib-navigation'>
<eg-catalog-record-actions [recordId]="recordId"
+ [isHoldable]="summary?.isHoldable"
(addHoldingsRequested)="addHoldingsRequested()">
</eg-catalog-record-actions>
</div>
<ng-container *ngIf="summary.record.deleted() == 't'">
<span class="text-danger" i18n>(Deleted)</span>
</ng-container>
- <ng-container *ngIf="summary.record.deleted() == 'f'">
- <span>
- <button (click)="placeHold()"
- class="btn btn-sm btn-success label-with-material-icon small-text-1">
- <span class="material-icons">check</span>
- <span i18n>Place Hold</span>
- </button>
- </span>
- </ng-container>
+ <span>
+ <button (click)="placeHold()" [disabled]="!summary.isHoldable"
+ [ngClass]="{'btn-success': summary.isHoldable, 'btn-secondary': !summary.isHoldable}"
+ class="btn btn-sm btn-success label-with-material-icon small-text-1">
+ <span class="material-icons">check</span>
+ <span i18n>Place Hold</span>
+ </button>
+ </span>
</div>
</div>
</div>
$copy_method = $self->method_lookup($copy_method); # local method
+ my $holdable_method = $is_meta ?
+ 'open-ils.search.biblio.metarecord.has_holdable_copy':
+ 'open-ils.search.biblio.record.has_holdable_copy';
+
+ $holdable_method = $self->method_lookup($holdable_method); # local method
+
for my $rec_id (@$record_ids) {
my $response = $is_meta ?
$response->{hold_count} =
$U->simplereq('open-ils.circ', $holds_method, $rec_id);
+ ($response->{has_holdable_copy}) = $holdable_method->run($rec_id);
+
$client->respond($response);
}