Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring

This commit is contained in:
Sofia Papacharalampous 2024-06-04 18:08:28 +03:00
commit 035c50872b
96 changed files with 253 additions and 26725 deletions

View File

@ -255,4 +255,46 @@ public class ErrorThesaurusProperties {
public void setDmpNewVersionAlreadyCreatedDraft(ErrorDescription dmpNewVersionAlreadyCreatedDraft) {
this.dmpNewVersionAlreadyCreatedDraft = dmpNewVersionAlreadyCreatedDraft;
}
private ErrorDescription descriptionTemplateInactiveUser;
public ErrorDescription getDescriptionTemplateInactiveUser() {
return descriptionTemplateInactiveUser;
}
public void setDescriptionTemplateInactiveUser(ErrorDescription descriptionTemplateInactiveUser) {
this.descriptionTemplateInactiveUser = descriptionTemplateInactiveUser;
}
private ErrorDescription descriptionTemplateMissingUserContactInfo;
public ErrorDescription getDescriptionTemplateMissingUserContactInfo() {
return descriptionTemplateMissingUserContactInfo;
}
public void setDescriptionTemplateMissingUserContactInfo(ErrorDescription descriptionTemplateMissingUserContactInfo) {
this.descriptionTemplateMissingUserContactInfo = descriptionTemplateMissingUserContactInfo;
}
private ErrorDescription dmpInactiveUser;
public ErrorDescription getDmpInactiveUser() {
return dmpInactiveUser;
}
public void setDmpInactiveUser(ErrorDescription dmpInactiveUser) {
this.dmpInactiveUser = dmpInactiveUser;
}
private ErrorDescription dmpMissingUserContactInfo;
public ErrorDescription getDmpMissingUserContactInfo() {
return dmpMissingUserContactInfo;
}
public void setDmpMissingUserContactInfo(ErrorDescription dmpMissingUserContactInfo) {
this.dmpMissingUserContactInfo = dmpMissingUserContactInfo;
}
}

View File

@ -40,8 +40,8 @@ public class UserContactInfoCensor extends BaseCensor {
return;
this.authService.authorizeAtLeastOneForce(userId != null ? List.of(new OwnedResource(userId)) : null, Permission.BrowseUser);
FieldSet descriptionReferenceFields = fields.extractPrefixed(this.asIndexerPrefix(UserContactInfo._user));
this.censorFactory.censor(DescriptionReferenceCensor.class).censor(descriptionReferenceFields, userId);
FieldSet userFields = fields.extractPrefixed(this.asIndexerPrefix(UserContactInfo._user));
this.censorFactory.censor(UserCensor.class).censor(userFields, userId);
}
}

View File

@ -40,8 +40,8 @@ public class UserRoleCensor extends BaseCensor {
return;
this.authService.authorizeAtLeastOneForce(userId != null ? List.of(new OwnedResource(userId)) : null, Permission.BrowseUser);
FieldSet descriptionReferenceFields = fields.extractPrefixed(this.asIndexerPrefix(UserRole._user));
this.censorFactory.censor(DescriptionReferenceCensor.class).censor(descriptionReferenceFields, userId);
FieldSet userFields = fields.extractPrefixed(this.asIndexerPrefix(UserRole._user));
this.censorFactory.censor(UserCensor.class).censor(userFields, userId);
}
}

View File

@ -8,6 +8,7 @@ import gr.cite.tools.data.builder.BuilderFactory;
import gr.cite.tools.data.query.Ordering;
import gr.cite.tools.data.query.QueryFactory;
import gr.cite.tools.exception.MyNotFoundException;
import gr.cite.tools.exception.MyValidationException;
import gr.cite.tools.fieldset.BaseFieldSet;
import gr.cite.tools.fieldset.FieldSet;
import gr.cite.tools.logging.LoggerService;
@ -347,6 +348,8 @@ public class DepositServiceImpl implements DepositService {
UserContactInfoQuery query = this.queryFactory.query(UserContactInfoQuery.class).disableTracking().userIds(user.getId());
query.setOrder(new Ordering().addAscending(UserContactInfo._ordinal));
if (query.count() == 0) return;
List<ContactPair> contactPairs = new ArrayList<>();
contactPairs.add(new ContactPair(ContactInfoType.Email, query.first().getValue()));
NotificationContactData contactData = new NotificationContactData(contactPairs, null, null);

View File

@ -334,9 +334,8 @@ public class DescriptionServiceImpl implements DescriptionService {
for (DmpUserEntity dmpUser : existingUsers) {
if (!dmpUser.getUserId().equals(this.userScope.getUserIdSafe())){
UserEntity user = this.queryFactory.query(UserQuery.class).disableTracking().ids(dmpUser.getUserId()).first();
if (user != null){
this.createDescriptionNotificationEvent(description, user);
}
if (user == null || user.getIsActive().equals(IsActive.Inactive)) throw new MyValidationException(this.errors.getDmpInactiveUser().getCode(), this.errors.getDmpInactiveUser().getMessage());
this.createDescriptionNotificationEvent(description, user);
}
}
}
@ -392,6 +391,8 @@ public class DescriptionServiceImpl implements DescriptionService {
UserContactInfoQuery query = this.queryFactory.query(UserContactInfoQuery.class).disableTracking().userIds(user.getId());
query.setOrder(new Ordering().addAscending(UserContactInfo._ordinal));
if (query.count() == 0) throw new MyValidationException(this.errors.getDmpMissingUserContactInfo().getCode(), this.errors.getDmpMissingUserContactInfo().getMessage());
List<ContactPair> contactPairs = new ArrayList<>();
contactPairs.add(new ContactPair(ContactInfoType.Email, query.first().getValue()));
NotificationContactData contactData = new NotificationContactData(contactPairs, null, null);

View File

@ -245,7 +245,11 @@ public class DescriptionTemplateServiceImpl implements DescriptionTemplateServic
data.setRole(user.getRole());
this.entityManager.persist(data);
if (!this.userScope.getUserId().equals(user.getUserId())) {
this.sendDescriptionTemplateInvitationEvent(data);
DescriptionTemplateEntity descriptionTemplate = this.queryFactory.query(DescriptionTemplateQuery.class).disableTracking().isActive(IsActive.Active).ids(data.getDescriptionTemplateId()).first();
if (descriptionTemplate == null){
throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{data.getDescriptionTemplateId(), DescriptionTemplate.class.getSimpleName()}, LocaleContextHolder.getLocale()));
}
this.sendDescriptionTemplateInvitationEvent(data, descriptionTemplate);
}
}
updatedCreatedIds.add(data.getUserId());
@ -255,21 +259,21 @@ public class DescriptionTemplateServiceImpl implements DescriptionTemplateServic
this.deleterFactory.deleter(UserDescriptionTemplateDeleter.class).delete(toDelete);
}
private void sendDescriptionTemplateInvitationEvent(UserDescriptionTemplateEntity userDescriptionTemplate) throws InvalidApplicationException {
private void sendDescriptionTemplateInvitationEvent(UserDescriptionTemplateEntity userDescriptionTemplate, DescriptionTemplateEntity descriptionTemplate) throws InvalidApplicationException {
NotifyIntegrationEvent event = new NotifyIntegrationEvent();
UserEntity user = this.entityManager.find(UserEntity.class, userDescriptionTemplate.getUserId(), true);
if (user == null){
throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{userDescriptionTemplate.getUserId(), User.class.getSimpleName()}, LocaleContextHolder.getLocale()));
}
DescriptionTemplateEntity descriptionTemplate = this.queryFactory.query(DescriptionTemplateQuery.class).disableTracking().isActive(IsActive.Active).ids(userDescriptionTemplate.getDescriptionTemplateId()).first();
if (descriptionTemplate == null){
throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{userDescriptionTemplate.getDescriptionTemplateId(), DescriptionTemplate.class.getSimpleName()}, LocaleContextHolder.getLocale()));
}
if (user.getIsActive().equals(IsActive.Inactive)) throw new MyValidationException(this.errors.getDescriptionTemplateInactiveUser().getCode(), this.errors.getDescriptionTemplateInactiveUser().getMessage());
event.setUserId(user.getId());
UserContactInfoQuery query = this.queryFactory.query(UserContactInfoQuery.class).disableTracking().userIds(user.getId());
query.setOrder(new Ordering().addAscending(UserContactInfo._ordinal));
if (query.count() == 0) throw new MyValidationException(this.errors.getDescriptionTemplateMissingUserContactInfo().getCode(), this.errors.getDescriptionTemplateMissingUserContactInfo().getMessage());
List<ContactPair> contactPairs = new ArrayList<>();
contactPairs.add(new ContactPair(ContactInfoType.Email, query.first().getValue()));
NotificationContactData contactData = new NotificationContactData(contactPairs, null, null);

View File

