68729: Edit version history page as tab, removed sidebar link, added under-construction notice

This commit is contained in:
Kristof De Langhe
2020-03-17 16:01:00 +01:00
parent 1f02c2cd64
commit 30c7e563f5
11 changed files with 30 additions and 139 deletions

View File

@@ -913,6 +913,12 @@
"item.edit.tabs.status.title": "Item Edit - Status",
"item.edit.tabs.versionhistory.head": "Version History",
"item.edit.tabs.versionhistory.title": "Item Edit - Version History",
"item.edit.tabs.versionhistory.under-construction": "Editing or adding new versions is not yet possible in this user interface.",
"item.edit.tabs.view.head": "View Item",
"item.edit.tabs.view.title": "Item Edit - View",
@@ -1172,8 +1178,6 @@
"menu.section.edit_item": "Item",
"menu.section.edit_item_version_history": "Item Version History",
"menu.section.export": "Export",

View File

@@ -18,7 +18,6 @@ import { EditItemSelectorComponent } from '../../shared/dso-selector/modal-wrapp
import { EditCommunitySelectorComponent } from '../../shared/dso-selector/modal-wrappers/edit-community-selector/edit-community-selector.component';
import { EditCollectionSelectorComponent } from '../../shared/dso-selector/modal-wrappers/edit-collection-selector/edit-collection-selector.component';
import {CreateItemParentSelectorComponent} from '../../shared/dso-selector/modal-wrappers/create-item-parent-selector/create-item-parent-selector.component';
import { EditItemVersionHistorySelectorComponent } from '../../shared/dso-selector/modal-wrappers/edit-item-version-history-selector/edit-item-version-history-selector.component';
/**
* Component representing the admin sidebar
@@ -215,19 +214,6 @@ export class AdminSidebarComponent extends MenuComponent implements OnInit {
}
} as OnClickMenuItemModel,
},
{
id: 'edit_item_version_history',
parentID: 'edit',
active: false,
visible: true,
model: {
type: MenuItemType.ONCLICK,
text: 'menu.section.edit_item_version_history',
function: () => {
this.modalService.open(EditItemVersionHistorySelectorComponent);
}
} as OnClickMenuItemModel,
},
/* Import */
{

View File

@@ -1,4 +1,3 @@
import { ItemPageResolver } from '../item-page.resolver';
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { EditItemPageComponent } from './edit-item-page.component';
@@ -16,17 +15,12 @@ import { ItemRelationshipsComponent } from './item-relationships/item-relationsh
import { I18nBreadcrumbResolver } from '../../core/breadcrumbs/i18n-breadcrumb.resolver';
import { ItemVersionHistoryComponent } from './item-version-history/item-version-history.component';
export function getItemEditVersionHistoryPath() {
return ITEM_EDIT_VERSION_HISTORY;
}
const ITEM_EDIT_WITHDRAW_PATH = 'withdraw';
const ITEM_EDIT_REINSTATE_PATH = 'reinstate';
const ITEM_EDIT_PRIVATE_PATH = 'private';
const ITEM_EDIT_PUBLIC_PATH = 'public';
const ITEM_EDIT_DELETE_PATH = 'delete';
const ITEM_EDIT_MOVE_PATH = 'move';
const ITEM_EDIT_VERSION_HISTORY = 'versionhistory';
/**
* Routing module that handles the routing for the Edit Item page administrator functionality
@@ -81,6 +75,11 @@ const ITEM_EDIT_VERSION_HISTORY = 'versionhistory';
/* TODO - change when curate page exists */
component: ItemBitstreamsComponent,
data: { title: 'item.edit.tabs.curate.title', showBreadcrumbs: true }
},
{
path: 'versionhistory',
component: ItemVersionHistoryComponent,
data: { title: 'item.edit.tabs.versionhistory.title', showBreadcrumbs: true }
}
]
},
@@ -112,10 +111,6 @@ const ITEM_EDIT_VERSION_HISTORY = 'versionhistory';
path: ITEM_EDIT_MOVE_PATH,
component: ItemMoveComponent,
data: { title: 'item.edit.move.title' },
},
{
path: ITEM_EDIT_VERSION_HISTORY,
component: ItemVersionHistoryComponent,
}
]
}

View File

