65240: Success notification on submitting comcol form

This commit is contained in:
Kristof De Langhe
2019-10-02 13:40:06 +02:00
parent 8a475f2523
commit 37a18fdaa7
13 changed files with 77 additions and 11 deletions

View File

@@ -121,6 +121,7 @@
"chips.remove": "Remove chip", "chips.remove": "Remove chip",
"collection.create.head": "Create a Collection", "collection.create.head": "Create a Collection",
"collection.create.notifications.success": "Successfully created the Collection",
"collection.create.sub-head": "Create a Collection for Community {{ parent }}", "collection.create.sub-head": "Create a Collection for Community {{ parent }}",
"collection.delete.cancel": "Cancel", "collection.delete.cancel": "Cancel",
"collection.delete.confirm": "Confirm", "collection.delete.confirm": "Confirm",
@@ -137,6 +138,7 @@
"collection.edit.logo.notifications.delete.success.content": "Successfully deleted the collection's logo", "collection.edit.logo.notifications.delete.success.content": "Successfully deleted the collection's logo",
"collection.edit.logo.notifications.delete.error.title": "Error deleting logo", "collection.edit.logo.notifications.delete.error.title": "Error deleting logo",
"collection.edit.logo.upload": "Drop a Collection Logo to upload", "collection.edit.logo.upload": "Drop a Collection Logo to upload",
"collection.edit.notifications.success": "Successfully edited the Collection",
"collection.form.abstract": "Short Description", "collection.form.abstract": "Short Description",
"collection.form.description": "Introductory text (HTML)", "collection.form.description": "Introductory text (HTML)",
"collection.form.errors.title.required": "Please enter a collection name", "collection.form.errors.title.required": "Please enter a collection name",
@@ -151,6 +153,7 @@
"collection.page.news": "News", "collection.page.news": "News",
"community.create.head": "Create a Community", "community.create.head": "Create a Community",
"community.create.notifications.success": "Successfully created the Community",
"community.create.sub-head": "Create a Sub-Community for Community {{ parent }}", "community.create.sub-head": "Create a Sub-Community for Community {{ parent }}",
"community.delete.cancel": "Cancel", "community.delete.cancel": "Cancel",
"community.delete.confirm": "Confirm", "community.delete.confirm": "Confirm",
@@ -167,6 +170,7 @@
"community.edit.logo.notifications.delete.success.content": "Successfully deleted the community's logo", "community.edit.logo.notifications.delete.success.content": "Successfully deleted the community's logo",
"community.edit.logo.notifications.delete.error.title": "Error deleting logo", "community.edit.logo.notifications.delete.error.title": "Error deleting logo",
"community.edit.logo.upload": "Drop a Community Logo to upload", "community.edit.logo.upload": "Drop a Community Logo to upload",
"community.edit.notifications.success": "Successfully edited the Community",
"community.form.abstract": "Short Description", "community.form.abstract": "Short Description",
"community.form.description": "Introductory text (HTML)", "community.form.description": "Introductory text (HTML)",
"community.form.errors.title.required": "Please enter a community name", "community.form.errors.title.required": "Please enter a community name",

View File

