diff --git a/marlo-data/src/main/java/org/cgiar/ccafs/marlo/data/model/TipParameters.java b/marlo-data/src/main/java/org/cgiar/ccafs/marlo/data/model/TipParameters.java index 1d88399ba6..39d292d6a0 100644 --- a/marlo-data/src/main/java/org/cgiar/ccafs/marlo/data/model/TipParameters.java +++ b/marlo-data/src/main/java/org/cgiar/ccafs/marlo/data/model/TipParameters.java @@ -38,8 +38,14 @@ public class TipParameters extends MarloBaseEntity implements java.io.Serializab @Expose private String tipBaseUrl; @Expose + private String encryptionKey; + @Expose private Date tokenDueDate; + public String getEncryptionKey() { + return encryptionKey; + } + @Override public String getLogDeatil() { // TODO Auto-generated method stub @@ -82,17 +88,21 @@ public Date getTokenDueDate() { return tokenDueDate; } + public String getTokenValue() { return tokenValue; } - @Override public boolean isActive() { // TODO Auto-generated method stub return false; } + public void setEncryptionKey(String encryptionKey) { + this.encryptionKey = encryptionKey; + } + @Override public void setModifiedBy(User modifiedBy) { // TODO Auto-generated method stub diff --git a/marlo-data/src/main/resources/xmls/TipParameters.hbm.xml b/marlo-data/src/main/resources/xmls/TipParameters.hbm.xml index 01b56b2908..ca7569cad0 100644 --- a/marlo-data/src/main/resources/xmls/TipParameters.hbm.xml +++ b/marlo-data/src/main/resources/xmls/TipParameters.hbm.xml @@ -29,5 +29,8 @@ + + + \ No newline at end of file diff --git a/marlo-utils/src/main/java/org/cgiar/ccafs/marlo/utils/AESConvert.java b/marlo-utils/src/main/java/org/cgiar/ccafs/marlo/utils/AESConvert.java index bbdb89eef3..157d2bcd7c 100644 --- a/marlo-utils/src/main/java/org/cgiar/ccafs/marlo/utils/AESConvert.java +++ b/marlo-utils/src/main/java/org/cgiar/ccafs/marlo/utils/AESConvert.java @@ -32,16 +32,26 @@ public class AESConvert { private static Logger LOG = LoggerFactory.getLogger(AESConvert.class); - public static String stringToAES(String value) { + /** + * @param value String with text to encrypt + * @param encryptionKey String with AES encryption key + * @return String with the encrypt text + */ + public static String stringToAES(String value, String encryptionKey) { MessageDigest md; try { - // Generate a secret key - KeyGenerator keygen = KeyGenerator.getInstance("AES"); - keygen.init(256); // Use a 256-bit key (AES-256) - SecretKey secretKey = keygen.generateKey(); - - // Convert the secret key to byte array - byte[] secretKeyBytes = secretKey.getEncoded(); + byte[] secretKeyBytes; + if (encryptionKey != null && !encryptionKey.isEmpty()) { + secretKeyBytes = encryptionKey.getBytes(); + } else { + // Generate a secret key + KeyGenerator keygen = KeyGenerator.getInstance("AES"); + keygen.init(256); // Use a 256-bit key (AES-256) + SecretKey secretKey = keygen.generateKey(); + + // Convert the secret key to byte array + secretKeyBytes = secretKey.getEncoded(); + } // Convert the text to compress into bytes String originalText = "Sample text to compress and encrypt using AES"; diff --git a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/json/project/ValidateProjectSectionAction.java b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/json/project/ValidateProjectSectionAction.java index d68330d148..c1d3997dfc 100644 --- a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/json/project/ValidateProjectSectionAction.java +++ b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/json/project/ValidateProjectSectionAction.java @@ -290,7 +290,7 @@ public String execute() throws Exception { && project.getProjecInfoPhase(this.getActualPhase()) != null && project.getProjecInfoPhase(this.getActualPhase()).getAdministrative() != null && !project.getProjecInfoPhase(this.getActualPhase()).getAdministrative()) { - section.put("missingFields", section.get("missingFields") + "-" + "deliveralbes"); + section.put("missingFields", section.get("missingFields") + "-" + "deliverables"); } Phase phase = this.getActualPhase(); @@ -332,6 +332,11 @@ public String execute() throws Exception { } } + if (deliverable.getDeliverableInfo(phase).getStatus() != null && deliverable.getDeliverableInfo(phase) + .getStatus().intValue() == Integer.parseInt(ProjectStatusEnum.Cancelled.getStatusId())) { + sectionStatus.setMissingFields(""); + } + } if (sectionStatus.getMissingFields().length() > 0) { @@ -431,6 +436,12 @@ public String execute() throws Exception { sectionStatus = new SectionStatus(); sectionStatus.setMissingFields("No section"); } + + // + if (this.isAWPBActive()) { + sectionStatus.setMissingFields(""); + } + if (sectionStatus.getMissingFields().length() > 0) { section.put("missingFields", section.get("missingFields") + "-" + sectionStatus.getMissingFields()); } diff --git a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/json/tip/TipDinamicUrlGenerationAction.java b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/json/tip/TipDinamicUrlGenerationAction.java index e2e4e1492a..032ae76347 100644 --- a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/json/tip/TipDinamicUrlGenerationAction.java +++ b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/json/tip/TipDinamicUrlGenerationAction.java @@ -70,7 +70,11 @@ public String createDinamicURL() { } } if (this.hasSpecificities(APConstants.TIP_SECURITY_ACTIVE)) { - tipURL = loginService + "/" + (AESConvert.stringToAES(token + "/staff/" + userEmail)); + String encryptionKey = null; + if (tipParameters != null && tipParameters.get(0).getEncryptionKey() != null) { + encryptionKey = tipParameters.get(0).getEncryptionKey(); + } + tipURL = loginService + "/" + (AESConvert.stringToAES(token + "/staff/" + userEmail, encryptionKey)); } else { tipURL = loginService + "/" + token + "/staff/" + userEmail; } diff --git a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ReportingSummaryAction.java b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ReportingSummaryAction.java index 75e551d3f7..31c438a7b8 100644 --- a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ReportingSummaryAction.java +++ b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ReportingSummaryAction.java @@ -579,9 +579,11 @@ private MasterReport addi8nParameters(MasterReport masterReport) { masterReport.getParameterValues().put("i8nDeliverableNewExpectedYear", this.getText("deliverable.newExpectedYear")); masterReport.getParameterValues().put("i8nDeliverablesActivities", this.getText("project.activities.title")); masterReport.getParameterValues().put("i8nDeliverablesContributingSHFRM", - this.getText("deliverable.shfrmContribution.question.reporting")); + "Is this deliverable aligned with the Soil Health and Fertility Road Map (SHFRM) implementation?"); masterReport.getParameterValues().put("i8nDeliverablesContributingNarrative", - this.getText("deliverable.shfrmContribution.narrative.reporting")); + "How this deliverable is expecting to contribute to the SHFRM?"); + masterReport.getParameterValues().put("i8nDeliverablesContributingNarrativeReporting", + "How this deliverable is contributing to the SHFRM?"); masterReport.getParameterValues().put("i8nDeliverablesActions", "To which Priority(ies) action is contributing to:"); /* @@ -2725,7 +2727,7 @@ private TypedTableModel getDeliverablesReportingTableModel() { "intellectualAssetDateExpiry", "intellectualAssetAdditionalInformation", "intellectualAssetLinkPublished", "intellectualAssetCommunication", "otherPartner", "deliv_description", "activities", "geographicScope", "countries", "regions", "sharedClusters", "focusEvent", "likelyOutcomes", "isContributing", - "contributingNarrative", "shfrmActions"}, + "contributingNarrative", "shfrmActions", "contributingNarrativeReporting"}, new Class[] {Long.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, @@ -2738,7 +2740,7 @@ private TypedTableModel getDeliverablesReportingTableModel() { String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, - String.class, String.class, String.class, String.class, String.class, String.class}, + String.class, String.class, String.class, String.class, String.class, String.class, String.class}, 0); SimpleDateFormat formatter = new SimpleDateFormat("MMM yyyy"); if (!project.getDeliverables().isEmpty()) { @@ -3660,7 +3662,7 @@ private TypedTableModel getDeliverablesReportingTableModel() { } } - String isContributing = "", contributingNarrative = "", shfrmActions = ""; + String isContributing = "", contributingNarrative = "", contributingNarrativeReporting = "", shfrmActions = ""; // SOIL Contribution if (deliverable.getDeliverableInfo() != null @@ -3676,12 +3678,18 @@ private TypedTableModel getDeliverablesReportingTableModel() { if (isContributing.equals("Yes")) { - if (deliverable.getDeliverableInfo().getShfrmContributionNarrativeAR() != null) { - contributingNarrative = deliverable.getDeliverableInfo().getShfrmContributionNarrativeAR(); + if (deliverable.getDeliverableInfo().getShfrmContributionNarrative() != null) { + contributingNarrative = deliverable.getDeliverableInfo().getShfrmContributionNarrative(); } else { contributingNarrative = ""; } + if (deliverable.getDeliverableInfo().getShfrmContributionNarrativeAR() != null) { + contributingNarrativeReporting = deliverable.getDeliverableInfo().getShfrmContributionNarrativeAR(); + } else { + contributingNarrativeReporting = ""; + } + List actions = new ArrayList<>(); List subActions = new ArrayList<>(); String actionsText = ""; @@ -3695,7 +3703,7 @@ private TypedTableModel getDeliverablesReportingTableModel() { 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()); @@ -3718,6 +3726,7 @@ private TypedTableModel getDeliverablesReportingTableModel() { } else { contributingNarrative = ""; shfrmActions = ""; + contributingNarrativeReporting = ""; } 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 /] +
+
[@customForm.input id="tipParameter.tokenValue" name="tipParameter.tokenValue" i18nkey="tipParameter.tokenValue" className="description limitWords-100" required=true /] [@s.text name="tipParameter.updateToken" /] diff --git a/marlo-web/src/main/webapp/crp/css/projects/projectCaseStudies.css b/marlo-web/src/main/webapp/crp/css/projects/projectCaseStudies.css index b14a4a5a42..50b52a60a3 100644 --- a/marlo-web/src/main/webapp/crp/css/projects/projectCaseStudies.css +++ b/marlo-web/src/main/webapp/crp/css/projects/projectCaseStudies.css @@ -44,7 +44,7 @@ table#projectHighlights { .dataTables_filter label input{ height: 30px !important; width: 295px !important; - margin-left: -44px !important; + margin-left: 0 !important; } .iconSearch{ diff --git a/marlo-web/src/main/webapp/crp/css/projects/projectDeliverable.css b/marlo-web/src/main/webapp/crp/css/projects/projectDeliverable.css index ccbbce4b3c..f82ceb83c0 100644 --- a/marlo-web/src/main/webapp/crp/css/projects/projectDeliverable.css +++ b/marlo-web/src/main/webapp/crp/css/projects/projectDeliverable.css @@ -777,7 +777,7 @@ div#ccDimension-capacity { .dataTables_filter label input{ height: 30px !important; width: 295px !important; - margin-left: -44px !important; + margin-left: 0 !important; } .iconSearch{