mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 01:54:15 +00:00
[CST-5253] Fix view item button for workspace items in the mydspace results list
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
<div class="space-children-mr">
|
<div class="space-children-mr">
|
||||||
|
|
||||||
<button class="btn btn-primary workflow-view mt-1 mb-3"
|
<button class="btn btn-primary workflow-view mt-1 mb-3" data-test="view-btn"
|
||||||
ngbTooltip="{{'submission.workspace.generic.view-help' | translate}}"
|
ngbTooltip="{{'submission.workspace.generic.view-help' | translate}}"
|
||||||
[routerLink]="[getWorkspaceItemViewRoute(object)]">
|
[routerLink]="[getWorkspaceItemViewRoute(object)]">
|
||||||
<i class="fa fa-info-circle"></i> {{"submission.workspace.generic.view" | translate}}
|
<i class="fa fa-info-circle"></i> {{"submission.workspace.generic.view" | translate}}
|
||||||
@@ -39,4 +39,4 @@
|
|||||||
<button type="button" id="delete_confirm" class="btn btn-danger"
|
<button type="button" id="delete_confirm" class="btn btn-danger"
|
||||||
(click)="c('ok')">{{'submission.general.discard.confirm.submit' | translate}}</button>
|
(click)="c('ok')">{{'submission.general.discard.confirm.submit' | translate}}</button>
|
||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
@@ -132,6 +132,12 @@ describe('WorkspaceitemActionsComponent', () => {
|
|||||||
expect(btn).toBeDefined();
|
expect(btn).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should display view button', () => {
|
||||||
|
const btn = fixture.debugElement.query(By.css('button [data-test="view-btn"]'));
|
||||||
|
|
||||||
|
expect(btn).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
describe('on discard confirmation', () => {
|
describe('on discard confirmation', () => {
|
||||||
beforeEach((done) => {
|
beforeEach((done) => {
|
||||||
mockDataService.delete.and.returnValue(observableOf(true));
|
mockDataService.delete.and.returnValue(observableOf(true));
|
||||||
|
@@ -0,0 +1,30 @@
|
|||||||
|
import { first } from 'rxjs/operators';
|
||||||
|
import { WorkspaceItemPageResolver } from './workspace-item-page.resolver';
|
||||||
|
import { WorkspaceitemDataService } from '../core/submission/workspaceitem-data.service';
|
||||||
|
import { createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils';
|
||||||
|
|
||||||
|
describe('WorkflowItemPageResolver', () => {
|
||||||
|
describe('resolve', () => {
|
||||||
|
let resolver: WorkspaceItemPageResolver;
|
||||||
|
let wsiService: WorkspaceitemDataService;
|
||||||
|
const uuid = '1234-65487-12354-1235';
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
wsiService = {
|
||||||
|
findById: (id: string) => createSuccessfulRemoteDataObject$({ id })
|
||||||
|
} as any;
|
||||||
|
resolver = new WorkspaceItemPageResolver(wsiService);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should resolve a workspace item with the correct id', (done) => {
|
||||||
|
resolver.resolve({ params: { id: uuid } } as any, undefined)
|
||||||
|
.pipe(first())
|
||||||
|
.subscribe(
|
||||||
|
(resolved) => {
|
||||||
|
expect(resolved.payload.id).toEqual(uuid);
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@@ -0,0 +1,34 @@
|
|||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';
|
||||||
|
import { Observable } from 'rxjs';
|
||||||
|
import { RemoteData } from '../core/data/remote-data';
|
||||||
|
import { followLink } from '../shared/utils/follow-link-config.model';
|
||||||
|
import { WorkspaceitemDataService } from '../core/submission/workspaceitem-data.service';
|
||||||
|
import { WorkflowItem } from '../core/submission/models/workflowitem.model';
|
||||||
|
import { getFirstCompletedRemoteData } from '../core/shared/operators';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class represents a resolver that requests a specific workflow item before the route is activated
|
||||||
|
*/
|
||||||
|
@Injectable()
|
||||||
|
export class WorkspaceItemPageResolver implements Resolve<RemoteData<WorkflowItem>> {
|
||||||
|
constructor(private workspaceItemService: WorkspaceitemDataService) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method for resolving a workflow item based on the parameters in the current route
|
||||||
|
* @param {ActivatedRouteSnapshot} route The current ActivatedRouteSnapshot
|
||||||
|
* @param {RouterStateSnapshot} state The current RouterStateSnapshot
|
||||||
|
* @returns Observable<<RemoteData<Item>> Emits the found workflow item based on the parameters in the current route,
|
||||||
|
* or an error if something went wrong
|
||||||
|
*/
|
||||||
|
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<RemoteData<WorkflowItem>> {
|
||||||
|
return this.workspaceItemService.findById(route.params.id,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
followLink('item'),
|
||||||
|
).pipe(
|
||||||
|
getFirstCompletedRemoteData(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@@ -6,32 +6,40 @@ import { ThemedSubmissionEditComponent } from '../submission/edit/themed-submiss
|
|||||||
import { I18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.resolver';
|
import { I18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.resolver';
|
||||||
import { ThemedFullItemPageComponent } from '../item-page/full/themed-full-item-page.component';
|
import { ThemedFullItemPageComponent } from '../item-page/full/themed-full-item-page.component';
|
||||||
import { ItemFromWorkspaceResolver } from './item-from-workspace.resolver';
|
import { ItemFromWorkspaceResolver } from './item-from-workspace.resolver';
|
||||||
|
import { WorkspaceItemPageResolver } from './workspace-item-page.resolver';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', redirectTo: '/home', pathMatch: 'full' },
|
{ path: '', redirectTo: '/home', pathMatch: 'full' },
|
||||||
{
|
{
|
||||||
canActivate: [AuthenticatedGuard],
|
path: ':id',
|
||||||
path: ':id/edit',
|
resolve: { wsi: WorkspaceItemPageResolver },
|
||||||
component: ThemedSubmissionEditComponent,
|
children: [
|
||||||
resolve: {
|
{
|
||||||
breadcrumb: I18nBreadcrumbResolver
|
canActivate: [AuthenticatedGuard],
|
||||||
},
|
path: 'edit',
|
||||||
data: { title: 'submission.edit.title', breadcrumbKey: 'submission.edit' }
|
component: ThemedSubmissionEditComponent,
|
||||||
},
|
resolve: {
|
||||||
{
|
breadcrumb: I18nBreadcrumbResolver
|
||||||
canActivate: [AuthenticatedGuard],
|
},
|
||||||
path: ':id/view',
|
data: { title: 'submission.edit.title', breadcrumbKey: 'submission.edit' }
|
||||||
component: ThemedFullItemPageComponent,
|
},
|
||||||
resolve: {
|
{
|
||||||
dso: ItemFromWorkspaceResolver,
|
canActivate: [AuthenticatedGuard],
|
||||||
breadcrumb: I18nBreadcrumbResolver
|
path: 'view',
|
||||||
},
|
component: ThemedFullItemPageComponent,
|
||||||
data: { title: 'workspace-item.view.title', breadcrumbKey: 'workspace-item.view' }
|
resolve: {
|
||||||
},
|
dso: ItemFromWorkspaceResolver,
|
||||||
|
breadcrumb: I18nBreadcrumbResolver
|
||||||
|
},
|
||||||
|
data: { title: 'workspace-item.view.title', breadcrumbKey: 'workspace-item.view' }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
])
|
])
|
||||||
]
|
],
|
||||||
|
providers: [WorkspaceItemPageResolver, ItemFromWorkspaceResolver]
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* This module defines the default component to load when navigating to the workspaceitems edit page path
|
* This module defines the default component to load when navigating to the workspaceitems edit page path
|
||||||
|
@@ -3,7 +3,6 @@ import { NgModule } from '@angular/core';
|
|||||||
import { SharedModule } from '../shared/shared.module';
|
import { SharedModule } from '../shared/shared.module';
|
||||||
import { WorkspaceitemsEditPageRoutingModule } from './workspaceitems-edit-page-routing.module';
|
import { WorkspaceitemsEditPageRoutingModule } from './workspaceitems-edit-page-routing.module';
|
||||||
import { SubmissionModule } from '../submission/submission.module';
|
import { SubmissionModule } from '../submission/submission.module';
|
||||||
import { ItemFromWorkspaceResolver } from './item-from-workspace.resolver';
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -12,8 +11,7 @@ import { ItemFromWorkspaceResolver } from './item-from-workspace.resolver';
|
|||||||
SharedModule,
|
SharedModule,
|
||||||
SubmissionModule,
|
SubmissionModule,
|
||||||
],
|
],
|
||||||
declarations: [],
|
declarations: []
|
||||||
providers: [ItemFromWorkspaceResolver]
|
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* This module handles all modules that need to access the workspaceitems edit page.
|
* This module handles all modules that need to access the workspaceitems edit page.
|
||||||
|
Reference in New Issue
Block a user