From 1f609bc1e0e60a8cb5937c0624df8c28ffd4e08a Mon Sep 17 00:00:00 2001 From: Alicia de Dios Fuente <Alicia.DeDiosFuente@unige.ch> Date: Thu, 26 Mar 2020 22:20:00 +0100 Subject: [PATCH 1/3] chore: add default licence for org unit --- .../admin-orgunit-form.presentational.html | 18 +++++++++++++++++ .../admin-orgunit-form.presentational.ts | 20 +++++++++++++++++++ .../stores/admin-organizational-unit.state.ts | 1 + src/assets/i18n/de.json | 5 +++++ src/assets/i18n/en.json | 5 +++++ src/assets/i18n/fr.json | 5 +++++ 6 files changed, 54 insertions(+) diff --git a/src/app/features/admin/orgunit/components/presentationals/admin-orgunit-form/admin-orgunit-form.presentational.html b/src/app/features/admin/orgunit/components/presentationals/admin-orgunit-form/admin-orgunit-form.presentational.html index 620cca1c1..2a7456d09 100644 --- a/src/app/features/admin/orgunit/components/presentationals/admin-orgunit-form/admin-orgunit-form.presentational.html +++ b/src/app/features/admin/orgunit/components/presentationals/admin-orgunit-form/admin-orgunit-form.presentational.html @@ -175,6 +175,24 @@ > </dlcm-shared-searchable-multi-select> + <dlcm-shared-searchable-single-select *ngIf="getFormControl(formDefinition.defaultLicense) as fd" + solidifyValidation + aria-label="license" + [resourceNameSpace]="sharedLicenseActionNameSpace" + [state]="sharedLicenseState" + [formControl]="fd" + [required]="formValidationHelper.hasRequiredField(fd)" + [labelKey]="'title'" + [valueKey]="'resId'" + [urlKey]="'url'" + [labelCallback]="licenceCallback" + [placeholder]="'admin.organizationalUnit.form.license.title' | translate" + [isWithLink]="true" + [tooltipNavigateToTranslate]="'admin.organizationalUnit.form.license.navigateLinkPlaceholder' | translate" + (navigate)="navigateToLicense($event)" + > + </dlcm-shared-searchable-single-select> + <dlcm-shared-searchable-multi-select *ngIf="getFormControl(formDefinition.researchDomains) as fd" solidifyValidation aria-label="research domain" diff --git a/src/app/features/admin/orgunit/components/presentationals/admin-orgunit-form/admin-orgunit-form.presentational.ts b/src/app/features/admin/orgunit/components/presentationals/admin-orgunit-form/admin-orgunit-form.presentational.ts index b0546c18d..dc27ff9e2 100644 --- a/src/app/features/admin/orgunit/components/presentationals/admin-orgunit-form/admin-orgunit-form.presentational.ts +++ b/src/app/features/admin/orgunit/components/presentationals/admin-orgunit-form/admin-orgunit-form.presentational.ts @@ -20,6 +20,7 @@ import { ResearchDomain, Role, SubmissionPolicy, + License } from "@models"; import {SharedAbstractFormPresentational} from "@shared/components/presentationals/shared-abstract-form/shared-abstract-form.presentational"; import {PersonOrgUnitRoleMode} from "@shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational"; @@ -35,6 +36,7 @@ import {SharedFundingAgencyState} from "@shared/stores/funding-agency/shared-fun import {sharedInstitutionActionNameSpace} from "@shared/stores/institution/shared-institution.action"; import {SharedInstitutionState} from "@shared/stores/institution/shared-institution.state"; import {SharedResearchDomainState} from "@shared/stores/research-domain/shared-research-domain.state"; +import {sharedLicenseActionNameSpace} from "@shared/stores/license/shared-license.action"; import {RegexpUtil} from "@shared/utils/regexp.util"; import _ from "lodash"; import { @@ -44,6 +46,7 @@ import { SolidifyValidator, urlSeparator, } from "solidify-frontend"; +import {SharedLicenseState} from "@shared/stores/license/shared-license.state"; @Component({ selector: "dlcm-admin-orgunit-form", @@ -93,8 +96,13 @@ export class AdminOrgunitFormPresentational extends SharedAbstractFormPresentati sharedResearchDomainActionNameSpace: ResourceNameSpace = sharedResearchDomainActionNameSpace; sharedResearchDomainState: typeof SharedResearchDomainState = SharedResearchDomainState; + sharedLicenseActionNameSpace: ResourceNameSpace = sharedLicenseActionNameSpace; + sharedLicenseState: typeof SharedLicenseState = SharedLicenseState; + readonly TIME_BEFORE_DISPLAY_TOOLTIP: number = environment.timeBeforeDisplayTooltipOnInput; + licenceCallback: (value: License) => string = (value: License) => value.openLicenseId + " (" + value.title + ")"; + get personOrgUnitRoleMode(): typeof PersonOrgUnitRoleMode { return PersonOrgUnitRoleMode; } @@ -123,6 +131,7 @@ export class AdminOrgunitFormPresentational extends SharedAbstractFormPresentati [this.formDefinition.institutions]: ["", [SolidifyValidator]], [this.formDefinition.researchDomains]: ["", [SolidifyValidator]], [this.formDefinition.keywords]: [[], [SolidifyValidator]], + [this.formDefinition.defaultLicense]: ["", [SolidifyValidator]], }); } @@ -144,6 +153,7 @@ export class AdminOrgunitFormPresentational extends SharedAbstractFormPresentati [this.formDefinition.institutions]: [_.map(this.selectedInstitutions, LocalModelAttributeEnum.resId), [SolidifyValidator]], [this.formDefinition.researchDomains]: [_.map(organizationalUnit.researchDomains, LocalModelAttributeEnum.resId), [SolidifyValidator]], [this.formDefinition.keywords]: [[...organizationalUnit.keywords], [SolidifyValidator]], + [this.formDefinition.defaultLicense]: [(organizationalUnit.defaultLicense as License).resId, [SolidifyValidator]], }); } @@ -183,6 +193,11 @@ export class AdminOrgunitFormPresentational extends SharedAbstractFormPresentati organizationalUnit.researchDomains.push({resId: resId}); }); } + if (this.form.get(this.formDefinition.defaultLicense).value === "") { + organizationalUnit.defaultLicense = null; + } else if (this.form.get(this.formDefinition.defaultLicense).value !== "") { + organizationalUnit.defaultLicense = {resId: organizationalUnit[this.formDefinition.defaultLicense]}; + } return organizationalUnit; } @@ -217,6 +232,10 @@ export class AdminOrgunitFormPresentational extends SharedAbstractFormPresentati navigateToResearchDomain(researchDomain: ResearchDomain): void { this.navigate([RoutesEnum.adminResearchDomain]); } + + navigateToLicense(licenseId: string): void { + this.navigate([RoutesEnum.adminLicenseDetail, licenseId]); + } } class FormComponentFormDefinition extends BaseFormDefinition { @@ -236,4 +255,5 @@ class FormComponentFormDefinition extends BaseFormDefinition { @PropertyName() institutions: string; @PropertyName() researchDomains: string; @PropertyName() keywords: string; + @PropertyName() defaultLicense: string; } diff --git a/src/app/features/admin/orgunit/stores/admin-organizational-unit.state.ts b/src/app/features/admin/orgunit/stores/admin-organizational-unit.state.ts index f67e3b4c2..575812b28 100644 --- a/src/app/features/admin/orgunit/stores/admin-organizational-unit.state.ts +++ b/src/app/features/admin/orgunit/stores/admin-organizational-unit.state.ts @@ -72,6 +72,7 @@ import { TRANSLATE, urlSeparator, } from "solidify-frontend"; +import {SharedLicenseAction} from "@shared/stores/license/shared-license.action"; export interface AdminOrganizationalUnitStateModel extends ResourceStateModel<OrganizationalUnit> { admin_organizationalUnit_submissionPolicy: AdminOrganizationalUnitSubmissionPolicyStateModel; diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 6754ec220..8ef724afb 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -489,6 +489,11 @@ "placeholder": "Click here to add an institution", "title": "Institutions" }, + "license": { + "navigateLinkPlaceholder": "See License details", + "placeholder": "Click here to add a license", + "title": "License" + }, "link": { "seeArchives": "See archives", "seeDeposits": "See deposits" diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 6754ec220..8ef724afb 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -489,6 +489,11 @@ "placeholder": "Click here to add an institution", "title": "Institutions" }, + "license": { + "navigateLinkPlaceholder": "See License details", + "placeholder": "Click here to add a license", + "title": "License" + }, "link": { "seeArchives": "See archives", "seeDeposits": "See deposits" diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index 1aafc27fa..af5c6615a 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -489,6 +489,11 @@ "placeholder": "Cliquer ici pour ajouter des institutions", "title": "Institutions" }, + "license": { + "navigateLinkPlaceholder": "Voir le détail de la licence", + "placeholder": "Cliquer ici pour ajouter une licence", + "title": "Licence" + }, "link": { "seeArchives": "Voir les archives", "seeDeposits": "Voir les dépôts" -- GitLab From 32423ed7c8de106c0005e0c006335876a0a610f9 Mon Sep 17 00:00:00 2001 From: Alicia de Dios Fuente <Alicia.DeDiosFuente@unige.ch> Date: Fri, 27 Mar 2020 15:23:39 +0100 Subject: [PATCH 2/3] chore: added org unit default licence when creating a new deposit --- .../presentationals/deposit-form/deposit-form.presentational.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/features/deposit/components/presentationals/deposit-form/deposit-form.presentational.ts b/src/app/features/deposit/components/presentationals/deposit-form/deposit-form.presentational.ts index 77f20132f..8f3cf5622 100644 --- a/src/app/features/deposit/components/presentationals/deposit-form/deposit-form.presentational.ts +++ b/src/app/features/deposit/components/presentationals/deposit-form/deposit-form.presentational.ts @@ -176,7 +176,7 @@ export class DepositFormPresentational extends SharedAbstractFormPresentational< [this.formDefinition.collectionEnd]: [""], [this.formDefinition.access]: [AccessEnum.PUBLIC], [this.formDefinition.hasEmbargo]: [false], - [this.formDefinition.licenseId]: ["", [SolidifyValidator]], + [this.formDefinition.licenseId]: [(orgUnit.defaultLicense as License).resId, [SolidifyValidator]], [this.formDefinition.submissionPolicyId]: ["", [Validators.required, SolidifyValidator]], [this.formDefinition.preservationPolicyId]: ["", [Validators.required, SolidifyValidator]], [this.formDefinition.authors]: ["", [Validators.required, SolidifyValidator]], -- GitLab From 398ef325e9280974e07dce9528f2f6007554e4b7 Mon Sep 17 00:00:00 2001 From: Florent POITTEVIN <poittevin.florent@gmail.com> Date: Tue, 31 Mar 2020 17:01:03 +0200 Subject: [PATCH 3/3] refacto: org unit default license ajustment --- .../admin-orgunit-form.presentational.ts | 12 ++++++------ .../stores/admin-organizational-unit.state.ts | 1 - .../deposit-form/deposit-form.presentational.ts | 2 +- src/app/models/index.ts | 1 + 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/app/features/admin/orgunit/components/presentationals/admin-orgunit-form/admin-orgunit-form.presentational.ts b/src/app/features/admin/orgunit/components/presentationals/admin-orgunit-form/admin-orgunit-form.presentational.ts index dc27ff9e2..cc572a997 100644 --- a/src/app/features/admin/orgunit/components/presentationals/admin-orgunit-form/admin-orgunit-form.presentational.ts +++ b/src/app/features/admin/orgunit/components/presentationals/admin-orgunit-form/admin-orgunit-form.presentational.ts @@ -15,12 +15,12 @@ import { DisseminationPolicy, FundingAgency, Institution, + License, OrganizationalUnit, PreservationPolicy, ResearchDomain, Role, SubmissionPolicy, - License } from "@models"; import {SharedAbstractFormPresentational} from "@shared/components/presentationals/shared-abstract-form/shared-abstract-form.presentational"; import {PersonOrgUnitRoleMode} from "@shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational"; @@ -35,8 +35,9 @@ import {sharedFundingAgencyActionNameSpace} from "@shared/stores/funding-agency/ import {SharedFundingAgencyState} from "@shared/stores/funding-agency/shared-funding-agency.state"; import {sharedInstitutionActionNameSpace} from "@shared/stores/institution/shared-institution.action"; import {SharedInstitutionState} from "@shared/stores/institution/shared-institution.state"; -import {SharedResearchDomainState} from "@shared/stores/research-domain/shared-research-domain.state"; import {sharedLicenseActionNameSpace} from "@shared/stores/license/shared-license.action"; +import {SharedLicenseState} from "@shared/stores/license/shared-license.state"; +import {SharedResearchDomainState} from "@shared/stores/research-domain/shared-research-domain.state"; import {RegexpUtil} from "@shared/utils/regexp.util"; import _ from "lodash"; import { @@ -46,7 +47,6 @@ import { SolidifyValidator, urlSeparator, } from "solidify-frontend"; -import {SharedLicenseState} from "@shared/stores/license/shared-license.state"; @Component({ selector: "dlcm-admin-orgunit-form", @@ -153,7 +153,7 @@ export class AdminOrgunitFormPresentational extends SharedAbstractFormPresentati [this.formDefinition.institutions]: [_.map(this.selectedInstitutions, LocalModelAttributeEnum.resId), [SolidifyValidator]], [this.formDefinition.researchDomains]: [_.map(organizationalUnit.researchDomains, LocalModelAttributeEnum.resId), [SolidifyValidator]], [this.formDefinition.keywords]: [[...organizationalUnit.keywords], [SolidifyValidator]], - [this.formDefinition.defaultLicense]: [(organizationalUnit.defaultLicense as License).resId, [SolidifyValidator]], + [this.formDefinition.defaultLicense]: [organizationalUnit.defaultLicense.resId, [SolidifyValidator]], }); } @@ -195,8 +195,8 @@ export class AdminOrgunitFormPresentational extends SharedAbstractFormPresentati } if (this.form.get(this.formDefinition.defaultLicense).value === "") { organizationalUnit.defaultLicense = null; - } else if (this.form.get(this.formDefinition.defaultLicense).value !== "") { - organizationalUnit.defaultLicense = {resId: organizationalUnit[this.formDefinition.defaultLicense]}; + } else { + organizationalUnit.defaultLicense = {resId: organizationalUnit.defaultLicense}; } return organizationalUnit; } diff --git a/src/app/features/admin/orgunit/stores/admin-organizational-unit.state.ts b/src/app/features/admin/orgunit/stores/admin-organizational-unit.state.ts index 575812b28..f67e3b4c2 100644 --- a/src/app/features/admin/orgunit/stores/admin-organizational-unit.state.ts +++ b/src/app/features/admin/orgunit/stores/admin-organizational-unit.state.ts @@ -72,7 +72,6 @@ import { TRANSLATE, urlSeparator, } from "solidify-frontend"; -import {SharedLicenseAction} from "@shared/stores/license/shared-license.action"; export interface AdminOrganizationalUnitStateModel extends ResourceStateModel<OrganizationalUnit> { admin_organizationalUnit_submissionPolicy: AdminOrganizationalUnitSubmissionPolicyStateModel; diff --git a/src/app/features/deposit/components/presentationals/deposit-form/deposit-form.presentational.ts b/src/app/features/deposit/components/presentationals/deposit-form/deposit-form.presentational.ts index 8f3cf5622..f300d9086 100644 --- a/src/app/features/deposit/components/presentationals/deposit-form/deposit-form.presentational.ts +++ b/src/app/features/deposit/components/presentationals/deposit-form/deposit-form.presentational.ts @@ -176,7 +176,7 @@ export class DepositFormPresentational extends SharedAbstractFormPresentational< [this.formDefinition.collectionEnd]: [""], [this.formDefinition.access]: [AccessEnum.PUBLIC], [this.formDefinition.hasEmbargo]: [false], - [this.formDefinition.licenseId]: [(orgUnit.defaultLicense as License).resId, [SolidifyValidator]], + [this.formDefinition.licenseId]: [orgUnit.defaultLicense.resId, [SolidifyValidator]], [this.formDefinition.submissionPolicyId]: ["", [Validators.required, SolidifyValidator]], [this.formDefinition.preservationPolicyId]: ["", [Validators.required, SolidifyValidator]], [this.formDefinition.authors]: ["", [Validators.required, SolidifyValidator]], diff --git a/src/app/models/index.ts b/src/app/models/index.ts index 0b52eb4ea..0320c3dba 100644 --- a/src/app/models/index.ts +++ b/src/app/models/index.ts @@ -193,6 +193,7 @@ export interface OrganizationalUnit extends OrganizationalUnitPartial { institutions?: Institution[]; researchDomains?: ResearchDomain[]; keywords?: string[]; + defaultLicense: License; } export interface Page extends PagePartial { -- GitLab