add available actions on plan/description status definition

This commit is contained in:
CITE\amentis 2024-09-20 14:21:35 +03:00
parent 21fd258181
commit 12a57f875a
36 changed files with 336 additions and 29 deletions

View File

@ -0,0 +1,30 @@
package org.opencdmp.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import org.opencdmp.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum DescriptionStatusAvailableActionType implements DatabaseEnum<Short> {
Export((short) 0);
private final Short value;
DescriptionStatusAvailableActionType(Short value) {
this.value = value;
}
@Override
@JsonValue
public Short getValue() {
return this.value;
}
private static final Map<Short, DescriptionStatusAvailableActionType> map = EnumUtils.getEnumValueMap(DescriptionStatusAvailableActionType.class);
public static DescriptionStatusAvailableActionType of(Short i) {
return map.get(i);
}
}

View File

@ -0,0 +1,31 @@
package org.opencdmp.commons.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import org.opencdmp.data.converters.enums.DatabaseEnum;
import java.util.Map;
public enum PlanStatusAvailableActionType implements DatabaseEnum<Short> {
Deposit((short) 0),
Export((short) 1);
private final Short value;
PlanStatusAvailableActionType(Short value) {
this.value = value;
}
@Override
@JsonValue
public Short getValue() {
return this.value;
}
private static final Map<Short, PlanStatusAvailableActionType> map = EnumUtils.getEnumValueMap(PlanStatusAvailableActionType.class);
public static PlanStatusAvailableActionType of(Short i) {
return map.get(i);
}
}

View File

@ -1,9 +1,9 @@
package org.opencdmp.commons.types.descriptionstatus;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.*;
import org.opencdmp.commons.enums.DescriptionStatusAvailableActionType;
import java.util.List;
@XmlRootElement(name = "definition")
@XmlAccessorType(XmlAccessType.FIELD)
@ -12,7 +12,19 @@ public class DescriptionStatusDefinitionEntity {
@XmlElement(name = "authorization")
private DescriptionStatusDefinitionAuthorizationEntity authorization;
@XmlElementWrapper(name = "availableActions")
@XmlElement(name = "action")
private List<DescriptionStatusAvailableActionType> availableActions;
public DescriptionStatusDefinitionAuthorizationEntity getAuthorization() { return this.authorization; }
public void setAuthorization(DescriptionStatusDefinitionAuthorizationEntity authorization) { this.authorization = authorization; }
public List<DescriptionStatusAvailableActionType> getAvailableActions() {
return availableActions;
}
public void setAvailableActions(List<DescriptionStatusAvailableActionType> availableActions) {
this.availableActions = availableActions;
}
}

View File

@ -1,6 +1,9 @@
package org.opencdmp.commons.types.planstatus;
import jakarta.xml.bind.annotation.*;
import org.opencdmp.commons.enums.PlanStatusAvailableActionType;
import java.util.List;
@XmlRootElement(name = "definition")
@XmlAccessorType(XmlAccessType.FIELD)
@ -9,9 +12,21 @@ public class PlanStatusDefinitionEntity {
@XmlElement(name = "authorization")
private PlanStatusDefinitionAuthorizationEntity authorization;
@XmlElementWrapper(name = "availableActions")
@XmlElement(name = "action")
private List<PlanStatusAvailableActionType> availableActions;
public PlanStatusDefinitionAuthorizationEntity getAuthorization() {
return this.authorization;
}
public void setAuthorization(PlanStatusDefinitionAuthorizationEntity authorization) { this.authorization = authorization; }
public List<PlanStatusAvailableActionType> getAvailableActions() {
return availableActions;
}
public void setAvailableActions(List<PlanStatusAvailableActionType> availableActions) {
this.availableActions = availableActions;
}
}

View File

@ -50,6 +50,7 @@ public class DescriptionStatusDefinitionBuilder extends BaseBuilder<DescriptionS
if (!authorizationFields.isEmpty() && d.getAuthorization() != null) {
m.setAuthorization(this.builderFactory.builder(DescriptionStatusDefinitionAuthorizationBuilder.class).authorize(authorize).build(authorizationFields, d.getAuthorization()));
}
if (fields.hasField(this.asIndexer(DescriptionStatusDefinition._availableActions))) m.setAvailableActions(d.getAvailableActions());
models.add(m);
}

