diff --git a/resources/i18n/en.json b/resources/i18n/en.json
index b8fc64eee6..9040e1ddfc 100644
--- a/resources/i18n/en.json
+++ b/resources/i18n/en.json
@@ -82,22 +82,23 @@
"admin.registries.schema.title": "DSpace Angular :: Metadata Schema Registry",
"auth.errors.invalid-user": "Invalid email address or password.",
"auth.messages.expired": "Your session has expired. Please log in again.",
- "bitstream.edit.title": "Edit bitstream",
"bitstream.edit.bitstream": "Bitstream: ",
- "bitstream.edit.form.description.label": "Description",
"bitstream.edit.form.description.hint": "Optionally, provide a brief description of the file, for example \"Main article\" or \"Experiment data readings\".",
- "bitstream.edit.form.embargo.label": "Embargo until specific date",
+ "bitstream.edit.form.description.label": "Description",
"bitstream.edit.form.embargo.hint": "The first day from which access is allowed. This date cannot be modified on this form. To set an embargo date for a bitstream, go to the Item Status tab, click Authorizations..., create or edit the bitstream's READ policy, and set the Start Date as desired.",
- "bitstream.edit.form.fileName.label": "Filename",
+ "bitstream.edit.form.embargo.label": "Embargo until specific date",
"bitstream.edit.form.fileName.hint": "Change the filename for the bitstream. Note that this will change the display bitstream URL, but old links will still resolve as long as the sequence ID does not change.",
+ "bitstream.edit.form.fileName.label": "Filename",
+ "bitstream.edit.form.otherFormat.label": "Other Format",
+ "bitstream.edit.form.otherFormat.hint": "The application you used to create the file, and the version number (for example, \"ACMESoft SuperApp version 1.5\").",
"bitstream.edit.form.primaryBitstream.label": "Primary bitstream",
"bitstream.edit.form.selectedFormat.hint": "If the format is not in the above list, select \"format not in list\" above and describe it under \"Other Format\".",
"bitstream.edit.form.selectedFormat.label": "Selected Format",
"bitstream.edit.form.selectedFormat.unknown": "Format not in list",
- "bitstream.edit.form.otherFormat.label": "Other Format",
- "bitstream.edit.form.otherFormat.hint": "The application you used to create the file, and the version number (for example, \"ACMESoft SuperApp version 1.5\").",
+ "bitstream.edit.notifications.error.format.title": "An error occurred saving the bitstream's format",
"bitstream.edit.notifications.saved.content": "Your changes to this bitstream were saved.",
"bitstream.edit.notifications.saved.title": "Bitstream saved",
+ "bitstream.edit.title": "Edit bitstream",
"browse.comcol.by.author": "By Author",
"browse.comcol.by.dateissued": "By Issue Date",
"browse.comcol.by.subject": "By Subject",
@@ -391,6 +392,7 @@
"journalvolume.page.issuedate": "Issue Date",
"journalvolume.page.titleprefix": "Journal Volume: ",
"journalvolume.page.volume": "Volume",
+ "loading.bitstream": "Loading bitstream...",
"loading.browse-by": "Loading items...",
"loading.browse-by-page": "Loading page...",
"loading.collection": "Loading collection...",
diff --git a/src/app/+bitstream-page/edit-bitstream-page/edit-bitstream-page.component.html b/src/app/+bitstream-page/edit-bitstream-page/edit-bitstream-page.component.html
index 6efbcb20ab..bf37f2bc1c 100644
--- a/src/app/+bitstream-page/edit-bitstream-page/edit-bitstream-page.component.html
+++ b/src/app/+bitstream-page/edit-bitstream-page/edit-bitstream-page.component.html
@@ -1,5 +1,5 @@
-
+
@@ -20,4 +20,5 @@
(dfChange)="onChange($event)">
+
diff --git a/src/app/+bitstream-page/edit-bitstream-page/edit-bitstream-page.component.spec.ts b/src/app/+bitstream-page/edit-bitstream-page/edit-bitstream-page.component.spec.ts
index 5107a53c4d..94e1609c97 100644
--- a/src/app/+bitstream-page/edit-bitstream-page/edit-bitstream-page.component.spec.ts
+++ b/src/app/+bitstream-page/edit-bitstream-page/edit-bitstream-page.component.spec.ts
@@ -8,7 +8,7 @@ import { ActivatedRoute } from '@angular/router';
import { DynamicFormControlModel, DynamicFormService } from '@ng-dynamic-forms/core';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { BitstreamDataService } from '../../core/data/bitstream-data.service';
-import { NO_ERRORS_SCHEMA } from '@angular/core';
+import { ChangeDetectorRef, NO_ERRORS_SCHEMA } from '@angular/core';
import { BitstreamFormatDataService } from '../../core/data/bitstream-format-data.service';
import { Bitstream } from '../../core/shared/bitstream.model';
import { NotificationType } from '../../shared/notifications/models/notification-type';
@@ -111,7 +111,8 @@ describe('EditBitstreamPageComponent', () => {
{ provide: DynamicFormService, useValue: formService },
{ provide: ActivatedRoute, useValue: { data: observableOf({ bitstream: new RemoteData(false, false, true, null, bitstream) }) } },
{ provide: BitstreamDataService, useValue: bitstreamService },
- { provide: BitstreamFormatDataService, useValue: bitstreamFormatService }
+ { provide: BitstreamFormatDataService, useValue: bitstreamFormatService },
+ ChangeDetectorRef
],
schemas: [NO_ERRORS_SCHEMA]
}).compileComponents();
diff --git a/src/app/+bitstream-page/edit-bitstream-page/edit-bitstream-page.component.ts b/src/app/+bitstream-page/edit-bitstream-page/edit-bitstream-page.component.ts
index 83c3bb10fd..264747b339 100644
--- a/src/app/+bitstream-page/edit-bitstream-page/edit-bitstream-page.component.ts
+++ b/src/app/+bitstream-page/edit-bitstream-page/edit-bitstream-page.component.ts
@@ -1,4 +1,4 @@
-import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';
+import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';
import { Bitstream } from '../../core/shared/bitstream.model';
import { ActivatedRoute } from '@angular/router';
import { map, take, tap } from 'rxjs/operators';
@@ -248,7 +248,8 @@ export class EditBitstreamPageComponent implements OnInit, OnDestroy {
private translate: TranslateService,
private bitstreamService: BitstreamDataService,
private notificationsService: NotificationsService,
- private bitstreamFormatService: BitstreamFormatDataService) {
+ private bitstreamFormatService: BitstreamFormatDataService,
+ private changeDetectorRef: ChangeDetectorRef) {
}
/**
@@ -278,6 +279,7 @@ export class EditBitstreamPageComponent implements OnInit, OnDestroy {
this.formats = allFormats.page;
this.updateFormatModel();
this.updateForm(this.bitstream);
+ this.changeDetectorRef.detectChanges();
});
this.updateFieldTranslations();
@@ -285,6 +287,7 @@ export class EditBitstreamPageComponent implements OnInit, OnDestroy {
.subscribe(() => {
this.updateFieldTranslations();
});
+ this.changeDetectorRef.detectChanges();
}
/**
@@ -429,6 +432,12 @@ export class EditBitstreamPageComponent implements OnInit, OnDestroy {
this.translate.instant(this.NOTIFICATIONS_PREFIX + 'saved.title'),
this.translate.instant(this.NOTIFICATIONS_PREFIX + 'saved.content')
);
+ if (hasValue(formatResponse) && !formatResponse.isSuccessful) {
+ this.notificationsService.error(
+ this.translate.instant(this.NOTIFICATIONS_PREFIX + 'error.format.title'),
+ formatResponse.statusText
+ );
+ }
}
/**
diff --git a/src/app/+item-page/edit-item-page/abstract-item-update/abstract-item-update.component.ts b/src/app/+item-page/edit-item-page/abstract-item-update/abstract-item-update.component.ts
index 255532c8c4..7cb24f9e46 100644
--- a/src/app/+item-page/edit-item-page/abstract-item-update/abstract-item-update.component.ts
+++ b/src/app/+item-page/edit-item-page/abstract-item-update/abstract-item-update.component.ts
@@ -1,4 +1,4 @@
-import { Inject, Injectable, OnInit } from '@angular/core';
+import { Component, Inject, Injectable, OnInit } from '@angular/core';
import { FieldUpdate, FieldUpdates } from '../../../core/data/object-updates/object-updates.reducer';
import { Observable } from 'rxjs/internal/Observable';
import { Item } from '../../../core/shared/item.model';
@@ -12,11 +12,14 @@ import { first, map } from 'rxjs/operators';
import { RemoteData } from '../../../core/data/remote-data';
import { AbstractTrackableComponent } from '../../../shared/trackable/abstract-trackable.component';
-@Injectable()
+@Component({
+ selector: 'ds-abstract-item-update',
+ template: ''
+})
/**
* Abstract component for managing object updates of an item
*/
-export abstract class AbstractItemUpdateComponent extends AbstractTrackableComponent implements OnInit {
+export class AbstractItemUpdateComponent extends AbstractTrackableComponent implements OnInit {
/**
* The item to display the edit page for
*/
@@ -70,18 +73,35 @@ export abstract class AbstractItemUpdateComponent extends AbstractTrackableCompo
/**
* Initialize the values and updates of the current item's fields
+ * Abstract method: Should be overwritten in the sub class
*/
- abstract initializeUpdates(): void;
+ initializeUpdates(): void {
+ // Overwrite in subclasses
+ }
/**
* Initialize the prefix for notification messages
+ * Abstract method: Should be overwritten in the sub class
*/
- abstract initializeNotificationsPrefix(): void;
+ initializeNotificationsPrefix(): void {
+ // Overwrite in subclasses
+ }
/**
* Sends all initial values of this item to the object updates service
+ * Abstract method: Should be overwritten in the sub class
*/
- abstract initializeOriginalFields(): void;
+ initializeOriginalFields(): void {
+ // Overwrite in subclasses
+ }
+
+ /**
+ * Submit the current changes
+ * Abstract method: Should be overwritten in the sub class
+ */
+ submit(): void {
+ // Overwrite in subclasses
+ }
/**
* Prevent unnecessary rerendering so fields don't lose focus
@@ -112,9 +132,4 @@ export abstract class AbstractItemUpdateComponent extends AbstractTrackableCompo
}
);
}
-
- /**
- * Submit the current changes
- */
- abstract submit(): void;
}
diff --git a/src/app/+item-page/edit-item-page/edit-item-page.module.ts b/src/app/+item-page/edit-item-page/edit-item-page.module.ts
index 97478b81aa..77f5712a4c 100644
--- a/src/app/+item-page/edit-item-page/edit-item-page.module.ts
+++ b/src/app/+item-page/edit-item-page/edit-item-page.module.ts
@@ -19,6 +19,7 @@ import { ItemEditBitstreamComponent } from './item-bitstreams/item-edit-bitstrea
import { ItemRelationshipsComponent } from './item-relationships/item-relationships.component';
import { EditRelationshipComponent } from './item-relationships/edit-relationship/edit-relationship.component';
import { EditRelationshipListComponent } from './item-relationships/edit-relationship-list/edit-relationship-list.component';
+import { AbstractItemUpdateComponent } from './abstract-item-update/abstract-item-update.component';
/**
* Module that contains all components related to the Edit Item page administrator functionality
@@ -33,6 +34,7 @@ import { EditRelationshipListComponent } from './item-relationships/edit-relatio
EditItemPageComponent,
ItemOperationComponent,
AbstractSimpleItemActionComponent,
+ AbstractItemUpdateComponent,
ModifyItemOverviewComponent,
ItemWithdrawComponent,
ItemReinstateComponent,
diff --git a/src/app/+item-page/edit-item-page/item-bitstreams/item-bitstreams.component.spec.ts b/src/app/+item-page/edit-item-page/item-bitstreams/item-bitstreams.component.spec.ts
index 3ead77ae92..8039f5d7cd 100644
--- a/src/app/+item-page/edit-item-page/item-bitstreams/item-bitstreams.component.spec.ts
+++ b/src/app/+item-page/edit-item-page/item-bitstreams/item-bitstreams.component.spec.ts
@@ -50,7 +50,7 @@ const url = 'thisUrl';
let item: Item;
let itemService: ItemDataService;
let objectUpdatesService: ObjectUpdatesService;
-let router: Router;
+let router: any;
let route: ActivatedRoute;
let notificationsService: NotificationsService;
let bitstreamService: BitstreamDataService;
diff --git a/src/app/core/cache/server-sync-buffer.effects.spec.ts b/src/app/core/cache/server-sync-buffer.effects.spec.ts
index 68e5b1f94f..66477adc20 100644
--- a/src/app/core/cache/server-sync-buffer.effects.spec.ts
+++ b/src/app/core/cache/server-sync-buffer.effects.spec.ts
@@ -18,7 +18,7 @@ import { DSpaceObject } from '../shared/dspace-object.model';
import { getMockRequestService } from '../../shared/mocks/mock-request.service';
import { ApplyPatchObjectCacheAction } from './object-cache.actions';
-fdescribe('ServerSyncBufferEffects', () => {
+describe('ServerSyncBufferEffects', () => {
let ssbEffects: ServerSyncBufferEffects;
let actions: Observable;
const testConfig = {