@@ -10,6 +10,8 @@ import { CollectionDataService } from '../../core/data/collection-data.service';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { CommunityDataService } from '../../core/data/community-data.service'; import { CommunityDataService } from '../../core/data/community-data.service';
import { CreateCollectionPageComponent } from './create-collection-page.component'; import { CreateCollectionPageComponent } from './create-collection-page.component';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../shared/testing/notifications-service-stub';
describe('CreateCollectionPageComponent', () => { describe('CreateCollectionPageComponent', () => {
let comp: CreateCollectionPageComponent; let comp: CreateCollectionPageComponent;
@@ -27,6 +29,7 @@ describe('CreateCollectionPageComponent', () => {
}, },
{ provide: RouteService, useValue: { getQueryParameterValue: () => observableOf('1234') } }, { provide: RouteService, useValue: { getQueryParameterValue: () => observableOf('1234') } },
{ provide: Router, useValue: {} }, { provide: Router, useValue: {} },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); }).compileComponents();

View File

@@ -5,6 +5,8 @@ import { Router } from '@angular/router';
import { CreateComColPageComponent } from '../../shared/comcol-forms/create-comcol-page/create-comcol-page.component'; import { CreateComColPageComponent } from '../../shared/comcol-forms/create-comcol-page/create-comcol-page.component';
import { Collection } from '../../core/shared/collection.model'; import { Collection } from '../../core/shared/collection.model';
import { CollectionDataService } from '../../core/data/collection-data.service'; import { CollectionDataService } from '../../core/data/collection-data.service';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { TranslateService } from '@ngx-translate/core';
/** /**
* Component that represents the page where a user can create a new Collection * Component that represents the page where a user can create a new Collection
@@ -16,13 +18,16 @@ import { CollectionDataService } from '../../core/data/collection-data.service';
}) })
export class CreateCollectionPageComponent extends CreateComColPageComponent<Collection> { export class CreateCollectionPageComponent extends CreateComColPageComponent<Collection> {
protected frontendURL = '/collections/'; protected frontendURL = '/collections/';
protected type = Collection.type;
public constructor( public constructor(
protected communityDataService: CommunityDataService, protected communityDataService: CommunityDataService,
protected collectionDataService: CollectionDataService, protected collectionDataService: CollectionDataService,
protected routeService: RouteService, protected routeService: RouteService,
protected router: Router protected router: Router,
protected notificationsService: NotificationsService,
protected translate: TranslateService
) { ) {
super(collectionDataService, communityDataService, routeService, router); super(collectionDataService, communityDataService, routeService, router, notificationsService, translate);
} }
} }

View File

@@ -8,6 +8,8 @@ import { EditCollectionPageComponent } from './edit-collection-page.component';
import { SharedModule } from '../../shared/shared.module'; import { SharedModule } from '../../shared/shared.module';
import { CollectionDataService } from '../../core/data/collection-data.service'; import { CollectionDataService } from '../../core/data/collection-data.service';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../shared/testing/notifications-service-stub';
describe('EditCollectionPageComponent', () => { describe('EditCollectionPageComponent', () => {
let comp: EditCollectionPageComponent; let comp: EditCollectionPageComponent;
@@ -20,6 +22,7 @@ describe('EditCollectionPageComponent', () => {
providers: [ providers: [
{ provide: CollectionDataService, useValue: {} }, { provide: CollectionDataService, useValue: {} },
{ provide: ActivatedRoute, useValue: { data: observableOf({ dso: { payload: {} } }) } }, { provide: ActivatedRoute, useValue: { data: observableOf({ dso: { payload: {} } }) } },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); }).compileComponents();

View File

@@ -3,6 +3,8 @@ import { ActivatedRoute, Router } from '@angular/router';
import { EditComColPageComponent } from '../../shared/comcol-forms/edit-comcol-page/edit-comcol-page.component'; import { EditComColPageComponent } from '../../shared/comcol-forms/edit-comcol-page/edit-comcol-page.component';
import { Collection } from '../../core/shared/collection.model'; import { Collection } from '../../core/shared/collection.model';
import { CollectionDataService } from '../../core/data/collection-data.service'; import { CollectionDataService } from '../../core/data/collection-data.service';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { TranslateService } from '@ngx-translate/core';
/** /**
* Component that represents the page where a user can edit an existing Collection * Component that represents the page where a user can edit an existing Collection
@@ -14,12 +16,15 @@ import { CollectionDataService } from '../../core/data/collection-data.service';
}) })
export class EditCollectionPageComponent extends EditComColPageComponent<Collection> { export class EditCollectionPageComponent extends EditComColPageComponent<Collection> {
protected frontendURL = '/collections/'; protected frontendURL = '/collections/';
protected type = Collection.type;
public constructor( public constructor(
protected collectionDataService: CollectionDataService, protected collectionDataService: CollectionDataService,
protected router: Router, protected router: Router,
protected route: ActivatedRoute protected route: ActivatedRoute,
protected notificationsService: NotificationsService,
protected translate: TranslateService
) { ) {
super(collectionDataService, router, route); super(collectionDataService, router, route, notificationsService, translate);
} }
} }

View File

@@ -10,6 +10,8 @@ import { CollectionDataService } from '../../core/data/collection-data.service';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { CommunityDataService } from '../../core/data/community-data.service'; import { CommunityDataService } from '../../core/data/community-data.service';
import { CreateCommunityPageComponent } from './create-community-page.component'; import { CreateCommunityPageComponent } from './create-community-page.component';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../shared/testing/notifications-service-stub';
describe('CreateCommunityPageComponent', () => { describe('CreateCommunityPageComponent', () => {
let comp: CreateCommunityPageComponent; let comp: CreateCommunityPageComponent;
@@ -23,6 +25,7 @@ describe('CreateCommunityPageComponent', () => {
{ provide: CommunityDataService, useValue: { findById: () => observableOf({}) } }, { provide: CommunityDataService, useValue: { findById: () => observableOf({}) } },
{ provide: RouteService, useValue: { getQueryParameterValue: () => observableOf('1234') } }, { provide: RouteService, useValue: { getQueryParameterValue: () => observableOf('1234') } },
{ provide: Router, useValue: {} }, { provide: Router, useValue: {} },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); }).compileComponents();

View File

@@ -4,6 +4,8 @@ import { CommunityDataService } from '../../core/data/community-data.service';
import { RouteService } from '../../core/services/route.service'; import { RouteService } from '../../core/services/route.service';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { CreateComColPageComponent } from '../../shared/comcol-forms/create-comcol-page/create-comcol-page.component'; import { CreateComColPageComponent } from '../../shared/comcol-forms/create-comcol-page/create-comcol-page.component';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { TranslateService } from '@ngx-translate/core';
/** /**
* Component that represents the page where a user can create a new Community * Component that represents the page where a user can create a new Community
@@ -15,12 +17,15 @@ import { CreateComColPageComponent } from '../../shared/comcol-forms/create-comc
}) })
export class CreateCommunityPageComponent extends CreateComColPageComponent<Community> { export class CreateCommunityPageComponent extends CreateComColPageComponent<Community> {
protected frontendURL = '/communities/'; protected frontendURL = '/communities/';
protected type = Community.type;
public constructor( public constructor(
protected communityDataService: CommunityDataService, protected communityDataService: CommunityDataService,
protected routeService: RouteService, protected routeService: RouteService,
protected router: Router protected router: Router,
protected notificationsService: NotificationsService,
protected translate: TranslateService
) { ) {
super(communityDataService, communityDataService, routeService, router); super(communityDataService, communityDataService, routeService, router, notificationsService, translate);
} }
} }

View File

@@ -8,6 +8,8 @@ import { SharedModule } from '../../shared/shared.module';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { EditCommunityPageComponent } from './edit-community-page.component'; import { EditCommunityPageComponent } from './edit-community-page.component';
import { CommunityDataService } from '../../core/data/community-data.service'; import { CommunityDataService } from '../../core/data/community-data.service';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../shared/testing/notifications-service-stub';
describe('EditCommunityPageComponent', () => { describe('EditCommunityPageComponent', () => {
let comp: EditCommunityPageComponent; let comp: EditCommunityPageComponent;
@@ -20,6 +22,7 @@ describe('EditCommunityPageComponent', () => {
providers: [ providers: [
{ provide: CommunityDataService, useValue: {} }, { provide: CommunityDataService, useValue: {} },
{ provide: ActivatedRoute, useValue: { data: observableOf({ dso: { payload: {} } }) } }, { provide: ActivatedRoute, useValue: { data: observableOf({ dso: { payload: {} } }) } },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); }).compileComponents();

View File

@@ -3,6 +3,8 @@ import { Community } from '../../core/shared/community.model';
import { CommunityDataService } from '../../core/data/community-data.service'; import { CommunityDataService } from '../../core/data/community-data.service';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { EditComColPageComponent } from '../../shared/comcol-forms/edit-comcol-page/edit-comcol-page.component'; import { EditComColPageComponent } from '../../shared/comcol-forms/edit-comcol-page/edit-comcol-page.component';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { TranslateService } from '@ngx-translate/core';
/** /**
* Component that represents the page where a user can edit an existing Community * Component that represents the page where a user can edit an existing Community
@@ -14,12 +16,15 @@ import { EditComColPageComponent } from '../../shared/comcol-forms/edit-comcol-p
}) })
export class EditCommunityPageComponent extends EditComColPageComponent<Community> { export class EditCommunityPageComponent extends EditComColPageComponent<Community> {
protected frontendURL = '/communities/'; protected frontendURL = '/communities/';
protected type = Community.type;
public constructor( public constructor(
protected communityDataService: CommunityDataService, protected communityDataService: CommunityDataService,
protected router: Router, protected router: Router,
protected route: ActivatedRoute protected route: ActivatedRoute,
protected notificationsService: NotificationsService,
protected translate: TranslateService
) { ) {
super(communityDataService, router, route); super(communityDataService, router, route, notificationsService, translate);
} }
} }

View File

@@ -16,6 +16,8 @@ import {
createSuccessfulRemoteDataObject$ createSuccessfulRemoteDataObject$
} from '../../testing/utils'; } from '../../testing/utils';
import { ComColDataService } from '../../../core/data/comcol-data.service'; import { ComColDataService } from '../../../core/data/comcol-data.service';
import { NotificationsService } from '../../notifications/notifications.service';
import { NotificationsServiceStub } from '../../testing/notifications-service-stub';
describe('CreateComColPageComponent', () => { describe('CreateComColPageComponent', () => {
let comp: CreateComColPageComponent<DSpaceObject>; let comp: CreateComColPageComponent<DSpaceObject>;
@@ -80,6 +82,7 @@ describe('CreateComColPageComponent', () => {
{ provide: CommunityDataService, useValue: communityDataServiceStub }, { provide: CommunityDataService, useValue: communityDataServiceStub },
{ provide: RouteService, useValue: routeServiceStub }, { provide: RouteService, useValue: routeServiceStub },
{ provide: Router, useValue: routerStub }, { provide: Router, useValue: routerStub },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); }).compileComponents();
@@ -88,6 +91,7 @@ describe('CreateComColPageComponent', () => {
beforeEach(() => { beforeEach(() => {
fixture = TestBed.createComponent(CreateComColPageComponent); fixture = TestBed.createComponent(CreateComColPageComponent);
comp = fixture.componentInstance; comp = fixture.componentInstance;
(comp as any).type = Community.type;
fixture.detectChanges(); fixture.detectChanges();
dsoDataService = (comp as any).dsoDataService; dsoDataService = (comp as any).dsoDataService;
communityDataService = (comp as any).communityDataService; communityDataService = (comp as any).communityDataService;

View File

@@ -3,7 +3,7 @@ import { Community } from '../../../core/shared/community.model';
import { CommunityDataService } from '../../../core/data/community-data.service'; import { CommunityDataService } from '../../../core/data/community-data.service';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { RouteService } from '../../../core/services/route.service'; import { RouteService } from '../../../core/services/route.service';
import { Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { RemoteData } from '../../../core/data/remote-data'; import { RemoteData } from '../../../core/data/remote-data';
import { hasValue, isNotEmpty, isNotUndefined } from '../../empty.util'; import { hasValue, isNotEmpty, isNotUndefined } from '../../empty.util';
import { take } from 'rxjs/operators'; import { take } from 'rxjs/operators';
@@ -11,6 +11,9 @@ import { getSucceededRemoteData } from '../../../core/shared/operators';
import { DSpaceObject } from '../../../core/shared/dspace-object.model'; import { DSpaceObject } from '../../../core/shared/dspace-object.model';
import { DataService } from '../../../core/data/data.service'; import { DataService } from '../../../core/data/data.service';
import { ComColDataService } from '../../../core/data/comcol-data.service'; import { ComColDataService } from '../../../core/data/comcol-data.service';
import { NotificationsService } from '../../notifications/notifications.service';
import { TranslateService } from '@ngx-translate/core';
import { ResourceType } from '../../../core/shared/resource-type';
/** /**
* Component representing the create page for communities and collections * Component representing the create page for communities and collections
@@ -40,11 +43,18 @@ export class CreateComColPageComponent<TDomain extends DSpaceObject> implements
*/ */
private newUUID: string; private newUUID: string;
/**
* The type of the dso
*/
protected type: ResourceType;
public constructor( public constructor(
protected dsoDataService: ComColDataService<TDomain>, protected dsoDataService: ComColDataService<TDomain>,
protected parentDataService: CommunityDataService, protected parentDataService: CommunityDataService,
protected routeService: RouteService, protected routeService: RouteService,
protected router: Router protected router: Router,
protected notificationsService: NotificationsService,
protected translate: TranslateService
) { ) {
} }
@@ -80,6 +90,7 @@ export class CreateComColPageComponent<TDomain extends DSpaceObject> implements
} else { } else {
this.navigateToNewPage(); this.navigateToNewPage();
} }
this.notificationsService.success(null, this.translate.get(this.type.value + '.create.notifications.success'));
} }
}); });
}); });

