Skip to content

Commit 0535fd3

Browse files
committed
Telegraph that Bitstream replacement is destructive
- Style the submission/edit Bitstream replacement modal to appear more like the delete modal - Make sure the "replace" button is disabled until we have a file - Sync all changes to the Bitstream replacement page
1 parent ab2b24a commit 0535fd3

7 files changed

Lines changed: 42 additions & 19 deletions

File tree

src/app/bitstream-page/replace-bitstream-page/replace-bitstream-page.component.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,18 @@ <h3>{{
3838
<ds-loading
3939
message="{{'loading.bitstream' | translate}}"></ds-loading>
4040
}
41-
41+
<p class="mb-0 text-muted">
42+
{{ 'bitstream.replace.page.disclaimer' | translate }}
43+
</p>
4244
<div class="button-row bottom">
4345
<div class="mt-4 float-end">
4446
<button class="back-button btn btn-outline-secondary me-2"
4547
(click)="back()"><i
4648
class="fas fa-arrow-left"></i>
4749
<span class="d-none d-sm-inline">&nbsp;{{ "bitstream.replace.page.button.return" | translate }}</span>
4850
</button>
49-
<button class="save-button btn btn-primary" (click)="save(uploader);"><i
50-
class="fas fa-save"></i>
51+
<button class="save-button btn btn-danger" (click)="save(uploader);" [dsBtnDisabled]="!uploader.uploader?.queue?.length"><i
52+
class="fas fa-retweet"></i>
5153
<span class="d-none d-sm-inline">&nbsp;{{ "bitstream.replace.page.button.save" | translate }}</span>
5254
</button>
5355
</div>

src/app/bitstream-page/replace-bitstream-page/replace-bitstream-page.component.spec.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,10 @@ import {
3232
createSuccessfulRemoteDataObject$,
3333
} from '@dspace/core/utilities/remote-data.utils';
3434
import { TranslateModule } from '@ngx-translate/core';
35+
import { FileItem } from 'ng2-file-upload';
3536
import { of } from 'rxjs';
3637

38+
import { BtnDisabledDirective } from '../../shared/btn-disabled.directive';
3739
import { UploaderComponent } from '../../shared/upload/uploader/uploader.component';
3840
import { UploaderOptions } from '../../shared/upload/uploader/uploader-options.model';
3941
import { UploaderProperties } from '../../shared/upload/uploader/uploader-properties.model';
@@ -98,6 +100,7 @@ describe('ReplaceBitstreamPageComponent', () => {
98100
ReplaceBitstreamPageComponent,
99101
TranslateModule.forRoot(),
100102
FileSizePipe,
103+
BtnDisabledDirective,
101104
],
102105
providers: [
103106
{ provide: Location, useValue: locationObject },
@@ -115,13 +118,16 @@ describe('ReplaceBitstreamPageComponent', () => {
115118
}).compileComponents();
116119
}),
117120
);
121+
let uploadComponent: UploaderComponent;
118122

119123
beforeEach(() => {
120124
localeService = TestBed.inject(LocaleService);
121125
localeService.getCurrentLanguageCode.and.returnValue(of('en'));
122126
fixture = TestBed.createComponent(ReplaceBitstreamPageComponent);
123127
component = fixture.componentInstance;
124128
notificationsService = TestBed.inject(NotificationsService);
129+
uploadComponent = fixture.debugElement.query(By.directive(TestUploaderComponent)).context;
130+
uploadComponent.uploader.queue = [];
125131
fixture.detectChanges();
126132
});
127133

@@ -143,11 +149,11 @@ describe('ReplaceBitstreamPageComponent', () => {
143149
});
144150

