mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 01:54:15 +00:00
68729: Edit version history page as tab, removed sidebar link, added under-construction notice
This commit is contained in:
@@ -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",
|
||||
|
@@ -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 */
|
||||
{
|
||||
|
@@ -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,
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -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>
|
||||
|
@@ -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>>;
|
||||
}
|
||||
}
|
||||
|
@@ -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: [
|
||||
|
@@ -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]);
|
||||
});
|
||||
|
||||
});
|
@@ -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)]);
|
||||
}
|
||||
}
|
@@ -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"
|
||||
|
@@ -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}
|
||||
|
@@ -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,
|
||||
|
Reference in New Issue
Block a user