View File

@@ -16,6 +16,8 @@ import {
} from '../../testing/utils'; } from '../../testing/utils';
import { ComColDataService } from '../../../core/data/comcol-data.service'; import { ComColDataService } from '../../../core/data/comcol-data.service';
import { RemoteData } from '../../../core/data/remote-data'; import { RemoteData } from '../../../core/data/remote-data';
import { NotificationsService } from '../../notifications/notifications.service';
import { NotificationsServiceStub } from '../../testing/notifications-service-stub';
describe('EditComColPageComponent', () => { describe('EditComColPageComponent', () => {
let comp: EditComColPageComponent<DSpaceObject>; let comp: EditComColPageComponent<DSpaceObject>;
@@ -73,6 +75,7 @@ describe('EditComColPageComponent', () => {
{ provide: ComColDataService, useValue: communityDataServiceStub }, { provide: ComColDataService, useValue: communityDataServiceStub },
{ provide: Router, useValue: routerStub }, { provide: Router, useValue: routerStub },
{ provide: ActivatedRoute, useValue: routeStub }, { provide: ActivatedRoute, useValue: routeStub },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); }).compileComponents();
@@ -81,6 +84,7 @@ describe('EditComColPageComponent', () => {
beforeEach(() => { beforeEach(() => {
fixture = TestBed.createComponent(EditComColPageComponent); fixture = TestBed.createComponent(EditComColPageComponent);
comp = fixture.componentInstance; comp = fixture.componentInstance;
(comp as any).type = Community.type;
fixture.detectChanges(); fixture.detectChanges();
dsoDataService = (comp as any).dsoDataService; dsoDataService = (comp as any).dsoDataService;
router = (comp as any).router; router = (comp as any).router;

View File

@@ -8,6 +8,9 @@ import { getSucceededRemoteData } from '../../../core/shared/operators';
import { DataService } from '../../../core/data/data.service'; import { DataService } from '../../../core/data/data.service';
import { DSpaceObject } from '../../../core/shared/dspace-object.model'; import { DSpaceObject } from '../../../core/shared/dspace-object.model';
import { ComColDataService } from '../../../core/data/comcol-data.service'; import { ComColDataService } from '../../../core/data/comcol-data.service';
import { NotificationsService } from '../../notifications/notifications.service';
import { TranslateService } from '@ngx-translate/core';
import { ResourceType } from '../../../core/shared/resource-type';
/** /**
* Component representing the edit page for communities and collections * Component representing the edit page for communities and collections
@@ -26,10 +29,17 @@ export class EditComColPageComponent<TDomain extends DSpaceObject> implements On
*/ */
public dsoRD$: Observable<RemoteData<TDomain>>; public dsoRD$: Observable<RemoteData<TDomain>>;
/**
* The type of the dso
*/
protected type: ResourceType;
public constructor( public constructor(
protected dsoDataService: ComColDataService<TDomain>, protected dsoDataService: ComColDataService<TDomain>,
protected router: Router, protected router: Router,
protected route: ActivatedRoute protected route: ActivatedRoute,
protected notificationsService: NotificationsService,
protected translate: TranslateService
) { ) {
} }
@@ -58,6 +68,7 @@ export class EditComColPageComponent<TDomain extends DSpaceObject> implements On
} else { } else {
this.router.navigate([this.frontendURL + newUUID]); this.router.navigate([this.frontendURL + newUUID]);
} }
this.notificationsService.success(null, this.translate.get(this.type.value + '.edit.notifications.success'));
} }
}); });
} }