";
}
model.addRow(new Object[] {deliverable.getId(), deliverable.getDeliverableInfo().getTitle(), delivType,
@@ -3737,7 +3746,8 @@ private TypedTableModel getDeliverablesReportingTableModel() {
intellectualAssetPvpBreederCrop, intellectualAssetDateFilling, intellectualAssetDateRegistration,
intellectualAssetDateExpiry, intellectualAssetAdditionalInformation, intellectualAssetLinkPublished,
intellectualAssetCommunication, otherPartner, delivDescription, activities, geographicScope, countries,
- regions, sharedClusters, focusEvent, likelyOutcomes, isContributing, contributingNarrative, shfrmActions});
+ regions, sharedClusters, focusEvent, likelyOutcomes, isContributing, contributingNarrative, shfrmActions,
+ contributingNarrativeReporting});
}
}
return model;
@@ -4700,7 +4710,7 @@ private TypedTableModel getDeliverablesTableModel() {
if (action != null && action.getShfrmPriorityAction() != null
&& action.getShfrmPriorityAction().getId() != null
&& action.getShfrmPriorityAction().getComposedName() != null) {
- actionsText += "
● " + action.getShfrmPriorityAction().getComposedName();
+ actionsText += "
" + action.getShfrmPriorityAction().getComposedName();
subActions = deliverableShfrmSubActionManager.findByPriorityActionAndPhase(action.getId(),
this.getSelectedPhase().getId());
diff --git a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/superadmin/TIPManagementAction.java b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/superadmin/TIPManagementAction.java
index 27cc831365..c14edbe2dd 100644
--- a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/superadmin/TIPManagementAction.java
+++ b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/superadmin/TIPManagementAction.java
@@ -82,6 +82,9 @@ public String save() {
if (tipParameter.getPrivateKey() != null) {
tipParameterSave.setPrivateKey(tipParameter.getPrivateKey());
}
+ if (tipParameter.getEncryptionKey() != null) {
+ tipParameterSave.setEncryptionKey(tipParameter.getEncryptionKey());
+ }
tipParameterManager.saveTipParameters(tipParameterSave);
diff --git a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/validation/projects/ProjectInnovationValidator.java b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/validation/projects/ProjectInnovationValidator.java
index 6c63d65585..49fd96fd29 100644
--- a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/validation/projects/ProjectInnovationValidator.java
+++ b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/validation/projects/ProjectInnovationValidator.java
@@ -60,245 +60,255 @@ private Path getAutoSaveFilePath(ProjectInnovation innovation, long crpID, BaseA
public void validate(BaseAction action, Project project, ProjectInnovation projectInnovation, Boolean clearLead,
boolean saving, boolean struts, int year, boolean upkeep) {
+ if (!action.isAWPBActive()) {
- // The validator is called by Struts
- if (struts) {
- action.setInvalidFields(new HashMap<>());
- baseAction = action;
- }
+ // The validator is called by Struts
+ if (struts) {
+ action.setInvalidFields(new HashMap<>());
+ baseAction = action;
+ }
- if (!saving) {
- Path path = this.getAutoSaveFilePath(projectInnovation, action.getCrpID(), action);
- if (path.toFile().exists()) {
- // Draft label cause that the section appears like there were missing fields
- // this.addMissingField("draft");
+ if (!saving) {
+ Path path = this.getAutoSaveFilePath(projectInnovation, action.getCrpID(), action);
+ if (path.toFile().exists()) {
+ // Draft label cause that the section appears like there were missing fields
+ // this.addMissingField("draft");
+ }
}
- }
- // this.clearLead = clearLead;
+ // this.clearLead = clearLead;
- // this.validateProjectInnovation(baseAction, innovation, struts);
+ // this.validateProjectInnovation(baseAction, innovation, struts);
- // Validate Title
- if (!(this.isValidString(projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getTitle())
- && this.wordCount(projectInnovation.getProjectInnovationInfo(action.getActualPhase()).getTitle()) <= 30)) {
- if (struts) {
- action.addMessage(action.getText("projectInnovations.title"));
- action.addMissingField("projectInnovations.title");
- action.getInvalidFields().put("input-innovation.projectInnovationInfo.title", InvalidFieldsMessages.EMPTYFIELD);
+ // Validate Title
+ if (!(this.isValidString(projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getTitle())
+ && this.wordCount(projectInnovation.getProjectInnovationInfo(action.getActualPhase()).getTitle()) <= 30)) {
+ if (struts) {
+ action.addMessage(action.getText("projectInnovations.title"));
+ action.addMissingField("projectInnovations.title");
+ action.getInvalidFields().put("input-innovation.projectInnovationInfo.title",
+ InvalidFieldsMessages.EMPTYFIELD);
+ }
}
- }
- // Validate Narrative
- if (!(this.wordCount(projectInnovation.getProjectInnovationInfo(action.getActualPhase()).getNarrative()) <= 75)) {
- if (struts) {
- action.addMessage(action.getText("projectInnovations.narrative"));
- action.addMissingField("projectInnovations.narrative");
- action.getInvalidFields().put("input-innovation.projectPolicyInfo.narrativeEvidence",
- InvalidFieldsMessages.EMPTYFIELD);
+ // Validate Narrative
+ if (!(this.wordCount(projectInnovation.getProjectInnovationInfo(action.getActualPhase()).getNarrative()) <= 75)) {
+ if (struts) {
+ action.addMessage(action.getText("projectInnovations.narrative"));
+ action.addMissingField("projectInnovations.narrative");
+ action.getInvalidFields().put("input-innovation.projectPolicyInfo.narrativeEvidence",
+ InvalidFieldsMessages.EMPTYFIELD);
+ }
}
- }
-
- // validate Milestones
- /*
- * if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()) != null
- * && (projectInnovation.getProjectInnovationInfo().getHasMilestones() != null
- * && projectInnovation.getProjectInnovationInfo().getHasMilestones() == true
- * && (projectInnovation.getProjectOutcomes() == null || projectInnovation.getProjectOutcomes().isEmpty()))
- * || projectInnovation.getProjectInnovationInfo().getHasMilestones() == null) {
- * action.addMessage(action.getText("projectOutcomes"));
- * action.addMissingField("innovation.projectOutcomes");
- * action.getInvalidFields().put("list-innovation.projectOutcomes",
- * action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"projectOutcomes"}));
- * }
- */
- // validate crp outcomes
- if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()) != null
- && (projectInnovation.getProjectInnovationInfo().getHasMilestones() != null
- && projectInnovation.getProjectInnovationInfo().getHasMilestones() == true
- && (projectInnovation.getCrpOutcomes() == null || projectInnovation.getCrpOutcomes().isEmpty()))
- || projectInnovation.getProjectInnovationInfo().getHasMilestones() == null) {
- action.addMessage(action.getText("crpOutcomes"));
- action.addMissingField("innovation.crpOutcomes");
- action.getInvalidFields().put("list-innovation.crpOutcomes",
- action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"crpOutcomes"}));
- }
-
- if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()) != null
- && (projectInnovation.getProjectInnovationInfo().getHasMilestones() == null)) {
- action.addMessage(action.getText("projectOutcomes"));
- action.addMissingField("innovation.projectOutcomes");
- action.getInvalidFields().put("list-innovation.projectOutcomes",
- action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"projectOutcomes"}));
- } else {
- // Validate primary milestones
+ // validate Milestones
/*
- * if (projectInnovation.getMilestones() != null
+ * if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()) != null
* && (projectInnovation.getProjectInnovationInfo().getHasMilestones() != null
* && projectInnovation.getProjectInnovationInfo().getHasMilestones() == true
- * && !projectInnovation.getMilestones().isEmpty())) {
- * int count = 0;
- * for (ProjectInnovationMilestone innovationMilestone : projectInnovation.getMilestones()) {
- * if (innovationMilestone.getPrimary() != null && innovationMilestone.getPrimary()) {
- * count++;
- * }
- * }
- * if (count == 0) {
- * action.addMessage(action.getText("milestones"));
- * action.addMissingField("innovation.milestones");
- * action.getInvalidFields().put("list-innovation.milestones",
- * action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"milestones"}));
- * }
+ * && (projectInnovation.getProjectOutcomes() == null || projectInnovation.getProjectOutcomes().isEmpty()))
+ * || projectInnovation.getProjectInnovationInfo().getHasMilestones() == null) {
+ * action.addMessage(action.getText("projectOutcomes"));
+ * action.addMissingField("innovation.projectOutcomes");
+ * action.getInvalidFields().put("list-innovation.projectOutcomes",
+ * action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"projectOutcomes"}));
* }
*/
- }
+ // validate crp outcomes
+ if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()) != null
+ && (projectInnovation.getProjectInnovationInfo().getHasMilestones() != null
+ && projectInnovation.getProjectInnovationInfo().getHasMilestones() == true
+ && (projectInnovation.getCrpOutcomes() == null || projectInnovation.getCrpOutcomes().isEmpty()))
+ || projectInnovation.getProjectInnovationInfo().getHasMilestones() == null) {
+ action.addMessage(action.getText("crpOutcomes"));
+ action.addMissingField("innovation.crpOutcomes");
+ action.getInvalidFields().put("list-innovation.crpOutcomes",
+ action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"crpOutcomes"}));
+ }
- // Validate SubIdos
- if (!action.isAiccra()) {
- if (projectInnovation.getSubIdos() == null || projectInnovation.getSubIdos().isEmpty()) {
- action.addMessage(action.getText("subIdos"));
- action.addMissingField("innovation.subIdos");
- action.getInvalidFields().put("list-innovation.subIdos",
- action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"subIdos"}));
+ if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()) != null
+ && (projectInnovation.getProjectInnovationInfo().getHasMilestones() == null)) {
+ action.addMessage(action.getText("projectOutcomes"));
+ action.addMissingField("innovation.projectOutcomes");
+ action.getInvalidFields().put("list-innovation.projectOutcomes",
+ action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"projectOutcomes"}));
} else {
- // Validate primary Sub-IDOS
- int count = 0;
- for (ProjectInnovationSubIdo subido : projectInnovation.getSubIdos()) {
- if (subido.getPrimary() != null && subido.getPrimary() == true) {
- count++;
- }
- }
- if (count == 0) {
+
+ // Validate primary milestones
+ /*
+ * if (projectInnovation.getMilestones() != null
+ * && (projectInnovation.getProjectInnovationInfo().getHasMilestones() != null
+ * && projectInnovation.getProjectInnovationInfo().getHasMilestones() == true
+ * && !projectInnovation.getMilestones().isEmpty())) {
+ * int count = 0;
+ * for (ProjectInnovationMilestone innovationMilestone : projectInnovation.getMilestones()) {
+ * if (innovationMilestone.getPrimary() != null && innovationMilestone.getPrimary()) {
+ * count++;
+ * }
+ * }
+ * if (count == 0) {
+ * action.addMessage(action.getText("milestones"));
+ * action.addMissingField("innovation.milestones");
+ * action.getInvalidFields().put("list-innovation.milestones",
+ * action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"milestones"}));
+ * }
+ * }
+ */
+ }
+
+ // Validate SubIdos
+ if (!action.isAiccra()) {
+ if (projectInnovation.getSubIdos() == null || projectInnovation.getSubIdos().isEmpty()) {
action.addMessage(action.getText("subIdos"));
action.addMissingField("innovation.subIdos");
action.getInvalidFields().put("list-innovation.subIdos",
action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"subIdos"}));
+ } else {
+ // Validate primary Sub-IDOS
+ int count = 0;
+ for (ProjectInnovationSubIdo subido : projectInnovation.getSubIdos()) {
+ if (subido.getPrimary() != null && subido.getPrimary() == true) {
+ count++;
+ }
+ }
+ if (count == 0) {
+ action.addMessage(action.getText("subIdos"));
+ action.addMissingField("innovation.subIdos");
+ action.getInvalidFields().put("list-innovation.subIdos",
+ action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"subIdos"}));
+ }
}
}
- }
- // Validate Stage of Innovation
- if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndStageInnovation() != null) {
- if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndStageInnovation()
- .getId() == null
- || projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndStageInnovation()
- .getId() == -1) {
- if (struts) {
- action.addMessage(action.getText("projectInnovations.stage"));
- action.addMissingField("projectInnovations.stage");
- action.getInvalidFields().put("input-innovation.projectInnovationInfo.repIndStageInnovation.id",
- InvalidFieldsMessages.EMPTYFIELD);
- }
- } else {
- // Validate if Stage is = 4 and review if the innovation has an Organization Types and Outcome Case Study
+ // Validate Stage of Innovation
+ if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndStageInnovation() != null) {
if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndStageInnovation()
- .getId() == 4) {
- // Validate Organization Types
- if (projectInnovation.getOrganizations() == null || projectInnovation.getOrganizations().isEmpty()) {
- if (struts) {
- action.addMessage(action.getText("projectInnovations.nextUserOrganizationalType"));
- action.addMissingField("projectInnovations.nextUserOrganizationalType");
- action.getInvalidFields().put("list-innovation.organizations",
- action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"Organization Types"}));
- }
+ .getId() == null
+ || projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndStageInnovation()
+ .getId() == -1) {
+ if (struts) {
+ action.addMessage(action.getText("projectInnovations.stage"));
+ action.addMissingField("projectInnovations.stage");
+ action.getInvalidFields().put("input-innovation.projectInnovationInfo.repIndStageInnovation.id",
+ InvalidFieldsMessages.EMPTYFIELD);
}
+ } else {
+ // Validate if Stage is = 4 and review if the innovation has an Organization Types and Outcome Case Study
+ if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndStageInnovation()
+ .getId() == 4) {
+ // Validate Organization Types
+ if (projectInnovation.getOrganizations() == null || projectInnovation.getOrganizations().isEmpty()) {
+ if (struts) {
+ action.addMessage(action.getText("projectInnovations.nextUserOrganizationalType"));
+ action.addMissingField("projectInnovations.nextUserOrganizationalType");
+ action.getInvalidFields().put("list-innovation.organizations",
+ action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"Organization Types"}));
+ }
+ }
- // Validate Outcome Case Study
- if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase())
- .getProjectExpectedStudy() != null) {
- if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getProjectExpectedStudy()
- .getId() == null
- || projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getProjectExpectedStudy()
- .getId() == -1) {
+ // Validate Outcome Case Study
+ if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase())
+ .getProjectExpectedStudy() != null) {
+ if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getProjectExpectedStudy()
+ .getId() == null
+ || projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getProjectExpectedStudy()
+ .getId() == -1) {
+ if (struts) {
+ action.addMessage(action.getText("projectInnovations.outcomeCaseStudy"));
+ action.addMissingField("projectInnovations.outcomeCaseStudy");
+ action.getInvalidFields().put("input-innovation.projectInnovationInfo.projectExpectedStudy.id",
+ InvalidFieldsMessages.EMPTYFIELD);
+ }
+ }
+ }
+ } else {
+ // Validate Evidence Link (URL)
+ if (!this.isValidString(
+ projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getEvidenceLink())) {
if (struts) {
- action.addMessage(action.getText("projectInnovations.outcomeCaseStudy"));
- action.addMissingField("projectInnovations.outcomeCaseStudy");
- action.getInvalidFields().put("input-innovation.projectInnovationInfo.projectExpectedStudy.id",
+ action.addMessage(action.getText("projectInnovations.evidenceLink"));
+ action.addMissingField("projectInnovations.evidenceLink");
+ action.getInvalidFields().put("input-innovation.projectInnovationInfo.evidenceLink",
InvalidFieldsMessages.EMPTYFIELD);
}
}
}
- } else {
- // Validate Evidence Link (URL)
- if (!this
- .isValidString(projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getEvidenceLink())) {
- if (struts) {
- action.addMessage(action.getText("projectInnovations.evidenceLink"));
- action.addMissingField("projectInnovations.evidenceLink");
- action.getInvalidFields().put("input-innovation.projectInnovationInfo.evidenceLink",
- InvalidFieldsMessages.EMPTYFIELD);
- }
- }
+ }
+ } else {
+ if (struts) {
+ action.addMessage(action.getText("projectInnovations.stage"));
+ action.addMissingField("projectInnovations.stage");
+ action.getInvalidFields().put("input-innovation.projectInnovationInfo.repIndStageInnovation.id",
+ InvalidFieldsMessages.EMPTYFIELD);
}
}
- } else {
- if (struts) {
- action.addMessage(action.getText("projectInnovations.stage"));
- action.addMissingField("projectInnovations.stage");
- action.getInvalidFields().put("input-innovation.projectInnovationInfo.repIndStageInnovation.id",
- InvalidFieldsMessages.EMPTYFIELD);
- }
- }
- // Validate Geographic Scope
- boolean haveRegions = false;
- boolean haveCountries = false;
-
- if (projectInnovation.getGeographicScopes() == null || projectInnovation.getGeographicScopes().isEmpty()) {
- if (struts) {
- action.addMessage(action.getText("projectInnovations.geographicScope"));
- action.getInvalidFields().put("list-innovation.geographicScopes",
- action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"geographicScopes"}));
- action.addMissingField("projectInnovations.geographicScope");
- }
+ // Validate Geographic Scope
+ boolean haveRegions = false;
+ boolean haveCountries = false;
- } else {
- for (ProjectInnovationGeographicScope innovationGeographicScope : projectInnovation.getGeographicScopes()) {
- if (innovationGeographicScope.getRepIndGeographicScope().getId() == 2) {
- haveRegions = true;
+ if (projectInnovation.getGeographicScopes() == null || projectInnovation.getGeographicScopes().isEmpty()) {
+ if (struts) {
+ action.addMessage(action.getText("projectInnovations.geographicScope"));
+ action.getInvalidFields().put("list-innovation.geographicScopes",
+ action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"geographicScopes"}));
+ action.addMissingField("projectInnovations.geographicScope");
}
- if (innovationGeographicScope.getRepIndGeographicScope().getId() != 1
- && innovationGeographicScope.getRepIndGeographicScope().getId() != 2) {
- haveCountries = true;
+
+ } else {
+ for (ProjectInnovationGeographicScope innovationGeographicScope : projectInnovation.getGeographicScopes()) {
+ if (innovationGeographicScope.getRepIndGeographicScope().getId() == 2) {
+ haveRegions = true;
+ }
+ if (innovationGeographicScope.getRepIndGeographicScope().getId() != 1
+ && innovationGeographicScope.getRepIndGeographicScope().getId() != 2) {
+ haveCountries = true;
+ }
}
}
- }
- if (haveRegions) {
- // Validate Regions
- if (projectInnovation.getRegions() == null) {
- if (struts) {
- action.addMessage(action.getText("projectInnovations.region"));
- action.addMissingField("projectInnovations.region");
- action.getInvalidFields().put("list-innovation.regions",
- action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"regions"}));
+ if (haveRegions) {
+ // Validate Regions
+ if (projectInnovation.getRegions() == null) {
+ if (struts) {
+ action.addMessage(action.getText("projectInnovations.region"));
+ action.addMissingField("projectInnovations.region");
+ action.getInvalidFields().put("list-innovation.regions",
+ action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"regions"}));
+ }
}
}
- }
- if (haveCountries) {
- // Validate Countries
- if (projectInnovation.getCountriesIds() == null || projectInnovation.getCountriesIds().isEmpty()) {
- if (struts) {
- action.addMessage(action.getText("innovation.countries"));
- action.addMissingField("innovation.countries");
- action.getInvalidFields().put("input-innovation.countriesIds",
- action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"countries"}));
- }
+ if (haveCountries) {
+ // Validate Countries
+ if (projectInnovation.getCountriesIds() == null || projectInnovation.getCountriesIds().isEmpty()) {
+ if (struts) {
+ action.addMessage(action.getText("innovation.countries"));
+ action.addMissingField("innovation.countries");
+ action.getInvalidFields().put("input-innovation.countriesIds",
+ action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"countries"}));
+ }
+ }
}
- }
- // Validate Innovation Type
- if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndInnovationType() != null) {
- if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndInnovationType()
- .getId() == null
- || projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndInnovationType()
- .getId() == -1) {
+ // Validate Innovation Type
+ if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndInnovationType() != null) {
+ if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndInnovationType()
+ .getId() == null
+ || projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndInnovationType()
+ .getId() == -1) {
+ if (struts) {
+ action.addMessage(action.getText("projectInnovations.innovationType"));
+ action.addMissingField("projectInnovations.innovationType");
+ action.getInvalidFields().put("input-innovation.projectInnovationInfo.repIndInnovationType.id",
+ InvalidFieldsMessages.EMPTYFIELD);
+ }
+ }
+ } else {
if (struts) {
action.addMessage(action.getText("projectInnovations.innovationType"));
action.addMissingField("projectInnovations.innovationType");
@@ -306,128 +316,121 @@ public void validate(BaseAction action, Project project, ProjectInnovation proje
InvalidFieldsMessages.EMPTYFIELD);
}
}
- } else {
- if (struts) {
- action.addMessage(action.getText("projectInnovations.innovationType"));
- action.addMissingField("projectInnovations.innovationType");
- action.getInvalidFields().put("input-innovation.projectInnovationInfo.repIndInnovationType.id",
- InvalidFieldsMessages.EMPTYFIELD);
+
+ // Other Innovation Type Field
+ if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndInnovationType() != null) {
+ if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndInnovationType()
+ .getId() != null
+ && projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndInnovationType()
+ .getId() == 6
+ && (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getOtherInnovationType() == null
+ || projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getOtherInnovationType()
+ .isEmpty())) {
+ if (struts) {
+ action.addMessage(action.getText("projectInnovations.otherInnovation"));
+ action.addMissingField("projectInnovations.otherInnovation");
+ action.getInvalidFields().put("input-innovation.projectInnovationInfo.otherInnovationType",
+ InvalidFieldsMessages.EMPTYFIELD);
+ }
+ }
}
- }
- // Other Innovation Type Field
- if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndInnovationType() != null) {
- if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndInnovationType()
- .getId() != null
- && projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getRepIndInnovationType()
- .getId() == 6
- && (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getOtherInnovationType() == null
- || projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getOtherInnovationType()
- .isEmpty())) {
+ // Validate Description Stage
+ if (!(this
+ .isValidString(projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getDescriptionStage())
+ && this.wordCount(
+ projectInnovation.getProjectInnovationInfo(action.getActualPhase()).getDescriptionStage()) <= 50)) {
if (struts) {
- action.addMessage(action.getText("projectInnovations.otherInnovation"));
- action.addMissingField("projectInnovations.otherInnovation");
- action.getInvalidFields().put("input-innovation.projectInnovationInfo.otherInnovationType",
+ action.addMessage(action.getText("projectInnovations.stageDescription"));
+ action.addMissingField("projectInnovations.stageDescription");
+ action.getInvalidFields().put("input-innovation.projectInnovationInfo.descriptionStage",
InvalidFieldsMessages.EMPTYFIELD);
}
}
- }
- // Validate Description Stage
- if (!(this
- .isValidString(projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getDescriptionStage())
- && this
- .wordCount(projectInnovation.getProjectInnovationInfo(action.getActualPhase()).getDescriptionStage()) <= 50)) {
- if (struts) {
- action.addMessage(action.getText("projectInnovations.stageDescription"));
- action.addMissingField("projectInnovations.stageDescription");
- action.getInvalidFields().put("input-innovation.projectInnovationInfo.descriptionStage",
- InvalidFieldsMessages.EMPTYFIELD);
- }
- }
-
- // Validate lead organization
- // NOTE -> FOR SOME REASON "CLEAR LEAD" MEANS "NOT A CLEAR LEAD", SO WE HAVE TO REVERSE THE CONDITIONAL
- if (clearLead == null || /* NO */clearLead == false) {
- if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getLeadOrganization() == null
- || projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getLeadOrganization()
- .getId() == -1) {
- if (struts) {
- action.addMessage(action.getText("projectInnovations.leadOrganization"));
- action.addMissingField("projectInnovations.leadOrganization");
- action.getInvalidFields().put("input-innovation.projectInnovationInfo.leadOrganization.id",
- InvalidFieldsMessages.EMPTYFIELD);
+ // Validate lead organization
+ // NOTE -> FOR SOME REASON "CLEAR LEAD" MEANS "NOT A CLEAR LEAD", SO WE HAVE TO REVERSE THE CONDITIONAL
+ if (clearLead == null || /* NO */clearLead == false) {
+ if (projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getLeadOrganization() == null
+ || projectInnovation.getProjectInnovationInfo(baseAction.getActualPhase()).getLeadOrganization()
+ .getId() == -1) {
+ if (struts) {
+ action.addMessage(action.getText("projectInnovations.leadOrganization"));
+ action.addMissingField("projectInnovations.leadOrganization");
+ action.getInvalidFields().put("input-innovation.projectInnovationInfo.leadOrganization.id",
+ InvalidFieldsMessages.EMPTYFIELD);
+ }
}
}
- }
- // Validate contributing organizations
- // NOTE -> FOR SOME REASON "CLEAR LEAD" MEANS "NOT A CLEAR LEAD", SO WE HAVE TO REVERSE THE CONDITIONAL
- if (clearLead != null && /* NO */clearLead == true) {
- if (projectInnovation.getContributingOrganizations() == null
- || projectInnovation.getContributingOrganizations().size() < 2
- || projectInnovation.getContributingOrganizations().size() > 5) {
- if (struts) {
- action.addMessage(action.getText(action.getText("projectInnovations.contributingOrganizations")));
- action.addMissingField("innovation.contributingOrganizations");
- action.getInvalidFields().put("list-innovation.contributingOrganizations",
- action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"Contributing organizations"}));
+ // Validate contributing organizations
+ // NOTE -> FOR SOME REASON "CLEAR LEAD" MEANS "NOT A CLEAR LEAD", SO WE HAVE TO REVERSE THE CONDITIONAL
+ if (clearLead != null && /* NO */clearLead == true) {
+ if (projectInnovation.getContributingOrganizations() == null
+ || projectInnovation.getContributingOrganizations().size() < 2
+ || projectInnovation.getContributingOrganizations().size() > 5) {
+ if (struts) {
+ action.addMessage(action.getText(action.getText("projectInnovations.contributingOrganizations")));
+ action.addMissingField("innovation.contributingOrganizations");
+ action.getInvalidFields().put("list-innovation.contributingOrganizations",
+ action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"Contributing organizations"}));
+ }
+ }
+ } else {
+ if (projectInnovation.getContributingOrganizations() != null
+ && projectInnovation.getContributingOrganizations().size() > 5) {
+ if (struts) {
+ action.addMessage(action.getText(action.getText("innovation.contributingOrganizations")));
+ action.addMissingField("innovation.contributingOrganizations");
+ action.getInvalidFields().put("list-innovation.contributingOrganizations",
+ action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"Contributing organizations"}));
+ }
}
}
- } else {
- if (projectInnovation.getContributingOrganizations() != null
- && projectInnovation.getContributingOrganizations().size() > 5) {
+
+ // Validate adaptative research narrative
+ if (!(this.wordCount(
+ projectInnovation.getProjectInnovationInfo(action.getActualPhase()).getAdaptativeResearchNarrative()) <= 800)) {
if (struts) {
- action.addMessage(action.getText(action.getText("innovation.contributingOrganizations")));
- action.addMissingField("innovation.contributingOrganizations");
- action.getInvalidFields().put("list-innovation.contributingOrganizations",
- action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"Contributing organizations"}));
+ action.addMessage(action.getText("projectInnovations.adaptativeResearchNarrative"));
+ action.addMissingField("projectInnovations.adaptativeResearchNarrative");
+ action.getInvalidFields().put("input-innovation.projectInnovationInfo.novelOrAdaptative",
+ InvalidFieldsMessages.EMPTYFIELD);
}
}
- }
- // Validate adaptative research narrative
- if (!(this.wordCount(
- projectInnovation.getProjectInnovationInfo(action.getActualPhase()).getAdaptativeResearchNarrative()) <= 800)) {
- if (struts) {
- action.addMessage(action.getText("projectInnovations.adaptativeResearchNarrative"));
- action.addMissingField("projectInnovations.adaptativeResearchNarrative");
- action.getInvalidFields().put("input-innovation.projectInnovationInfo.novelOrAdaptative",
- InvalidFieldsMessages.EMPTYFIELD);
+ // Validate Innovation Centers
+ if (projectInnovation.getCenters() == null || projectInnovation.getCenters().isEmpty()) {
+ action.addMessage(action.getText("projectInnovations.contributingCenters"));
+ action.addMissingField("innovation.centers");
+ action.getInvalidFields().put("list-innovation.centers",
+ action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"centers"}));
}
- }
- // Validate Innovation Centers
- if (projectInnovation.getCenters() == null || projectInnovation.getCenters().isEmpty()) {
- action.addMessage(action.getText("projectInnovations.contributingCenters"));
- action.addMissingField("innovation.centers");
- action.getInvalidFields().put("list-innovation.centers",
- action.getText(InvalidFieldsMessages.EMPTYLIST, new String[] {"centers"}));
- }
-
- // The validator is called by Struts
- if (struts) {
- if (!action.getFieldErrors().isEmpty()) {
- action.addActionError(action.getText("saving.fields.required"));
- } else if (action.getValidationMessage().length() > 0) {
- action.addActionMessage(
- " " + action.getText("saving.missingFields", new String[] {action.getValidationMessage().toString()}));
+ // The validator is called by Struts
+ if (struts) {
+ if (!action.getFieldErrors().isEmpty()) {
+ action.addActionError(action.getText("saving.fields.required"));
+ } else if (action.getValidationMessage().length() > 0) {
+ action.addActionMessage(
+ " " + action.getText("saving.missingFields", new String[] {action.getValidationMessage().toString()}));
+ }
}
+ this.saveMissingFields(project, projectInnovation, action.getActualPhase().getDescription(),
+ action.getActualPhase().getYear(), action.getActualPhase().getUpkeep(),
+ ProjectSectionStatusEnum.INNOVATIONS.getStatus(), action);
+ /*
+ * if (action.getValidationMessage() == null || action.getValidationMessage().toString() == null
+ * || action.getValidationMessage().toString().isEmpty()) {
+ * this.saveMissingFields(project, projectInnovation, action.getActualPhase().getDescription(), year, upkeep,
+ * ProjectSectionStatusEnum.INNOVATIONS.getStatus(), "");
+ * } else {
+ * this.saveMissingFields(project, projectInnovation, action.getActualPhase().getDescription(), year, upkeep,
+ * ProjectSectionStatusEnum.INNOVATIONS.getStatus(), action.getMissingFields().toString());
+ * }
+ */
}
- this.saveMissingFields(project, projectInnovation, action.getActualPhase().getDescription(),
- action.getActualPhase().getYear(), action.getActualPhase().getUpkeep(),
- ProjectSectionStatusEnum.INNOVATIONS.getStatus(), action);
- /*
- * if (action.getValidationMessage() == null || action.getValidationMessage().toString() == null
- * || action.getValidationMessage().toString().isEmpty()) {
- * this.saveMissingFields(project, projectInnovation, action.getActualPhase().getDescription(), year, upkeep,
- * ProjectSectionStatusEnum.INNOVATIONS.getStatus(), "");
- * } else {
- * this.saveMissingFields(project, projectInnovation, action.getActualPhase().getDescription(), year, upkeep,
- * ProjectSectionStatusEnum.INNOVATIONS.getStatus(), action.getMissingFields().toString());
- * }
- */
}
/*
diff --git a/marlo-web/src/main/resources/database/migrations/V2_6_0_20240315_1025__AddEncryptionKeyField.sql b/marlo-web/src/main/resources/database/migrations/V2_6_0_20240315_1025__AddEncryptionKeyField.sql
new file mode 100644
index 0000000000..531ff1e0d4
--- /dev/null
+++ b/marlo-web/src/main/resources/database/migrations/V2_6_0_20240315_1025__AddEncryptionKeyField.sql
@@ -0,0 +1 @@
+ALTER TABLE tip_parameters ADD encryption_key text NULL;
\ No newline at end of file
diff --git a/marlo-web/src/main/resources/pentaho/crp/ProjectFullPDF(Reporting).prpt b/marlo-web/src/main/resources/pentaho/crp/ProjectFullPDF(Reporting).prpt
index 09d70313a0..f7d50d3e1e 100644
Binary files a/marlo-web/src/main/resources/pentaho/crp/ProjectFullPDF(Reporting).prpt and b/marlo-web/src/main/resources/pentaho/crp/ProjectFullPDF(Reporting).prpt differ
diff --git a/marlo-web/src/main/webapp/WEB-INF/center/views/monitoring/ADRESSED_IN_CRP_deliverable/deliverableList.ftl b/marlo-web/src/main/webapp/WEB-INF/center/views/monitoring/ADRESSED_IN_CRP_deliverable/deliverableList.ftl
index eb630c7b3a..6519e38259 100644
--- a/marlo-web/src/main/webapp/WEB-INF/center/views/monitoring/ADRESSED_IN_CRP_deliverable/deliverableList.ftl
+++ b/marlo-web/src/main/webapp/WEB-INF/center/views/monitoring/ADRESSED_IN_CRP_deliverable/deliverableList.ftl
@@ -8,7 +8,7 @@
/]
[#assign customCSS = [
"${baseUrlCdn}/global/css/customDataTable.css",
- "${baseUrlMedia}/css/deliverable/projectDeliverable.css?20230531"
+ "${baseUrlMedia}/css/deliverable/projectDeliverable.css?20240314"
]
/]
[#assign currentSection = "monitoring" /]
diff --git a/marlo-web/src/main/webapp/WEB-INF/center/views/monitoring/ADRESSED_IN_CRP_deliverable/projectDeliverable.ftl b/marlo-web/src/main/webapp/WEB-INF/center/views/monitoring/ADRESSED_IN_CRP_deliverable/projectDeliverable.ftl
index d62a814166..383e59e53c 100644
--- a/marlo-web/src/main/webapp/WEB-INF/center/views/monitoring/ADRESSED_IN_CRP_deliverable/projectDeliverable.ftl
+++ b/marlo-web/src/main/webapp/WEB-INF/center/views/monitoring/ADRESSED_IN_CRP_deliverable/projectDeliverable.ftl
@@ -7,7 +7,7 @@
"${baseUrlCdn}/global/js/usersManagement.js",
"${baseUrlMedia}/js/monitoring/deliverable/projectDeliverable.js",
"${baseUrlCdn}/global/js/autoSave.js"] /]
-[#assign customCSS = ["${baseUrlMedia}/css/deliverable/projectDeliverable.css?20230529"] /]
+[#assign customCSS = ["${baseUrlMedia}/css/deliverable/projectDeliverable.css?20240314"] /]
[#assign currentSection = "projects" /]
[#assign currentStage = "deliverables" /]
diff --git a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectCaseStudies.ftl b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectCaseStudies.ftl
index a7766ec081..6a8caa01ec 100644
--- a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectCaseStudies.ftl
+++ b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectCaseStudies.ftl
@@ -5,7 +5,7 @@
[#assign customJS = [
"${baseUrlMedia}/js/projects/projectCaseStudiesList.js",
"${baseUrlCdn}/global/js/fieldsValidation.js"] /]
-[#assign customCSS = ["${baseUrlMedia}/css/projects/projectCaseStudies.css?20230106"] /]
+[#assign customCSS = ["${baseUrlMedia}/css/projects/projectCaseStudies.css?20240314"] /]
[#assign currentSection = "projects" /]
[#assign currentStage = "caseStudies" /]
[#assign hideJustification = true /]
diff --git a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectCaseStudy.ftl b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectCaseStudy.ftl
index 98001a0c38..00f5577849 100644
--- a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectCaseStudy.ftl
+++ b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectCaseStudy.ftl
@@ -7,7 +7,7 @@
"${baseUrlCdn}/global/js/fieldsValidation.js"
]
/]
-[#assign customCSS = ["${baseUrlMedia}/css/projects/projectCaseStudies.css?20230106"] /]
+[#assign customCSS = ["${baseUrlMedia}/css/projects/projectCaseStudies.css?20240314"] /]
[#assign currentSection = "projects" /]
[#assign currentStage = "caseStudies" /]
diff --git a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectContributionCrp.ftl b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectContributionCrp.ftl
index 3b91fb6809..8e0724d1d1 100644
--- a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectContributionCrp.ftl
+++ b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectContributionCrp.ftl
@@ -5,7 +5,7 @@
[#assign customJS = [
"${baseUrlMedia}/js/projects/projectContributionCrp.js?20230310",
"${baseUrlCdn}/global/js/fieldsValidation.js?20221031",
- "${baseUrlCdn}/crp/js/feedback/feedbackAutoImplementation.js?20231017",
+ "${baseUrlCdn}/crp/js/feedback/feedbackAutoImplementation.js?20240313",
"https://www.gstatic.com/charts/loader.js",
"https://cdn.datatables.net/buttons/1.3.1/js/dataTables.buttons.min.js",
"//cdn.datatables.net/buttons/1.3.1/js/buttons.html5.min.js",
diff --git a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectDeliverable.ftl b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectDeliverable.ftl
index 10ab6d76f1..80ebb2776f 100644
--- a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectDeliverable.ftl
+++ b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectDeliverable.ftl
@@ -7,7 +7,7 @@
"${baseUrlMedia}/js/projects/deliverables/deliverableShfrm.js?20240226",
"${baseUrlMedia}/js/projects/deliverables/deliverableDissemination.js?20230810",
"${baseUrlMedia}/js/projects/deliverables/deliverableQualityCheck.js?20220721",
- "${baseUrlCdn}/crp/js/feedback/feedbackAutoImplementation.js?20241017",
+ "${baseUrlCdn}/crp/js/feedback/feedbackAutoImplementation.js?20240313",
[#-- "${baseUrlMedia}/js/projects/deliverables/deliverableDataSharing.js?20180523",--]
[#-- "${baseUrlCdn}/global/js/autoSave.js",--]
"${baseUrlCdn}/global/js/fieldsValidation.js?20180529"
diff --git a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectStudies.ftl b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectStudies.ftl
index d7a42ab200..f2b37ab9fc 100644
--- a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectStudies.ftl
+++ b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectStudies.ftl
@@ -5,7 +5,7 @@
[#assign customJS = [
"${baseUrlMedia}/js/projects/projectCaseStudiesList.js?20230306",
"${baseUrlCdn}/global/js/fieldsValidation.js"] /]
-[#assign customCSS = ["${baseUrlMedia}/css/projects/projectCaseStudies.css?20230306"] /]
+[#assign customCSS = ["${baseUrlMedia}/css/projects/projectCaseStudies.css?20240314"] /]
[#assign currentSection = "projects" /]
[#assign currentStage = "projectStudies" /]
[#assign hideJustification = true /]
diff --git a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectStudy.ftl b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectStudy.ftl
index d92475a8f8..abbb52e0eb 100644
--- a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectStudy.ftl
+++ b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/projectStudy.ftl
@@ -5,7 +5,7 @@
[#assign customJS = [
"${baseUrlMedia}/js/projects/projectStudy.js?20240221",
"${baseUrlCdn}/global/js/fieldsValidation.js",
- "${baseUrlCdn}/crp/js/feedback/feedbackAutoImplementation.js?20231017"
+ "${baseUrlCdn}/crp/js/feedback/feedbackAutoImplementation.js?20240313"
]
/]
[#assign customCSS = [
diff --git a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/safeguard.ftl b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/safeguard.ftl
index 0bc07c11b6..d772c01261 100644
--- a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/safeguard.ftl
+++ b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/safeguard.ftl
@@ -7,7 +7,7 @@
[#-- "${baseUrlCdn}/global/js/autoSave.js", --]
"${baseUrlCdn}/global/js/impactGraphic.js",
"${baseUrlCdn}/global/js/fieldsValidation.js",
- "${baseUrlCdn}/crp/js/feedback/feedbackAutoImplementation.js?20231017"
+ "${baseUrlCdn}/crp/js/feedback/feedbackAutoImplementation.js?20240313"
]
/]
[#assign customCSS = [
diff --git a/marlo-web/src/main/webapp/WEB-INF/global/views/superadmin/tipManagement.ftl b/marlo-web/src/main/webapp/WEB-INF/global/views/superadmin/tipManagement.ftl
index 555f8de4c5..3c9f644b61 100644
--- a/marlo-web/src/main/webapp/WEB-INF/global/views/superadmin/tipManagement.ftl
+++ b/marlo-web/src/main/webapp/WEB-INF/global/views/superadmin/tipManagement.ftl
@@ -44,7 +44,7 @@
- [@customForm.input name="tipParameter.tipTokenService" i18nkey="tipParameter.tipTokenService" className="description limitWords-100" required=true /]
+ [@customForm.input name="tipParameter.tipTokenService" i18nkey="tipParameter.tipTokenService" className="description" required=true /]
@@ -55,6 +55,10 @@
[@customForm.input name="tipParameter.tipStatusService" i18nkey="tipParameter.tipStatusService" className="description limitWords-100" required=true /]
+
+ [@customForm.input name="tipParameter.encryptionKey" i18nkey="tipParameter.tipEncryptionKey" className="description" required=true /]
+
+