@@ -1,6 +1,6 @@
<div class="container" *ngVar="(itemRD$ | async)?.payload as item">
<ds-item-versions *ngIf="item" [item]="item" [displayWhenEmpty]="true"></ds-item-versions>
<a class="btn btn-outline-primary" [routerLink]="['/items/' + item?.id]">
{{"item.version.history.return" | translate}}
</a>
<div class="mt-4">
<ds-alert [content]="'item.edit.tabs.versionhistory.under-construction'" [type]="AlertTypeEnum.Warning"></ds-alert>
</div>
<div class="mt-2" *ngVar="(itemRD$ | async)?.payload as item">
<ds-item-versions *ngIf="item" [item]="item" [displayWhenEmpty]="true" [displayTitle]="false"></ds-item-versions>
</div>

View File

@@ -5,6 +5,7 @@ import { Item } from '../../../core/shared/item.model';
import { map } from 'rxjs/operators';
import { getSucceededRemoteData } from '../../../core/shared/operators';
import { ActivatedRoute } from '@angular/router';
import { AlertType } from '../../../shared/alert/aletr-type';
@Component({
selector: 'ds-item-version-history',
@@ -19,10 +20,16 @@ export class ItemVersionHistoryComponent {
*/
itemRD$: Observable<RemoteData<Item>>;
/**
* The AlertType enumeration
* @type {AlertType}
*/
AlertTypeEnum = AlertType;
constructor(private route: ActivatedRoute) {
}
ngOnInit(): void {
this.itemRD$ = this.route.data.pipe(map((data) => data.item)).pipe(getSucceededRemoteData()) as Observable<RemoteData<Item>>;
this.itemRD$ = this.route.parent.data.pipe(map((data) => data.item)).pipe(getSucceededRemoteData()) as Observable<RemoteData<Item>>;
}
}

View File

@@ -10,7 +10,6 @@ import { AuthenticatedGuard } from '../core/auth/authenticated.guard';
import { ItemBreadcrumbResolver } from '../core/breadcrumbs/item-breadcrumb.resolver';
import { DSOBreadcrumbsService } from '../core/breadcrumbs/dso-breadcrumbs.service';
import { LinkService } from '../core/cache/builders/link.service';
import { getItemEditVersionHistoryPath } from './edit-item-page/edit-item-page.routing.module';
export function getItemPageRoute(itemId: string) {
return new URLCombiner(getItemModulePath(), itemId).toString();
@@ -19,12 +18,8 @@ export function getItemPageRoute(itemId: string) {
export function getItemEditPath(id: string) {
return new URLCombiner(getItemModulePath(), id, ITEM_EDIT_PATH).toString()
}
export function getFullItemEditVersionHistoryPath(id: string) {
return new URLCombiner(getItemModulePath(), id, ITEM_EDIT_VERSION_HISTORY_PATH).toString()
}
const ITEM_EDIT_PATH = 'edit';
const ITEM_EDIT_VERSION_HISTORY_PATH = `${ITEM_EDIT_PATH}/${getItemEditVersionHistoryPath()}`;
@NgModule({
imports: [

View File

@@ -1,66 +0,0 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { DebugElement, NO_ERRORS_SCHEMA } from '@angular/core';
import { Item } from '../../../../core/shared/item.model';
import { MetadataValue } from '../../../../core/shared/metadata.models';
import { RouterStub } from '../../../testing/router-stub';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
import { TranslateModule } from '@ngx-translate/core';
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
import { ActivatedRoute, Router } from '@angular/router';
import { of as observableOf } from 'rxjs/internal/observable/of';
import * as itemRouter from '../../../../+item-page/item-page-routing.module';
import { EditItemVersionHistorySelectorComponent } from './edit-item-version-history-selector.component';
describe('EditItemVersionHistorySelectorComponent', () => {
let component: EditItemVersionHistorySelectorComponent;
let fixture: ComponentFixture<EditItemVersionHistorySelectorComponent>;
let debugElement: DebugElement;
const item = new Item();
item.uuid = '1234-1234-1234-1234';
item.metadata = { 'dc.title': [Object.assign(new MetadataValue(), { value: 'Item title', language: undefined })] };
const router = new RouterStub();
const itemRD = createSuccessfulRemoteDataObject(item);
const modalStub = jasmine.createSpyObj('modalStub', ['close']);
const editPath = 'testEditVersionHistoryPath';
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [TranslateModule.forRoot()],
declarations: [EditItemVersionHistorySelectorComponent],
providers: [
{ provide: NgbActiveModal, useValue: modalStub },
{
provide: ActivatedRoute,
useValue: { root: { firstChild: { firstChild: { data: observableOf({ item: itemRD }) } } } }
},
{
provide: Router, useValue: router
}
],
schemas: [NO_ERRORS_SCHEMA]
}).compileComponents();
}));
beforeEach(() => {
spyOnProperty(itemRouter, 'getFullItemEditVersionHistoryPath').and.callFake(() => {
return () => editPath;
});
fixture = TestBed.createComponent(EditItemVersionHistorySelectorComponent);
component = fixture.componentInstance;
debugElement = fixture.debugElement;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
it('should call navigate on the router with the correct edit path when navigate is called', () => {
component.navigate(item);
expect(router.navigate).toHaveBeenCalledWith([editPath]);
});
});

View File

@@ -1,32 +0,0 @@
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { DSpaceObjectType } from '../../../../core/shared/dspace-object-type.model';
import { DSpaceObject } from '../../../../core/shared/dspace-object.model';
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
import { getFullItemEditVersionHistoryPath } from '../../../../+item-page/item-page-routing.module';
import { DSOSelectorModalWrapperComponent, SelectorActionType } from '../dso-selector-modal-wrapper.component';
/**
* Component to wrap a list of existing items inside a modal
* Used to choose an item from to edit its version history
*/
@Component({
selector: 'ds-edit-item-version-history-selector',
templateUrl: '../dso-selector-modal-wrapper.component.html',
})
export class EditItemVersionHistorySelectorComponent extends DSOSelectorModalWrapperComponent implements OnInit {
objectType = DSpaceObjectType.ITEM;
selectorType = DSpaceObjectType.ITEM;
action = SelectorActionType.EDIT;
constructor(protected activeModal: NgbActiveModal, protected route: ActivatedRoute, private router: Router) {
super(activeModal, route);
}
/**
* Navigate to the item edit version history page
*/
navigate(dso: DSpaceObject) {
this.router.navigate([getFullItemEditVersionHistoryPath(dso.uuid)]);
}
}

View File

@@ -1,7 +1,7 @@
<div *ngVar="(versionsRD$ | async)?.payload as versions">
<div *ngVar="(versionRD$ | async)?.payload as itemVersion">
<div class="mb-2" *ngIf="versions?.page?.length > 0 || displayWhenEmpty">
<h2>{{"item.version.history.head" | translate}}</h2>
<h2 *ngIf="displayTitle">{{"item.version.history.head" | translate}}</h2>
<ds-pagination *ngIf="versions?.page?.length > 0"
[hideGear]="true"
[hidePagerWhenSinglePage]="true"

View File

@@ -35,6 +35,11 @@ export class ItemVersionsComponent implements OnInit {
*/
@Input() displayWhenEmpty = false;
/**
* Whether or not to display the title
*/
@Input() displayTitle = true;
/**
* The AlertType enumeration
* @type {AlertType}

View File

@@ -176,7 +176,6 @@ import { ExternalSourceEntryImportModalComponent } from './form/builder/ds-dynam
import { ImportableListItemControlComponent } from './object-collection/shared/importable-list-item-control/importable-list-item-control.component';
import { DragDropModule } from '@angular/cdk/drag-drop';
import { ExistingMetadataListElementComponent } from './form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component';
import { EditItemVersionHistorySelectorComponent } from './dso-selector/modal-wrappers/edit-item-version-history-selector/edit-item-version-history-selector.component';
import { ItemVersionsComponent } from './item/item-versions/item-versions.component';
import { SortablejsModule } from 'ngx-sortablejs';
@@ -299,7 +298,6 @@ const COMPONENTS = [
EditCommunitySelectorComponent,
EditCollectionSelectorComponent,
EditItemSelectorComponent,
EditItemVersionHistorySelectorComponent,
CommunitySearchResultListElementComponent,
CollectionSearchResultListElementComponent,
BrowseByComponent,
@@ -386,7 +384,6 @@ const ENTRY_COMPONENTS = [
EditCommunitySelectorComponent,
EditCollectionSelectorComponent,
EditItemSelectorComponent,
EditItemVersionHistorySelectorComponent,
StartsWithTextComponent,
PlainTextMetadataListElementComponent,
ItemMetadataListElementComponent,