diff --git a/web/src/app/administration/components/access-items-management/access-items-management.component.html b/web/src/app/administration/components/access-items-management/access-items-management.component.html
index bc09173195..4ea122bfb5 100644
--- a/web/src/app/administration/components/access-items-management/access-items-management.component.html
+++ b/web/src/app/administration/components/access-items-management/access-items-management.component.html
@@ -49,7 +49,9 @@
Select an access id
Workbasket Key |
Access Id |
Read |
+ Read tasks |
Open |
+ Edit tasks |
Append |
Transfer |
Distribute |
@@ -97,20 +99,26 @@ Select an access id
-
+
|
-
+
|
-
+
|
-
+
+ |
+
+
+ |
+
+
|
-
|
diff --git a/web/src/app/administration/components/workbasket-access-items/workbasket-access-items.component.html b/web/src/app/administration/components/workbasket-access-items/workbasket-access-items.component.html
index 23283550da..287f331ebb 100644
--- a/web/src/app/administration/components/workbasket-access-items/workbasket-access-items.component.html
+++ b/web/src/app/administration/components/workbasket-access-items/workbasket-access-items.component.html
@@ -21,16 +21,36 @@
|
-
- Select all |
- Read |
- Open |
- Append |
- Transfer |
- Distribute |
+
+
+ Select all
+ |
+
+ Read
+ |
+
+ Read tasks
+ |
+
+ Open
+ |
+
+ Edit tasks
+ |
+
+ Append
+ |
+
+ Transfer
+ |
+
+ Distribute
+ |
- {{customField.field}} |
-
+
+ {{customField.field}}
+ |
+
@@ -82,19 +102,35 @@
aria-labelledby="permRead" (change)="setSelectAllCheckbox(this.index, $event)">
+
+
+
+ |
+
|
+
+
+
+ |
+
|
@@ -102,7 +138,7 @@
|
@@ -110,7 +146,7 @@
|
@@ -119,7 +155,7 @@
|
diff --git a/web/src/app/administration/components/workbasket-access-items/workbasket-access-items.component.scss b/web/src/app/administration/components/workbasket-access-items/workbasket-access-items.component.scss
index a1b02ccb23..858a632237 100644
--- a/web/src/app/administration/components/workbasket-access-items/workbasket-access-items.component.scss
+++ b/web/src/app/administration/components/workbasket-access-items/workbasket-access-items.component.scss
@@ -16,24 +16,48 @@
}
&__table {
- margin-top: 20px;
- margin-left: auto;
+ margin-top: 1%;
+ margin-left: 1%;
margin-right: auto;
- width: 98%;
+ width: 94%;
text-align: center;
- & th {
- padding: 0.25rem;
- position: sticky;
- top: 0;
- z-index: 3;
- background: white;
+ .rotated-th {
+ height: 80px;
+ min-width: 40px;
+ vertical-align: bottom;
+ padding: 0;
+ line-height: 0.8;
+ }
+
+ .rotated-th > div {
+ width: 100%;
+ position: relative;
+ left: 40px;
+ height: 100%;
+ transform:skew(-45deg,0deg);
+ border-right: 1px solid #dee2e6;
+ }
+
+ .rotated-th span {
+ position: absolute;
+ line-height: 1;
+ width: 80px;
+ left: 50%;
+ bottom: 0;
+ text-align: left;
+ transform:skew(45deg,0deg) rotate(315deg);
+ transform-origin: left center;
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
}
& td {
- padding-left: 0.5rem;
- vertical-align: initial;
- border-top: 1px solid #dee2e6;
+ width: 40px;
+ vertical-align: center;
+ border: 1px solid #dee2e6;
}
& tr:first-child > td {
@@ -41,7 +65,6 @@
}
& td > input[type='checkbox'] {
- margin-top: 0;
display: block;
}
@@ -91,6 +114,7 @@
}
.required-header {
+ vertical-align: bottom;
width: 200px;
}
diff --git a/web/src/app/administration/components/workbasket-access-items/workbasket-access-items.component.ts b/web/src/app/administration/components/workbasket-access-items/workbasket-access-items.component.ts
index 5b85a76a1c..a844b2d3b8 100644
--- a/web/src/app/administration/components/workbasket-access-items/workbasket-access-items.component.ts
+++ b/web/src/app/administration/components/workbasket-access-items/workbasket-access-items.component.ts
@@ -113,10 +113,18 @@ export class WorkbasketAccessItemsComponent implements OnInit, OnChanges, OnDest
getCustomFields(customFieldCount),
tap((customFields) => {
const accessItem = this.createWorkbasketAccessItems();
- this.keysOfVisibleFields = ['permRead', 'permOpen', 'permAppend', 'permTransfer', 'permDistribute'];
+ this.keysOfVisibleFields = [
+ 'permRead',
+ 'permOpen',
+ 'permAppend',
+ 'permTransfer',
+ 'permDistribute',
+ 'permReadTasks',
+ 'permEditTasks'
+ ];
for (let i = 0; i < customFieldCount; i++) {
if (customFields[i].visible) {
- this.keysOfVisibleFields.push(Object.keys(accessItem)[i + 10]);
+ this.keysOfVisibleFields.push(Object.keys(accessItem)[i + 12]);
}
}
})
@@ -242,6 +250,8 @@ export class WorkbasketAccessItemsComponent implements OnInit, OnChanges, OnDest
permAppend: false,
permTransfer: false,
permDistribute: false,
+ permReadTasks: false,
+ permEditTasks: false,
permCustom1: false,
permCustom2: false,
permCustom3: false,
diff --git a/web/src/app/shared/models/workbasket-access-items.ts b/web/src/app/shared/models/workbasket-access-items.ts
index 13a20b0e01..36236e9c3e 100644
--- a/web/src/app/shared/models/workbasket-access-items.ts
+++ b/web/src/app/shared/models/workbasket-access-items.ts
@@ -11,6 +11,8 @@ export interface WorkbasketAccessItems {
permAppend: boolean;
permTransfer: boolean;
permDistribute: boolean;
+ permReadTasks: boolean;
+ permEditTasks: boolean;
permCustom1: boolean;
permCustom2: boolean;
permCustom3: boolean;
diff --git a/web/src/app/shared/services/forms-validator/forms-validator.service.ts b/web/src/app/shared/services/forms-validator/forms-validator.service.ts
index 3c5e764b49..280ef0764f 100644
--- a/web/src/app/shared/services/forms-validator/forms-validator.service.ts
+++ b/web/src/app/shared/services/forms-validator/forms-validator.service.ts
@@ -88,6 +88,19 @@ export class FormsValidatorService {
owner: responseOwner ? responseOwner.field : 'owner'
});
}
+
+ form.controls.forEach((control) => {
+ const { permEditTasks, permReadTasks, permRead } = control.value;
+
+ if (permEditTasks && (!permReadTasks || !permRead)) {
+ this.notificationsService.showWarning('PERM_EDIT_TASKS_MISSING_DEPENDING_PERMISSION');
+ }
+
+ if (permReadTasks && !permRead) {
+ this.notificationsService.showWarning('PERM_READ_TASKS_MISSING_DEPENDING_PERMISSIONS');
+ }
+ });
+
return result;
}
diff --git a/web/src/app/shared/services/obtain-message/message-by-error-code.ts b/web/src/app/shared/services/obtain-message/message-by-error-code.ts
index abc71ea76d..ce4dd4b9ca 100644
--- a/web/src/app/shared/services/obtain-message/message-by-error-code.ts
+++ b/web/src/app/shared/services/obtain-message/message-by-error-code.ts
@@ -103,6 +103,12 @@ export const messageByErrorCode = {
},
[messageTypes.WARNING]: {
+ PERM_EDIT_TASKS_MISSING_DEPENDING_PERMISSION:
+ '"Edit tasks" permission was selected without the required "Read tasks" and "Read" permissions. ' +
+ 'Your changes will still be saved but they might lead to unexpected behavior.',
+ PERM_READ_TASKS_MISSING_DEPENDING_PERMISSIONS:
+ '"Read tasks" permission was selected without the required "Read" permission. ' +
+ 'Your changes will still be saved but they might lead to unexpected behavior.',
REPORT_DATA_WRONG_HEADER:
'The received header of the Report data does not match the expected header. ' +
'The data might be displayed incorrectly. Please contact your administrator.',
diff --git a/web/src/app/shared/store/mock-data/mock-store.ts b/web/src/app/shared/store/mock-data/mock-store.ts
index 3d52e74575..e8253e2afe 100644
--- a/web/src/app/shared/store/mock-data/mock-store.ts
+++ b/web/src/app/shared/store/mock-data/mock-store.ts
@@ -139,6 +139,8 @@ export const workbasketAccessItemsMock: WorkbasketAccessItemsRepresentation = {
permAppend: true,
permTransfer: true,
permDistribute: true,
+ permReadTasks: true,
+ permEditTasks: true,
permCustom1: true,
permCustom2: true,
permCustom3: true,
@@ -163,6 +165,8 @@ export const workbasketAccessItemsMock: WorkbasketAccessItemsRepresentation = {
permAppend: true,
permTransfer: true,
permDistribute: false,
+ permReadTasks: true,
+ permEditTasks: true,
permCustom1: true,
permCustom2: true,
permCustom3: true,