From da809f6fcf6e83093c424a01b01030b91f13bd14 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Fri, 21 Feb 2020 16:03:30 +0100 Subject: [PATCH] FEAT #12091 TIME 1:10 lang notify + check hasPrivilege listTemplates --- .../PreProcessActionController.php | 12 ----------- .../controllers/ListTemplateController.php | 6 ++++++ ...ffusionModel-administration.component.html | 4 ++-- ...fusionModel-administration.component.scss} | 12 ++++++++++- ...diffusionModel-administration.component.ts | 2 +- src/frontend/app/notification.service.ts | 8 +++++-- .../app/visa/visa-workflow.component.ts | 21 +++++++------------ src/frontend/lang/lang-en.ts | 3 ++- src/frontend/lang/lang-fr.ts | 1 + src/frontend/lang/lang-nl.ts | 1 + 10 files changed, 37 insertions(+), 33 deletions(-) rename src/frontend/app/administration/diffusionModel/{diffusionModel-administration.component.css => diffusionModel-administration.component.scss} (70%) mode change 100755 => 100644 diff --git a/src/app/action/controllers/PreProcessActionController.php b/src/app/action/controllers/PreProcessActionController.php index f3631fdf35c..c0de6e41767 100755 --- a/src/app/action/controllers/PreProcessActionController.php +++ b/src/app/action/controllers/PreProcessActionController.php @@ -956,18 +956,6 @@ class PreProcessActionController $resource['alt_identifier'] = _UNDEFINED; } - $circuit = ListInstanceModel::get([ - 'select' => ['requested_signature'], - 'where' => ['res_id = ?', 'difflist_type = ?', 'process_date is null'], - 'data' => [$resId, 'VISA_CIRCUIT'], - 'orderBy' => ['listinstance_id'], - 'limit' => 1 - ]); - if (empty($circuit)) { - $resourcesInformations['error'][] = ['alt_identifier' => $resource['alt_identifier'], 'res_id' => $resId, 'reason' => 'noCircuitAvailable']; - continue; - } - $attachments = AttachmentModel::get([ 'select' => ['status'], 'where' => ['res_id_master = ?', 'attachment_type in (?)', 'in_signature_book = ?', 'status not in (?)'], diff --git a/src/app/entity/controllers/ListTemplateController.php b/src/app/entity/controllers/ListTemplateController.php index a9028db8bc9..6654edaaaff 100755 --- a/src/app/entity/controllers/ListTemplateController.php +++ b/src/app/entity/controllers/ListTemplateController.php @@ -62,6 +62,12 @@ class ListTemplateController $listTemplateItems[$key]['idToDisplay'] = UserModel::getLabelledUserById(['id' => $value['item_id']]); $listTemplateItems[$key]['descriptionToDisplay'] = UserModel::getPrimaryEntityById(['id' => $value['item_id'], 'select' => ['entity_label']])['entity_label']; } + $listTemplateItems[$key]['hasPrivilege'] = true; + if ($listTemplate['type'] == 'visaCircuit' && !PrivilegeController::hasPrivilege(['privilegeId' => 'visa_documents', 'userId' => $value['item_id']]) && !PrivilegeController::hasPrivilege(['privilegeId' => 'sign_document', 'userId' => $value['item_id']])) { + $listTemplateItems[$key]['hasPrivilege'] = false; + } elseif ($listTemplate['type'] == 'opinionCircuit' && !PrivilegeController::hasPrivilege(['privilegeId' => 'avis_documents', 'userId' => $value['item_id']])) { + $listTemplateItems[$key]['hasPrivilege'] = false; + } } $roles = EntityModel::getRoles(); diff --git a/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.html b/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.html index b93bd7dd395..c61d6d2dee3 100755 --- a/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.html +++ b/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.html @@ -50,9 +50,9 @@ <plugin-autocomplete [labelPlaceholder]="lang.addUser" [labelList]="lang.availableUsers" [routeDatas]="diffusionModel.type == 'visaCircuit' ? ['/rest/autocomplete/users/circuit'] : ['/rest/autocomplete/users/circuit?circuit=opinion']" [targetSearchKey]="'idToDisplay'" [subInfoKey]="'descriptionToDisplay'" (triggerEvent)="addElemListModelVisa($event)"></plugin-autocomplete> <mat-list> <span dnd-sortable-container [dropZones]="['boxers-zone']" [sortableData]="diffusionModel.items"> - <mat-list-item disableRipple="true" *ngFor="let template of diffusionModel.items; let i = index" title="{{lang.move}}" + <mat-list-item disableRipple="true" *ngFor="let template of diffusionModel.items; let i = index" [title]="template.hasPrivilege ? lang.move : lang.insufficientPrivilege" dnd-sortable [sortableIndex]="i" (onDropSuccess)="updateDiffListVisa(template)"> - <mat-icon color="primary" [class]="template.item_mode == 'sign' ? 'fa fa-certificate' : 'fa fa-user'" mat-list-icon></mat-icon> + <mat-icon [class]="template.item_mode == 'sign' ? 'fa fa-certificate' : 'fa fa-user'" [class.primaryColor]="template.hasPrivilege" [class.redColor]="!template.hasPrivilege" mat-list-icon></mat-icon> <p mat-line>{{template.idToDisplay}} <small style="opacity:0.5;">{{template.descriptionToDisplay}}</small> </p> diff --git a/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.css b/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.scss old mode 100755 new mode 100644 similarity index 70% rename from src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.css rename to src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.scss index bd3247a5c48..903b07dc24d --- a/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.css +++ b/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.scss @@ -1,3 +1,5 @@ +@import '../../../css/vars.scss'; + .mat-list-item[draggable="false"]:hover{ background: inherit; } @@ -12,4 +14,12 @@ .mat-list-item[draggable="true"] mat-icon{ cursor: move; -} \ No newline at end of file +} + +.primaryColor { + color: $primary; +} + +.redColor { + color: #e4342b; +} diff --git a/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.ts b/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.ts index 0d81c3b67b7..06c2eb7b5b1 100755 --- a/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.ts +++ b/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.ts @@ -11,7 +11,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "diffusionModel-administration.component.html", - styleUrls: ['diffusionModel-administration.component.css'], + styleUrls: ['diffusionModel-administration.component.scss'], providers: [NotificationService, AppService] }) export class DiffusionModelAdministrationComponent implements OnInit { diff --git a/src/frontend/app/notification.service.ts b/src/frontend/app/notification.service.ts index 0940a2ac4dc..32bfc3930fc 100755 --- a/src/frontend/app/notification.service.ts +++ b/src/frontend/app/notification.service.ts @@ -47,7 +47,11 @@ export class NotificationService { } else { if (err.error !== undefined) { if (err.error.errors !== undefined) { - this.error(err.error.errors, err.url); + if (err.error.lang !== undefined) { + this.error('lang.' + err.error.lang, err.url); + } else { + this.error(err.error.errors, err.url); + } if (err.status === 403 || err.status === 404) { this.router.navigate(['/home']); } @@ -80,4 +84,4 @@ export class NotificationService { this.error(err); } } -} \ No newline at end of file +} diff --git a/src/frontend/app/visa/visa-workflow.component.ts b/src/frontend/app/visa/visa-workflow.component.ts index dcb5f7395e8..6a758e405bb 100644 --- a/src/frontend/app/visa/visa-workflow.component.ts +++ b/src/frontend/app/visa/visa-workflow.component.ts @@ -327,10 +327,10 @@ export class VisaWorkflowComponent implements OnInit { 'listinstance_id': key, 'id': element.userId, 'labelToDisplay': element.userDisplay, - 'requested_signature': element.mode === 'visa' ? false : true, + 'requested_signature': element.mode !== 'visa', 'process_date': this.functions.formatFrenchDateToTechnicalDate(element.processDate), 'picture': '' - } + }; this.visaWorkflow.items.push(user); this.http.get("../../rest/maarchParapheur/user/" + element.userId + "/picture") .subscribe((data: any) => { @@ -475,7 +475,8 @@ export class VisaWorkflowComponent implements OnInit { this.http.get(`../../rest/listTemplates/${item.id}`).pipe( tap((data: any) => { this.visaWorkflow.items = this.visaWorkflow.items.concat( - data.listTemplate.items.map((itemTemplate: any) => { + + data.listTemplate.items.filter((itemTemplate: any) => itemTemplate.hasPrivilege === true).map((itemTemplate: any) => { return { item_id: itemTemplate.item_id, item_type: 'user', @@ -483,7 +484,7 @@ export class VisaWorkflowComponent implements OnInit { item_entity: itemTemplate.descriptionToDisplay, difflist_type: 'VISA_CIRCUIT', signatory: false, - requested_signature: itemTemplate.item_mode === 'sign' ? true : false + requested_signature: itemTemplate.item_mode === 'sign' } }) ); @@ -503,11 +504,7 @@ export class VisaWorkflowComponent implements OnInit { } emptyWorkflow() { - if (this.visaWorkflow.items.length === 0) { - return true; - } else { - return false; - } + return this.visaWorkflow.items.length === 0; } workflowEnd() { @@ -570,10 +567,6 @@ export class VisaWorkflowComponent implements OnInit { } isModified() { - if (this.loading || JSON.stringify(this.visaWorkflow.items) === JSON.stringify(this.visaWorkflowClone)) { - return false; - } else { - return true; - } + return !(this.loading || JSON.stringify(this.visaWorkflow.items) === JSON.stringify(this.visaWorkflowClone)); } } diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts index a6bf0fd375e..660f9c01f7a 100755 --- a/src/frontend/lang/lang-en.ts +++ b/src/frontend/lang/lang-en.ts @@ -1553,5 +1553,6 @@ export const LANG_EN = { "willBeTransferedToNewTag" : "will be transfered to selected tag", "detailDoc" : "Detail page", "emptySubject" : "Empty subject", - "editAcknowledgementReceipt" : "Edit the acknowledgement receipt", + "editAcknowledgementReceipt" : "Edit the acknowledgement receipt", + "insufficientPrivilege" : "Privilege insuffisant", }; diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts index a8be924b32a..f3289c79a9e 100755 --- a/src/frontend/lang/lang-fr.ts +++ b/src/frontend/lang/lang-fr.ts @@ -1593,4 +1593,5 @@ export const LANG_FR = { "detailDoc" : "Fiche détaillée", "emptySubject" : "Objet vide", "editAcknowledgementReceipt" : "Editer l'accusé de réception", + "insufficientPrivilege" : "Privilège insuffisant", }; diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts index d12620d68f5..751f7f536a7 100755 --- a/src/frontend/lang/lang-nl.ts +++ b/src/frontend/lang/lang-nl.ts @@ -1579,4 +1579,5 @@ export const LANG_NL = { "detailDoc" : "Detail page", //_TO_TRANSLATE "emptySubject" : "Empty subject", //_TO_TRANSLATE "editAcknowledgementReceipt" : "Edit the acknowledgement receipt", //_TO_TRANSLATE + "insufficientPrivilege" : "Privilege insuffisant", //TRANSLATE }; -- GitLab