diff --git a/src/app/shared/mydspace-actions/claimed-task/abstract/advanced-claimed-task-actions-abstract.component.ts b/src/app/shared/mydspace-actions/claimed-task/abstract/advanced-claimed-task-actions-abstract.component.ts
new file mode 100644
index 0000000000..a99639bd17
--- /dev/null
+++ b/src/app/shared/mydspace-actions/claimed-task/abstract/advanced-claimed-task-actions-abstract.component.ts
@@ -0,0 +1,16 @@
+import { Component } from '@angular/core';
+import { ClaimedTaskActionsAbstractComponent } from './claimed-task-actions-abstract.component';
+
+/**
+ * Abstract component for rendering an advanced claimed task's action
+ * To create a child-component for a new option:
+ * - Set the "option" of the component
+ * - Add a @rendersWorkflowTaskOption annotation to your component providing the same enum value
+ * - Optionally overwrite createBody if the request body requires more than just the option
+ */
+@Component({
+ selector: 'ds-advanced-claimed-task-action-abstract',
+ template: ''
+})
+export abstract class AdvancedClaimedTaskActionsAbstractComponent extends ClaimedTaskActionsAbstractComponent {
+}
diff --git a/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.html b/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.html
new file mode 100644
index 0000000000..8ed7b18640
--- /dev/null
+++ b/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.html
@@ -0,0 +1,4 @@
+
diff --git a/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.scss b/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.scss
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.spec.ts b/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.spec.ts
new file mode 100644
index 0000000000..f99c0558c6
--- /dev/null
+++ b/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.spec.ts
@@ -0,0 +1,27 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import {
+ AdvancedClaimedTaskActionRatingReviewerComponent
+} from './advanced-claimed-task-action-rating-reviewer.component';
+
+describe('AdvancedClaimedTaskActionsRatingReviewerComponent', () => {
+ let component: AdvancedClaimedTaskActionRatingReviewerComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [
+ AdvancedClaimedTaskActionRatingReviewerComponent,
+ ],
+ }).compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AdvancedClaimedTaskActionRatingReviewerComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.ts b/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.ts
new file mode 100644
index 0000000000..0fb660b6e6
--- /dev/null
+++ b/src/app/shared/mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component.ts
@@ -0,0 +1,55 @@
+import { Component, Injector } from '@angular/core';
+import { Router } from '@angular/router';
+import { NotificationsService } from '../../../notifications/notifications.service';
+import { TranslateService } from '@ngx-translate/core';
+import { SearchService } from '../../../../core/shared/search/search.service';
+import { RequestService } from '../../../../core/data/request.service';
+import {
+ getWorkflowRatingReviewerRoute
+} from '../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
+import {
+ AdvancedClaimedTaskActionsAbstractComponent
+} from '../abstract/advanced-claimed-task-actions-abstract.component';
+
+export const WORKFLOW_ADVANCED_TASK_OPTION_RATING_REVIEWER = 'submit_rating_reviewer';
+
+@Component({
+ selector: 'ds-advanced-claimed-task-action-rating-reviewer',
+ templateUrl: './advanced-claimed-task-action-rating-reviewer.component.html',
+ styleUrls: ['./advanced-claimed-task-action-rating-reviewer.component.scss']
+})
+export class AdvancedClaimedTaskActionRatingReviewerComponent extends AdvancedClaimedTaskActionsAbstractComponent {
+
+ /**
+ * This component represents the advanced select option
+ */
+ option = WORKFLOW_ADVANCED_TASK_OPTION_RATING_REVIEWER;
+
+ /**
+ * Route to the workflow's task page
+ */
+ workflowTaskPageRoute: string;
+
+ constructor(
+ protected injector: Injector,
+ protected router: Router,
+ protected notificationsService: NotificationsService,
+ protected translate: TranslateService,
+ protected searchService: SearchService,
+ protected requestService: RequestService,
+ ) {
+ super(injector, router, notificationsService, translate, searchService, requestService);
+ }
+
+ ngOnInit(): void {
+ this.initPageRoute();
+ }
+
+ /**
+ * Initialise the route to the rating reviewer's page
+ */
+ initPageRoute() {
+ this.workflowTaskPageRoute = getWorkflowRatingReviewerRoute(this.object.id);
+ }
+
+}
diff --git a/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.html b/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.html
new file mode 100644
index 0000000000..8ed7b18640
--- /dev/null
+++ b/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.html
@@ -0,0 +1,4 @@
+
diff --git a/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.scss b/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.scss
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.spec.ts b/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.spec.ts
new file mode 100644
index 0000000000..24b8501f55
--- /dev/null
+++ b/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.spec.ts
@@ -0,0 +1,27 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import {
+ AdvancedClaimedTaskActionSelectReviewerComponent
+} from './advanced-claimed-task-action-select-reviewer.component';
+
+describe('AdvancedClaimedTaskActionsSelectReviewerComponent', () => {
+ let component: AdvancedClaimedTaskActionSelectReviewerComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [
+ AdvancedClaimedTaskActionSelectReviewerComponent,
+ ],
+ }).compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AdvancedClaimedTaskActionSelectReviewerComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.ts b/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.ts
new file mode 100644
index 0000000000..4ce3ec224a
--- /dev/null
+++ b/src/app/shared/mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component.ts
@@ -0,0 +1,57 @@
+import { Component, Injector } from '@angular/core';
+import { rendersWorkflowTaskOption } from '../switcher/claimed-task-actions-decorator';
+import {
+ AdvancedClaimedTaskActionsAbstractComponent
+} from '../abstract/advanced-claimed-task-actions-abstract.component';
+import { Router } from '@angular/router';
+import { NotificationsService } from '../../../notifications/notifications.service';
+import { TranslateService } from '@ngx-translate/core';
+import { SearchService } from '../../../../core/shared/search/search.service';
+import { RequestService } from '../../../../core/data/request.service';
+import {
+ getWorkflowSelectReviewerRoute
+} from '../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
+
+export const WORKFLOW_ADVANCED_TASK_OPTION_SELECT_REVIEWER = 'submit_select_reviewer';
+
+@rendersWorkflowTaskOption(WORKFLOW_ADVANCED_TASK_OPTION_SELECT_REVIEWER)
+@Component({
+ selector: 'ds-advanced-claimed-task-action-select-reviewer',
+ templateUrl: './advanced-claimed-task-action-select-reviewer.component.html',
+ styleUrls: ['./advanced-claimed-task-action-select-reviewer.component.scss']
+})
+export class AdvancedClaimedTaskActionSelectReviewerComponent extends AdvancedClaimedTaskActionsAbstractComponent {
+
+ /**
+ * This component represents the advanced select option
+ */
+ option = WORKFLOW_ADVANCED_TASK_OPTION_SELECT_REVIEWER;
+
+ /**
+ * Route to the workflow's task page
+ */
+ workflowTaskPageRoute: string;
+
+ constructor(
+ protected injector: Injector,
+ protected router: Router,
+ protected notificationsService: NotificationsService,
+ protected translate: TranslateService,
+ protected searchService: SearchService,
+ protected requestService: RequestService,
+ ) {
+ super(injector, router, notificationsService, translate, searchService, requestService);
+ }
+
+ ngOnInit(): void {
+ this.initPageRoute();
+ }
+
+ /**
+ * Initialise the route to the select reviewer's page
+ */
+ initPageRoute() {
+ this.workflowTaskPageRoute = getWorkflowSelectReviewerRoute(this.object.id);
+ }
+
+}
diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts
index 715ee66a99..9a859dff9b 100644
--- a/src/app/shared/shared.module.ts
+++ b/src/app/shared/shared.module.ts
@@ -177,6 +177,10 @@ import { ScopeSelectorModalComponent } from './search-form/scope-selector-modal/
import { BitstreamRequestACopyPageComponent } from './bitstream-request-a-copy-page/bitstream-request-a-copy-page.component';
import { DsSelectComponent } from './ds-select/ds-select.component';
import { LogInOidcComponent } from './log-in/methods/oidc/log-in-oidc.component';
+import { AdvancedClaimedTaskActionSelectReviewerComponent } from './mydspace-actions/claimed-task/select-reviewer/advanced-claimed-task-action-select-reviewer.component';
+import {
+ AdvancedClaimedTaskActionRatingReviewerComponent
+} from './mydspace-actions/claimed-task/rating-reviewer/advanced-claimed-task-action-rating-reviewer.component';
const MODULES = [
// Do NOT include UniversalModule, HttpModule, or JsonpModule here
@@ -346,6 +350,8 @@ const COMPONENTS = [
CommunitySidebarSearchListElementComponent,
SearchNavbarComponent,
ScopeSelectorModalComponent,
+ AdvancedClaimedTaskActionSelectReviewerComponent,
+ AdvancedClaimedTaskActionRatingReviewerComponent,
];
const ENTRY_COMPONENTS = [
@@ -402,6 +408,8 @@ const ENTRY_COMPONENTS = [
OnClickMenuItemComponent,
TextMenuItemComponent,
ScopeSelectorModalComponent,
+ AdvancedClaimedTaskActionSelectReviewerComponent,
+ AdvancedClaimedTaskActionRatingReviewerComponent,
];
const SHARED_ITEM_PAGE_COMPONENTS = [
@@ -436,7 +444,6 @@ const DIRECTIVES = [
ClaimedTaskActionsDirective,
FileValueAccessorDirective,
FileValidator,
- ClaimedTaskActionsDirective,
NgForTrackByIdDirective,
MetadataFieldValidator,
HoverClassDirective
diff --git a/src/app/workflowitems-edit-page/workflowitems-edit-page-routing-paths.ts b/src/app/workflowitems-edit-page/workflowitems-edit-page-routing-paths.ts
index e2d969a872..c39bd1fc48 100644
--- a/src/app/workflowitems-edit-page/workflowitems-edit-page-routing-paths.ts
+++ b/src/app/workflowitems-edit-page/workflowitems-edit-page-routing-paths.ts
@@ -1,5 +1,6 @@
import { URLCombiner } from '../core/url-combiner/url-combiner';
import { getWorkflowItemModuleRoute } from '../app-routing-paths';
+import { RATING_REVIEWER_ACTION_ADVANCED_INFO } from '../core/tasks/models/reviewer-action-advanced-info.resource-type';
export function getWorkflowItemPageRoute(wfiId: string) {
return new URLCombiner(getWorkflowItemModuleRoute(), wfiId).toString();
@@ -20,7 +21,16 @@ export function getWorkflowItemSendBackRoute(wfiId: string) {
return new URLCombiner(getWorkflowItemModuleRoute(), wfiId, WORKFLOW_ITEM_SEND_BACK_PATH).toString();
}
+export function getWorkflowSelectReviewerRoute(wfiId: string) {
+ return new URLCombiner(getWorkflowItemModuleRoute(), wfiId, WORKFLOW_SELECT_REVIEWER_PATH).toString();
+}
+export function getWorkflowRatingReviewerRoute(wfiId: string) {
+ return new URLCombiner(getWorkflowItemModuleRoute(), wfiId, WORKFLOW_RATING_REVIEWER_PATH).toString();
+}
+
export const WORKFLOW_ITEM_EDIT_PATH = 'edit';
export const WORKFLOW_ITEM_DELETE_PATH = 'delete';
export const WORKFLOW_ITEM_VIEW_PATH = 'view';
export const WORKFLOW_ITEM_SEND_BACK_PATH = 'sendback';
+export const WORKFLOW_SELECT_REVIEWER_PATH = 'selectreviewer';
+export const WORKFLOW_RATING_REVIEWER_PATH = 'ratingreviewer';
diff --git a/src/app/workflowitems-edit-page/workflowitems-edit-page-routing.module.ts b/src/app/workflowitems-edit-page/workflowitems-edit-page-routing.module.ts
index 9c24bacb98..722e8b3768 100644
--- a/src/app/workflowitems-edit-page/workflowitems-edit-page-routing.module.ts
+++ b/src/app/workflowitems-edit-page/workflowitems-edit-page-routing.module.ts
@@ -7,7 +7,9 @@ import {
WORKFLOW_ITEM_DELETE_PATH,
WORKFLOW_ITEM_EDIT_PATH,
WORKFLOW_ITEM_SEND_BACK_PATH,
- WORKFLOW_ITEM_VIEW_PATH
+ WORKFLOW_ITEM_VIEW_PATH,
+ WORKFLOW_SELECT_REVIEWER_PATH,
+ WORKFLOW_RATING_REVIEWER_PATH,
} from './workflowitems-edit-page-routing-paths';
import { ThemedSubmissionEditComponent } from '../submission/edit/themed-submission-edit.component';
import { ThemedWorkflowItemDeleteComponent } from './workflow-item-delete/themed-workflow-item-delete.component';
@@ -59,7 +61,25 @@ import { ThemedFullItemPageComponent } from '../item-page/full/themed-full-item-
breadcrumb: I18nBreadcrumbResolver
},
data: { title: 'workflow-item.send-back.title', breadcrumbKey: 'workflow-item.edit' }
- }
+ },
+ {
+ canActivate: [AuthenticatedGuard],
+ path: WORKFLOW_SELECT_REVIEWER_PATH,
+ component: ThemedWorkflowItemSendBackComponent,
+ resolve: {
+ breadcrumb: I18nBreadcrumbResolver
+ },
+ data: { title: 'workflow-item.select-reviewer.title', breadcrumbKey: 'workflow-item.edit' }
+ },
+ {
+ canActivate: [AuthenticatedGuard],
+ path: WORKFLOW_RATING_REVIEWER_PATH,
+ component: ThemedWorkflowItemSendBackComponent,
+ resolve: {
+ breadcrumb: I18nBreadcrumbResolver
+ },
+ data: { title: 'workflow-item.rating-reviewer.title', breadcrumbKey: 'workflow-item.edit' }
+ },
]
}]
)
diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5
index f742273edb..f2b6a6459a 100644
--- a/src/assets/i18n/en.json5
+++ b/src/assets/i18n/en.json5
@@ -4003,6 +4003,15 @@
"submission.workflow.generic.view-help": "Select this option to view the item's metadata.",
+ "submission.workflow.generic.submit_select_reviewer": "Select Reviewer",
+
+ "submission.workflow.generic.submit_select_reviewer-help": "",
+
+
+ "submission.workflow.generic.submit_rating_reviewer": "Rating Reviewer",
+
+ "submission.workflow.generic.submit_rating_reviewer-help": "",
+
"submission.workflow.tasks.claimed.approve": "Approve",
@@ -4156,6 +4165,12 @@
"workflow-item.view.breadcrumbs": "Workflow View",
+ "workflow-item.select-reviewer.title": "Select Reviewer",
+
+
+ "workflow-item.rating-reviewer.title": "Rating Reviewer",
+
+
"idle-modal.header": "Session will expire soon",
"idle-modal.info": "For security reasons, user sessions expire after {{ timeToExpire }} minutes of inactivity. Your session will expire soon. Would you like to extend it or log out?",