diff --git a/resources/i18n/en.json b/resources/i18n/en.json
index b6a23068d7..deebe09760 100644
--- a/resources/i18n/en.json
+++ b/resources/i18n/en.json
@@ -43,6 +43,67 @@
"simple": "Simple item page",
"full": "Full item page"
}
+ },
+ "select": {
+ "table": {
+ "collection": "Collection",
+ "author": "Author",
+ "title": "Title"
+ },
+ "confirm": "Confirm selected"
+ },
+ "edit": {
+ "head": "Edit Item",
+ "tabs": {
+ "status": {
+ "head": "Item Status",
+ "description": "Welcome to the item management page. From here you can withdraw, reinstate, move or delete the item. You may also update or add new metadata / bitstreams on the other tabs.",
+ "labels": {
+ "id": "Item Internal ID",
+ "handle": "Handle",
+ "lastModified": "Last Modified",
+ "itemPage": "Item Page"
+ },
+ "buttons": {
+ "authorizations": {
+ "label": "Edit item's authorization policies",
+ "button": "Authorizations..."
+ },
+ "withdraw": {
+ "label": "Withdraw item from the repository",
+ "button": "Withdraw..."
+ },
+ "move": {
+ "label": "Move item to another collection",
+ "button": "Move..."
+ },
+ "private": {
+ "label": "Make item private",
+ "button": "Make it private..."
+ },
+ "delete": {
+ "label": "Completely expunge item",
+ "button": "Permanently delete"
+ },
+ "mapped-collections": {
+ "label": "Manage mapped collections",
+ "button": "Mapped collections"
+ }
+ }
+ },
+ "bitstreams": {
+ "head": "Item Bitstreams"
+ },
+ "metadata": {
+ "head": "Item Metadata"
+ },
+ "view": {
+ "head": "View Item"
+ },
+ "curate": {
+ "head": "Curate"
+ }
+ }
}
},
"nav": {
diff --git a/src/app/+item-page/edit-item-page/edit-item-page.component.html b/src/app/+item-page/edit-item-page/edit-item-page.component.html
new file mode 100644
index 0000000000..ca15e83ab9
--- /dev/null
+++ b/src/app/+item-page/edit-item-page/edit-item-page.component.html
@@ -0,0 +1,52 @@
+
+
+
+
{{'item.edit.head' | translate}}
+
+
+
+
+ {{'item.edit.tabs.status.description' | translate}}
+
+
+
+ {{'item.edit.tabs.status.labels.' + statusKey | translate}}:
+
+
+ {{(statusData$ | async)[statusKey]}}
+
+
+
+ {{'item.edit.tabs.status.labels.itemPage' | translate}}:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/+item-page/edit-item-page/edit-item-page.component.scss b/src/app/+item-page/edit-item-page/edit-item-page.component.scss
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/+item-page/edit-item-page/edit-item-page.component.spec.ts b/src/app/+item-page/edit-item-page/edit-item-page.component.spec.ts
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/+item-page/edit-item-page/edit-item-page.component.ts b/src/app/+item-page/edit-item-page/edit-item-page.component.ts
new file mode 100644
index 0000000000..eb017669fc
--- /dev/null
+++ b/src/app/+item-page/edit-item-page/edit-item-page.component.ts
@@ -0,0 +1,55 @@
+import { fadeIn, fadeInOut } from '../../shared/animations/fade';
+import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
+import { ItemDataService } from '../../core/data/item-data.service';
+import { ActivatedRoute, Router } from '@angular/router';
+import { Observable } from 'rxjs/Observable';
+import { RemoteData } from '../../core/data/remote-data';
+import { Item } from '../../core/shared/item.model';
+import { getSucceededRemoteData } from '../../core/shared/operators';
+import { map } from 'rxjs/operators';
+
+@Component({
+ selector: 'ds-edit-item-page',
+ styleUrls: ['./edit-item-page.component.scss'],
+ templateUrl: './edit-item-page.component.html',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ animations: [
+ fadeIn,
+ fadeInOut
+ ]
+})
+/**
+ * Page component for editing an item
+ */
+export class EditItemPageComponent implements OnInit {
+
+ objectKeys = Object.keys;
+
+ /**
+ * The item to edit
+ */
+ itemRD$: Observable>;
+ statusData$: Observable;
+
+ constructor(private route: ActivatedRoute,
+ private router: Router) {
+ }
+
+ ngOnInit(): void {
+ this.itemRD$ = this.route.data.map((data) => data.item);
+ this.statusData$ = this.itemRD$.pipe(
+ getSucceededRemoteData(),
+ map((itemRD: RemoteData- ) => itemRD.payload),
+ map((item: Item) => Object.assign({
+ id: item.id,
+ handle: item.handle,
+ lastModified: item.lastModified
+ }))
+ )
+ }
+
+ getItemPage(): string {
+ return this.router.url.substr(0, this.router.url.lastIndexOf('/'));
+ }
+
+}
diff --git a/src/app/+item-page/item-page-routing.module.ts b/src/app/+item-page/item-page-routing.module.ts
index 96158b867e..0105c947e9 100644
--- a/src/app/+item-page/item-page-routing.module.ts
+++ b/src/app/+item-page/item-page-routing.module.ts
@@ -4,6 +4,8 @@ import { RouterModule } from '@angular/router';
import { ItemPageComponent } from './simple/item-page.component';
import { FullItemPageComponent } from './full/full-item-page.component';
import { ItemPageResolver } from './item-page.resolver';
+import { AuthenticatedGuard } from '../core/auth/authenticated.guard';
+import { EditItemPageComponent } from './edit-item-page/edit-item-page.component';
@NgModule({
imports: [
@@ -22,6 +24,14 @@ import { ItemPageResolver } from './item-page.resolver';
resolve: {
item: ItemPageResolver
}
+ },
+ {
+ path: ':id/edit',
+ component: EditItemPageComponent,
+ resolve: {
+ item: ItemPageResolver
+ },
+ canActivate: [AuthenticatedGuard]
}
])
],
diff --git a/src/app/+item-page/item-page.module.ts b/src/app/+item-page/item-page.module.ts
index bd801923e3..45251bb1d8 100644
--- a/src/app/+item-page/item-page.module.ts
+++ b/src/app/+item-page/item-page.module.ts
@@ -18,6 +18,7 @@ import { FileSectionComponent } from './simple/field-components/file-section/fil
import { CollectionsComponent } from './field-components/collections/collections.component';
import { FullItemPageComponent } from './full/full-item-page.component';
import { FullFileSectionComponent } from './full/field-components/file-section/full-file-section.component';
+import { EditItemPageComponent } from './edit-item-page/edit-item-page.component';
@NgModule({
imports: [
@@ -39,7 +40,8 @@ import { FullFileSectionComponent } from './full/field-components/file-section/f
ItemPageSpecificFieldComponent,
FileSectionComponent,
CollectionsComponent,
- FullFileSectionComponent
+ FullFileSectionComponent,
+ EditItemPageComponent
]
})
export class ItemPageModule {