View File

@ -53,6 +53,8 @@ public class PlanStatusDefinitionBuilder extends BaseBuilder<PlanStatusDefinitio
m.setAuthorization(this.builderFactory.builder(PlanStatusDefinitionAuthorizationBuilder.class).authorize(this.authorize).build(authorizationFields, d.getAuthorization()));
}
if (fields.hasField(this.asIndexer(PlanStatusDefinition._availableActions))) m.setAvailableActions(d.getAvailableActions());
models.add(m);
}

View File

@ -1,11 +1,26 @@
package org.opencdmp.model.descriptionstatus;
import org.opencdmp.commons.enums.DescriptionStatusAvailableActionType;
import java.util.List;
public class DescriptionStatusDefinition {
public final static String _authorization = "authorization";
private DescriptionStatusDefinitionAuthorization authorization;
public final static String _availableActions = "availableActions";
private List<DescriptionStatusAvailableActionType> availableActions;
public DescriptionStatusDefinitionAuthorization getAuthorization() { return this.authorization; }
public void setAuthorization(DescriptionStatusDefinitionAuthorization authorization) { this.authorization = authorization; }
public List<DescriptionStatusAvailableActionType> getAvailableActions() {
return availableActions;
}
public void setAvailableActions(List<DescriptionStatusAvailableActionType> availableActions) {
this.availableActions = availableActions;
}
}

View File

