Files
dspace-angular/src/app/item-page/bitstreams/request-a-copy/bitstream-request-a-copy-page.component.html
2025-07-08 11:06:30 +02:00

110 lines
4.4 KiB
HTML

<div class="container">
<h1 class="mb-4">{{'bitstream-request-a-copy.header' | translate}}</h1>
@if (canDownload$|async) {
<div class="alert alert-success">
<span>{{'bitstream-request-a-copy.alert.canDownload1' | translate}}</span>
<a [routerLink]="getBitstreamLink()">{{'bitstream-request-a-copy.alert.canDownload2'| translate}}</a>
</div>
}
<div>
<p>{{'bitstream-request-a-copy.intro' | translate}} <a [routerLink]="getItemPath()">{{itemName}}</a></p>
@if (bitstream !== undefined && allfiles.value === 'false') {
<p>{{'bitstream-request-a-copy.intro.bitstream.one' | translate}} {{bitstreamName}}</p>
}
@if (allfiles.value === 'true') {
<p>{{'bitstream-request-a-copy.intro.bitstream.all' | translate}}</p>
}
</div>
<form [class]="'ng-invalid'" [formGroup]="requestCopyForm" (ngSubmit)="onSubmit()">
<div class="mb-3">
<div class="row mb-4">
<div class="col-12">
<label for="name" class="form-label">{{'bitstream-request-a-copy.name.label' | translate}}</label>
<input [className]="(name.invalid) && (name.dirty || name.touched) ? 'form-control is-invalid' :'form-control'"
type="text" id="name" formControlName="name"/>
@if (name.invalid && (name.dirty || name.touched)) {
<div
class="invalid-feedback show-feedback">
@if (name.errors && name.errors.required) {
<span>
{{ 'bitstream-request-a-copy.name.error' | translate }}
</span>
}
</div>
}
</div>
</div>
<div class="row mb-4">
<div class="col-12">
<label
for="email" class="form-label">{{'bitstream-request-a-copy.email.label' | translate}}</label>
<input
[className]="(email.invalid) && (email.dirty || email.touched) ? 'form-control is-invalid' :'form-control'"
id="email" formControlName="email">
@if (email.invalid && (email.dirty || email.touched)) {
<div
class="invalid-feedback show-feedback">
@if (email.errors) {
<span>
{{ 'bitstream-request-a-copy.email.error' | translate }}
</span>
}
</div>
}
<small class="text-muted ds-hint">{{'bitstream-request-a-copy.email.hint' |translate}}</small>
</div>
</div>
<div class="row mb-4">
<div class="col-12">
<div>{{'bitstream-request-a-copy.allfiles.label' |translate}}</div>
<div class="ms-2 form-check">
<input [className]="'form-check-input'" type="radio"
id="allfiles-true" formControlName="allfiles" value="true">
<label class="form-check-label"
for="allfiles-true">{{'bitstream-request-a-copy.files-all-true.label' | translate}}</label>
</div>
<div class="ms-2 form-check">
<input [className]="'form-check-input'" type="radio"
id="allfiles-false" formControlName="allfiles" value="false" [attr.disabled]="bitstream === undefined ? true : null ">
<label class="form-check-label"
for="allfiles-false">{{'bitstream-request-a-copy.files-all-false.label' | translate}}</label>
</div>
</div>
</div>
<div class="row mb-4">
<div class="col-12">
<label
for="message" class="form-label">{{'bitstream-request-a-copy.message.label' | translate}}</label>
<textarea rows="5"
[className]="'form-control'"
id="message" formControlName="message"></textarea>
</div>
</div>
</div>
</form>
<!-- Captcha - to be rendered only if enabled in backend requestitem.cfg -->
@if (!!(captchaEnabled$ | async)) {
<div>
<ds-altcha-captcha autoload="onload" challengeUrl="{{ challengeHref$ | async }}" (payload)="handlePayload($event)">
</ds-altcha-captcha>
</div>
}
<hr>
<div class="row">
<div class="col-12 text-end">
<a (click)="navigateBack()" role="button" class="btn btn-outline-secondary me-1">
<i class="fas fa-arrow-left"></i> {{'bitstream-request-a-copy.return' | translate}}
</a>
<button
[dsBtnDisabled]="requestCopyForm.invalid"
class="btn btn-default btn-primary"
(click)="onSubmit()">{{'bitstream-request-a-copy.submit' | translate}}</button>
</div>
</div>
</div>