145151
describe('clicking save', () => {
146-
let uploadComponent: UploaderComponent;
147152
beforeEach(() => {
148153
spyOn(component, 'save').and.callThrough();
154+
uploadComponent.uploader.queue = [{} as FileItem];
155+
fixture.detectChanges();
149156
const backButton = fixture.debugElement.query(By.css('.save-button'));
150-
uploadComponent = fixture.debugElement.query(By.directive(TestUploaderComponent)).context;
151157
backButton.triggerEventHandler('click', {});
152158
});
153159

src/app/bitstream-page/replace-bitstream-page/replace-bitstream-page.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import { RequestService } from '../../core/data/request.service';
4040
import { Bitstream } from '../../core/shared/bitstream.model';
4141
import { getFirstSucceededRemoteDataPayload } from '../../core/shared/operators';
4242
import { URLCombiner } from '../../core/url-combiner/url-combiner';
43+
import { BtnDisabledDirective } from '../../shared/btn-disabled.directive';
4344
import { ErrorComponent } from '../../shared/error/error.component';
4445
import { ThemedLoadingComponent } from '../../shared/loading/themed-loading.component';
4546
import { UploaderComponent } from '../../shared/upload/uploader/uploader.component';
@@ -52,6 +53,7 @@ import { FileSizePipe } from '../../shared/utils/file-size-pipe';
5253
styleUrls: ['./replace-bitstream-page.component.scss'],
5354
imports: [
5455
AsyncPipe,
56+
BtnDisabledDirective,
5557
ErrorComponent,
5658
FileSizePipe,
5759
FileUploadModule,

src/app/submission/sections/upload/file/replace/submission-section-upload-file-replace/submission-section-upload-file-replace.component.html

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<div>
22
<div class="modal-header">
3-
<h4 class="modal-title">{{
3+
<h4 class="modal-title text-danger">{{
44
'bitstream.replace.page.header' | translate: {
55
fileName: fileName,
66
fileSize: fileSizeBytes | dsFileSize
@@ -30,18 +30,21 @@ <h4 class="modal-title">{{
3030
[(ngModel)]="shouldReplaceName"></ui-switch>
3131
<span class="font-weight-bold ms-2">{{ 'bitstream.replace.page.replace-name' | translate }}</span>
3232
</div>
33-
@if (!shouldReplaceName) {
34-
<div class="mb-2">
35-
<span class="text-muted"> {{ 'bitstream.replace.page.replace-name-hint' | translate }}</span>
36-
</div>
37-
}
38-
<div class="button-row bottom">
39-
<div class="mt-4 float-end mb-2">
40-
<button class="save-button btn btn-primary" (click)="saveFile(uploader);"><i
41-
class="fas fa-save"></i>
42-
<span class="d-none d-sm-inline">&nbsp;{{ "bitstream.replace.page.button.save" | translate }}</span>
43-
</button>
44-
</div>
33+
<div class="mb-2">
34+
<span [ngClass]="{ 'invisible': shouldReplaceName }"
35+
class="text-muted"> {{ 'bitstream.replace.page.replace-name-hint' | translate }}</span>
4536
</div>
37+
<p class="mb-0 text-muted">
38+
{{ 'bitstream.replace.page.disclaimer' | translate }}
39+
</p>
40+
</div>
41+
<div class="modal-footer">
42+
<button class="save-button btn btn-secondary" (click)="closeModal()">
43+
<span class="d-none d-sm-inline">&nbsp;{{ "bitstream.replace.page.button.cancel" | translate }}</span>
44+
</button>
45+
<button class="save-button btn btn-danger" (click)="saveFile(uploader);" [dsBtnDisabled]="!uploader.uploader?.queue?.length"><i
46+
class="fas fa-retweet"></i>
47+
<span class="d-none d-sm-inline">&nbsp;{{ "bitstream.replace.page.button.save" | translate }}</span>
48+
</button>
4649
</div>
4750
</div>

src/app/submission/sections/upload/file/replace/submission-section-upload-file-replace/submission-section-upload-file-replace.component.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
2323
import { TranslateModule } from '@ngx-translate/core';
2424
import { of } from 'rxjs';
2525

26+
import { BtnDisabledDirective } from '../../../../../../shared/btn-disabled.directive';
2627
import { UploaderComponent } from '../../../../../../shared/upload/uploader/uploader.component';
2728
import { UploaderOptions } from '../../../../../../shared/upload/uploader/uploader-options.model';
2829
import { UploaderProperties } from '../../../../../../shared/upload/uploader/uploader-properties.model';
@@ -65,6 +66,7 @@ describe('SubmissionSectionUploadFileReplaceComponent', () => {
6566
TranslateModule.forRoot(),
6667
VarDirective,
6768
FileSizePipe,
69+
BtnDisabledDirective,
6870
],
6971
providers: [
7072
{ provide: Location, useValue: locationObject },

src/app/submission/sections/upload/file/replace/submission-section-upload-file-replace/submission-section-upload-file-replace.component.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { NgClass } from '@angular/common';
12
import {
23
Component,
34
Input,
@@ -27,6 +28,7 @@ import {
2728
first,
2829
} from 'rxjs/operators';
2930

31+
import { BtnDisabledDirective } from '../../../../../../shared/btn-disabled.directive';
3032
import { UploaderComponent } from '../../../../../../shared/upload/uploader/uploader.component';
3133
import { UploaderOptions } from '../../../../../../shared/upload/uploader/uploader-options.model';
3234
import { FileSizePipe } from '../../../../../../shared/utils/file-size-pipe';
@@ -40,7 +42,9 @@ import { SectionsService } from '../../../../sections.service';
4042
templateUrl: './submission-section-upload-file-replace.component.html',
4143
styleUrls: ['./submission-section-upload-file-replace.component.scss'],
4244
imports: [
45+
BtnDisabledDirective,
4346
FileSizePipe,
47+
NgClass,
4448
TranslatePipe,
4549
UiSwitchModule,
4650
UploaderComponent,

src/assets/i18n/en.json5

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7681,7 +7681,11 @@
76817681

76827682
"bitstream.replace.page.button.return": "Back",
76837683

7684-
"bitstream.replace.page.button.save": "Save",
7684+
"bitstream.replace.page.disclaimer": "The original file will be deleted. This operation can't be undone.",
7685+
7686+
"bitstream.replace.page.button.cancel": "Cancel",
7687+
7688+
"bitstream.replace.page.button.save": "Replace file",
76857689

76867690
"bitstream.replace.page.upload.failed": "Bitstream upload failed",
76877691

0 commit comments

Comments
 (0)