@ -2,10 +2,10 @@ package org.opencdmp.model.persist.descriptionstatus;
import gr.cite.tools.validation.ValidatorFactory;
import gr.cite.tools.validation.specification.Specification;
import org.opencdmp.commons.enums.DescriptionStatusAvailableActionType;
import org.opencdmp.commons.validation.BaseValidator;
import org.opencdmp.convention.ConventionService;
import org.opencdmp.errorcode.ErrorThesaurusProperties;
import org.opencdmp.model.descriptionstatus.DescriptionStatusDefinitionAuthorization;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Scope;
@ -20,9 +20,19 @@ public class DescriptionStatusDefinitionPersist {
private DescriptionStatusDefinitionAuthorizationPersist authorization;
public final static String _authorization = "authorization";
private List<DescriptionStatusAvailableActionType> availableActions;
public final static String _availableActions = "availableActions";
public DescriptionStatusDefinitionAuthorizationPersist getAuthorization() { return authorization; }
public void setAuthorization(DescriptionStatusDefinitionAuthorizationPersist authorization) { this.authorization = authorization; }
public List<DescriptionStatusAvailableActionType> getAvailableActions() {
return availableActions;
}
public void setAvailableActions(List<DescriptionStatusAvailableActionType> availableActions) {
this.availableActions = availableActions;
}
@Component(DescriptionStatusDefinitionPersistValidator.ValidatorName)
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

View File

@ -2,6 +2,7 @@ package org.opencdmp.model.persist.planstatus;
import gr.cite.tools.validation.ValidatorFactory;
import gr.cite.tools.validation.specification.Specification;
import org.opencdmp.commons.enums.PlanStatusAvailableActionType;
import org.opencdmp.commons.validation.BaseValidator;
import org.opencdmp.convention.ConventionService;
import org.opencdmp.errorcode.ErrorThesaurusProperties;
@ -19,11 +20,21 @@ public class PlanStatusDefinitionPersist {
public final static String _authorization = "authorization";
private PlanStatusDefinitionAuthorizationPersist authorization = null;
public final static String _availableActions = "availableActions";
private List<PlanStatusAvailableActionType> availableActions;
public PlanStatusDefinitionAuthorizationPersist getAuthorization() { return authorization; }
public void setAuthorization(PlanStatusDefinitionAuthorizationPersist authorization) { this.authorization = authorization; }
public List<PlanStatusAvailableActionType> getAvailableActions() {
return availableActions;
}
public void setAvailableActions(List<PlanStatusAvailableActionType> availableActions) {
this.availableActions = availableActions;
}
@Component(PlanStatusDefinitionPersist.PlanStatusDefinitionPersistValidator.ValidatorName)
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public static class PlanStatusDefinitionPersistValidator extends BaseValidator<PlanStatusDefinitionPersist> {

View File

@ -1,12 +1,27 @@
package org.opencdmp.model.planstatus;
import org.opencdmp.commons.enums.PlanStatusAvailableActionType;
import java.util.List;
public class PlanStatusDefinition {
public final static String _authorization = "authorization";
private PlanStatusDefinitionAuthorization authorization;
public final static String _availableActions = "availableActions";
private List<PlanStatusAvailableActionType> availableActions;
public PlanStatusDefinitionAuthorization getAuthorization() { return this.authorization; }
public void setAuthorization(PlanStatusDefinitionAuthorization authorization) { this.authorization = authorization; }
public List<PlanStatusAvailableActionType> getAvailableActions() {
return availableActions;
}
public void setAvailableActions(List<PlanStatusAvailableActionType> availableActions) {
this.availableActions = availableActions;
}
}

View File

@ -129,7 +129,7 @@ public class DescriptionStatusServiceImpl implements DescriptionStatusService {
return data;
data.setAuthorization(this.buildDescriptionStatusDefinitionAuthorizationEntity(persist.getAuthorization()));
if (!this.conventionService.isListNullOrEmpty(persist.getAvailableActions())) data.setAvailableActions(persist.getAvailableActions());
return data;
}

View File

@ -136,6 +136,8 @@ public class PlanStatusServiceImpl implements PlanStatusService {
PlanStatusDefinitionAuthorizationEntity definitionAuthorizationData = this.buildPlanStatusDefinitionAuthorizationEntity(persist.getAuthorization());
data.setAuthorization(definitionAuthorizationData);
}
if (!this.conventionService.isListNullOrEmpty(persist.getAvailableActions())) data.setAvailableActions(persist.getAvailableActions());
return data;
}

View File

@ -0,0 +1,3 @@
export enum DescriptionStatusAvailableActionType {
Export = 0,
}

View File

@ -0,0 +1,4 @@
export enum PlanStatusAvailableActionType {
Deposit = 0,
Export = 1
}

View File

@ -1,5 +1,6 @@
import { AppRole } from "@app/core/common/enum/app-role";
import { DescriptionStatusEnum } from "@app/core/common/enum/description-status";
import { DescriptionStatusAvailableActionType } from "@app/core/common/enum/description-status-available-action-type";
import { PlanUserRole } from "@app/core/common/enum/plan-user-role";
import { BaseEntity } from "@common/base/base-entity.model";
@ -12,6 +13,7 @@ export interface DescriptionStatus extends BaseEntity{
export interface DescriptionStatusDefinition {
authorization: DescriptionStatusDefinitionAuthorization
availableActions: DescriptionStatusAvailableActionType[];
}
export interface DescriptionStatusDefinitionAuthorization {

View File

@ -1,5 +1,6 @@
import { AppRole } from "@app/core/common/enum/app-role";
import { PlanStatusEnum } from "@app/core/common/enum/plan-status";
import { PlanStatusAvailableActionType } from "@app/core/common/enum/plan-status-available-action-type";
import { PlanUserRole } from "@app/core/common/enum/plan-user-role";
import { BaseEntity } from "@common/base/base-entity.model";
@ -12,6 +13,7 @@ export interface PlanStatus extends BaseEntity{
export interface PlanStatusDefinition {
authorization: PlanStatusDefinitionAuthorization
availableActions: PlanStatusAvailableActionType[]
}
export interface PlanStatusDefinitionAuthorization {

View File

@ -31,6 +31,8 @@ import { PlanStatusEnum } from '../../common/enum/plan-status';
import { ValidationType } from '../../common/enum/validation-type';
import { UsageLimitTargetMetric } from '@app/core/common/enum/usage-limit-target-metric';
import { UsageLimitPeriodicityRange } from '@app/core/common/enum/usage-limit-periodicity-range';
import { PlanStatusAvailableActionType } from '@app/core/common/enum/plan-status-available-action-type';
import { DescriptionStatusAvailableActionType } from '@app/core/common/enum/description-status-available-action-type';
@Injectable()
export class EnumUtils {
@ -76,6 +78,13 @@ export class EnumUtils {
}
}
toPlanStatusAvailableActionTypeString(status: PlanStatusAvailableActionType): string {
switch (status) {
case PlanStatusAvailableActionType.Deposit: return this.language.instant('TYPES.PLAN-STATUS-AVAILABLE-ACTION-TYPE.DEPOSIT');
case PlanStatusAvailableActionType.Export: return this.language.instant('TYPES.PLAN-STATUS-AVAILABLE-ACTION-TYPE.EXPORT');
}
}
toDescriptionTemplateFieldValidationTypeString(status: ValidationType): string {
switch (status) {
case ValidationType.None: return this.language.instant('TYPES.DESCRIPTION-TEMPLATE-FIELD-VALIDATION-TYPE.NONE');
@ -218,6 +227,12 @@ export class EnumUtils {
}
}
toDescriptionStatusAvailableActionTypeString(status: DescriptionStatusAvailableActionType): string {
switch (status) {
case DescriptionStatusAvailableActionType.Export: return this.language.instant('TYPES.DESCRIPTION-STATUS-AVAILABLE-ACTION-TYPE.EXPORT');
}
}
toPlanUserRolesString(roles: PlanUserRole[]): string { return roles.map(x => this.toPlanUserRoleString(x)).join(', ') }
toPlanUserRoleString(role: PlanUserRole): string {
switch (role) {

View File

@ -61,6 +61,18 @@
</div>
</div>
<div class="col-12">
<h3>
{{'DESCRIPTION-STATUS-EDITOR.FIELDS.AVAILABLE-ACTIONS' | translate}}
</h3>
<mat-form-field class="w-100">
<mat-label>{{'DESCRIPTION-STATUS-EDITOR.FIELDS.AVAILABLE-ACTIONS' | translate}}</mat-label>
<mat-select multiple [formControl]="formGroup.controls.definition.controls.availableActions">
<mat-option *ngFor="let actionType of descriptionStatusAvailableActionTypeEnumValues" [value]="actionType">{{enumUtils.toDescriptionStatusAvailableActionTypeString(actionType)}}</mat-option>
</mat-select>
</mat-form-field>
</div>
<div class="col-12">
<h3>
{{'DESCRIPTION-STATUS-EDITOR.FIELDS.AUTHORIZATION' | translate}}

View File

@ -29,6 +29,7 @@ import { DescriptionStatusForm, DescriptionStatusDefinitionAuthorizationItemForm
import { DescriptionStatusEditorResolver } from './description-status-editor.resolver';
import { BaseEditor } from '@common/base/base-editor';
import { PlanUserRole } from '@app/core/common/enum/plan-user-role';
import { DescriptionStatusAvailableActionType } from '@app/core/common/enum/description-status-available-action-type';
@Component({
selector: 'app-description-status-editor',
@ -39,6 +40,7 @@ export class DescriptionStatusEditorComponent extends BaseEditor<DescriptionStat
protected internalStatusEnum = this.enumUtils.getEnumValues<DescriptionStatusEnum>(DescriptionStatusEnum);
protected userRolesEnum = this.enumUtils.getEnumValues<AppRole>(AppRole);
protected planRolesEnum = this.enumUtils.getEnumValues<PlanUserRole>(PlanUserRole);
protected descriptionStatusAvailableActionTypeEnumValues = this.enumUtils.getEnumValues<DescriptionStatusAvailableActionType>(DescriptionStatusAvailableActionType);
protected belongsToCurrentTenant: boolean;
constructor(

View File

@ -1,6 +1,7 @@
import { FormControl, FormGroup, Validators } from "@angular/forms";
import { AppRole } from "@app/core/common/enum/app-role";
import { DescriptionStatusEnum } from "@app/core/common/enum/description-status";
import { DescriptionStatusAvailableActionType } from "@app/core/common/enum/description-status-available-action-type";
import { PlanUserRole } from "@app/core/common/enum/plan-user-role";
import { DescriptionStatus, DescriptionStatusDefinition, DescriptionStatusDefinitionAuthorizationItem } from "@app/core/model/description-status/description-status";
import { DescriptionStatusPersist } from "@app/core/model/description-status/description-status-persist";
@ -46,6 +47,7 @@ export class DescriptionStatusEditorModel extends BaseEditorModel implements Des
edit: this.buildDefinitionAuthorizationItemForm({item: this.definition?.authorization?.edit, rootPath: 'edit', disabled})
})
});
definitionForm.addControl('availableActions', new FormControl({value: this.definition?.availableActions, disabled}, context.getValidation('availableActions').validators));
definitionForm.controls.authorization.addValidators(context.getValidation('authorization').validators);
definitionForm.addValidators(context.getValidation('definition').validators);
return definitionForm;
@ -73,6 +75,7 @@ export class DescriptionStatusEditorModel extends BaseEditorModel implements Des
baseValidationArray.push({ key: 'definition', validators: [BackendErrorValidator(this.validationErrorModel, 'definition')] });
baseValidationArray.push({ key: 'authorization', validators: [BackendErrorValidator(this.validationErrorModel, 'definition.authorization')] });
baseValidationArray.push({ key: 'edit', validators: [BackendErrorValidator(this.validationErrorModel, 'definition.authorization.edit')] });
baseValidationArray.push({ key: 'availableActions', validators: [BackendErrorValidator(this.validationErrorModel, 'definition.availableActions')] });
baseContext.validation = baseValidationArray;
return baseContext;
@ -102,6 +105,7 @@ export interface DescriptionStatusForm {
export interface DescriptionStatusDefinitionForm {
authorization: FormGroup<DescriptionStatusDefinitionAuthorizationForm>
availableActions?: FormControl<DescriptionStatusAvailableActionType[]>
}
export interface DescriptionStatusDefinitionAuthorizationForm {

View File

@ -28,6 +28,8 @@ export class DescriptionStatusEditorResolver extends BaseEditorResolver{
[nameof<DescriptionStatus>(x => x.definition), nameof<DescriptionStatusDefinition>(x => x.authorization), nameof<DescriptionStatusDefinitionAuthorization>(x => x.edit), nameof<DescriptionStatusDefinitionAuthorizationItem>(x => x.allowAnonymous)].join('.'),
[nameof<DescriptionStatus>(x => x.definition), nameof<DescriptionStatusDefinition>(x => x.authorization), nameof<DescriptionStatusDefinitionAuthorization>(x => x.edit), nameof<DescriptionStatusDefinitionAuthorizationItem>(x => x.allowAuthenticated)].join('.'),
[nameof<DescriptionStatus>(x => x.definition), nameof<DescriptionStatusDefinition>(x => x.availableActions)].join('.'),
nameof<DescriptionStatus>(x => x.updatedAt),
nameof<DescriptionStatus>(x => x.createdAt),
nameof<DescriptionStatus>(x => x.hash),

View File

@ -28,6 +28,8 @@ export class PlanStatusEditorResolver extends BaseEditorResolver{
[nameof<PlanStatus>(x => x.definition), nameof<PlanStatusDefinition>(x => x.authorization), nameof<PlanStatusDefinitionAuthorization>(x => x.edit), nameof<PlanStatusDefinitionAuthorizationItem>(x => x.allowAnonymous)].join('.'),
[nameof<PlanStatus>(x => x.definition), nameof<PlanStatusDefinition>(x => x.authorization), nameof<PlanStatusDefinitionAuthorization>(x => x.edit), nameof<PlanStatusDefinitionAuthorizationItem>(x => x.allowAuthenticated)].join('.'),
[nameof<PlanStatus>(x => x.definition), nameof<PlanStatusDefinition>(x => x.availableActions)].join('.'),
nameof<PlanStatus>(x => x.updatedAt),
nameof<PlanStatus>(x => x.createdAt),
nameof<PlanStatus>(x => x.hash),

View File

@ -60,7 +60,17 @@
}
</div>
</div>
<div class="col-12">
<h3>
{{'PLAN-STATUS-EDITOR.FIELDS.AVAILABLE-ACTIONS' | translate}}
</h3>
<mat-form-field class="w-100">
<mat-label>{{'PLAN-STATUS-EDITOR.FIELDS.AVAILABLE-ACTIONS' | translate}}</mat-label>
<mat-select multiple [formControl]="formGroup.controls.definition.controls.availableActions">
<mat-option *ngFor="let actionType of planStatusAvailableActionTypeEnumValues" [value]="actionType">{{enumUtils.toPlanStatusAvailableActionTypeString(actionType)}}</mat-option>
</mat-select>
</mat-form-field>
</div>
<div class="col-12">
<h3>
{{'PLAN-STATUS-EDITOR.FIELDS.AUTHORIZATION' | translate}}

View File

@ -29,6 +29,7 @@ import { PlanStatusEnum } from '@app/core/common/enum/plan-status';
import { FormGroup } from '@angular/forms';
import { PlanUserRole } from '@app/core/common/enum/plan-user-role';
import { AppRole } from '@app/core/common/enum/app-role';
import { PlanStatusAvailableActionType } from '@app/core/common/enum/plan-status-available-action-type';
@Component({
selector: 'app-plan-status-editor',
@ -40,6 +41,7 @@ export class PlanStatusEditorComponent extends BaseEditor<PlanStatusEditorModel,
protected internalStatusEnum = this.enumUtils.getEnumValues<PlanStatusEnum>(PlanStatusEnum);
protected userRolesEnum = this.enumUtils.getEnumValues<AppRole>(AppRole);
protected planRolesEnum = this.enumUtils.getEnumValues<PlanUserRole>(PlanUserRole);
protected planStatusAvailableActionTypeEnumValues = this.enumUtils.getEnumValues<PlanStatusAvailableActionType>(PlanStatusAvailableActionType);
protected belongsToCurrentTenant: boolean;
constructor(

View File

@ -2,6 +2,7 @@ import { FormArray, FormControl, FormGroup, Validators } from "@angular/forms";
import { AppRole } from "@app/core/common/enum/app-role";
import { AppPermission } from "@app/core/common/enum/permission.enum";
import { PlanStatusEnum } from "@app/core/common/enum/plan-status";
import { PlanStatusAvailableActionType } from "@app/core/common/enum/plan-status-available-action-type";
import { PlanUserRole } from "@app/core/common/enum/plan-user-role";
import { PlanStatus, PlanStatusDefinition, PlanStatusDefinitionAuthorizationItem } from "@app/core/model/plan-status/plan-status";
import { PlanStatusPersist } from "@app/core/model/plan-status/plan-status-persist";
@ -47,6 +48,7 @@ export class PlanStatusEditorModel extends BaseEditorModel implements PlanStatus
edit: this.buildDefinitionAuthorizationItemForm({item: this.definition?.authorization?.edit, rootPath: 'edit', disabled})
})
});
definitionForm.addControl('availableActions', new FormControl({value: this.definition?.availableActions, disabled}, context.getValidation('availableActions').validators));
definitionForm.controls.authorization.addValidators(context.getValidation('authorization').validators);
definitionForm.addValidators(context.getValidation('definition').validators);
return definitionForm;
@ -74,6 +76,7 @@ export class PlanStatusEditorModel extends BaseEditorModel implements PlanStatus
baseValidationArray.push({ key: 'definition', validators: [BackendErrorValidator(this.validationErrorModel, 'definition')] });
baseValidationArray.push({ key: 'authorization', validators: [BackendErrorValidator(this.validationErrorModel, 'definition.authorization')] });
baseValidationArray.push({ key: 'edit', validators: [BackendErrorValidator(this.validationErrorModel, 'definition.authorization.edit')] });
baseValidationArray.push({ key: 'availableActions', validators: [BackendErrorValidator(this.validationErrorModel, 'definition.availableActions')] });
baseContext.validation = baseValidationArray;
return baseContext;
@ -104,6 +107,7 @@ export interface PlanStatusForm {
export interface PlanStatusDefinitionForm {
authorization: FormGroup<PlanStatusDefinitionAuthorizationForm>
availableActions?: FormControl<PlanStatusAvailableActionType[]>
}
export interface PlanStatusDefinitionAuthorizationForm {

View File

@ -916,7 +916,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -958,7 +959,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -2107,6 +2109,9 @@
"FINALIZED": "Finalized",
"CANCELED": "Canceled"
},
"DESCRIPTION-STATUS-AVAILABLE-ACTION-TYPE": {
"EXPORT": "Export"
},
"PLAN-USER-ROLE": {
"OWNER": "Owner",
"VIEWER": "Viewer",
@ -2120,6 +2125,10 @@
"FINALISED": "Amaituta",
"DRAFT": "Zirriborroa"
},
"PLAN-STATUS-AVAILABLE-ACTION-TYPE": {
"DEPOSIT": "Deposit",
"EXPORT": "Export"
},
"PLAN-VISIBILITY": {
"PUBLIC": "Argitaratuta"
},

View File

@ -916,7 +916,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -958,7 +959,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -2107,6 +2109,9 @@
"FINALIZED": "Finalized",
"CANCELED": "Canceled"
},
"DESCRIPTION-STATUS-AVAILABLE-ACTION-TYPE": {
"EXPORT": "Export"
},
"PLAN-USER-ROLE": {
"OWNER": "Owner",
"VIEWER": "Viewer",
@ -2120,6 +2125,10 @@
"FINALISED": "Fertiggestellt",
"DRAFT": "Entwurf"
},
"PLAN-STATUS-AVAILABLE-ACTION-TYPE": {
"DEPOSIT": "Deposit",
"EXPORT": "Export"
},
"PLAN-VISIBILITY": {
"PUBLIC": "Veröffentlicht"
},

View File

@ -914,7 +914,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -965,7 +966,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -2107,6 +2109,9 @@
"FINALIZED": "Finalized",
"CANCELED": "Canceled"
},
"DESCRIPTION-STATUS-AVAILABLE-ACTION-TYPE": {
"EXPORT": "Export"
},
"PLAN-USER-ROLE": {
"OWNER": "Owner",
"VIEWER": "Viewer",
@ -2120,6 +2125,10 @@
"FINALISED": "Finalized",
"DRAFT": "Draft"
},
"PLAN-STATUS-AVAILABLE-ACTION-TYPE": {
"DEPOSIT": "Deposit",
"EXPORT": "Export"
},
"PLAN-VISIBILITY": {
"PUBLIC": "Published"
},

View File

@ -916,7 +916,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -958,7 +959,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -2107,6 +2109,9 @@
"FINALIZED": "Finalized",
"CANCELED": "Canceled"
},
"DESCRIPTION-STATUS-AVAILABLE-ACTION-TYPE": {
"EXPORT": "Export"
},
"PLAN-USER-ROLE": {
"OWNER": "Owner",
"VIEWER": "Viewer",
@ -2120,6 +2125,10 @@
"FINALISED": "Finalizado",
"DRAFT": "Borrador"
},
"PLAN-STATUS-AVAILABLE-ACTION-TYPE": {
"DEPOSIT": "Deposit",
"EXPORT": "Export"
},
"PLAN-VISIBILITY": {
"PUBLIC": "Publicado"
},

View File

@ -916,7 +916,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -958,7 +959,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -2107,6 +2109,9 @@
"FINALIZED": "Finalized",
"CANCELED": "Canceled"
},
"DESCRIPTION-STATUS-AVAILABLE-ACTION-TYPE": {
"EXPORT": "Export"
},
"PLAN-USER-ROLE": {
"OWNER": "Owner",
"VIEWER": "Viewer",
@ -2120,6 +2125,10 @@
"FINALISED": "Οριστικοποιημένο",
"DRAFT": "Προσχέδιο"
},
"PLAN-STATUS-AVAILABLE-ACTION-TYPE": {
"DEPOSIT": "Deposit",
"EXPORT": "Export"
},
"PLAN-VISIBILITY": {
"PUBLIC": "Δημοσιευμένο"
},

View File

@ -916,7 +916,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -958,7 +959,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -2107,6 +2109,9 @@
"FINALIZED": "Finalized",
"CANCELED": "Canceled"
},
"DESCRIPTION-STATUS-AVAILABLE-ACTION-TYPE": {
"EXPORT": "Export"
},
"PLAN-USER-ROLE": {
"OWNER": "Owner",
"VIEWER": "Viewer",
@ -2120,6 +2125,10 @@
"FINALISED": "Završeno",
"DRAFT": "Nacrt"
},
"PLAN-STATUS-AVAILABLE-ACTION-TYPE": {
"DEPOSIT": "Deposit",
"EXPORT": "Export"
},
"PLAN-VISIBILITY": {
"PUBLIC": "Objavljeno"
},

View File

@ -916,7 +916,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -958,7 +959,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -2107,6 +2109,9 @@
"FINALIZED": "Finalized",
"CANCELED": "Canceled"
},
"DESCRIPTION-STATUS-AVAILABLE-ACTION-TYPE": {
"EXPORT": "Export"
},
"PLAN-USER-ROLE": {
"OWNER": "Owner",
"VIEWER": "Viewer",
@ -2120,6 +2125,10 @@
"FINALISED": "Sfinalizowane",
"DRAFT": "Wersja robocza"
},
"PLAN-STATUS-AVAILABLE-ACTION-TYPE": {
"DEPOSIT": "Deposit",
"EXPORT": "Export"
},
"PLAN-VISIBILITY": {
"PUBLIC": "Opublikowane"
},

View File

@ -916,7 +916,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -958,7 +959,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -2107,6 +2109,9 @@
"FINALIZED": "Finalized",
"CANCELED": "Canceled"
},
"DESCRIPTION-STATUS-AVAILABLE-ACTION-TYPE": {
"EXPORT": "Export"
},
"PLAN-USER-ROLE": {
"OWNER": "Owner",
"VIEWER": "Viewer",
@ -2120,6 +2125,10 @@
"FINALISED": "Concluído",
"DRAFT": "Rascunho"
},
"PLAN-STATUS-AVAILABLE-ACTION-TYPE": {
"DEPOSIT": "Deposit",
"EXPORT": "Export"
},
"PLAN-VISIBILITY": {
"PUBLIC": "Publicado"
},

View File

@ -916,7 +916,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -958,7 +959,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -2107,6 +2109,9 @@
"FINALIZED": "Finalized",
"CANCELED": "Canceled"
},
"DESCRIPTION-STATUS-AVAILABLE-ACTION-TYPE": {
"EXPORT": "Export"
},
"PLAN-USER-ROLE": {
"OWNER": "Owner",
"VIEWER": "Viewer",
@ -2120,6 +2125,10 @@
"FINALISED": "Dokončené",
"DRAFT": "Návrh"
},
"PLAN-STATUS-AVAILABLE-ACTION-TYPE": {
"DEPOSIT": "Deposit",
"EXPORT": "Export"
},
"PLAN-VISIBILITY": {
"PUBLIC": "Publikované"
},

View File

@ -916,7 +916,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -958,7 +959,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -2107,6 +2109,9 @@
"FINALIZED": "Finalized",
"CANCELED": "Canceled"
},
"DESCRIPTION-STATUS-AVAILABLE-ACTION-TYPE": {
"EXPORT": "Export"
},
"PLAN-USER-ROLE": {
"OWNER": "Owner",
"VIEWER": "Viewer",
@ -2120,6 +2125,10 @@
"FINALISED": "Završeno",
"DRAFT": "Radna verzija"
},
"PLAN-STATUS-AVAILABLE-ACTION-TYPE": {
"DEPOSIT": "Deposit",
"EXPORT": "Export"
},
"PLAN-VISIBILITY": {
"PUBLIC": "Objavljeno"
},

View File

@ -916,7 +916,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -958,7 +959,8 @@
"ALLOW-AUTHENTICATED": "Allow authenticated users",
"ALLOW-ANONYMOUS": "Allow anonymous users",
"ROLES": "User roles",
"PLAN-ROLES": "User plan roles"
"PLAN-ROLES": "User plan roles",
"AVAILABLE-ACTIONS": "Available Actions"
},
"DEFAULT-VALUE": {
"NONE": "None"
@ -2107,6 +2109,9 @@
"FINALIZED": "Finalized",
"CANCELED": "Canceled"
},
"DESCRIPTION-STATUS-AVAILABLE-ACTION-TYPE": {
"EXPORT": "Export"
},
"PLAN-USER-ROLE": {
"OWNER": "Owner",
"VIEWER": "Viewer",
@ -2120,6 +2125,10 @@
"FINALISED": "Tamamlandı",
"DRAFT": "Taslak"
},
"PLAN-STATUS-AVAILABLE-ACTION-TYPE": {
"DEPOSIT": "Deposit",
"EXPORT": "Export"
},
"PLAN-VISIBILITY": {
"PUBLIC": "Yayınlandı"
},