@ -304,9 +304,8 @@ public class DmpServiceImpl implements DmpService {
for (DmpUserEntity dmpUser : existingUsers) {
if (!dmpUser.getUserId().equals(this.userScope.getUserIdSafe())){
UserEntity user = this.queryFactory.query(UserQuery.class).disableTracking().ids(dmpUser.getUserId()).first();
if (user != null){
this.createDmpNotificationEvent(dmp, user);
}
if (user == null || user.getIsActive().equals(IsActive.Inactive)) throw new MyValidationException(this.errors.getDmpInactiveUser().getCode(), this.errors.getDmpInactiveUser().getMessage());;
this.createDmpNotificationEvent(dmp, user);
}
}
}
@ -317,6 +316,8 @@ public class DmpServiceImpl implements DmpService {
UserContactInfoQuery query = this.queryFactory.query(UserContactInfoQuery.class).disableTracking().userIds(user.getId());
query.setOrder(new Ordering().addAscending(UserContactInfo._ordinal));
if (query.count() == 0) throw new MyValidationException(this.errors.getDmpMissingUserContactInfo().getCode(), this.errors.getDmpMissingUserContactInfo().getMessage());
List<ContactPair> contactPairs = new ArrayList<>();
contactPairs.add(new ContactPair(ContactInfoType.Email, query.first().getValue()));
NotificationContactData contactData = new NotificationContactData(contactPairs, null, null);
@ -1456,12 +1457,15 @@ public class DmpServiceImpl implements DmpService {
private void sendDmpInvitationExistingUser(UUID userId, DmpEntity dmp, DmpUserRole role) throws InvalidApplicationException {
UserEntity recipient = this.queryFactory.query(UserQuery.class).disableTracking().ids(userId).isActive(IsActive.Active).first();
if (recipient == null) throw new MyValidationException(this.errors.getDmpInactiveUser().getCode(), this.errors.getDmpInactiveUser().getMessage());
String email = this.queryFactory.query(UserContactInfoQuery.class).disableTracking().userIds(recipient.getId()).first().getValue();
this.createDmpInvitationExistingUserEvent(recipient, dmp, role, email);
}
private void createDmpInvitationExistingUserEvent(UserEntity recipient, DmpEntity dmp, DmpUserRole role, String email) throws InvalidApplicationException {
if (email == null) throw new MyValidationException(this.errors.getDmpMissingUserContactInfo().getCode(), this.errors.getDmpMissingUserContactInfo().getMessage());
NotifyIntegrationEvent event = new NotifyIntegrationEvent();
event.setUserId(recipient.getId());

View File

@ -82,4 +82,16 @@ error-thesaurus:
message: Tenant code exists
dmp-new-version-already-created-draft:
code: 131
message: Already created draft for this dmp
message: Already created draft for this dmp
description-template-inactive-user:
code: 132
message: user dont exist
description-template-missing-user-contact-info:
code: 133
message: missing contact info for this user
dmp-inactive-user:
code: 134
message: user dont exist
dmp-missing-user-contact-info:
code: 135
message: missing contact info for this user

View File

@ -1,458 +0,0 @@
[
{
"category": "rda",
"name": "rda.dataset.data_quality_assurance"
},
{
"category": "rda",
"name": "rda.dataset.distribution.access_url"
},
{
"category": "rda",
"name": "rda.dataset.distribution.available_until"
},
{
"category": "rda",
"name": "rda.dataset.distribution.byte_size"
},
{
"category": "rda",
"name": "rda.dataset.distribution.data_access"
},
{
"category": "rda",
"name": "rda.dataset.distribution.description"
},
{
"category": "rda",
"name": "rda.dataset.distribution.download_url"
},
{
"category": "rda",
"name": "rda.dataset.distribution.format"
},
{
"category": "rda",
"name": "rda.dataset.distribution.host.availability"
},
{
"category": "rda",
"name": "rda.dataset.distribution.host.backup_frequency"
},
{
"category": "rda",
"name": "rda.dataset.distribution.host.backup_type"
},
{
"category": "rda",
"name": "rda.dataset.distribution.host.certified_with"
},
{
"category": "rda",
"name": "rda.dataset.distribution.host.description"
},
{
"category": "rda",
"name": "rda.dataset.distribution.host.geo_location"
},
{
"category": "rda",
"name": "rda.dataset.distribution.host.pid_system"
},
{
"category": "rda",
"name": "rda.dataset.distribution.host.storage_type"
},
{
"category": "rda",
"name": "rda.dataset.distribution.host.supports_versioning"
},
{
"category": "rda",
"name": "rda.dataset.distribution.host.title"
},
{
"category": "rda",
"name": "rda.dataset.distribution.host.url"
},
{
"category": "rda",
"name": "rda.dataset.distribution.license.license_ref"
},
{
"category": "rda",
"name": "rda.dataset.distribution.license.start_date"
},
{
"category": "rda",
"name": "rda.dataset.distribution.title"
},
{
"category": "rda",
"name": "rda.dataset.keyword"
},
{
"category": "rda",
"name": "rda.dataset.language"
},
{
"category": "rda",
"name": "rda.dataset.metadata.description"
},
{
"category": "rda",
"name": "rda.dataset.metadata.language"
},
{
"category": "rda",
"name": "rda.dataset.metadata.metadata_standard_id"
},
{
"category": "rda",
"name": "rda.dataset.metadata.metadata_standard_id.identifier"
},
{
"category": "rda",
"name": "rda.dataset.metadata.metadata_standard_id.type"
},
{
"category": "rda",
"name": "rda.dataset.personal_data"
},
{
"category": "rda",
"name": "rda.dataset.preservation_statement"
},
{
"category": "rda",
"name": "rda.dataset.security_and_privacy"
},
{
"category": "rda",
"name": "rda.dataset.security_and_privacy.description"
},
{
"category": "rda",
"name": "rda.dataset.security_and_privacy.title"
},
{
"category": "rda",
"name": "rda.dataset.sensitive_data"
},
{
"category": "rda",
"name": "rda.dataset.technical_resource.description"
},
{
"category": "rda",
"name": "rda.dataset.technical_resource.name"
},
{
"category": "rda",
"name": "rda.dataset.title"
},
{
"category": "rda",
"name": "rda.dataset.type"
},
{
"category": "rda",
"name": "rda.dataset.issued"
},
{
"category": "rda",
"name": "rda.dataset.dataset_id"
},
{
"category": "rda",
"name": "rda.dataset.dataset_id.identifier"
},
{
"category": "rda",
"name": "rda.dataset.dataset_id.type"
},
{
"category": "rda",
"name": "rda.dataset.description"
},
{
"category": "rda",
"name": "rda.dmp.contact"
},
{
"category": "rda",
"name": "rda.dmp.contact.contact_id.identifier"
},
{
"category": "rda",
"name": "rda.dmp.contact.contact_id.type"
},
{
"category": "rda",
"name": "rda.dmp.contact.mbox"
},
{
"category": "rda",
"name": "rda.dmp.contact.name"
},
{
"category": "rda",
"name": "rda.dmp.contributor"
},
{
"category": "rda",
"name": "rda.dmp.contributor.contributor_id.identifier"
},
{
"category": "rda",
"name": "rda.dmp.contributor.contributor_id.type"
},
{
"category": "rda",
"name": "rda.dmp.contributor.mbox"
},
{
"category": "rda",
"name": "rda.dmp.contributor.name"
},
{
"category": "rda",
"name": "rda.dmp.contributor.role"
},
{
"category": "rda",
"name": "rda.dmp.cost"
},
{
"category": "rda",
"name": "rda.dmp.cost.currency_code"
},
{
"category": "rda",
"name": "rda.dmp.cost.description"
},
{
"category": "rda",
"name": "rda.dmp.cost.title"
},
{
"category": "rda",
"name": "rda.dmp.cost.value"
},
{
"category": "rda",
"name": "rda.dmp.created"
},
{
"category": "rda",
"name": "rda.dmp.description"
},
{
"category": "rda",
"name": "rda.dmp.dmp_id"
},
{
"category": "rda",
"name": "rda.dmp.dmp_id.identifier"
},
{
"category": "rda",
"name": "rda.dmp.dmp_id.type"
},
{
"category": "rda",
"name": "rda.dmp.ethical_issues_description"
},
{
"category": "rda",
"name": "rda.dmp.ethical_issues_exist"
},
{
"category": "rda",
"name": "rda.dmp.ethical_issues_report"
},
{
"category": "rda",
"name": "rda.dmp.language"
},
{
"category": "rda",
"name": "rda.dmp.modified"
},
{
"category": "rda",
"name": "rda.dmp.project"
},
{
"category": "rda",
"name": "rda.dmp.project.description"
},
{
"category": "rda",
"name": "rda.dmp.project.end"
},
{
"category": "rda",
"name": "rda.dmp.project.funding"
},
{
"category": "rda",
"name": "rda.dmp.project.funding.funder_id.identifier"
},
{
"category": "rda",
"name": "rda.dmp.project.funding.funder_id.type"
},
{
"category": "rda",
"name": "rda.dmp.project.funding.funding_status"
},
{
"category": "rda",
"name": "rda.dmp.project.funding.grant_id.identifier"
},
{
"category": "rda",
"name": "rda.dmp.project.funding.grant_id.type"
},
{
"category": "rda",
"name": "rda.dmp.project.start"
},
{
"category": "rda",
"name": "rda.dmp.dmp.project.title"
},
{
"category": "rda",
"name": "rda.dmp.title"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isCitedBy"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.cites"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isSupplementTo"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isSupplementedBy"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isContinuedBy"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.continues"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isDescribedBy"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.describes"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.hasMetadata"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isMetadataFor"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isNewVersionOf"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isPreviousVersionOf"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isPartOf"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.hasPart"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isReferencedBy"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.references"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isDocumentedBy"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.documents"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isCompiledBy"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.compiles"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isVariantFormOf"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isOriginalFormof"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isIdenticalTo"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isAlternateIdentifier"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isReviewedBy"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.reviews"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isDerivedFrom"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isSourceOf"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.requires"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isRequiredBy"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.isObsoletedBy"
},
{
"category": "zenodo",
"name": "zenodo.related_identifiers.obsoletes"
}
]

View File

@ -1,3 +0,0 @@
endpoints:
prometheus:
sensitive: false

View File

@ -1,25 +0,0 @@
management:
endpoint:
metrics:
enabled: true
prometheus:
enabled: true
health:
show-details: always
metrics:
enable:
http: true
jvm: true
jdbc: true
tomcat: true
logback: true
hikaricp: true
cache: true
export:
prometheus:
enabled: true
endpoints:
web:
base-path: /
exposure:
include: prometheus,health,metrics

View File

@ -1,36 +0,0 @@
spring:
jackson:
default-property-inclusion: non_null
deserialization:
fail-on-unknown-properties: false
serialization:
write-dates-as-timestamps: false
config:
import: optional:classpath:config/app.env[.properties], optional:file:../config/app.env[.properties],
optional:classpath:config/db.yml[.yml], optional:classpath:config/db-${spring.profiles.active}.yml[.yml], optional:file:../config/db-${spring.profiles.active}.yml[.yml],
optional:classpath:config/permissions.yml[.yml], optional:classpath:config/permissions-${spring.profiles.active}.yml[.yml], optional:file:../config/permissions-${spring.profiles.active}.yml[.yml],
optional:classpath:config/security.yml[.yml], optional:classpath:config/security-${spring.profiles.active}.yml[.yml], optional:file:../config/security-${spring.profiles.active}.yml[.yml],
optional:classpath:config/server.yml[.yml], optional:classpath:config/server-${spring.profiles.active}.yml[.yml], optional:file:../config/server-${spring.profiles.active}.yml[.yml],
optional:classpath:config/keycloak.yml[.yml], optional:classpath:config/keycloak-${spring.profiles.active}.yml[.yml], optional:file:../config/keycloak-${spring.profiles.active}.yml[.yml],
optional:classpath:config/logging.yml[.yml], optional:classpath:config/logging-${spring.profiles.active}.yml[.yml], optional:file:../config/logging-${spring.profiles.active}.yml[.yml],
optional:classpath:config/cache.yml[.yml], optional:classpath:config/cache-${spring.profiles.active}.yml[.yml], optional:file:../config/cache-${spring.profiles.active}.yml[.yml],
optional:classpath:config/elasticsearch.yml[.yml], optional:classpath:config/elasticsearch-${spring.profiles.active}.yml[.yml], optional:file:../config/elasticsearch-${spring.profiles.active}.yml[.yml],
optional:classpath:config/idpclaims.yml[.yml], optional:classpath:config/idpclaims-${spring.profiles.active}.yml[.yml], optional:file:../config/idpclaims-${spring.profiles.active}.yml[.yml],
optional:classpath:config/external.yml[.yml], optional:classpath:config/external-${spring.profiles.active}.yml[.yml], optional:file:../config/external-${spring.profiles.active}.yml[.yml],
optional:classpath:config/cors.yml[.yml], optional:classpath:config/cors-${spring.profiles.active}.yml[.yml], optional:file:../config/cors-${spring.profiles.active}.yml[.yml],
optional:classpath:config/swagger.yml[.yml], optional:classpath:config/swagger-${spring.profiles.active}.yml[.yml], optional:file:../config/swagger-${spring.profiles.active}.yml[.yml],
optional:classpath:config/deposit.yml[.yml], optional:classpath:config/deposit-${spring.profiles.active}.yml[.yml], optional:file:../config/deposit-${spring.profiles.active}.yml[.yml],
optional:classpath:config/errors.yml[.yml], optional:classpath:config/errors-${spring.profiles.active}.yml[.yml], optional:file:../config/errors-${spring.profiles.active}.yml[.yml],
optional:classpath:config/storage.yml[.yml], optional:classpath:config/storage-${spring.profiles.active}.yml[.yml], optional:file:../config/storage-${spring.profiles.active}.yml[.yml],
optional:classpath:config/tenant.yml[.yml], optional:classpath:config/tenant-${spring.profiles.active}.yml[.yml], optional:file:../config/tenant-${spring.profiles.active}.yml[.yml],
optional:classpath:config/queue.yml[.yml], optional:classpath:config/queue-${spring.profiles.active}.yml[.yml], optional:file:../config/queue-${spring.profiles.active}.yml[.yml],
optional:classpath:config/notification.yml[.yml], optional:classpath:config/notification-${spring.profiles.active}.yml[.yml], optional:file:../config/notification-${spring.profiles.active}.yml[.yml],
optional:classpath:config/locale.yml[.yml], optional:classpath:config/locale-${spring.profiles.active}.yml[.yml], optional:file:../config/locale-${spring.profiles.active}.yml[.yml],
optional:classpath:config/public-api.yml[.yml], optional:classpath:config/public-api-${spring.profiles.active}.yml[.yml], optional:file:../config/public-api-${spring.profiles.active}.yml[.yml],
optional:classpath:config/dashboard.yml[.yml], optional:classpath:config/dashboard-${spring.profiles.active}.yml[.yml], optional:file:../config/dashboard-${spring.profiles.active}.yml[.yml],
optional:classpath:config/transformer.yml[.yml], optional:classpath:config/transformer-${spring.profiles.active}.yml[.yml], optional:file:../config/transformer-${spring.profiles.active}.yml[.yml],
optional:classpath:config/authorization.yml[.yml], optional:classpath:config/authorization-${spring.profiles.active}.yml[.yml], optional:file:../config/authorization-${spring.profiles.active}.yml[.yml],
optional:classpath:config/metrics.yml[.yml], optional:classpath:config/metrics-${spring.profiles.active}.yml[.yml], optional:file:../config/metrics-${spring.profiles.active}.yml[.yml],
optional:classpath:config/lock.yml[.yml], optional:classpath:config/lock-${spring.profiles.active}.yml[.yml], optional:file:../config/lock-${spring.profiles.active}.yml[.yml]

View File

@ -1,9 +0,0 @@
authorization:
allowedTenantRoles:
- TenantAdmin
- TenantUser
- TenantManager
- TenantDescriptionTemplateEditor
allowedGlobalRoles:
- Admin
- User

View File

@ -1,113 +0,0 @@
cache:
manager:
fallbackToNoOpCache: true
caffeineCaches:
- names: [ "userBySubjectId" ]
allowNullValues: true
initialCapacity: 100
maximumSize: 5000
enableRecordStats: false
expireAfterWriteSeconds: 20
- names: [ "supportiveMaterial" ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 600
- names: [ "Reference" ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 600
- names: [ "depositConfigById" ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 600
- names: [ "affiliation" ]
allowNullValues: true
initialCapacity: 100
maximumSize: 5000
enableRecordStats: false
expireAfterWriteSeconds: 20
- names: [ "dashboardStatisticsByUserId" ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 30
- names: [ "transformer" ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 600
- names: [ "tokenExchangeKey" ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 60
- names: [ tenantByCode ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 30
- names: [ tenantById ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 60
- names: [ userAllowedTenant ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 60
- names: [ userTenantRoles ]
allowNullValues: true
initialCapacity: 100
maximumSize: 500
enableRecordStats: false
expireAfterWriteSeconds: 60
mapCaches:
userBySubjectId:
name: userBySubjectId
keyPattern: user_by_subject_$subject$:v0
tenantByCode:
name: tenantByCode
keyPattern: tenant_by_code_$code$:v0
tenantById:
name: tenantById
keyPattern: tenant_by_id_$tenantId$:v0
userAllowedTenant:
name: userAllowedTenant
keyPattern: user_allowed_tenant$tenant_id$_$user_id$:v0
userTenantRoles:
name: userTenantRoles
keyPattern: user_tenant_roles$tenant_id$_$user_id$:v0
supportiveMaterial:
name: supportiveMaterial
keyPattern: supportive_material_$type$_$lang$:v0
Reference:
name: Reference
keyPattern: reference_$type$_$criteria$:v0
dashboardStatisticsByUserId:
name: dashboardStatisticsByUserId
keyPattern: dashboard_stats_by_usr_$key$:v0
depositConfigById:
name: depositConfigById
keyPattern: deposit_config_by_id_$repositoryId$:v0
transformer:
name: transformer
keyPattern: base:v0
token-exchange-key:
name: tokenExchangeKey
keyPattern: resolve_$keyhash$:v0
affiliation:
name: affiliation
keyPattern: affiliation_$entity$_$user$_$tenant$_$type$:v0

View File

@ -1,3 +0,0 @@
web:
cors:
allowed-origins: [ http://localhost, http://localhost:4200 ]

View File

@ -1,7 +0,0 @@
web:
cors:
enabled: true
allowed-methods: [ HEAD, GET, POST, PUT, DELETE, PATCH ]
allowed-headers: [ Authorization, Cache-Control, Content-Type, Content-Disposition, x-tenant ]
exposed-headers: [ Authorization, Cache-Control, Content-Type, Content-Disposition ]
allow-credentials: false

View File

@ -1,4 +0,0 @@
dashboard:
reference-type-counters:
- "7eeffb98-58fb-4921-82ec-e27f32f8e738"
- "5b9c284f-f041-4995-96cc-fad7ad13289c"

View File

@ -1,10 +0,0 @@
spring:
datasource:
maxIdle: 10
minIdle: 5
maxActive: 10
jpa:
show-sql: true
properties:
hibernate:
format_sql: false

View File

@ -1,34 +0,0 @@
#database:
# driver-class-name: org.postgresql.Driver
# lock-fail-interval: 120000
# url: ${DB_URL:}
# username: ${DB_USER:}
# password: ${DB_PASS:}
spring:
jpa:
properties:
org:
hibernate:
flushMode: MANUAL
hibernate:
globally_quoted_identifiers: true
ddl-auto: validate
dialect: org.hibernate.dialect.PostgreSQLDialect
hibernate:
naming:
physical-strategy: eu.eudat.data.namingstrategy.PrefixPhysicalNamingStrategy
implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
datasource:
url: ${DB_URL:}
username: ${DB_USER:}
password: ${DB_PASS:}
driver-class-name: org.postgresql.Driver
hikari:
connection-timeout: 30000
minimum-idle: 3
maximum-pool-size: 10
idle-timeout: 600000
max-lifetime: 1800000
naming-strategy:
prefix:

View File

@ -1,18 +0,0 @@
deposit:
sources:
- url: http://dev04.local.cite.gr:55330/zenodo
repositoryId: Zenodo
pdfTransformerId: docx-file-transformer
rdaTransformerId: rda-file-transformer
issuer-url: ${IDP_ISSUER_URI_TOKEN}
client-id: ${IDP_APIKEY_CLIENT_ID}
client-secret: ${IDP_APIKEY_CLIENT_SECRET}
scope: ${IDP_APIKEY_SCOPE}
- url: http://dev04.local.cite.gr:55330/zenodo1
repositoryId: Zenodo1
pdfTransformerId: docx-file-transformer
rdaTransformerId: rda-file-transformer
issuer-url: ${IDP_ISSUER_URI_TOKEN}
client-id: ${IDP_APIKEY_CLIENT_ID}
client-secret: ${IDP_APIKEY_CLIENT_SECRET}
scope: ${IDP_APIKEY_SCOPE}

View File

@ -1,6 +0,0 @@
elastic:
disableHostnameVerifier: true
serverCertificatePaths:
- classpath:certificates/elasticsearch_dev04.crt
app-elastic:
enableIcuAnalysisPlugin: true

View File

@ -1,21 +0,0 @@
elastic:
enabled: ${ELASTIC_ENABLED:}
hosts:
- ${ELASTIC_HOST:}
username: ${ELASTIC_USER:}
password: ${ELASTIC_PASS:}
useSSL: ${ELASTIC_USE_SSL:}
socketTimeoutMillis: 30000
connectTimeoutMillis: 30000
defaultResultSize: 100
defaultCollectAllResultSize: 1000
defaultScrollSize: 100
defaultScrollSeconds: 120
defaultCompositeAggregationResultSize: 200000
disableHostnameVerifier: false
app-elastic:
enabled: ${ELASTIC_ENABLED:}
dmpIndexName: ${ELASTIC_DMP_INDEX:}
descriptionIndexName: ${ELASTIC_DESCRIPTION_INDEX:}
enableIcuAnalysisPlugin: false
resetBatchSize: 1000

View File

@ -1,7 +0,0 @@
email:
invite: classpath:templates/email/email.html
confirmation: classpath:templates/email/emailConfirmation.html
merge: classpath:templates/email/emailMergeConfirmation.html
unlink: classpath:templates/email/emailUnlinkConfirmation.html
dataset:
template: classpath:templates/email/emailAdmin.html

View File

@ -1,53 +0,0 @@
spring:
mail:
default-encoding: UTF-8
host: hermes.local.cite.gr
port: 25
protocol: smtp
test-connection: false
properties:
mail:
smtp:
auth: false
starttls:
enable: false
mail:
subject: "Invitation to DMP Plan {dmpname}"
from: opendmp-dev@cite.gr
admin:
mail:
subject: "You have been invited to the Dataset Template {templateName}"
email:
invite: file:templates/email/email.html
confirmation: file:templates/email/emailConfirmation.html
merge: file:templates/email/emailMergeConfirmation.html
unlink: classpath:templates/email/emailUnlinkConfirmation.html
dataset:
template: file:templates/email/emailAdmin.html
conf_email:
expiration_time_seconds: 14400
subject: "OpenDMP email confirmation"
contact_email:
mail: ${CONTACT_EMAIL:}
notification:
finalised:
subject: "[OpenDMP] The {name} has been finalised"
template: classpath:templates/notifications/finalisedNotification.html
modified_finalised:
template: classpath:templates/notifications/modifiedFinalisedNotification.html
modified:
subject: "[OpenDMP] The {name} has been modified"
template: classpath:templates/notifications/modifiedNotification.html
publish:
subject: "[OpenDMP] The {name} has been published"
template: classpath:templates/notifications/publishNotification.html
rateInterval: 30000
maxRetries: 10
modifiedFinalised:
subject: "[OpenDMP] The {name} has been modified and finalised"

View File

@ -1,61 +0,0 @@
error-thesaurus:
hash-conflict:
code: 100
message: there is a hash conflict for the item modifed. please reload to get the latest changes
forbidden:
code: 101
message: insufficient rights
system-error:
code: 102
message: an unexpected system error occured
missing-tenant:
code: 103
message: tenant scope not provided
model-validation:
code: 106
message: validation error
tenant-code-required:
code: 108
message: tenant code required
tenant-name-required:
code: 109
message: tenant name required
index-already-exists:
code: 110
message: index already exists
tenant-not-allowed:
code: 113
message: tenant not allowed
description-template-new-version-conflict:
code: 114
message: version to update not the latest
dmp-new-version-conflict:
code: 115
message: version to update not the latest
dmp-is-finalized:
code: 116
message: To perform this action you will need to revert DMP's finalisation
dmp-can-not-change:
code: 117
message: dmp can not change
dmp-description-template-can-not-change:
code: 118
message: dmp description template can not change
invalid-description-template:
code: 118
message: invalid description template id
description-is-finalized:
code: 119
message: To perform this action you will need to revert description finalisation
dmp-blueprint-has-no-description-templates:
code: 120
message: You need to select Has Description Templates field to at least one Section.
dmp-blueprint-new-version-conflict:
code: 121
message: version to update not the latest
dmp-description-template-can-not-remove:
code: 122
message: Can not remove description template that is already in use.
tenant-tampering:
code: 123
message: Tenant tampering

View File

@ -1,8 +0,0 @@
pdf:
converter:
url: ${PDF_CONVERTER_URL:}
publicapi:
host: devel.opendmp.eu
basePath: /srv
schema: https

View File

@ -1,58 +0,0 @@
idpclient:
claims:
mapping:
Subject:
- type: sub
Name:
- type: name
Client:
- type: client_id
AuthenticationMethod:
- type: amr
NotBefore:
- type: nbf
AuthenticatedAt:
- type: auth_time
ExpiresAt:
- type: exp
Email:
- type: email
Roles:
- type: resource_access
path: dmp_web.roles
- type: tenant_roles
filterBy: "(.*):::TenantCode::"
extractByExpression: "(.*):(.*)"
extractExpressionValue: "[[g1]]"
GlobalRoles:
- type: resource_access
path: dmp_web.roles
TenantRoles:
- type: tenant_roles
filterBy: "(.*):::TenantCode::"
extractByExpression: "(.*):(.*)"
extractExpressionValue: "[[g1]]"
Scope:
- type: scope
AccessToken:
- type: x-access-token
visibility: SENSITIVE
Tenant:
- type: x-tenant
IssuedAt:
- type: iat
Issuer:
- type: iss
Audience:
- type: aud
TokenType:
- type: typ
AuthorizedParty:
- type: azp
Authorities:
- type: authorities
TenantCodes:
- type: tenant_roles
filterBy: "(.*):(.*)"
extractByExpression: "(.*):(.*)"
extractExpressionValue: "[[g2]]"

View File

@ -1,14 +0,0 @@
keycloak-resources:
authorities:
User:
groupId: a04fd333-f127-449e-8fc2-0626570a3899
groupTitle: role-user
Admin:
groupId: 299f18fe-e271-4625-a4c1-9c3eb313b2ea
groupTitle: role-admin
Manager:
groupId: 1753f7a7-cedb-4ad4-ae5f-96fe9bdabe3e
groupTitle: role-manager
DescriptionTemplateEditor:
groupId: b0ea3cf3-21b0-4c6b-9c42-fb09f0e09dbb
groupTitle: role-description-template-editor

View File

@ -1,10 +0,0 @@
keycloak-client:
serverUrl: ${KEYCLOAK_API_SERVER_URL:}
realm: ${KEYCLOAK_API_REALM:}
username: ${KEYCLOAK_API_USERNAME:}
password: ${KEYCLOAK_API_PASSWORD:}
clientId: ${KEYCLOAK_API_CLIENT_ID:}
clientSecret: ${KEYCLOAK_API_CLIENT_SECRET:}
keycloak-resources:
authorities: null

View File

@ -1,4 +0,0 @@
locale:
timezone: UTC
language: en
culture: en-001

View File

@ -1,2 +0,0 @@
lock:
lockInterval: 120000

View File

@ -1,36 +0,0 @@
logging:
config: classpath:logging/logback-${spring.profiles.active}.xml
context:
request:
requestIdKey: req.id
requestRemoteHostKey: req.remoteHost
requestUriKey: req.requestURI
requestQueryStringKey: req.queryString
requestUrlKey : req.requestURL
requestMethodKey: req.method
requestUserAgentKey: req.userAgent
requestForwardedForKey: req.xForwardedFor
requestSchemeKey: req.scheme
requestRemoteAddressKey: req.remoteAddr
requestRemotePortKey: req.remotePort
requestRemoteUserKey: req.remoteUser
principal:
subjectKey: usr.subject
nameKey: usr.name
clientKey: usr.client
audit:
enable: true
requestRemoteHostKey: req.remoteHost
requestUriKey: req.requestURI
requestQueryStringKey: req.queryString
requestUrlKey : req.requestURL
requestMethodKey: req.method
requestUserAgentKey: req.userAgent
requestForwardedForKey: req.xForwardedFor
requestSchemeKey: req.scheme
requestRemoteAddressKey: req.remoteAddr
requestRemotePortKey: req.remotePort
requestRemoteUserKey: req.remoteUser
principalSubjectKey: usr.subject
principalNameKey: usr.name
principalClientKey: usr.client

View File

@ -1,35 +0,0 @@
logging:
context:
request:
requestIdKey: req.id
requestRemoteHostKey: req.remoteHost
requestUriKey: req.requestURI
requestQueryStringKey: req.queryString
requestUrlKey : req.requestURL
requestMethodKey: req.method
requestUserAgentKey: req.userAgent
requestForwardedForKey: req.xForwardedFor
requestSchemeKey: req.scheme
requestRemoteAddressKey: req.remoteAddr
requestRemotePortKey: req.remotePort
requestRemoteUserKey: req.remoteUser
principal:
subjectKey: usr.subject
nameKey: usr.name
clientKey: usr.client
audit:
enable: true
requestRemoteHostKey: req.remoteHost
requestUriKey: req.requestURI
requestQueryStringKey: req.queryString
requestUrlKey : req.requestURL
requestMethodKey: req.method
requestUserAgentKey: req.userAgent
requestForwardedForKey: req.xForwardedFor
requestSchemeKey: req.scheme
requestRemoteAddressKey: req.remoteAddr
requestRemotePortKey: req.remotePort
requestRemoteUserKey: req.remoteUser
principalSubjectKey: usr.subject
principalNameKey: usr.name
principalClientKey: usr.client

View File

@ -1,10 +0,0 @@
metrics:
task:
referenceTypes:
funderIds: ["538928bb-c7c6-452e-b66d-08e539f5f082"]
grantIds: ["5b9c284f-f041-4995-96cc-fad7ad13289c"]
projectIds: ["3d372db5-a456-45e6-a845-e41e1a8311f8"]
researcherIds: ["5a2112e7-ea99-4cfe-98a1-68665e26726e"]
endpoints:
prometheus:
sensitive: false

View File

@ -1,38 +0,0 @@
metrics:
task:
enable: true
intervalSeconds: 600
nexusDate: "2021-01-01T00:00:00.00Z"
usersLoginClient: ${IDP_APIKEY_CLIENT_ID:}
referenceTypes:
funderIds: []
grantIds: []
projectIds: []
researcherIds: []
management:
endpoint:
metrics:
enabled: true
prometheus:
enabled: true
health:
show-details: always
endpoints:
web:
base-path: /
exposure:
include: prometheus,health,metrics
metrics:
enabled: true
export:
prometheus:
enabled: true
enable:
http: true
jvm: true
jdbc: true
tomcat: true
logback: true
hikaricp: true
cache: true

View File

@ -1,15 +0,0 @@
notification:
dmpInvitationExternalUserType: 065DEECD-21BB-44AF-9983-E660FDF24BC4
dmpInvitationExistingUserType: 4904dea2-5079-46d3-83be-3a19c9ab45dc
dmpModifiedType: 4542262A-22F8-4BAA-9DB6-1C8E70AC1DBB
dmpFinalisedType: 90DB0B46-42DE-BD89-AEBF-6F27EFEB256E
descriptionModifiedType: 4FDBFA80-7A71-4A69-B854-67CBB70648F1
descriptionFinalisedType: 33790bad-94d4-488a-8ee2-7f6295ca18ea
mergeAccountConfirmationType: BFE68845-CB05-4C5A-A03D-29161A7C9660
removeCredentialConfirmationType: C9BC3F16-057E-4BBA-8A5F-36BD835E5604
dmpDepositType: 55736F7A-83AB-4190-AF43-9D031A6F9612
descriptionTemplateInvitationType: 223BB607-EFA1-4CE7-99EC-4BEABFEF9A8B
contactSupportType: 5B1D6C52-88F9-418B-9B8A-6F1F963D9EAD
publicContactSupportType: B542B606-ACC6-4629-ADEF-4D8EE2F01222
contactSupportEmail: support@dmp.com
emailExpirationTimeSeconds: 14400

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +0,0 @@
public-api:
reference-type-map:
funderTypeId: "538928bb-c7c6-452e-b66d-08e539f5f082"
grantTypeId: "5b9c284f-f041-4995-96cc-fad7ad13289c"
registryTypeId: "2beacaad-3223-43ad-ad99-1e5f21328e7b"
serviceTypeId: "9ec2000d-95c7-452e-b356-755fc8e2574c"
dataRepositoryTypeId: "d26b64ba-fda0-4b14-b3ef-9856a492d55a"
datasetTypeId: "a3ce0fb2-d72c-48bb-b322-7401940cb802"
researcherTypeId: "5a2112e7-ea99-4cfe-98a1-68665e26726e"
organizationTypeId: "7eeffb98-58fb-4921-82ec-e27f32f8e738"

View File

@ -1,19 +0,0 @@
queue:
rabbitmq:
enable: true
durable: true
queue: cite_dmp_devel_web_inbox_queue
exchange: cite_dmp_devel_queue
listenerEnabled: true
publisherEnabled: true
task:
publisher:
options:
exchange: cite_dmp_devel_queue
rabbitmq:
enable: true
listener:
options:
exchange: cite_dmp_devel_queue
rabbitmq:
enable: true

View File

@ -1,62 +0,0 @@
spring:
rabbitmq:
host: ${RABBIT_HOST}
port: ${RABBIT_PORT}
username: ${RABBIT_USER}
password: ${RABBIT_PASS}
ssl:
enabled: false
queue:
rabbitmq:
enable: false
appId: ${QUEUE_APP_ID}
durable: null
queue: null
exchange: null
listenerEnabled: true
publisherEnabled: true
#TODO
connection-recovery:
enable: true
network-recovery-interval: 5000
unreachable-recovery-interval: 5000
task:
publisher:
enable: true
options:
exchange: null
forget-me-completed-topic: forgetme.completed
notify-topic: notification.notify
tenant-reactivation-topic: tenant.reactivated
tenant-removal-topic: tenant.remove
tenant-touch-topic: tenant.touch
tenant-user-invite-topic: tenant.invite
user-touch-topic: user.touch
user-removal-topic: user.remove
dmp-touch-topic: dmp.touch
description-touch-topic: description.touch
annotation-entities-touch-topic: annotation.entities.touch
annotation-entities-removal-topic: annotation.entities.remove
what-you-know-about-me-completed-topic: whatyouknowaboutme.completed
generate-file-topic: generate.file
rabbitmq:
enable: true
interval-seconds: 30
options:
retry-threashold: 100
retry-delay-step-seconds: 300
max-retry-delay-seconds: 10800
too-old-to-send-seconds: 604800
confirm-timeout-seconds: 30
listener:
enable: true
options:
exchange: null
rabbitmq:
enable: true
interval-seconds: 30
options:
retry-threashold: 100
retry-delay-step-seconds: 300
max-retry-delay-seconds: 10800
too-old-to-send-seconds: 604800

View File

@ -1,131 +0,0 @@
reference-type:
grant:
fields:
- code: startDate
dataType: Date
- code: endDate
dataType: Date
- code: pid
dataType: Text
- code: tag
dataType: Text
- code: key
dataType: Text
funder:
fields:
- code: uri
dataType: Text
- code: pid
dataType: Text
- code: tag
dataType: Text
- code: key
dataType: Text
researcher:
fields:
- code: pid
dataType: Text
- code: tag
dataType: Text
- code: key
dataType: Text
- code: firstName
dataType: Text
- code: lastName
dataType: Text
- code: uri
dataType: Text
service:
fields:
- code: pid
dataType: Text
- code: tag
dataType: Text
- code: key
dataType: Text
- code: uri
dataType: Text
registry:
fields:
- code: pid
dataType: Text
- code: tag
dataType: Text
- code: key
dataType: Text
- code: uri
dataType: Text
project:
fields:
- code: startDate
dataType: Date
- code: endDate
dataType: Date
organisation:
fields:
- code: tag
dataType: Text
- code: key
dataType: Text
- code: pid
dataType: Text
- code: uri
dataType: Text
- code: pidTypeField
dataType: Text
dataset:
fields:
- code: tag
dataType: Text
- code: key
dataType: Text
- code: pid
dataType: Text
- code: pidTypeField
dataType: Text
dataRepository:
fields:
- code: pid
dataType: Text
- code: tag
dataType: Text
- code: key
dataType: Text
pubRepository:
fields:
- code: pid
dataType: Text
- code: tag
dataType: Text
- code: key
dataType: Text
journal:
fields:
- code: pid
dataType: Text
- code: tag
dataType: Text
- code: key
dataType: Text
publication:
fields:
- code: tag
dataType: Text
- code: key
dataType: Text
- code: pid
dataType: Text
- code: pidTypeField
dataType: Text
licence:
fields:
- code: pid
dataType: Text
- code: tag
dataType: Text
- code: key
dataType: Text
- code: uri
dataType: Text
taxonomy:
fields:

View File

@ -1,15 +0,0 @@
web:
security:
enabled: true
authorized-endpoints: [ api ]
allowed-endpoints: [ api/public, api/dmp/public, api/description/public, /api/supportive-material/public, api/language/public, api/contact-support/public, api/dashboard/public, prometheus, health, metrics ]
idp:
api-key:
enabled: false
resource:
token-type: JWT #| opaque
jwt:
claims: [ role, x-role ]
issuer-uri: ${IDP_ISSUER_URI:}
audiences: [ "dmp_web" ]
validIssuer: ${IDP_ISSUER_URI:}

View File

@ -1,12 +0,0 @@
server:
port: 8081
tomcat:
threads:
max: 20
max-connections: 10000
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB

View File

@ -1,21 +0,0 @@
storage:
service:
defaultLanguage: en
storages:
- type: Temp
basePath: ${FILE_STORAGE}/temp
- type: Main
basePath: ${FILE_STORAGE}/main
- type: Transformer
basePath: ${FILE_STORAGE}/transformer
- type: Deposit
basePath: ${FILE_STORAGE}/deposit
static-files:
semantics: dmp-backend/web/src/main/resources/Semantics.json
material-files:
userGuide: dmp-backend/web/src/main/resources/material/user-guide/
about: dmp-backend/web/src/main/resources/material/about/
termsOfService: dmp-backend/web/src/main/resources/material/terms-of-service/
glossary: dmp-backend/web/src/main/resources/material/glossary/
faq: dmp-backend/web/src/main/resources/material/faq/
language: dmp-frontend/src/assets/i18n/

View File

@ -1,14 +0,0 @@
storage:
task:
enable: true
intervalSeconds: 600
service:
tempStoreLifetimeSeconds: 7200
material-files:
localizedNameLanguageKey: "{lang}"
userGuideNamePattern: "UserGuide_{lang}.html"
aboutNamePattern: "About_{lang}.html"
termsOfServiceNamePattern: "TermsOfService_{lang}.html"
glossaryNamePattern: "Glossary_{lang}.html"
faqNamePattern: "Faq_{lang}.html"
languageNamePattern: "{lang}.json"

View File

@ -1,5 +0,0 @@
springdoc:
packagesToScan: eu.eudat.publicapi.controllers
pathsToScan: "/api/public/(dmps|datasets)/?.*"
swagger-ui:
docExpansion: none

View File

@ -1,10 +0,0 @@
tenant:
configEncryptionAesKey: rmpTvZnRWzyisUtFADBcZCn0q7Z75Xdz
configEncryptionAesIv: ec05d521a23f80ad
multitenancy:
is-multitenant: true
default-tenant-code: default
interceptor:
client-claims-prefix: client_
enforce-trusted-tenant: false
auto-create-tenant-user: true

View File

@ -1,8 +0,0 @@
tenant:
multitenancy:
is-multitenant: false
interceptor:
white-listed-clients: [ ]
enforce-trusted-tenant: false
auto-create-tenant-user: false
white-listed-endpoints: [ '/api/principal/my-tenants', '/api/principal/me' ]

View File

@ -1,14 +0,0 @@
transformer:
sources:
- url: http://dev04.local.cite.gr:55330/file/docx
transformerId: docx-file-transformer
issuer-url: ${IDP_ISSUER_URI_TOKEN}
client-id: ${IDP_APIKEY_CLIENT_ID}
client-secret: ${IDP_APIKEY_CLIENT_SECRET}
scope: ${IDP_APIKEY_SCOPE}
- url: http://dev04.local.cite.gr:55330/file/rdajson
transformerId: rda-file-transformer
issuer-url: ${IDP_ISSUER_URI_TOKEN}
client-id: ${IDP_APIKEY_CLIENT_ID}
client-secret: ${IDP_APIKEY_CLIENT_SECRET}
scope: ${IDP_APIKEY_SCOPE}

View File

@ -1,13 +0,0 @@
<fetchConfig>
<configs>
<config>
<type>currency</type>
<fileType>xml</fileType>
<filePath>internal/iso-4217.xml</filePath>
<parseClass>eu.eudat.logic.proxy.fetching.entities.CurrencyModel</parseClass>
<parseField>currencies</parseField>
<name>currency</name>
<value>code</value>
</config>
</configs>
</fetchConfig>

View File

@ -1,66 +0,0 @@
<configuration debug="true">
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%date{ISO8601} [%thread] %-5level %logger{36} [%X{req.id}] - %message%n</Pattern>
</encoder>
</appender>
<appender name="TROUBLESHOOTING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/logging.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/logging.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>15</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%date{ISO8601} [%thread] %-5level %logger{36} [%X{req.id}] - %message%n</Pattern>
</encoder>
</appender>
<appender name="AUDITING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/auditing.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/auditing.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>15</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%date{ISO8601} - %X{req.id} - %message%n</Pattern>
</encoder>
</appender>
<logger name="org.springframework.web" level="INFO" additivity="false">
<appender-ref ref="TROUBLESHOOTING"/>
<appender-ref ref="STDOUT"/>
</logger>
<logger name="org.hibernate" level="INFO" additivity="false">
<appender-ref ref="TROUBLESHOOTING"/>
<appender-ref ref="STDOUT"/>
</logger>
<logger name="gr.cite" level="DEBUG" additivity="false">
<appender-ref ref="TROUBLESHOOTING"/>
<appender-ref ref="STDOUT"/>
</logger>
<logger name="eu.eudat" level="DEBUG" additivity="false">
<appender-ref ref="TROUBLESHOOTING"/>
<appender-ref ref="STDOUT"/>
</logger>
<logger name="org.springframework.data.elasticsearch.client.WIRE" level="TRACE" additivity="false">
<appender-ref ref="TROUBLESHOOTING"/>
<appender-ref ref="STDOUT"/>
</logger>
<logger name="audit" level="INFO" additivity="false">
<appender-ref ref="AUDITING"/>
<appender-ref ref="STDOUT"/>
</logger>
<root level="info">
<appender-ref ref="TROUBLESHOOTING"/>
<appender-ref ref="STDOUT"/>
</root>
</configuration>

View File

@ -1,76 +0,0 @@
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous"></script>
<style type="text/css">
h1 {
text-align: center;
margin: 2rem 0 1rem 0;
font-size: 3.3125rem;
line-height: 1.15;
font-weight: 300;
color: rgba(0,0,0,.87);
}
@media (min-width: 576px) {
.container {
max-width:540px
}
}
@media (min-width: 768px) {
.container {
max-width:720px
}
}
@media (min-width: 992px) {
.container {
max-width:960px
}
}
@media (min-width: 1244px) {
.container {
max-width:1204px!important
}
}
body {
font-family: Roboto,Helvetica,Arial,sans-serif;
font-size: 1rem;
font-weight: 300;
line-height: 1.5;
color: #212121;
text-align: left;
background: transparent;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>About</h1>
</div>
</div>
<div class="row">
<div class="col-md-12">
<p>ARGOS is an online tool in support of automated processes to creating, managing, sharing and linking DMPs with research artifacts they correspond to. It is the joint effort of OpenAIRE and EUDAT to deliver an open platform for Data Management Planning that addresses FAIR and Open best practices and assumes no barriers for its use and adoption. It does so by applying common standards for machine-actionable DMPs as defined by the global research data community of RDA and by communicating and consulting with researchers, research communities and funders to better reflect on their needs.
<br /><br />ARGOS provides a flexible environment and an easy interface for users to navigate and use.</p>
</div>
</div>
</div>
</body>
</html>

View File

@ -1,749 +0,0 @@
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;500&display=swap" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous"></script>
<style type="text/css">
h3 {
font-size: 1.5625rem;
margin: 20px 0 10px;
line-height: 1.4em;
font-weight: 300;
}
h4 {
font-size: 1rem;
line-height: 1em;
font-weight: 500;
}
p {
text-align: left;
font-family: Roboto,sans-serif;
letter-spacing: 0;
color: #212121;
}
a {
text-decoration: none;
background-color: transparent;
}
a:hover {
color: #2e75b6;
}
p a {
color: #23bcba;
}
ul {
padding-left: 2.5rem;
}
.container-fluid {
margin: 0;
padding-left: 0;
}
.col-md-12 {
padding-right: 25px;
}
body {
font-family: Roboto,Helvetica,Arial,sans-serif;
font-size: 1rem;
font-weight: 300;
line-height: 1.5;
color: #212121;
text-align: left;
background: transparent;
}
</style>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<h3>About ARGOS</h3>
<h4>What is ARGOS?</h4>
<p>Argos is an open and collaborative platform developed by <a href="https://www.openaire.eu/"
target="_blank">OpenAIRE</a> to facilitate
Research Data Management (RDM) activities concerning the implementation of Data
Management Plans. It uses OpenAIRE guides created by the <a
href="https://www.openaire.eu/task-forces-in-openaire-advance" target="_blank">RDM Task Force</a> to
familiarize users with basic RDM concepts and guide them throughout the process of
writing DMPs. It also utilises the OpenAIRE pool of services and inferred sources to
make DMPs more dynamic in use and easier to be completed and published. Argos is
based on the OpenDMP <a href="https://code-repo.d4science.org/MaDgiK-CITE/argos/src/branch/master"
target="_blank">open source software</a> and is available through the <a
href="http://catalogue.openaire.eu/" target="_blank">OpenAIRE
Service catalogue</a> and the <a
href="https://marketplace.eosc-portal.eu/services/argos?fromc=data-management"
target="_blank">EOSC</a>.</p>
<br />
<h4>Is Argos designed for one specific funder, e.g. the EC/Horizon Europe?</h4>
<p>
Argos is a flexible tool, designed to accommodate all research performing
and research funding organisations policies and Research Data Management (RDM) needs.
It already supports templates for different authorities.
These templates are created by Admin users in Argos.
In addition, we currently work to provide non-administrative users with the capability
to modify templates according to their own needs.
</p>
<br />
<h4>Why use Argos?</h4>
<p>Argos is easy to use and navigate around. It familiarises users with the DMP process
and provides guidance on basic RDM concepts so that users find useful resources to
learn from without having to leave the Argos environment. Users can invite their
colleagues and collaboratively work on completing a DMP. Moreover, Argos is an
integral part of the OpeAIRE ecosystem and the <a href="https://zenodo.org/record/2643199#.X3HL0WgzY2x"
target="_blank">Research
Graph</a>. Argos integrates
other services of the ecosystem to enable contextualisation of information, which is
especially useful when data are re-used, for example to understand how/ if they can
be repurposed.</p>
<br />
<h4>Who is Argos for?</h4>
<p>Argos is designed as a tool for inclusive use by researchers, students, funders,
research communities and institutions. It can be used in the context of research
projects conduct to comply with funders RDM requirements, as a tool in support of
literacy programmes in academia or can be independently deployed to meet given
stakeholder demands. Also, it is available in native languages, thanks to the help
of OpenAIRE NOADs, which strengthens common understanding of all researchers
involved in the DMP writing process.
By using Argos, researchers and students are able to create their DMPs in
collaboration with other colleagues, learn basic RDM concepts throughout the process
and publish DMPs as outputs in an open and FAIR manner, among other things by
assigning DOIs and licenses and by maintaining DMPs as living documents through
versioning.
At the same time, Argos can be configured and deployed by funders, institutions and
research communities. They can plug in their own services and/ or make use of
OpenAIRE underlying services that Argos is built with ad-hoc.</p>
<br />
<h4>Using Argos</h4>
<p>
Argos consists of two main functionalities: DMPs and Datasets.
Argos can be used for:
<br /><br /><span style="padding:20px;">
A. Viewing/ consulting publicly released DMPs and Datasets or Projects
corresponding to
DMPs
</span><br /><br />
Argos offers options for publishing DMPs in two modes, private or public. To view
public DMPs and Datasets, there is no need for login to the platform.
<br /><br /><span style="padding:20px;">
B. Writing and publishing a DMP
</span><br /><br />
Argos helps researchers comply with mandates that may be attached to their grant
proposal/ project funding. They can therefore choose from the most suitable to their
needs template from the Datasets collection and proceed with answering the
corresponding questions. Once finalized, researchers can assign a DOI to their DMP,
publish and eventually cite it.
<br /><br /><span style="padding:20px;">
C. Practicing on writing DMPs and Dataset Descriptions
</span><br /><br />
Argos may be used for educational purposes. The process of Data Management Planning
reflects the data management lifecycle, hence the tool can be used in response to
global RDM training demands. Examples may refer to embedding DMPs and DMP tools in
specific curricula or be embedded in library instructions sessions to familiarize
researchers and students the processes of RDM and DMP.
</p>
<br />
<h4>Can I exploit ARGOS DMPs?</h4>
<p>
Of course. If you want to compare DMPs or analyse DMP data, then we advise you to export the records in .xml.
This schema is the most complete as it includes all information held in a DMP: information provided by the Admin
when structuring the template and input provided by researchers when completing their DMPs.
</p>
<br />
<h3>Manage Account</h3>
<h4>Log in and out of Argos</h4>
<p>
You can log in Argos by selecting one of the providers from the Login page. Argos
does not require Sign Up.
</p>
<br />
<h4>Create an administrator account</h4>
<p>
If you are interested in becoming an administrator in Argos and benefit from extra
features relevant to creating tailored templates, please email <a href="mailto:argos@openaire.eu"
target="_blank">argos@openaire.eu</a> .
</p>
<br />
<h4>
Switch from administrator account
</h4>
<p>
There is no need to switch from your administrator account to use Argos. The only
difference between regular users and administrators profiles in Argos is an extra
set of tools at the bottom of the main tool bar that is positioned on the left
handside.
</p>
<br />
<h4>
Change your email
</h4>
<p>
Argos does not have Sign Up. To change email, please see “Switch between accounts”.
Alternatevily, you can add more email addresses to your user account by selecting
the “Add alternative email” from your profile.
</p>
<br />
<h4>
Switch between accounts
</h4>
<p>
You can switch between email accounts by loging in with different providers from the
Login page. The change depends on whether you have used different email addresses to
sign up with those providers. On the occassion that only one email address is used
for all providers offered by Argos, then no change is expected. You can always add
new email accounts in your profile from the “Add alternative email” in your profile
page.
</p>
<br />
<h4>
Delete your account
</h4>
<p>
If you want to delete your Argos profile, please email <a href="mailto:argos@openaire.eu"
target="_blank">argos@openaire.eu</a> .
</p>
<br />
<h3>
Accounts access and safety
</h3>
<h4>
How can I access my account and edit my profile?
</h4>
<p>
You can access your profile page and make desired edits from clicking on the avatar
at the very top of the toolbar located on the right handside.
</p>
<br />
<h4>
Cant login to ARGOS
</h4>
<p>
Please try using a different provider from the Login page and contact us at:
<a href="mailto:argos@openaire.eu" target="_blank">argos@openaire.eu</a> .
</p>
<br />
<h4>
Accessing Argos
</h4>
<p>
If you are reading this right now, you probably know the answer already! One way to
access Argos is through the <a href="http://catalogue.openaire.eu/" target="_blank">OpenAIRE Service
catalogue</a>. Another way is through the
<a href="https://marketplace.eosc-portal.eu/services/argos?fromc=data-management" target="_blank">EOSC
Catalogue</a>. But, you can always find Argos at
argos.openaire.eu .
To access Argos software, please visit
<a href="https://code-repo.d4science.org/MaDgiK-CITE/argos/src/branch/master"
target="_blank">https://code-repo.d4science.org/MaDgiK-CITE/argos/src/branch/master</a>
.
</p>
<br />
<h3>Argos User Roles</h3>
<h4>
Who is the author of a DMP?
</h4>
<p>
Author of the DMP is everyone contributing to writing the DMP. Both Argos owners and
Argos members are DMP authors. Researchers, however, are not DMP authors.
</p>
<br />
<h4>
What is the difference between owners and
members?
</h4>
<p>
Argos DMP owner is the person initiating the DMP. People who are invited to join the
DMP process are members who contribute to writing the DMP. DMP owners have extra
editing rights and they are the ones to finalize the DMP process. Members can view
and edit DMPs and Datasets, but can not perform further actions for its validation
or finalization.
</p>
<br />
<h4>
What is the role of a researcher in Argos?
</h4>
<p>
Researchers in Argos are project contributors and usually those who own or have
managed data described in respective DMPs.
</p>
<br />
<h4>
Can a researcher be a DMP author?
</h4>
<p>
Of course! This depends on whether the researcher has also been involved in the DMP
writing process.
</p>
<br />
<h4>
What does an Admin user do?
</h4>
<p>
Not everyone can become an Admin user in Argos. This happens upon request at
<a href="mailto:argos@openaire.eu" target="_blank">argos@openaire.eu</a>. Admin users are able to create
their own tailored templates from
a specialised editor, configure their own APIs and integrate services with Argos in
collaboration with and support of the Argos development team. Fees may apply
according to the type of requests.
</p>
<br />
<h3>Creating DMPs</h3>
<h4>
I cant find my project in the list. What should
I do?
</h4>
<p>
DMPs that are created as part of the project proposal are not included in Argos.
Only accepted project proposals are listed in the platform. If you cant find your
project in the list (drop-down menu), please use the “Insert manually”
functionality.
</p>
<br />
<h4>
I cant find my grant in the list. What should I
do?
</h4>
<p>
If you cant find your grant in the list (drop-down menu), please use the “Insert
manually” functionality.
</p>
<br />
<h4>
How do I edit and design my own DMP
template?
</h4>
<p>
You have to be an Admin user to design your own template in Argos. To learn more
about Admin users, check “What does an Admin user do?”.
</p>
<br />
<h4>
Can I create my own templates in Argos?
</h4>
<p>
Yes, you can, provided that you are an Admin user. To learn more about Admin users,
check “What does an Admin user do?”.
</p>
<br />
<h4>
What is the difference between “Save”, “Save &
Close”, “Save & Add New”?
</h4>
<div>
<p>They all perform the same action, but the difference lies in where you are directed
after you have saved your DMP or Dataset.</p>
<ul>
<li>
When choosing Save, information that you have added in the editor is kept
and you
can continue adding more from the same page you were working on.
</li>
<li>
When choosing Save & Close, information that you have added is kept, but the
editors window closes and you are redirected to your dashboard.
</li>
<li>
[only for datasets] When choosing Save & Add New, information that you have
added is
kept, and you are redirected to another editor to start a new dataset.
</li>
</ul>
</div>
<br />
<h4>
Can I modify things once I have finalized
them?
</h4>
<p>
Yes, you can, as long as you havent assigned a DOI to your DMP. You just select
“Undo Finalization”.
</p>
<br />
<h4>
How do I invite collaborators?
</h4>
<p>
You may use the “Invite” button to share DMPs with your colleagues and start working
on them together.
</p>
<br />
<h4>
Can scientists collaborate on the same DMP even though they may belong to different institutions (e.g. a hospital, a University, etc, collaborating on a project) and the dataset also "belongs" to different institutions?
</h4>
<p>
Of course. Argos supports collaborations across diverse teams. There are two most frequent ways that can address this question:
<br /><br /><span style="padding:20px;">
A. Everyone works on the same DMP, but on different dataset descriptions
</span><br /><br />
In this case, each organisation makes its own dataset description(s) in a single DMP.
That means that the manager (i.e. person responsible for the DMP activity) creates a DMP in ARGOS
and shares it with everyone. If the DMP is shared with co-ownership rights,
then the people will be able to edit it and add their dataset descriptions at any time during the project.
If there is the need to control editing rights of people writing the DMPs, then the manager can create the dataset description(s)
and share these each time with the team members that are responsible for adding input for the specified datasets.
<br /><br /><span style="padding:20px;">
B. Everyone works on their own DMP and content is later merged into one single DMP
</span><br /><br />
In this case, each organisation might work on their own DMP for the same project.
At one point, you need to decide which DMP is going to be the core for the work you perform, share co-ownership
between managers of all DMPs so they can copy all dataset descriptions of their DMPs in this single DMP document.
</p>
<br />
<h4>
How do I create an identical DMP or Dataset as a
copy?
</h4>
<p>
DMPs and Datasets can be cloned and used in different research contexts.
Existing DMPs presenting similarities with new ones, can be cloned, changed name and
then edited according to the new project data requirements.
Existing Datasets can be cloned and used in new DMPs that are reusing data described
in their context.
</p>
<br />
<h4>
What is the DMP version? How is it set?
</h4>
<p>
Versioning in Argos is both an internal and an external process. That means that
versioning happens both in the Argos environment when editing the DMP, and outside
of Argos when a DMP output is published in Zenodo. At every stage of the DMP
lifecycle, users have the option of keeping versions of the DMPs they are editing.
In Argos, users can create new versions of their DMPs by selecting the “Start New
Version” option to keep track of the evolution of their DMP throughout the writing
process. When published, versioning is associated with a DOI. Published DMPs are
automatically versioned every time a newer version of the same output is uploaded in
Zenodo.
</p>
<br />
<h3>
DMPs and Datasets
</h3>
<h4>
What is the DMP?
</h4>
<p>
A DMP in Argos consists of vital information about the research project on behalf of
which the DMP is created and of more in depth information about the management,
handling and curation of datasets collected, produced or reused during the research
lifetime. A DMP in Argos accommodates documentation of more than one datasets. That
way datasets are provided with the flexibility to be described separately, following
different templates per type of dataset or research community concerned each time,
also possible to be copied and used in multiple DMPs. Datasets are then bundled up
in a DMP and can be shared more broadly. Special attention is given to the handling
of data that are being re-used via OpenAIRE APIs.
</p>
<br />
<h4>
How do I find which Dataset template to use?
</h4>
<p>
This depends on the reason why you are creating a DMP in the first place. If it is
for compliance matters with funders, institutions or research communities RDM
policies, then you may select the dataset template of that particular stakeholder.
If you are creating a DMP for training purposes, you may select and work on any
template from the Argos collection.
</p>
<br />
<h4>
How do I create my own Dataset template?
</h4>
<p>
Currently, it is not possible for all Argos users to create dataset templates of
their own, so they have to work on predefined templates. Additional rights for
editing Dataset templates according to tailored needs have Admin users. This is
expected to change in the near future. To learn more about Admin users, check “What
does an Admin user do?”.
</p>
<br />
<h4>
Can I create smaller versions of a template for project proposals?
</h4>
<p>
Yes, it is possible in Argos to create short versions of templates that can be used
for grant proposals, such as for Horizon Europe.
If you are interested in working with us to create this short version of any ARGOS template,
please contact us: <a href="mailto:argos@openaire.eu" target="_blank">argos@openaire.eu</a>.
</p>
<br />
<h4>
Can I customise an existing template (e.g. for a specific institution)?
</h4>
<p>
Yes, you can. In the current version, this is possible for Admin users who have their own deployment on-premises or cloud.
Please note that this subject to change in the near future as we are working on a feature that will allow all users
to customise (remove/add/extend) specific questions on the template they are working on.
</p>
<br />
<h4>
What is a Dataset?
</h4>
<p>
A Dataset in Argos is an editor with set up questions that support the creation of
descriptions of how data are / have been handled, managed and curated throughout the
research data lifecycle. The editor holds a collection of Dataset templates each one
with different sets of predefined questions as per funders, institutions, research
communities RDM policy requirements. Researchers and students can choose the
template that corresponds to their RDM needs in order to get funding or get their
degree, respectively. A DMP in Argos may consist of one or more datasets.
</p>
<br />
<h4>
Why do I need more than one Dataset?
</h4>
<p>
You dont necessarily need to have many Datasets in a DMP. However, you might be
producing a plethora of data during your research that are diverse in type and/ or
scope of collection/ re-use, thus presenting diverse management needs. Argos gives
you the flexibility to describe all data produced and/ or re-used in your research
separately. That way it is easy to perform the mapping of information provided in a
DMP to the respective data types or data collections they correspond to. Equally,
reuse of particular datasets in different DMPs is easier. For the latter, please
check “How do I create an identical DMP or Dataset as a copy?”.
</p>
<br />
<h4>
It is not very clear to me when one should choose to add a dataset or to describe several "data products" in the same description.
</h4>
<p>
This is something that has to be tackled conceptually, from the author of the DMP.
If those "products" have their own lifetime and rules (IPR, Access rights, etc), they should be described as different datasets.
Alternative formats should not be treated as different datasets, unless they have other differences due to the format, too.
But, for instance, if you have datasets in CSV and JSON formats and under the same terms, they could be seen as one dataset description in the DMP.
</p>
<br />
<h4>
Can I add to my DMP information about datasets published on Zenodo?
</h4>
<p>
Argos offers a search to Zenodo for prefilling the DMP you are working with dataset metadata.
This search has been developed according to the rules set by Zenodo
and therefore has the same behaviour as when you are using the search bar on the Zenodo interface.
However, we understand the need to be able to find records with their PID,
hence we introduced some changes and now support searching DOIs from the Argos interface.
</p>
<br />
<h4>
Is it possible to describe a dataset that is not yet in a repository?
</h4>
<p>
Of course! You can choose to manually describe your dataset, e.g. for a dataset you are planning to produce,
instead of pre-filling the template with available metadata from a dataset that has already been shared and preserved in a repository.
</p>
<br />
<h4>
What are public DMPs and Datasets?
</h4>
<p>
Public DMPs and Public Datasets are collections of openly available Argos outputs.
That means that DMP owners and members are making their DMP and/or Dataset outputs
available to all Argos and non-Argos users who might want to consult or re-use them
under the framework provided by the assigned DMP license. Please also check “Is all
the information I create visible by default?”.
</p>
<br />
<h4>
Is all information I create visible by
default?
</h4>
<p>
No, it is not. You can choose how your DMP is displayed in Argos from the
“Visibility” option. Choosing Public will immediately locate your DMP in the “Public
DMPs” collection and make it available to all Argos and non-Argos users.
Choosing Private will keep the DMP visible only to you and to the people invited to
edit the DMP in collaboration with you. Private DMPs are not publicly displayed to
other users.
</p>
<br />
<h4>
What is the difference between the DMP and the dataset export?
</h4>
<p>
DMP export contains all vital information for a DMP, including funding and dataset details,
while dataset export is a subset of the DMP export containing information only about a dataset described in the DMP.
Both DMP and Dataset exports are available in .pdf, .docx, .xml.
In addition, DMP export is available in the RDA .json format
to increase interoperability of ARGOS exchanged DMPs.
</p>
<br />
<h4>
Is there a storage allowance limitation for the
DMPs and Dataset files?
</h4>
<p>
No, there is no storage limit or fee for either files stored in Argos.
</p>
<br />
<h3>
Publishing DMPs
</h3>
<h4>
Is it possible to publish DMPs in different repositories (so not Zenodo)?
</h4>
<p>
Yes, it is possible.
But, to have different repositories attached to the system, you will need your own on-premises or cloud deployment.
We are already working on that for DSpace and Dataverse repositories.
</p>
<br />
<h4>
Do you know that Zenodo has empty DMPs from ARGOS?
</h4>
<p>
Yes, we are aware of that.
Argos has no control over the DMPs that you generate and publish and thus can not be held accountable for empty DMPs.
Please remember that, as on all other occasions where you publish content, you should do so responsinbly.
If you have any questions regarding publishing DMPs, dont hesitate to contact us at <a href="mailto:argos@openaire.eu" target="_blank">argos@openaire.eu</a>.
</p>
<br />
<h4>
Once I upload a final version of a DMP to Zenodo, do I need to update this first final version from Zenodo or from Argos?
</h4>
<p>
Both options are possible according to how you have deposited the DMP in the first place.
If you have deposited your DMP with a token (i.e. from the ARGOS account on Zenodo),
then you wont have editing rights on the Zenodo record, but you will still be able to make changes
on ARGOS by starting and depositing a new version of the published DMP.
However, if you have deposited your DMP using your own account on Zenodo (i.e. login to Zenodo with your own credentials),
then you are able to also make minor changes, e.g. on the title of the DMP, directly from the Zenodo interface.
</p>
<br />
<h3>Troubleshooting</h3>
<h4>
Cant finalize a DMP
</h4>
<p>
You might be experiencing this problem because there are incomplete mandatory fields
in your DMP. Please check for those fields, fill in with appropriate information and
try again. Should the problem persists, please contact <a href="mailto:argos@openaire.eu"
target="_blank">argos@openaire.eu</a> .
</p>
<br />
<h4>
Cant co-edit a DMP
</h4>
<p>
DMPs can be shared with many colleagues in support of collaborative writing, but
DMPs should be worked by one person at a time. Argos will inform you if another
colleague has the DMP you are trying to edit open, so that your team avoids
information loss.
</p>
<br />
<h4>
Deposit is not working
</h4>
<p>
You need to have a Zenodo login to perform a deposit. Please sign up in Zenodo or
use the token option to publish your DMPs and get a DOI.
</p>
<br />
<h3>Legal and privacy</h3>
<h4>
Is Argos open source?
</h4>
<p>
Yes, it is. The OpenDMP software that Argos has deployed upon is open source code
available under Apache 2.0 license. You may find more information about the software
<a href="https://code-repo.d4science.org/MaDgiK-CITE/argos/src/branch/master"
target="_blank">here</a>.
</p>
<br />
<h4>
Can I contribute to Argos development?
</h4>
<p>
Of course! Please feel free to suggest new features and to actively contribute to
Argos development via pull requests in <a
href="https://code-repo.d4science.org/MaDgiK-CITE/argos/src/branch/master"
target="_blank">Gitea</a>.
</p>
<br />
<h4>
Is Argos GDPR compliant?
</h4>
<p>
Argos takes all necessary steps in handling and protecting personal and sensitive
information. Please check the <a href="https://argos.openaire.eu/terms-and-conditions"
target="_blank">Argos Terms of Service and Privacy Policy</a>.
</p>
<br />
<h4>
Which is the Argos data policy?
</h4>
<p>
Please find all information about Argos Terms of Service and Privacy, <a
href="https://argos.openaire.eu/terms-and-conditions" target="_blank">here</a>.
Additionally, you may find Argos Cookies policy, <a href="https://argos.openaire.eu/cookies-policy"
target="_blank">here</a>.
</p>
<br />
<h4>
What is the work ownership of information
created in Argos?
</h4>
<p>
Unless there are any contractual or institutional agreements stating ownership of
outputs produced in the context of a project/ collaboration, owners of Argos outputs
are DMP contributors, i.e. DMP owners and DMP members, who have been involved with
writing the DMP.
</p>
<br />
<h4>
Which are the terms and policies of Argos?
</h4>
<p>
Please find all information about Argos Terms of Service and Privacy, <a
href="https://argos.openaire.eu/terms-and-conditions" target="_blank">here</a>.
Additionally, you may find Argos Cookies policy, <a href="https://argos.openaire.eu/cookies-policy"
target="_blank">here</a>.
</p>
<!-- <h4>What is ARGOS?</h4>
<p>ARGOS is an open and collaborative platform for creating Data Management Plans according to funders or institutions open science policy requirements. ARGOS technology provides solutions and workflows that connect the DMP to the actual data where they are stored and link to other useful information such as publications and funding information, thus enabling the association between research outputs and processes and leading to the creation of coherent/ complete research entities. ARGOS is comprised of two major features: the ARGOS template and the Dataset Description.</p>
<br />
<h4>Who is it for?</h4>
<p>ARGOS is inclusive to all researchers and research coordinators who may use the tool to create machine actionable DMPs. Funding and Research Performing Organizations as well as research communities may use the tool and create Dataset Description templates according to their preferences or requirements. ARGOS may be used for purposes other than research projects, such as on the occasion of trainings that familiarise scientists with the data management planning process.</p>
<br />
<h4>How can I use it?</h4>
<p>ARGOS is comprised of two main functionalities: DMP templates and Dataset Descriptions. Additional entities are Projects that link to funders and grants information.<br />ARGOS can be used for:
<br /><br /><u style="padding:20px;"> A. viewing/ consulting publicly released DMPs and Dataset Descriptions or Projects corresponding to DMPs</u><br /><br />
The tool offers options for publishing DMPs in two modes, private or public. To view public DMPs and Dataset Descriptions, there is no need for login to the platform.
<br /><br /><u style="padding:20px;"> B. writing and publishing a DMP</u><br /><br />
The tool helps researchers comply with mandates that may be attached to their grant proposal/ project funding. They can therefore choose from the most suitable to their needs template from the Dataset Descriptions collection and proceed with answering the corresponding questions. Once finalized, researchers can assign a DOI to their DMP, publish and eventually cite it.
<br /><br /><u style="padding:20px;"> C. practicing in writing DMPs and Dataset Descriptions</u><br /><br />
Given that Data Management Planning reflects the data management lifecycle and in accordance/ response to the increasing demand of the global scientific/ research community for training in Research Data Management (RDM), ARGOS may be used for educational purposes. Examples may refer to embedding DMP and DMP tools in specific curricula or even utilization of the tool for researchers and students familiarization with the concept and process, as part of library instructions sessions.
</p>
<br />
<h4>What is the difference between the “Wizard” and the “Expert” modes/ features?</h4>
<p>There are two ways of creating a DMP: the “Wizard” and the “Expert”. The DMP Wizard combines the most necessary fields of the DMP template and the Data Description template. It is an easy way of starting a DMP and completing a Dataset Description. The downside when using the Wizard is that it only supports one Dataset Description. To add more datasets documentation, someone must open the DMP from DMP Expert.
<br />DMP expert contains extra fields for describing the project, grant, funding, contributors and associations between DMP authors, etc. DMP Expert is advised for use when further modification and personalization is to take place.
</p> -->
</div>
</div>
</div>
</body>
</html>

View File

@ -1,94 +0,0 @@
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;500&display=swap" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous"></script>
<style type="text/css">
h1 {
text-align: center;
margin: 2rem 0 1rem 0;
font-size: 3.3125rem;
line-height: 1.15;
font-weight: 300;
color: rgba(0,0,0,.87);
}
h4 {
font-size: 1rem;
line-height: 1em;
font-weight: 500;
color: rgba(0,0,0,.87);
}
@media (min-width: 576px) {
.container {
max-width:540px
}
}
@media (min-width: 768px) {
.container {
max-width:720px
}
}
@media (min-width: 992px) {
.container {
max-width:960px
}
}
@media (min-width: 1244px) {
.container {
max-width:1204px!important
}
}
body {
font-family: Roboto,Helvetica,Arial,sans-serif;
font-size: 1rem;
font-weight: 300;
line-height: 1.5;
color: #212121;
text-align: left;
background: transparent;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Glossary</h1>
</div>
</div>
<div class="row">
<div class="col-md-12">
<h4>DMP</h4>
<p>A DMP - short for Data Management Plan - is a document describing the processes that the data have undergone and the tools used for their handling and storage during a research lifecycle. Most importantly, DMPs secure provenance and enable re-use of data by appointing data managers and by including information on how data can be re-used by others in the future. Therefore, a DMP is a living document which is modified according to the data developments of a project before its completed and handed over at the end of the project.
Public funders increasingly contain DMPs in their grant proposals or policy funding requirements. A good paradigm is the European Commission demands for the production and delivery of DMPs for projects funded under the Horizon 2020 Funding Programme. On that note, and to encourage good data management practices uptake, many European institutions include DMPs in post-graduate researchers policies and offer relevant support to staff and students.
</p>
<h4>DMP template</h4>
<p>DMP template contains general but vital information about the name and the duration of the project that the DMP corresponds to, the contributing organisations and individuals as well as the datasets that are under the Dataset Description section. It also offers the possibility of describing datasets other than primary data generated, under “External References” section. A DMP template can have many Dataset Descriptions.
</p>
<h4>Dataset Description</h4>
<p>Dataset Description documents the management processes of datasets following funders or institutions requirements. A dataset description is essentially a questionnaire template with underlying added value services for interoperability and machine readability of information which is developed based on the given requirements. Management requirements differ from funder to funder and from institution to institution, hence the growing collection of Dataset Descriptions to select from.
Moreover, a Dataset Description links to the documentation of one dataset, hence a DMP template may contain more than one dataset descriptions on the occasion when multiple datasets were used during the project. When documentation of some of the projects datasets falls under additional requirements (e.g. projects receiving multiple grants from different sources), there is the possibility of describing datasets with more than one Dataset Description template.
</p>
</div>
</div>
</div>
</body>
</html>

View File

@ -1,115 +0,0 @@
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous"></script>
<style type="text/css">
h1 {
text-align: center;
margin: 2rem 0 1rem 0;
font-size: 3.3125rem;
line-height: 1.15;
font-weight: 300;
color: rgba(0,0,0,.87);
}
ol {
padding-left: 2.5rem;
}
a {
color: #6aa4d9;
text-decoration: none;
background-color: transparent;
}
a:hover {
color: #2e75b6;
}
p a {
color: #23bcba;
}
@media (min-width: 576px) {
.container {
max-width:540px
}
}
@media (min-width: 768px) {
.container {
max-width:720px
}
}
@media (min-width: 992px) {
.container {
max-width:960px
}
}
@media (min-width: 1244px) {
.container {
max-width:1204px!important
}
}
body {
font-family: Roboto,Helvetica,Arial,sans-serif;
font-size: 1rem;
font-weight: 300;
line-height: 1.5;
color: #212121;
text-align: left;
background: transparent;
}
</style>
</head>
<body>
<div class="container terms-component">
<div class="row">
<div class="col-md-12">
<h1>Terms of Service</h1>
</div>
</div>
<div class="row">
<div class="col-md-12">
<p><span>The </span><span>OpenDMP</span><span>&nbsp;service was developed to provide a more flexible, </span><span>collaborative </span><span>environment with machine actionable solutions in writing, sharing and publishing Data Management Plans (DMPs). It is a product of </span><span>cooperation between </span><span>OpenAIRE </span><span>AMKE</span><span class="c0">&nbsp;and EUDAT CDI and is offered both as a software &ldquo;OpenDMP &#39;&#39; and as an online service under the name &ldquo;ARGOS&rdquo;. </span></p>
<p><span></span></p>
<ol>
<li><span><a href="https://code-repo.d4science.org/MaDgiK-CITE/argos">OpenDMP software</a></span><span>&nbsp;is offered under the Free Open Source Software license &nbsp;</span><span>Apache 2.0</span><span class="c0">, for further development and use by institutions and interested parties.</span></li>
<li><span><a href="https://argos.openaire.eu/">ARGOS</a></span><span>&nbsp;service</span><span>&nbsp;is offered by</span><span>&nbsp;</span><span>OpenAIRE</span><span>&nbsp;as </span><span>part of its mission to support Open Science in the European Research Area, focusing on information linking and contextualisation that enriches its </span><span class="c5"><a href="https://zenodo.org/record/2600275#.XZpJgUYzY2w">Research Graph</a></span><span>.</span><span class="c0">&nbsp;Use of ARGOS denotes agreement with the following terms:</span>
<ol>
<li><span>ARGOS is a software interface and a database with no storage capacity to store or preserve research data. The DMPs created are hosted in the </span><span>OpenAIRE </span><span>production environment for the sole purpose of exposing the DMP records once finalised (&ldquo;published&rdquo;). If assigned a DOI, the DMP records are linked to and preserved in Zenodo, the OpenAIRE&rsquo;s repository service. The ARGOS service is made available for use free-of-charge for research, educational and informational purposes.</span></li>
<li><span>Login to ARGOS is possible through a variety of external providers, among which Google, Facebook, Twitter, B2Access </span><span>and OpenAIRE Login</span><span>, that share information of their user profiles with ARGOS, </span><span>according to the rights that have been granted to the given provider by the user.</span><span>&nbsp;External email addresses that are used in invitations for collaborations are held in ARGOS database that stores information about only the </span><span class="c11">name</span><span>, </span><span class="c11">surname</span><span>&nbsp;</span><span>and </span><span class="c11">email address</span><span>&nbsp;</span><span>of the DMP creator and collaborator. &nbsp;Personal data is collected via the login option and via email invitations sent to external DMP contributors. This personal information as well as the activity of ARGOS users is used only for deriving usage metrics and assessing the service quality. They are stored in ARGOS database for as long as the account is active and they are accessible only from people in the team in charge of </span><span>quality and risk assessment</span><span>. </span><span>They will not be used for other purposes other than the ones stated in this document and they can be deleted at any time should the user claim a relevant request. </span><span>The aforementioned processes are also facilitated by the use of c</span><span>ookies</span><span>&nbsp;(see below the &ldquo;Cookie policy&rdquo;). </span></li>
<li><span>Data concerning DMP information will be used by OpenAIRE for research and development </span><span>purposes, </span><span>such as identifying DMP models, and for ensuring compliance with policy requirements and monitoring of DMPs uptake linked to OpenAIRE&rsquo;s Monitoring Dashboards and the Open Science Observatory.</span></li>
<li><span>The DMP Manager</span><span>, i.e. the person who creates and manages a DMP, and/ or the </span><span>contributor, i.e. the person who is invited to collaborate on a DMP, shall ensure that content is accurate and presented in a way that adheres to these </span><span>Terms of Service</span><span>&nbsp;and applicable laws, including, but not limited to, privacy, data protection and intellectual property rights.</span></li>
<li><span>ARGOS service is provided by OpenAIRE &ldquo;as is&rdquo;. Although OpenAIRE and its partners take measures for the availability, dependability, and accuracy of the service, access to ARGOS, utilisation of its features and preservation of the data deposited or produced by the service are not guaranteed. OpenAIRE cannot be held responsible </span><span>for any data loss regarding DMPs,</span><span>&nbsp;ethical or financial damage or any other direct or indirect impact that any failure of ARGOS service may have on its users. &nbsp;</span></li>
<li><span>ARGOS </span><span>users are exclusively responsible for their use of content, and shall hold OpenAIRE free and harmless in connection with their download and/or use.</span></li>
<li><span>OpenAIRE may not be held responsible for the content provided </span><span>or statements</span><span>&nbsp;made in Data Management Plans created and managed by its users. </span></li>
<li><span>All content is provided &ldquo;as-is&rdquo;. Users of content (&ldquo;Users&rdquo;) shall respect applicable license conditions. Download and use of content from ARGOS does not transfer any intellectual property rights in the content to the User.</span></li>
<li><span>In the case any content is reported as violating third party rights or other legal provisions, ARGOS reserves the right to remove the content from the service until the dispute is legally settled. Any such incidents should be reported at </span><span class="c5"><a href="mailto:noticeandtakedown@openaire.eu">noticeandtakedown@openaire.eu</a></span><span class="c0">&nbsp;</span></li>
<li><span>ARGOS users are held responsible for the data and information they provide in the service. Users may not add information, data or any other type of artifact that may be </span><span>malicious</span><span>, intentionally erroneous and potentially harmful for other ARGOS users, IPR owners and/or the general public.</span></li>
<li><span>In case a user of ARGOS identifies a potential </span><span>infringement</span><span>&nbsp;of copyright, </span><span>harmful</span><span>&nbsp;or </span><span>malicious </span><span>operation, function, code, information or data, shall inform OpenAIRE providing sufficient evidence for the identification of the case and the information and/or data challenged.</span></li>
<li><span>OpenAIRE reserves the right, without notice, at its sole discretion and without liability, (i) to alter or delete inappropriate content, and (ii) to restrict or remove User access where it considers that use of ARGOS interferes with its operations or violates these Terms of Service or applicable laws.</span></li>
<li><span>These Terms of Service are subject to change by OpenAIRE at any time and without notice, other than through posting the updated Terms of Service on the OpenAIRE website and indicating the version and date of last update.</span></li>
</ol>
</li>
</ol>
<p><span>For any questions or comments you may have about the current Terms of Service, please contact us: </span><span class="c5"><a href="mailto:argos@openaire.eu">argos@openaire.eu</a></span><span class="c0">&nbsp;</span></p>
</div>
</div>
</div>
</body>
</html>

View File

@ -1,29 +0,0 @@
datamanagementplanrequest.length.negative=table length cannot be negative
datamanagementplanrequest.offset.negative=table offset cannot be negative
grantTableRequest.periodStart.overlapping=Period Start cannot overlap Period End
grantTableRequest.offset.negative=table offset cannot be negative
grantTableRequest.length.negative=table length cannot be negative
datasetprofile.label.null=Dataset Profile Label cannot be null
project.startDate.overlapping=Period Start cannot overlap Period
dataset.public=Dataset Has Been Made Public
datamanagementplannewversion.version.notacceptable=There is already a newer version than the one you submitted
datamanagementplannewversion.version.notnext=The version you submitted is not the Subsequent value
project.external.edit = Editing External Projects Is Not Allowed
validation.empty=Value cannot be empty
validation.hashempty=Hash must be set
validation.lowerthanmin=Value must be larger than {value}
validation.largerthanmax=Value must be less than {value}
validation.invalidid=Not valid id
General_ItemNotFound=Item {0} of type {1} not found
Validation_Required={0} is required
Validation_OverPosting=Too much info
Validation_MaxLength={0} too long
Validation_UnexpectedValue=Unexpected value in field {0}
Validation_Unique= {0} must be unique
Validation.LowerThanMin= value must be equal or larger than {0}
Validation.LessThenEqual= value {0} must be equal or less than {1}
Validation.LargerThenEqual= value {0} must be equal or larger than {1}
Validation.MissingFields= missing fields: {0}
Validation.InvalidDescriptionTemplateMultiplicity= {0} can not be used
Validation.InvalidDescriptionTemplateMultiplicityOnDMP= Description Templates has multiplicity errors

View File

@ -1,16 +0,0 @@
datamanagementplanrequest.length.negative=Το μέγεθος του table δεν μπορει να ειναι αρνητικο
datamanagementplanrequest.offset.negative=Το offset του table δεν μπορει να ειναι αρνητικο
grantTableRequest.periodStart.overlapping=Η Αρχικη Περιοδος δεν μπορει να ειναι Μεγαλυτερη της τελικης
grantTableRequest.offset.negative=Το offset του table δεν μπορει να ειναι αρνητικο
grantTableRequest.length.negative=Το μέγεθος του table δεν μπορει να ειναι αρνητικο
datasetprofile.label.null=Το ονομα του ορισμου ενος Dataset δεν μπορει να ειναι κενο
project.startDate.overlapping=Η Αρχικη Περιοδος δεν μπορει να ειναι Μεγαλυτερη της τελικης
dataset.public=Το Dataset δημοσιοποιηθηκε σε ολους
project.external.edit = Δεν επιτρέπεται η επεξεργασία εξωτερικών Projects
validation.empty=el-Value cannot be empty
validation.hashempty=el-Hash must be set
validation.lowerthanmin=el-Value must be larger than {value}
validation.largerthanmax=el-Value must be less than {value}
validation.invalidid=el-Not valid id
General_ItemNotFound=el-Item {0} of type {1} not found

View File

@ -1,305 +0,0 @@
<!doctype html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Simple Transactional Email</title>
<style>
/* -------------------------------------
GLOBAL RESETS
------------------------------------- */
img {
border: none;
-ms-interpolation-mode: bicubic;
max-width: 100%; }
body {
background-color: #f6f6f6;
font-family: sans-serif;
-webkit-font-smoothing: antialiased;
font-size: 14px;
line-height: 1.4;
margin: 0;
padding: 0;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; }
table {
border-collapse: separate;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
width: 100%; }
table td {
font-family: sans-serif;
font-size: 14px;
vertical-align: top; }
/* -------------------------------------
BODY & CONTAINER
------------------------------------- */
.body {
background-color: #f6f6f6;
width: 100%; }
/* Set a max-width, and make it display as block so it will automatically stretch to that width, but will also shrink down on a phone or something */
.container {
display: block;
Margin: 0 auto !important;
/* makes it centered */
max-width: 580px;
padding: 10px;
width: 580px; }
/* This should also be a block element, so that it will fill 100% of the .container */
.content {
box-sizing: border-box;
display: block;
Margin: 0 auto;
max-width: 580px;
padding: 10px; }
/* -------------------------------------
HEADER, FOOTER, MAIN
------------------------------------- */
.main {
background: #ffffff;
border-radius: 3px;
width: 100%; }
.wrapper {
box-sizing: border-box;
padding: 20px; }
.content-block {
padding-bottom: 10px;
padding-top: 10px;
}
.footer {
clear: both;
Margin-top: 10px;
text-align: center;
width: 100%; }
.footer td,
.footer p,
.footer span,
.footer a {
color: #999999;
font-size: 12px;
text-align: center; }
/* -------------------------------------
TYPOGRAPHY
------------------------------------- */
h1,
h2,
h3,
h4 {
color: #000000;
font-family: sans-serif;
font-weight: 400;
line-height: 1.4;
margin: 0;
Margin-bottom: 30px; }
h1 {
font-size: 35px;
font-weight: 300;
text-align: center;
text-transform: capitalize; }
p,
ul,
ol {
font-family: sans-serif;
font-size: 14px;
font-weight: normal;
margin: 0;
Margin-bottom: 15px; }
p li,
ul li,
ol li {
list-style-position: inside;
margin-left: 5px; }
a {
color: #3498db;
text-decoration: underline; }
/* -------------------------------------
BUTTONS
------------------------------------- */
.btn {
box-sizing: border-box;
width: 100%; }
.btn > tbody > tr > td {
padding-bottom: 15px; }
.btn table {
width: auto; }
.btn table td {
background-color: #ffffff;
border-radius: 5px;
text-align: center; }
.btn a {
background-color: #ffffff;
border: solid 1px #3498db;
border-radius: 5px;
box-sizing: border-box;
color: #3498db;
cursor: pointer;
display: inline-block;
font-size: 14px;
font-weight: bold;
margin: 0;
padding: 12px 25px;
text-decoration: none;
text-transform: capitalize; }
.btn-primary table td {
background-color: #3498db; }
.btn-primary a {
background-color: #3498db;
border-color: #3498db;
color: #ffffff; }
/* -------------------------------------
OTHER STYLES THAT MIGHT BE USEFUL
------------------------------------- */
.last {
margin-bottom: 0; }
.first {
margin-top: 0; }
.align-center {
text-align: center; }
.align-right {
text-align: right; }
.align-left {
text-align: left; }
.clear {
clear: both; }
.mt0 {
margin-top: 0; }
.mb0 {
margin-bottom: 0; }
.preheader {
color: transparent;
display: none;
height: 0;
max-height: 0;
max-width: 0;
opacity: 0;
overflow: hidden;
mso-hide: all;
visibility: hidden;
width: 0; }
.powered-by a {
text-decoration: none; }
hr {
border: 0;
border-bottom: 1px solid #f6f6f6;
Margin: 20px 0; }
/* -------------------------------------
RESPONSIVE AND MOBILE FRIENDLY STYLES
------------------------------------- */
@media only screen and (max-width: 620px) {
table[class=body] h1 {
font-size: 28px !important;
margin-bottom: 10px !important; }
table[class=body] p,
table[class=body] ul,
table[class=body] ol,
table[class=body] td,
table[class=body] span,
table[class=body] a {
font-size: 16px !important; }
table[class=body] .wrapper,
table[class=body] .article {
padding: 10px !important; }
table[class=body] .content {
padding: 0 !important; }
table[class=body] .container {
padding: 0 !important;
width: 100% !important; }
table[class=body] .main {
border-left-width: 0 !important;
border-radius: 0 !important;
border-right-width: 0 !important; }
table[class=body] .btn table {
width: 100% !important; }
table[class=body] .btn a {
width: 100% !important; }
table[class=body] .img-responsive {
height: auto !important;
max-width: 100% !important;
width: auto !important; }}
/* -------------------------------------
PRESERVE THESE STYLES IN THE HEAD
------------------------------------- */
@media all {
.ExternalClass {
width: 100%; }
.ExternalClass,
.ExternalClass p,
.ExternalClass span,
.ExternalClass font,
.ExternalClass td,
.ExternalClass div {
line-height: 100%; }
.apple-link a {
color: inherit !important;
font-family: inherit !important;
font-size: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
text-decoration: none !important; }
.btn-primary table td:hover {
background-color: #34495e !important; }
.btn-primary a:hover {
background-color: #34495e !important;
border-color: #34495e !important; } }
</style>
</head>
<body class="">
<table border="0" cellpadding="0" cellspacing="0" class="body">
<tr>
<td>&nbsp;</td>
<td class="container">
<div class="content">
<!-- START CENTERED WHITE CONTAINER -->
<span class="preheader">This is preheader text. Some clients will show this text as a preview.</span>
<table class="main">
<!-- START MAIN CONTENT AREA -->
<tr>
<td class="wrapper">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<p>Dear {recipient},</p>
<p>You have been invited to collaborate to Data Management plan {dmpname} with role {dmprole}.</p>
<p>Click the button to redirect to {dmpname}.</p>
<table border="0" cellpadding="0" cellspacing="0" class="btn btn-primary">
<tbody>
<tr>
<td align="left">
<table border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td> <a href="{host}/plans/invitation/{invitationID}" target="_blank">Join</a> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</td>
</tr>
<!-- END MAIN CONTENT AREA -->
</table>
<!-- START FOOTER -->
<div class="footer">
</div>
<!-- END FOOTER -->
<!-- END CENTERED WHITE CONTAINER -->
</div>
</td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>

View File

@ -1,305 +0,0 @@
<!doctype html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Simple Transactional Email</title>
<style>
/* -------------------------------------
GLOBAL RESETS
------------------------------------- */
img {
border: none;
-ms-interpolation-mode: bicubic;
max-width: 100%; }
body {
background-color: #f6f6f6;
font-family: sans-serif;
-webkit-font-smoothing: antialiased;
font-size: 14px;
line-height: 1.4;
margin: 0;
padding: 0;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; }
table {
border-collapse: separate;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
width: 100%; }
table td {
font-family: sans-serif;
font-size: 14px;
vertical-align: top; }
/* -------------------------------------
BODY & CONTAINER
------------------------------------- */
.body {
background-color: #f6f6f6;
width: 100%; }
/* Set a max-width, and make it display as block so it will automatically stretch to that width, but will also shrink down on a phone or something */
.container {
display: block;
Margin: 0 auto !important;
/* makes it centered */
max-width: 580px;
padding: 10px;
width: 580px; }
/* This should also be a block element, so that it will fill 100% of the .container */
.content {
box-sizing: border-box;
display: block;
Margin: 0 auto;
max-width: 580px;
padding: 10px; }
/* -------------------------------------
HEADER, FOOTER, MAIN
------------------------------------- */
.main {
background: #ffffff;
border-radius: 3px;
width: 100%; }
.wrapper {
box-sizing: border-box;
padding: 20px; }
.content-block {
padding-bottom: 10px;
padding-top: 10px;
}
.footer {
clear: both;
Margin-top: 10px;
text-align: center;
width: 100%; }
.footer td,
.footer p,
.footer span,
.footer a {
color: #999999;
font-size: 12px;
text-align: center; }
/* -------------------------------------
TYPOGRAPHY
------------------------------------- */
h1,
h2,
h3,
h4 {
color: #000000;
font-family: sans-serif;
font-weight: 400;
line-height: 1.4;
margin: 0;
Margin-bottom: 30px; }
h1 {
font-size: 35px;
font-weight: 300;
text-align: center;
text-transform: capitalize; }
p,
ul,
ol {
font-family: sans-serif;
font-size: 14px;
font-weight: normal;
margin: 0;
Margin-bottom: 15px; }
p li,
ul li,
ol li {
list-style-position: inside;
margin-left: 5px; }
a {
color: #3498db;
text-decoration: underline; }
/* -------------------------------------
BUTTONS
------------------------------------- */
.btn {
box-sizing: border-box;
width: 100%; }
.btn > tbody > tr > td {
padding-bottom: 15px; }
.btn table {
width: auto; }
.btn table td {
background-color: #ffffff;
border-radius: 5px;
text-align: center; }
.btn a {
background-color: #ffffff;
border: solid 1px #3498db;
border-radius: 5px;
box-sizing: border-box;
color: #3498db;
cursor: pointer;
display: inline-block;
font-size: 14px;
font-weight: bold;
margin: 0;
padding: 12px 25px;
text-decoration: none;
text-transform: capitalize; }
.btn-primary table td {
background-color: #3498db; }
.btn-primary a {
background-color: #3498db;
border-color: #3498db;
color: #ffffff; }
/* -------------------------------------
OTHER STYLES THAT MIGHT BE USEFUL
------------------------------------- */
.last {
margin-bottom: 0; }
.first {
margin-top: 0; }
.align-center {
text-align: center; }
.align-right {
text-align: right; }
.align-left {
text-align: left; }
.clear {
clear: both; }
.mt0 {
margin-top: 0; }
.mb0 {
margin-bottom: 0; }
.preheader {
color: transparent;
display: none;
height: 0;
max-height: 0;
max-width: 0;
opacity: 0;
overflow: hidden;
mso-hide: all;
visibility: hidden;
width: 0; }
.powered-by a {
text-decoration: none; }
hr {
border: 0;
border-bottom: 1px solid #f6f6f6;
Margin: 20px 0; }
/* -------------------------------------
RESPONSIVE AND MOBILE FRIENDLY STYLES
------------------------------------- */
@media only screen and (max-width: 620px) {
table[class=body] h1 {
font-size: 28px !important;
margin-bottom: 10px !important; }
table[class=body] p,
table[class=body] ul,
table[class=body] ol,
table[class=body] td,
table[class=body] span,
table[class=body] a {
font-size: 16px !important; }
table[class=body] .wrapper,
table[class=body] .article {
padding: 10px !important; }
table[class=body] .content {
padding: 0 !important; }
table[class=body] .container {
padding: 0 !important;
width: 100% !important; }
table[class=body] .main {
border-left-width: 0 !important;
border-radius: 0 !important;
border-right-width: 0 !important; }
table[class=body] .btn table {
width: 100% !important; }
table[class=body] .btn a {
width: 100% !important; }
table[class=body] .img-responsive {
height: auto !important;
max-width: 100% !important;
width: auto !important; }}
/* -------------------------------------
PRESERVE THESE STYLES IN THE HEAD
------------------------------------- */
@media all {
.ExternalClass {
width: 100%; }
.ExternalClass,
.ExternalClass p,
.ExternalClass span,
.ExternalClass font,
.ExternalClass td,
.ExternalClass div {
line-height: 100%; }
.apple-link a {
color: inherit !important;
font-family: inherit !important;
font-size: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
text-decoration: none !important; }
.btn-primary table td:hover {
background-color: #34495e !important; }
.btn-primary a:hover {
background-color: #34495e !important;
border-color: #34495e !important; } }
</style>
</head>
<body class="">
<table border="0" cellpadding="0" cellspacing="0" class="body">
<tr>
<td>&nbsp;</td>
<td class="container">
<div class="content">
<!-- START CENTERED WHITE CONTAINER -->
<span class="preheader">This is preheader text. Some clients will show this text as a preview.</span>
<table class="main">
<!-- START MAIN CONTENT AREA -->
<tr>
<td class="wrapper">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<p>Dear {recipient},</p>
<p>You have been invited to co-develop the Template {templateName}.</p>
<p>Click the button to redirect to {templateName}.</p>
<table border="0" cellpadding="0" cellspacing="0" class="btn btn-primary">
<tbody>
<tr>
<td align="left">
<table border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td> <a href="{host}/dataset-profiles/{templateID}" target="_blank">{templateName}</a> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</td>
</tr>
<!-- END MAIN CONTENT AREA -->
</table>
<!-- START FOOTER -->
<div class="footer">
</div>
<!-- END FOOTER -->
<!-- END CENTERED WHITE CONTAINER -->
</div>
</td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,304 +0,0 @@
<!doctype html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Simple Transactional Email</title>
<style>
/* -------------------------------------
GLOBAL RESETS
------------------------------------- */
img {
border: none;
-ms-interpolation-mode: bicubic;
max-width: 100%; }
body {
background-color: #f6f6f6;
font-family: sans-serif;
-webkit-font-smoothing: antialiased;
font-size: 14px;
line-height: 1.4;
margin: 0;
padding: 0;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; }
table {
border-collapse: separate;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
width: 100%; }
table td {
font-family: sans-serif;
font-size: 14px;
vertical-align: top; }
/* -------------------------------------
BODY & CONTAINER
------------------------------------- */
.body {
background-color: #f6f6f6;
width: 100%; }
/* Set a max-width, and make it display as block so it will automatically stretch to that width, but will also shrink down on a phone or something */
.container {
display: block;
Margin: 0 auto !important;
/* makes it centered */
max-width: 580px;
padding: 10px;
width: 580px; }
/* This should also be a block element, so that it will fill 100% of the .container */
.content {
box-sizing: border-box;
display: block;
Margin: 0 auto;
max-width: 580px;
padding: 10px; }
/* -------------------------------------
HEADER, FOOTER, MAIN
------------------------------------- */
.main {
background: #ffffff;
border-radius: 3px;
width: 100%; }
.wrapper {
box-sizing: border-box;
padding: 20px; }
.content-block {
padding-bottom: 10px;
padding-top: 10px;
}
.footer {
clear: both;
Margin-top: 10px;
text-align: center;
width: 100%; }
.footer td,
.footer p,
.footer span,
.footer a {
color: #999999;
font-size: 12px;
text-align: center; }
/* -------------------------------------
TYPOGRAPHY
------------------------------------- */
h1,
h2,
h3,
h4 {
color: #000000;
font-family: sans-serif;
font-weight: 400;
line-height: 1.4;
margin: 0;
Margin-bottom: 30px; }
h1 {
font-size: 35px;
font-weight: 300;
text-align: center;
text-transform: capitalize; }
p,
ul,
ol {
font-family: sans-serif;
font-size: 14px;
font-weight: normal;
margin: 0;
Margin-bottom: 15px; }
p li,
ul li,
ol li {
list-style-position: inside;
margin-left: 5px; }
a {
color: #3498db;
text-decoration: underline; }
/* -------------------------------------
BUTTONS
------------------------------------- */
.btn {
box-sizing: border-box;
width: 100%; }
.btn > tbody > tr > td {
padding-bottom: 15px; }
.btn table {
width: auto; }
.btn table td {
background-color: #ffffff;
border-radius: 5px;
text-align: center; }
.btn a {
background-color: #ffffff;
border: solid 1px #3498db;
border-radius: 5px;
box-sizing: border-box;
color: #3498db;
cursor: pointer;
display: inline-block;
font-size: 14px;
font-weight: bold;
margin: 0;
padding: 12px 25px;
text-decoration: none;
text-transform: capitalize; }
.btn-primary table td {
background-color: #3498db; }
.btn-primary a {
background-color: #3498db;
border-color: #3498db;
color: #ffffff; }
/* -------------------------------------
OTHER STYLES THAT MIGHT BE USEFUL
------------------------------------- */
.last {
margin-bottom: 0; }
.first {
margin-top: 0; }
.align-center {
text-align: center; }
.align-right {
text-align: right; }
.align-left {
text-align: left; }
.clear {
clear: both; }
.mt0 {
margin-top: 0; }
.mb0 {
margin-bottom: 0; }
.preheader {
color: transparent;
display: none;
height: 0;
max-height: 0;
max-width: 0;
opacity: 0;
overflow: hidden;
mso-hide: all;
visibility: hidden;
width: 0; }
.powered-by a {
text-decoration: none; }
hr {
border: 0;
border-bottom: 1px solid #f6f6f6;
Margin: 20px 0; }
/* -------------------------------------
RESPONSIVE AND MOBILE FRIENDLY STYLES
------------------------------------- */
@media only screen and (max-width: 620px) {
table[class=body] h1 {
font-size: 28px !important;
margin-bottom: 10px !important; }
table[class=body] p,
table[class=body] ul,
table[class=body] ol,
table[class=body] td,
table[class=body] span,
table[class=body] a {
font-size: 16px !important; }
table[class=body] .wrapper,
table[class=body] .article {
padding: 10px !important; }
table[class=body] .content {
padding: 0 !important; }
table[class=body] .container {
padding: 0 !important;
width: 100% !important; }
table[class=body] .main {
border-left-width: 0 !important;
border-radius: 0 !important;
border-right-width: 0 !important; }
table[class=body] .btn table {
width: 100% !important; }
table[class=body] .btn a {
width: 100% !important; }
table[class=body] .img-responsive {
height: auto !important;
max-width: 100% !important;
width: auto !important; }}
/* -------------------------------------
PRESERVE THESE STYLES IN THE HEAD
------------------------------------- */
@media all {
.ExternalClass {
width: 100%; }
.ExternalClass,
.ExternalClass p,
.ExternalClass span,
.ExternalClass font,
.ExternalClass td,
.ExternalClass div {
line-height: 100%; }
.apple-link a {
color: inherit !important;
font-family: inherit !important;
font-size: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
text-decoration: none !important; }
.btn-primary table td:hover {
background-color: #34495e !important; }
.btn-primary a:hover {
background-color: #34495e !important;
border-color: #34495e !important; } }
</style>
</head>
<body class="">
<table border="0" cellpadding="0" cellspacing="0" class="body">
<tr>
<td>&nbsp;</td>
<td class="container">
<div class="content">
<!-- START CENTERED WHITE CONTAINER -->
<span class="preheader">This is preheader text. Some clients will show this text as a preview.</span>
<table class="main">
<!-- START MAIN CONTENT AREA -->
<tr>
<td class="wrapper">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<p>Dear {recipient},</p>
<p>{reasonName} just finalised the {name}.</p>
<table border="0" cellpadding="0" cellspacing="0" class="btn btn-primary">
<tbody>
<tr>
<td align="left">
<table border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td> <a href="{host}{path}/{id}" target="_blank">Click here to view it.</a> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</td>
</tr>
<!-- END MAIN CONTENT AREA -->
</table>
<!-- START FOOTER -->
<div class="footer">
</div>
<!-- END FOOTER -->
<!-- END CENTERED WHITE CONTAINER -->
</div>
</td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>

View File

@ -1,304 +0,0 @@
<!doctype html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Simple Transactional Email</title>
<style>
/* -------------------------------------
GLOBAL RESETS
------------------------------------- */
img {
border: none;
-ms-interpolation-mode: bicubic;
max-width: 100%; }
body {
background-color: #f6f6f6;
font-family: sans-serif;
-webkit-font-smoothing: antialiased;
font-size: 14px;
line-height: 1.4;
margin: 0;
padding: 0;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; }
table {
border-collapse: separate;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
width: 100%; }
table td {
font-family: sans-serif;
font-size: 14px;
vertical-align: top; }
/* -------------------------------------
BODY & CONTAINER
------------------------------------- */
.body {
background-color: #f6f6f6;
width: 100%; }
/* Set a max-width, and make it display as block so it will automatically stretch to that width, but will also shrink down on a phone or something */
.container {
display: block;
Margin: 0 auto !important;
/* makes it centered */
max-width: 580px;
padding: 10px;
width: 580px; }
/* This should also be a block element, so that it will fill 100% of the .container */
.content {
box-sizing: border-box;
display: block;
Margin: 0 auto;
max-width: 580px;
padding: 10px; }
/* -------------------------------------
HEADER, FOOTER, MAIN
------------------------------------- */
.main {
background: #ffffff;
border-radius: 3px;
width: 100%; }
.wrapper {
box-sizing: border-box;
padding: 20px; }
.content-block {
padding-bottom: 10px;
padding-top: 10px;
}
.footer {
clear: both;
Margin-top: 10px;
text-align: center;
width: 100%; }
.footer td,
.footer p,
.footer span,
.footer a {
color: #999999;
font-size: 12px;
text-align: center; }
/* -------------------------------------
TYPOGRAPHY
------------------------------------- */
h1,
h2,
h3,
h4 {
color: #000000;
font-family: sans-serif;
font-weight: 400;
line-height: 1.4;
margin: 0;
Margin-bottom: 30px; }
h1 {
font-size: 35px;
font-weight: 300;
text-align: center;
text-transform: capitalize; }
p,
ul,
ol {
font-family: sans-serif;
font-size: 14px;
font-weight: normal;
margin: 0;
Margin-bottom: 15px; }
p li,
ul li,
ol li {
list-style-position: inside;
margin-left: 5px; }
a {
color: #3498db;
text-decoration: underline; }
/* -------------------------------------
BUTTONS
------------------------------------- */
.btn {
box-sizing: border-box;
width: 100%; }
.btn > tbody > tr > td {
padding-bottom: 15px; }
.btn table {
width: auto; }
.btn table td {
background-color: #ffffff;
border-radius: 5px;
text-align: center; }
.btn a {
background-color: #ffffff;
border: solid 1px #3498db;
border-radius: 5px;
box-sizing: border-box;
color: #3498db;
cursor: pointer;
display: inline-block;
font-size: 14px;
font-weight: bold;
margin: 0;
padding: 12px 25px;
text-decoration: none;
text-transform: capitalize; }
.btn-primary table td {
background-color: #3498db; }
.btn-primary a {
background-color: #3498db;
border-color: #3498db;
color: #ffffff; }
/* -------------------------------------
OTHER STYLES THAT MIGHT BE USEFUL
------------------------------------- */
.last {
margin-bottom: 0; }
.first {
margin-top: 0; }
.align-center {
text-align: center; }
.align-right {
text-align: right; }
.align-left {
text-align: left; }
.clear {
clear: both; }
.mt0 {
margin-top: 0; }
.mb0 {
margin-bottom: 0; }
.preheader {
color: transparent;
display: none;
height: 0;
max-height: 0;
max-width: 0;
opacity: 0;
overflow: hidden;
mso-hide: all;
visibility: hidden;
width: 0; }
.powered-by a {
text-decoration: none; }
hr {
border: 0;
border-bottom: 1px solid #f6f6f6;
Margin: 20px 0; }
/* -------------------------------------
RESPONSIVE AND MOBILE FRIENDLY STYLES
------------------------------------- */
@media only screen and (max-width: 620px) {
table[class=body] h1 {
font-size: 28px !important;
margin-bottom: 10px !important; }
table[class=body] p,
table[class=body] ul,
table[class=body] ol,
table[class=body] td,
table[class=body] span,
table[class=body] a {
font-size: 16px !important; }
table[class=body] .wrapper,
table[class=body] .article {
padding: 10px !important; }
table[class=body] .content {
padding: 0 !important; }
table[class=body] .container {
padding: 0 !important;
width: 100% !important; }
table[class=body] .main {
border-left-width: 0 !important;
border-radius: 0 !important;
border-right-width: 0 !important; }
table[class=body] .btn table {
width: 100% !important; }
table[class=body] .btn a {
width: 100% !important; }
table[class=body] .img-responsive {
height: auto !important;
max-width: 100% !important;
width: auto !important; }}
/* -------------------------------------
PRESERVE THESE STYLES IN THE HEAD
------------------------------------- */
@media all {
.ExternalClass {
width: 100%; }
.ExternalClass,
.ExternalClass p,
.ExternalClass span,
.ExternalClass font,
.ExternalClass td,
.ExternalClass div {
line-height: 100%; }
.apple-link a {
color: inherit !important;
font-family: inherit !important;
font-size: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
text-decoration: none !important; }
.btn-primary table td:hover {
background-color: #34495e !important; }
.btn-primary a:hover {
background-color: #34495e !important;
border-color: #34495e !important; } }
</style>
</head>
<body class="">
<table border="0" cellpadding="0" cellspacing="0" class="body">
<tr>
<td>&nbsp;</td>
<td class="container">
<div class="content">
<!-- START CENTERED WHITE CONTAINER -->
<span class="preheader">This is preheader text. Some clients will show this text as a preview.</span>
<table class="main">
<!-- START MAIN CONTENT AREA -->
<tr>
<td class="wrapper">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<p>Dear {recipient},</p>
<p>{reasonName} just made changes and finalised the {name}.</p>
<table border="0" cellpadding="0" cellspacing="0" class="btn btn-primary">
<tbody>
<tr>
<td align="left">
<table border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td> <a href="{host}{path}/{id}" target="_blank">Click here to view it.</a> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</td>
</tr>
<!-- END MAIN CONTENT AREA -->
</table>
<!-- START FOOTER -->
<div class="footer">
</div>
<!-- END FOOTER -->
<!-- END CENTERED WHITE CONTAINER -->
</div>
</td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>

View File

@ -1,304 +0,0 @@
<!doctype html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Simple Transactional Email</title>
<style>
/* -------------------------------------
GLOBAL RESETS
------------------------------------- */
img {
border: none;
-ms-interpolation-mode: bicubic;
max-width: 100%; }
body {
background-color: #f6f6f6;
font-family: sans-serif;
-webkit-font-smoothing: antialiased;
font-size: 14px;
line-height: 1.4;
margin: 0;
padding: 0;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; }
table {
border-collapse: separate;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
width: 100%; }
table td {
font-family: sans-serif;
font-size: 14px;
vertical-align: top; }
/* -------------------------------------
BODY & CONTAINER
------------------------------------- */
.body {
background-color: #f6f6f6;
width: 100%; }
/* Set a max-width, and make it display as block so it will automatically stretch to that width, but will also shrink down on a phone or something */
.container {
display: block;
Margin: 0 auto !important;
/* makes it centered */
max-width: 580px;
padding: 10px;
width: 580px; }
/* This should also be a block element, so that it will fill 100% of the .container */
.content {
box-sizing: border-box;
display: block;
Margin: 0 auto;
max-width: 580px;
padding: 10px; }
/* -------------------------------------
HEADER, FOOTER, MAIN
------------------------------------- */
.main {
background: #ffffff;
border-radius: 3px;
width: 100%; }
.wrapper {
box-sizing: border-box;
padding: 20px; }
.content-block {
padding-bottom: 10px;
padding-top: 10px;
}
.footer {
clear: both;
Margin-top: 10px;
text-align: center;
width: 100%; }
.footer td,
.footer p,
.footer span,
.footer a {
color: #999999;
font-size: 12px;
text-align: center; }
/* -------------------------------------
TYPOGRAPHY
------------------------------------- */
h1,
h2,
h3,
h4 {
color: #000000;
font-family: sans-serif;
font-weight: 400;
line-height: 1.4;
margin: 0;
Margin-bottom: 30px; }
h1 {
font-size: 35px;
font-weight: 300;
text-align: center;
text-transform: capitalize; }
p,
ul,
ol {
font-family: sans-serif;
font-size: 14px;
font-weight: normal;
margin: 0;
Margin-bottom: 15px; }
p li,
ul li,
ol li {
list-style-position: inside;
margin-left: 5px; }
a {
color: #3498db;
text-decoration: underline; }
/* -------------------------------------
BUTTONS
------------------------------------- */
.btn {
box-sizing: border-box;
width: 100%; }
.btn > tbody > tr > td {
padding-bottom: 15px; }
.btn table {
width: auto; }
.btn table td {
background-color: #ffffff;
border-radius: 5px;
text-align: center; }
.btn a {
background-color: #ffffff;
border: solid 1px #3498db;
border-radius: 5px;
box-sizing: border-box;
color: #3498db;
cursor: pointer;
display: inline-block;
font-size: 14px;
font-weight: bold;
margin: 0;
padding: 12px 25px;
text-decoration: none;
text-transform: capitalize; }
.btn-primary table td {
background-color: #3498db; }
.btn-primary a {
background-color: #3498db;
border-color: #3498db;
color: #ffffff; }
/* -------------------------------------
OTHER STYLES THAT MIGHT BE USEFUL
------------------------------------- */
.last {
margin-bottom: 0; }
.first {
margin-top: 0; }
.align-center {
text-align: center; }
.align-right {
text-align: right; }
.align-left {
text-align: left; }
.clear {
clear: both; }
.mt0 {
margin-top: 0; }
.mb0 {
margin-bottom: 0; }
.preheader {
color: transparent;
display: none;
height: 0;
max-height: 0;
max-width: 0;
opacity: 0;
overflow: hidden;
mso-hide: all;
visibility: hidden;
width: 0; }
.powered-by a {
text-decoration: none; }
hr {
border: 0;
border-bottom: 1px solid #f6f6f6;
Margin: 20px 0; }
/* -------------------------------------
RESPONSIVE AND MOBILE FRIENDLY STYLES
------------------------------------- */
@media only screen and (max-width: 620px) {
table[class=body] h1 {
font-size: 28px !important;
margin-bottom: 10px !important; }
table[class=body] p,
table[class=body] ul,
table[class=body] ol,
table[class=body] td,
table[class=body] span,
table[class=body] a {
font-size: 16px !important; }
table[class=body] .wrapper,
table[class=body] .article {
padding: 10px !important; }
table[class=body] .content {
padding: 0 !important; }
table[class=body] .container {
padding: 0 !important;
width: 100% !important; }
table[class=body] .main {
border-left-width: 0 !important;
border-radius: 0 !important;
border-right-width: 0 !important; }
table[class=body] .btn table {
width: 100% !important; }
table[class=body] .btn a {
width: 100% !important; }
table[class=body] .img-responsive {
height: auto !important;
max-width: 100% !important;
width: auto !important; }}
/* -------------------------------------
PRESERVE THESE STYLES IN THE HEAD
------------------------------------- */
@media all {
.ExternalClass {
width: 100%; }
.ExternalClass,
.ExternalClass p,
.ExternalClass span,
.ExternalClass font,
.ExternalClass td,
.ExternalClass div {
line-height: 100%; }
.apple-link a {
color: inherit !important;
font-family: inherit !important;
font-size: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
text-decoration: none !important; }
.btn-primary table td:hover {
background-color: #34495e !important; }
.btn-primary a:hover {
background-color: #34495e !important;
border-color: #34495e !important; } }
</style>
</head>
<body class="">
<table border="0" cellpadding="0" cellspacing="0" class="body">
<tr>
<td>&nbsp;</td>
<td class="container">
<div class="content">
<!-- START CENTERED WHITE CONTAINER -->
<span class="preheader">This is preheader text. Some clients will show this text as a preview.</span>
<table class="main">
<!-- START MAIN CONTENT AREA -->
<tr>
<td class="wrapper">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<p>Dear {recipient},</p>
<p>{reasonName} just made changes to the {name}.</p>
<table border="0" cellpadding="0" cellspacing="0" class="btn btn-primary">
<tbody>
<tr>
<td align="left">
<table border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td> <a href="{host}{path}/{id}" target="_blank">Click here to view it.</a> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</td>
</tr>
<!-- END MAIN CONTENT AREA -->
</table>
<!-- START FOOTER -->
<div class="footer">
</div>
<!-- END FOOTER -->
<!-- END CENTERED WHITE CONTAINER -->
</div>
</td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>

View File

@ -1,304 +0,0 @@
<!doctype html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Simple Transactional Email</title>
<style>
/* -------------------------------------
GLOBAL RESETS
------------------------------------- */
img {
border: none;
-ms-interpolation-mode: bicubic;
max-width: 100%; }
body {
background-color: #f6f6f6;
font-family: sans-serif;
-webkit-font-smoothing: antialiased;
font-size: 14px;
line-height: 1.4;
margin: 0;
padding: 0;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; }
table {
border-collapse: separate;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
width: 100%; }
table td {
font-family: sans-serif;
font-size: 14px;
vertical-align: top; }
/* -------------------------------------
BODY & CONTAINER
------------------------------------- */
.body {
background-color: #f6f6f6;
width: 100%; }
/* Set a max-width, and make it display as block so it will automatically stretch to that width, but will also shrink down on a phone or something */
.container {
display: block;
Margin: 0 auto !important;
/* makes it centered */
max-width: 580px;
padding: 10px;
width: 580px; }
/* This should also be a block element, so that it will fill 100% of the .container */
.content {
box-sizing: border-box;
display: block;
Margin: 0 auto;
max-width: 580px;
padding: 10px; }
/* -------------------------------------
HEADER, FOOTER, MAIN
------------------------------------- */
.main {
background: #ffffff;
border-radius: 3px;
width: 100%; }
.wrapper {
box-sizing: border-box;
padding: 20px; }
.content-block {
padding-bottom: 10px;
padding-top: 10px;
}
.footer {
clear: both;
Margin-top: 10px;
text-align: center;
width: 100%; }
.footer td,
.footer p,
.footer span,
.footer a {
color: #999999;
font-size: 12px;
text-align: center; }
/* -------------------------------------
TYPOGRAPHY
------------------------------------- */
h1,
h2,
h3,
h4 {
color: #000000;
font-family: sans-serif;
font-weight: 400;
line-height: 1.4;
margin: 0;
Margin-bottom: 30px; }
h1 {
font-size: 35px;
font-weight: 300;
text-align: center;
text-transform: capitalize; }
p,
ul,
ol {
font-family: sans-serif;
font-size: 14px;
font-weight: normal;
margin: 0;
Margin-bottom: 15px; }
p li,
ul li,
ol li {
list-style-position: inside;
margin-left: 5px; }
a {
color: #3498db;
text-decoration: underline; }
/* -------------------------------------
BUTTONS
------------------------------------- */
.btn {
box-sizing: border-box;
width: 100%; }
.btn > tbody > tr > td {
padding-bottom: 15px; }
.btn table {
width: auto; }
.btn table td {
background-color: #ffffff;
border-radius: 5px;
text-align: center; }
.btn a {
background-color: #ffffff;
border: solid 1px #3498db;
border-radius: 5px;
box-sizing: border-box;
color: #3498db;
cursor: pointer;
display: inline-block;
font-size: 14px;
font-weight: bold;
margin: 0;
padding: 12px 25px;
text-decoration: none;
text-transform: capitalize; }
.btn-primary table td {
background-color: #3498db; }
.btn-primary a {
background-color: #3498db;
border-color: #3498db;
color: #ffffff; }
/* -------------------------------------
OTHER STYLES THAT MIGHT BE USEFUL
------------------------------------- */
.last {
margin-bottom: 0; }
.first {
margin-top: 0; }
.align-center {
text-align: center; }
.align-right {
text-align: right; }
.align-left {
text-align: left; }
.clear {
clear: both; }
.mt0 {
margin-top: 0; }
.mb0 {
margin-bottom: 0; }
.preheader {
color: transparent;
display: none;
height: 0;
max-height: 0;
max-width: 0;
opacity: 0;
overflow: hidden;
mso-hide: all;
visibility: hidden;
width: 0; }
.powered-by a {
text-decoration: none; }
hr {
border: 0;
border-bottom: 1px solid #f6f6f6;
Margin: 20px 0; }
/* -------------------------------------
RESPONSIVE AND MOBILE FRIENDLY STYLES
------------------------------------- */
@media only screen and (max-width: 620px) {
table[class=body] h1 {
font-size: 28px !important;
margin-bottom: 10px !important; }
table[class=body] p,
table[class=body] ul,
table[class=body] ol,
table[class=body] td,
table[class=body] span,
table[class=body] a {
font-size: 16px !important; }
table[class=body] .wrapper,
table[class=body] .article {
padding: 10px !important; }
table[class=body] .content {
padding: 0 !important; }
table[class=body] .container {
padding: 0 !important;
width: 100% !important; }
table[class=body] .main {
border-left-width: 0 !important;
border-radius: 0 !important;
border-right-width: 0 !important; }
table[class=body] .btn table {
width: 100% !important; }
table[class=body] .btn a {
width: 100% !important; }
table[class=body] .img-responsive {
height: auto !important;
max-width: 100% !important;
width: auto !important; }}
/* -------------------------------------
PRESERVE THESE STYLES IN THE HEAD
------------------------------------- */
@media all {
.ExternalClass {
width: 100%; }
.ExternalClass,
.ExternalClass p,
.ExternalClass span,
.ExternalClass font,
.ExternalClass td,
.ExternalClass div {
line-height: 100%; }
.apple-link a {
color: inherit !important;
font-family: inherit !important;
font-size: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
text-decoration: none !important; }
.btn-primary table td:hover {
background-color: #34495e !important; }
.btn-primary a:hover {
background-color: #34495e !important;
border-color: #34495e !important; } }
</style>
</head>
<body class="">
<table border="0" cellpadding="0" cellspacing="0" class="body">
<tr>
<td>&nbsp;</td>
<td class="container">
<div class="content">
<!-- START CENTERED WHITE CONTAINER -->
<span class="preheader">This is preheader text. Some clients will show this text as a preview.</span>
<table class="main">
<!-- START MAIN CONTENT AREA -->
<tr>
<td class="wrapper">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<p>Dear {recipient},</p>
<p>{reasonName} just publish the {name}.</p>
<table border="0" cellpadding="0" cellspacing="0" class="btn btn-primary">
<tbody>
<tr>
<td align="left">
<table border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td> <a href="{host}{path}/{id}" target="_blank">Click here to view it.</a> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</td>
</tr>
<!-- END MAIN CONTENT AREA -->
</table>
<!-- START FOOTER -->
<div class="footer">
</div>
<!-- END FOOTER -->
<!-- END CENTERED WHITE CONTAINER -->
</div>
</td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>

View File

@ -1,80 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<externalUrls>
<registries>
<urls>
<urlConfig>
<url></url>
<ordinal>1</ordinal>
</urlConfig>
</urls>
<fetchMode>ALL</fetchMode>
</registries>
<repositories>
<urls>
<urlConfig>
<url>https://eestore.paas2.uninett.no/api/datarepo/</url>
<ordinal>1</ordinal>
</urlConfig>
</urls>
<fetchMode>ALL</fetchMode>
</repositories>
<services>
<urls>
<urlConfig>
<url></url>
<ordinal>1</ordinal>
</urlConfig>
</urls>
<fetchMode>ALL</fetchMode>
</services>
<researchers>
<urls>
<urlConfig>
<url></url>
<ordinal>1</ordinal>
</urlConfig>
</urls>
<fetchMode>ALL</fetchMode>
</researchers>
<organisations>
<urls>
<urlConfig>
<url></url>
<ordinal>1</ordinal>
</urlConfig>
</urls>
<fetchMode>ALL</fetchMode>
</organisations>
</externalUrls>

View File

@ -1,48 +0,0 @@
##########################Security##########################################
#security.portmapping.http = 7081
#security.portmapping.https = 7444
##########################/Security########################################
##########################Persistence##########################################
persistence.jdbc.driver = org.postgresql.Driver
persistence.jdbc.url = jdbc:postgresql://host:port/DB_NAME
persistence.dbusername = USE-a-VALID-USER
persistence.dbpassword = USE-a-VALID-PASS
##########################/Persistence##########################################
###################Allowed Proxy Service Host ############################
proxy.allowed.host = https://eestore.paas2.uninett.no
#######################################################
########################Persistence/Hibernate Generic#############################
persistence.hibernate.show_sql = false
persistence.hibernate.hbm2dll = validate
persistence.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
#persistence.hibernate.dialect = org.hibernate.spatial.dialect.postgis.PostgisDialect
########################Persistence/Hibernate Generic#############################
########################Persistence/Hibernate/Batch##############################
persistence.hibernate.jdbc.batch_size = 30
persistence.hibernate.order_inserts = true
persistence.hibernate.order_updates = true
persistence.hibernate.batch_versioned_data = true
persistence.hibernate.jdbc.batch_versioned_data = DELAYED_ACQUISITION_AND_RELEASE_AFTER_TRANSACTION
########################Persistence/Hibernate/Batch##############################
########################Persistence/Hibernate/Connection pool####################
persistence.hibernate.connectionpool.provider_class = org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider
persistence.hibernate.connectionpool.c3p0.min_size = 5
persistence.hibernate.connectionpool.c3p0.max_size = 100
persistence.hibernate.connectionpool.c3p0.timeout = 0
persistence.hibernate.connectionpool.c3p0.max_statements = 50
persistence.hibernate.connectionpool.c3p0.acquire_retry_attempts = 30
persistence.hibernate.connectionpool.c3p0.acquire_retry_delay = 1000
persistence.hibernate.connectionpool.c3p0.idle_test_period = 3000
persistence.hibernate.connectionpool.c3p0.break_after_acquire_failure = false
persistence.hibernate.connectionpool.c3p0.idle_connection_test_period = 3600
persistence.hibernate.connectionpool.c3p0.test_connection_on_checkin = true
persistence.hibernate.connectionpool.c3p0.test_connection_on_checkout = false
persistence.hibernate.connectionpool.c3p0.preferred_test_query = select 1
########################Persistence/Hibernate/Connection pool####################

View File

@ -9,13 +9,16 @@
"projectType": "application",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"builder": "@angular-devkit/build-angular:application",
"options": {
"outputPath": "dist",
"index": "src/index.html",
"main": "src/main.ts",
"outputPath": {
"base": "dist"
},
"index": "src/index.html",
"tsConfig": "src/tsconfig.app.json",
"polyfills": "src/polyfills.ts",
"polyfills": [
"src/polyfills.ts"
],
"assets": [
"src/assets",
"src/favicon.ico",
@ -31,13 +34,17 @@
"scripts": [
"node_modules/cookieconsent/build/cookieconsent.min.js",
"node_modules/tinymce/tinymce.min.js"
],
"vendorChunk": true,
"extractLicenses": false,
"buildOptimizer": false,
],
"extractLicenses": false,
"sourceMap": true,
"optimization": false,
"namedChunks": true
"namedChunks": true,
"browser": "src/main.ts",
"stylePreprocessorOptions": {
"includePaths": [
"."
]
}
},
"configurations": {
"production": {
@ -51,9 +58,7 @@
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"extractLicenses": true,
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
@ -72,9 +77,7 @@
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"extractLicenses": true,
"fileReplacements": [
{
"replace": "src/environments/environment.ts",

View File

@ -13,13 +13,13 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^17.3.3",
"@angular/common": "^17.3.3",
"@angular/compiler": "^17.3.3",
"@angular/core": "^17.3.3",
"@angular/forms": "^17.3.3",
"@angular/material-moment-adapter": "^17.3.3",
"@angular/platform-browser": "^17.3.3",
"@angular/animations": "^18.0.1",
"@angular/common": "^18.0.1",
"@angular/compiler": "^18.0.1",
"@angular/core": "^18.0.1",
"@angular/forms": "^18.0.1",
"@angular/material-moment-adapter": "^18.0.1",
"@angular/platform-browser": "^18.0.1",
"@kolkov/angular-editor": "^2.1.0",
"@ngx-translate/core": "^15.0.0",
"@ngx-translate/http-loader": "^8.0.0",
@ -30,17 +30,17 @@
"dragula": "^3.7.3",
"file-saver": "^2.0.5",
"keycloak-angular": "^15.2.1",
"keycloak-js": "^24.0.2",
"keycloak-js": "^24.0.5",
"moment": "^2.30.1",
"moment-timezone": "^0.5.45",
"ng-dialog-animation": "^9.0.4",
"ng2-dragula": "^5.0.1",
"ngx-colors": "^3.5.3",
"ngx-cookie-service": "^17.1.0",
"ng2-dragula": "^5.1.0",
"ngx-colors": "^3.6.0",
"ngx-cookie-service": "^18.0.0",
"ngx-cookieconsent": "^6.0.0",
"ngx-dropzone": "^3.0.0",
"ngx-guided-tour": "^2.0.1",
"ngx-matomo-client": "^6.1.2",
"ngx-matomo-client": "^6.2.0",
"rxjs": "^7.4.0",
"tinymce": "^6.7.0",
"ts-simple-nameof": "^1.3.1",
@ -48,21 +48,21 @@
"zone.js": "~0.14.4"
},
"devDependencies": {
"@angular-devkit/build-angular": "^17.3.3",
"@angular/cdk": "^17.3.3",
"@angular/cli": "17.3.3",
"@angular/compiler-cli": "^17.3.3",
"@angular/language-service": "^17.3.3",
"@angular/material": "^17.3.3",
"@angular/platform-browser-dynamic": "^17.3.3",
"@angular/router": "^17.3.3",
"@types/dragula": "^3.7.4",
"@angular-devkit/build-angular": "^18.0.2",
"@angular/cdk": "^18.0.1",
"@angular/cli": "18.0.2",
"@angular/compiler-cli": "^18.0.1",
"@angular/language-service": "^18.0.1",
"@angular/material": "^18.0.1",
"@angular/platform-browser-dynamic": "^18.0.1",
"@angular/router": "^18.0.1",
"@types/dragula": "^3.7.5",
"@types/file-saver": "^2.0.7",
"@types/moment-timezone": "^0.5.13",
"@types/node": "^20.12.5",
"@types/node": "^20.14.1",
"codelyzer": "^6.0.2",
"ts-node": "~10.9.2",
"tslint": "~6.1.0",
"typescript": "^5.2.0"
"typescript": "^5.4.5"
}
}
}

View File

@ -1,5 +1,5 @@
import { OverlayModule } from '@angular/cdk/overlay';
import { HttpClientModule } from '@angular/common/http';
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
import { APP_INITIALIZER, LOCALE_ID, NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MAT_MOMENT_DATE_FORMATS, MatMomentDateModule } from '@angular/material-moment-adapter';
@ -115,77 +115,71 @@ export function InstallationConfigurationFactory(appConfig: ConfigurationService
}
@NgModule({
imports: [
BrowserModule,
BrowserAnimationsModule,
KeycloakAngularModule,
CoreServiceModule.forRoot(),
CoreAnnotationServiceModule.forRoot(),
CoreNotificationServiceModule.forRoot(),
AppRoutingModule,
CommonUiModule,
TranslateModule.forRoot({
compiler: { provide: TranslateCompiler, useClass: OpenDMPCustomTranslationCompiler },
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [LanguageHttpService]
}
}),
HttpClientModule,
OverlayModule,
CommonHttpModule,
MatMomentDateModule,
LoginModule,
//Ui
NotificationModule,
// BreadcrumbModule,
ReactiveFormsModule,
FormsModule,
NavbarModule,
SidebarModule,
NgcCookieConsentModule.forRoot(cookieConfig),
DepositOauth2DialogModule,
GuidedTourModule.forRoot(),
DragulaModule.forRoot(),
NgxMatomoModule.forRoot({
mode: MatomoInitializationMode.AUTO_DEFERRED,
})
],
declarations: [
AppComponent,
ReloadHelperComponent
],
providers: [
ConfigurationService,
{
provide: APP_INITIALIZER,
useFactory: InstallationConfigurationFactory,
deps: [ConfigurationService, KeycloakService, AuthService, LanguageService],
multi: true
},
{
provide: MAT_DATE_LOCALE,
deps: [CultureService],
useFactory: (cultureService) => cultureService.getCurrentCulture().name
},
{ provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS },
{ provide: DateAdapter, useClass: MomentUtcDateAdapter },
{
provide: LOCALE_ID,
deps: [CultureService],
useFactory: (cultureService) => cultureService.getCurrentCulture().name
},
{
provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,
useValue: appearance
},
Title,
CookieService,
MatomoService,
AnalyticsService
],
bootstrap: [AppComponent]
})
@NgModule({ declarations: [
AppComponent,
ReloadHelperComponent
],
bootstrap: [AppComponent], imports: [BrowserModule,
BrowserAnimationsModule,
KeycloakAngularModule,
CoreServiceModule.forRoot(),
CoreAnnotationServiceModule.forRoot(),
CoreNotificationServiceModule.forRoot(),
AppRoutingModule,
CommonUiModule,
TranslateModule.forRoot({
compiler: { provide: TranslateCompiler, useClass: OpenDMPCustomTranslationCompiler },
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [LanguageHttpService]
}
}),
OverlayModule,
CommonHttpModule,
MatMomentDateModule,
LoginModule,
//Ui
NotificationModule,
// BreadcrumbModule,
ReactiveFormsModule,
FormsModule,
NavbarModule,
SidebarModule,
NgcCookieConsentModule.forRoot(cookieConfig),
DepositOauth2DialogModule,
GuidedTourModule.forRoot(),
DragulaModule.forRoot(),
NgxMatomoModule.forRoot({
mode: MatomoInitializationMode.AUTO_DEFERRED,
})], providers: [
ConfigurationService,
{
provide: APP_INITIALIZER,
useFactory: InstallationConfigurationFactory,
deps: [ConfigurationService, KeycloakService, AuthService, LanguageService],
multi: true
},
{
provide: MAT_DATE_LOCALE,
deps: [CultureService],
useFactory: (cultureService) => cultureService.getCurrentCulture().name
},
{ provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS },
{ provide: DateAdapter, useClass: MomentUtcDateAdapter },
{
provide: LOCALE_ID,
deps: [CultureService],
useFactory: (cultureService) => cultureService.getCurrentCulture().name
},
{
provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,
useValue: appearance
},
Title,
CookieService,
MatomoService,
AnalyticsService,
provideHttpClient(withInterceptorsFromDi())
] })
export class AppModule { }

View File

@ -29,6 +29,10 @@ export enum ResponseErrorCode {
MultipleTenantConfigurationTypeNotAllowed = 129,
TenantCodeExists = 130,
DmpNewVersionAlreadyCreatedDraft = 131,
DescriptionTemplateInactiveUser = 132,
DescriptionTemplateMissingUserContactInfo = 133,
DmpInactiveUser = 134,
DmpMissingUserContactInfo = 135,
// Notification & Annotation Errors
InvalidApiKey = 200,
@ -99,6 +103,14 @@ export class ResponseErrorCodeHelper {
return language.instant("GENERAL.BACKEND-ERRORS.TENANT-CODE-EXISTS");
case ResponseErrorCode.DmpNewVersionAlreadyCreatedDraft:
return language.instant("GENERAL.BACKEND-ERRORS.DMP-NEW-VERSION-ALREADY-CREATED-DRAFT");
case ResponseErrorCode.DescriptionTemplateInactiveUser:
return language.instant("GENERAL.BACKEND-ERRORS.DESCRIPTION-TEMPLATE-INACTIVE-USER");
case ResponseErrorCode.DescriptionTemplateMissingUserContactInfo:
return language.instant("GENERAL.BACKEND-ERRORS.DESCRIPTION-TEMPLATE-MISSING-USER-CONTACT-INFO");
case ResponseErrorCode.DmpInactiveUser:
return language.instant("GENERAL.BACKEND-ERRORS.DMP-INACTIVE-USER");
case ResponseErrorCode.DmpMissingUserContactInfo:
return language.instant("GENERAL.BACKEND-ERRORS.DMP-MISSING-USER-CONTACT-INFO");
case ResponseErrorCode.InvalidApiKey:
return language.instant("GENERAL.BACKEND-ERRORS.INVALID-API-KEY");
case ResponseErrorCode.StaleApiKey:

View File

@ -1,6 +1,6 @@
import { DatePipe } from '@angular/common';
import { Pipe, PipeTransform } from '@angular/core';
import * as moment from 'moment';
import moment from 'moment';
import 'moment-timezone';
@Pipe({

View File

@ -1,6 +1,6 @@
import { DatePipe } from '@angular/common';
import { Pipe, PipeTransform } from '@angular/core';
import * as moment from 'moment';
import moment from 'moment';
import 'moment-timezone';
import { TimezoneService } from '../services/timezone/timezone-service';

View File

@ -1,5 +1,5 @@
import { Pipe, PipeTransform } from '@angular/core';
import * as moment from 'moment';
import moment from 'moment';
import 'moment-timezone';
@Pipe({ name: 'timezoneInfoDisplay' })

View File

@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration';
import { Observable, of } from 'rxjs';
import { map } from 'rxjs/operators';
import * as moment from 'moment';
import moment from 'moment';
import { DefaultUserLocaleCultureLookup, DefaultUserLocaleTimezoneLookup } from '@app/core/query/default-user-locale.lookup';
import { TimezoneInfoDisplayPipe } from '@app/core/pipes/timezone-info-display.pipe';
import { CultureInfo } from '@app/core/model/culture-info';

View File

@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import * as moment from 'moment';
import moment from 'moment';
import 'moment-timezone';
import { Observable, Subject } from 'rxjs';

View File

@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
import { UserSettingPersist, UserSettingsInformation, UserSettings as UserSettingsObject } from '@app/core/model/user-settings/user-settings.model';
import { BaseService } from '@common/base/base.service';
import { Guid } from '@common/types/guid';
import * as moment from 'moment';
import moment from 'moment';
import { Moment } from 'moment';
import { Observable, Subject, of as observableOf } from 'rxjs';
import { map, takeUntil } from 'rxjs/operators';

View File

@ -23,7 +23,7 @@ import { HttpErrorResponse } from '@angular/common/http';
import { ResponseErrorCode } from '@app/core/common/enum/respone-error-code';
import { LoggingService } from '@app/core/services/logging/logging-service';
import { CultureInfo } from '@app/core/model/culture-info';
import * as moment from 'moment';
import moment from 'moment';
import { CultureService } from '@app/core/services/culture/culture-service';
import { LanguageService } from '@app/core/services/language/language.service';
import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration';

View File

@ -12,7 +12,7 @@ import { GuidedTour, Orientation } from '@app/library/guided-tour/guided-tour.co
import { GuidedTourService } from '@app/library/guided-tour/guided-tour.service';
import { BaseComponent } from '@common/base/base.component';
import { TranslateService } from '@ngx-translate/core';
import * as moment from 'moment';
import moment from 'moment';
import { CookieService } from 'ngx-cookie-service';
import { takeUntil } from 'rxjs/operators';
import { StartNewDescriptionDialogComponent } from '../description/start-new-description-dialog/start-new-description-dialog.component';

View File

@ -64,7 +64,11 @@
"SINGLE-TENANT-CONFIGURATION-PER-TYPE-SUPPORTED": "Could not process your request. Tenant Configuration already exists for this Tenant.",
"INCOMPATIBLE-TENANT-CONFIGURATION-TYPES": "Something went wrong while trying to update your tenant configurations. Please try again or contact your administrator.",
"MISSING-TOTP-TOKEN": "We could not process your request or the operation is unavailable. Please contact your administrator.",
"OVERLAPPING-TENANT-CONFIGURATION-NOTIFIER-LIST": "An error occurred due to overlapping configurations. Please try again or contact your administrator."
"OVERLAPPING-TENANT-CONFIGURATION-NOTIFIER-LIST": "An error occurred due to overlapping configurations. Please try again or contact your administrator.",
"DESCRIPTION-TEMPLATE-INACTIVE-USER": "This description template contains users that are not exist",
"DESCRIPTION-TEMPLATE-MISSING-USER-CONTACT-INFO": "This description template contains users that don't have contact info",
"DMP-INACTIVE-USER": "This plan contains users that are not exist",
"DMP-MISSING-USER-CONTACT-INFO": "This plan contains users that don't have contact info"
},
"FORM-VALIDATION-DISPLAY-DIALOG": {
"WARNING": "Warning!",

View File

@ -4,7 +4,7 @@
@import "core/mixins";
//Material-Bootstrap configuration
@import "assets/scss/bootstrap-material";
@import "/src/assets/scss/bootstrap-material";
@import "/node_modules/bootstrap/scss/bootstrap";
// Core Components

View File

@ -1,7 +1,7 @@
import { Inject, Injectable, Optional } from '@angular/core';
import { MAT_DATE_LOCALE } from '@angular/material/core';
import { MomentDateAdapter } from '@angular/material-moment-adapter';
import * as moment from 'moment';
import moment from 'moment';
import { Moment } from 'moment';
@Injectable()

View File

@ -1,6 +1,6 @@
import { DatePipe } from '@angular/common';
import { Pipe, PipeTransform } from '@angular/core';
import * as moment from 'moment';
import moment from 'moment';
import 'moment-timezone';

View File

@ -2,7 +2,7 @@ import { DatePipe } from '@angular/common';
import { Pipe, PipeTransform } from '@angular/core';
import { CultureService } from '@app/core/services/culture/culture-service';
import { TimezoneService } from '@app/core/services/timezone/timezone-service';
import * as moment from 'moment';
import moment from 'moment';
import 'moment-timezone';
@Pipe({

View File

@ -19,63 +19,63 @@
// Define your theme with color palettes, typography and density
$mat-theme-primary-palette: map-merge(mat.$cyan-palette, (501: var(--primary-color), contrast: (100: black, )));
$mat-theme-primary: mat.define-palette($mat-theme-primary-palette,
$mat-theme-primary-palette: map-merge(mat.$m2-cyan-palette, (501: var(--primary-color), contrast: (100: black, )));
$mat-theme-primary: mat.m2-define-palette($mat-theme-primary-palette,
$default: 501,
$lighter: 100,
$darker: 700,
$text: 500);
$mat-theme-accent-palette: map-merge(mat.$teal-palette, (501: var(--secondary-color), contrast: (A100: white, A200: white, )));
$mat-theme-accent: mat.define-palette($mat-theme-accent-palette,
$mat-theme-accent-palette: map-merge(mat.$m2-teal-palette, (501: var(--secondary-color), contrast: (A100: white, A200: white, )));
$mat-theme-accent: mat.m2-define-palette($mat-theme-accent-palette,
$default: 501,
$lighter: A100,
$darker: A200,
$text: 600);
$mat-theme-warn-palette: map-merge(mat.$pink-palette, ());
$mat-theme-warn: mat.define-palette($mat-theme-warn-palette,
$mat-theme-warn-palette: map-merge(mat.$m2-pink-palette, ());
$mat-theme-warn: mat.m2-define-palette($mat-theme-warn-palette,
$default: A200,
$lighter: 500,
$darker: 500,
$text: A700);
$mat-dark-theme-primary-palette: map-merge(mat.$lime-palette, (contrast: (200: #030844, A100: rgba(0, 0, 0, 0.87), A700: rgba(0, 0, 0, 0.87), )));
$mat-dark-theme-primary: mat.define-palette($mat-dark-theme-primary-palette,
$mat-dark-theme-primary-palette: map-merge(mat.$m2-lime-palette, (contrast: (200: #030844, A100: rgba(0, 0, 0, 0.87), A700: rgba(0, 0, 0, 0.87), )));
$mat-dark-theme-primary: mat.m2-define-palette($mat-dark-theme-primary-palette,
$default: 200,
$lighter: A100,
$darker: A700,
$text: 700);
$mat-dark-theme-accent-palette: map-merge(mat.$green-palette, (contrast: (A200: black, 50: black, A400: black, )));
$mat-dark-theme-accent: mat.define-palette($mat-dark-theme-accent-palette,
$mat-dark-theme-accent-palette: map-merge(mat.$m2-green-palette, (contrast: (A200: black, 50: black, A400: black, )));
$mat-dark-theme-accent: mat.m2-define-palette($mat-dark-theme-accent-palette,
$default: A200,
$lighter: 50,
$darker: A400,
$text: A100);
$mat-dark-theme-warn-palette: map-merge(mat.$pink-palette, (contrast: (A100: black, 100: white, )));
$mat-dark-theme-warn: mat.define-palette($mat-dark-theme-warn-palette,
$mat-dark-theme-warn-palette: map-merge(mat.$m2-pink-palette, (contrast: (A100: black, 100: white, )));
$mat-dark-theme-warn: mat.m2-define-palette($mat-dark-theme-warn-palette,
$default: A100,
$lighter: 100,
$darker: A700,
$text: 100);
$mat-typography: mat.define-typography-config($font-family: 'Roboto, sans-serif;',
// $display-4: mat.define-typography-level($font-size: 96px, $font-weight: 300, $font-family: 'Roboto, sans-serif;'),
// $display-3: mat.define-typography-level($font-size: 60px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
// $display-2: mat.define-typography-level($font-size: 48px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
// $display-1: mat.define-typography-level($font-size: 34px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
// $headline: mat.define-typography-level($font-size: 24px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
// $title: mat.define-typography-level($font-size: 20px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
// $subheading-2: mat.define-typography-level($font-size: 18px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
// $subheading-1: mat.define-typography-level($font-size: 20px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
$body-2: mat.define-typography-level($font-size: 16px, $font-weight: 400, $font-family: 'Roboto, sans-serif;'),
$body-1: mat.define-typography-level($font-size: 18px, $font-weight: 400, $font-family: 'Roboto, sans-serif;'),
// $caption: mat.define-typography-level($font-size: 16px, $font-weight: Medium, $font-family: 'Roboto, sans-serif;'),
$button: mat.define-typography-level($font-size: 16px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
$mat-typography: mat.m2-define-typography-config($font-family: 'Roboto, sans-serif;',
// $display-4: mat.m2-define-typography-level($font-size: 96px, $font-weight: 300, $font-family: 'Roboto, sans-serif;'),
// $display-3: mat.m2-define-typography-level($font-size: 60px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
// $display-2: mat.m2-define-typography-level($font-size: 48px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
// $display-1: mat.m2-define-typography-level($font-size: 34px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
// $headline: mat.m2-define-typography-level($font-size: 24px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
// $title: mat.m2-define-typography-level($font-size: 20px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
// $subheading-2: mat.m2-define-typography-level($font-size: 18px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
// $subheading-1: mat.m2-define-typography-level($font-size: 20px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
$body-2: mat.m2-define-typography-level($font-size: 16px, $font-weight: 400, $font-family: 'Roboto, sans-serif;'),
$body-1: mat.m2-define-typography-level($font-size: 18px, $font-weight: 400, $font-family: 'Roboto, sans-serif;'),
// $caption: mat.m2-define-typography-level($font-size: 16px, $font-weight: Medium, $font-family: 'Roboto, sans-serif;'),
$button: mat.m2-define-typography-level($font-size: 16px, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
// Line-height must be unit-less fraction of the font-size.
// $input: mat.define-typography-level($font-size: inherit, $line-height: 1.125, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
// $input: mat.m2-define-typography-level($font-size: inherit, $line-height: 1.125, $font-weight: 500, $font-family: 'Roboto, sans-serif;'),
);
$mat-density: 0;
@ -85,13 +85,13 @@ $mat-density: 0;
// $opacity: 0.5
// );
$mat-core-theme: mat.define-light-theme((color: (primary: $mat-theme-primary,
$mat-core-theme: mat.m2-define-light-theme((color: (primary: $mat-theme-primary,
accent: $mat-theme-accent,
warn: $mat-theme-warn),
typography: $mat-typography,
density: $mat-density));
$mat-dark-theme: mat.define-dark-theme((color: (primary: $mat-dark-theme-primary,
$mat-dark-theme: mat.m2-define-dark-theme((color: (primary: $mat-dark-theme-primary,
accent: $mat-dark-theme-accent,
warn: $mat-dark-theme-warn,
)));
@ -104,7 +104,7 @@ $mat-dark-theme: mat.define-dark-theme((color: (primary: $mat-dark-theme-primary
// @import "~@covalent/core/theming/all-theme";
// @import "@covalent/core/theming/all-theme";
// @import "@angular/material/theming"; // @import '../node_modules/@angular/material/theming';
@import '../node_modules/@swimlane/ngx-datatable/index.css';
@import '../node_modules/@swimlane/ngx-datatable/themes/material.scss';

View File

@ -3,6 +3,7 @@
"compilerOptions": {
"baseUrl": "./src",
"outDir": "./dist/out-tsc",
"esModuleInterop": true,
"sourceMap": true,
"declaration": false,
"module": "es2020",