diff --git a/.circleci/config.yml b/.circleci/config.yml index 9656db5080..af9b23faf1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -175,6 +175,7 @@ workflows: branches: only: - dev-maven + - reskin-or - build-prod: context : org-global @@ -190,6 +191,7 @@ workflows: branches: only: - dev-maven + - reskin-or - deployProd: context : org-global diff --git a/pom.xml b/pom.xml index 78b3e2b103..93869dde78 100644 --- a/pom.xml +++ b/pom.xml @@ -179,6 +179,11 @@ log4j-core 2.17.2 + + org.apache.commons + commons-text + 1.10.0 + redis.clients jedis diff --git a/src/main/java/com/cronos/onlinereview/functions/Functions.java b/src/main/java/com/cronos/onlinereview/functions/Functions.java index 54bb19c9c1..8e8d0c38d1 100644 --- a/src/main/java/com/cronos/onlinereview/functions/Functions.java +++ b/src/main/java/com/cronos/onlinereview/functions/Functions.java @@ -12,6 +12,7 @@ import com.topcoder.onlinereview.component.resource.Resource; import com.topcoder.onlinereview.component.resource.ResourceManager; import com.topcoder.onlinereview.component.resource.ResourcePersistenceException; +import org.apache.commons.text.StringEscapeUtils; import org.apache.struts2.util.TextProviderHelper; import javax.servlet.http.HttpServletRequest; @@ -61,6 +62,9 @@ private Functions() { * a text to encode. */ public static String htmlEncode(String text) { + // unescape string (convert strings like \\n to \n character), + // so we can find and replace it with corresponding string like
+ text = StringEscapeUtils.unescapeJava(text); if (text == null || text.length() == 0) { return ""; } @@ -100,8 +104,8 @@ public static String htmlEncode(String text) { stringBuffer.append(ch); } } - - return stringBuffer.toString(); + // make sure we escape the unescaped string before returning it + return StringEscapeUtils.escapeJava(stringBuffer.toString()); } /** diff --git a/web/css/or/new_styles.css b/web/css/or/new_styles.css index 39d98315d8..eb628c252c 100644 --- a/web/css/or/new_styles.css +++ b/web/css/or/new_styles.css @@ -551,3 +551,12 @@ table.tabLinks .input { .feedback-text { width:100%; } + +.projectInfo__forumLink{ + pointer-events: none; + cursor: pointer; +} + +.projectInfo__forumLink.enabled{ + pointer-events: all; +} \ No newline at end of file diff --git a/web/css/reskin-or/reskin.css b/web/css/reskin-or/reskin.css index 2f69270f5f..761057e9fb 100644 --- a/web/css/reskin-or/reskin.css +++ b/web/css/reskin-or/reskin.css @@ -192,6 +192,8 @@ body { padding-bottom: 200px; } +.content--viewSpec, +.content--viewApproval, .content--projectPayment { padding-bottom: 135px; } @@ -768,6 +770,10 @@ table.scorecard td.headerT { text-decoration: none !important; } +.backToHome { + margin-bottom: 32px; +} + .editPaymentBtn { margin-right: 12px; } @@ -825,8 +831,8 @@ table.scorecard td.reviewerResp input { .cta { position: fixed; width: 100%; - bottom: var(--footer-height); background-color: #fff; + bottom: var(--footer-height); z-index: 99; box-shadow: 0 0 16px 16px rgb(42 42 42 / 10%); } @@ -2654,6 +2660,7 @@ td.resourcesTable__empty { width: 100%; z-index: 99; bottom: 0; + left: 0; } .checkPoint__chevron { @@ -2752,7 +2759,7 @@ td.resourcesTable__empty { } .ctaOpen { - bottom: 386px; + bottom: 386px !important; } .approvalRadioBtn { display: flex; @@ -2764,6 +2771,7 @@ td.resourcesTable__empty { .lateDeliverableValue { margin-top: 8px; font-weight: 400; + white-space: normal; } .lateDeliverableProjectLink { diff --git a/web/includes/project/project_phase_reskin.jsp b/web/includes/project/project_phase_reskin.jsp index d70411381b..0cad75868a 100644 --- a/web/includes/project/project_phase_reskin.jsp +++ b/web/includes/project/project_phase_reskin.jsp @@ -123,246 +123,196 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ${submission.id} - - - ${submission.id} - - - - - ${submission.id} - - - ${submission.id} - - - - () - - - - ${submission.id} - - () - - - - - ${orfn:displayDate(pageContext.request, submission.upload.creationTimestamp)} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ${orfn:displayScore(pageContext.request, review.score)} - - - ${orfn:displayScore(pageContext.request, review.score)} - - - - - - - - - - - () - - - - - - - - - - - - - - - - - - - - - <or:text key='viewProjectDetails.box.Submission.icoShowMore.alt' /> - - - - - - - - - - - - - -   - - - - ${pastSubmission.id} - - - ${pastSubmission.id} - - - ${orfn:displayDate(pageContext.request, pastSubmission.creationTimestamp)} - - - - - - - - - - + + + + + + + + + + + + ${submission.id} + + + ${submission.id} + + + + + ${submission.id} + + + ${submission.id} + + + + () + + + + ${submission.id} + + () + + + + + ${orfn:displayDate(pageContext.request, submission.upload.creationTimestamp)} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${orfn:displayScore(pageContext.request, review.score)} + + + ${orfn:displayScore(pageContext.request, review.score)} + + + + + + + + + + + () + + + + + + + + + + + + + + + + + + + + + <or:text key='viewProjectDetails.box.Submission.icoShowMore.alt' /> + + + + + + + + + + + + +   + + + + ${pastSubmission.id} + + + ${pastSubmission.id} + + + ${orfn:displayDate(pageContext.request, pastSubmission.creationTimestamp)} + + + + + + + + + + - + + \ No newline at end of file diff --git a/web/jsp/confirmAdvanceFailedScreeningSubmission.jsp b/web/jsp/confirmAdvanceFailedScreeningSubmission.jsp index b8118f3988..f116259d7f 100644 --- a/web/jsp/confirmAdvanceFailedScreeningSubmission.jsp +++ b/web/jsp/confirmAdvanceFailedScreeningSubmission.jsp @@ -13,59 +13,52 @@ <%@ taglib prefix="or" uri="/or-tags" %> + + + + + - - - - - + + + - - - - - + + + - - - - + + + + - -
- -
- - - - - -
+ + + +
+
+ + + +
+
- -
- - - - - - -
${rootCatalogName} - ${project.allProperties["Project Name"]} - - - ${project.allProperties["Project Version"]} - -
-

- - @@ -73,23 +66,17 @@ -
+



- -
- <or:text key='confirmAdvanceFailedScreeningSubmission.btnConfirm.alt' />  - - <or:text key='btnCancel.alt' /> + +
- +
- - - +
- -
- - + + diff --git a/web/jsp/editLateDeliverable.jsp b/web/jsp/editLateDeliverable.jsp index bacad396a1..3d3ce348ab 100644 --- a/web/jsp/editLateDeliverable.jsp +++ b/web/jsp/editLateDeliverable.jsp @@ -311,8 +311,8 @@
-
+ + + diff --git a/web/jsp/viewApproval.jsp b/web/jsp/viewApproval.jsp index 484279d427..6eae18d5ca 100644 --- a/web/jsp/viewApproval.jsp +++ b/web/jsp/viewApproval.jsp @@ -70,7 +70,7 @@ -
+
diff --git a/web/jsp/viewProjectDetails.jsp b/web/jsp/viewProjectDetails.jsp index 0777e00197..ceeb1dc016 100644 --- a/web/jsp/viewProjectDetails.jsp +++ b/web/jsp/viewProjectDetails.jsp @@ -93,15 +93,17 @@ let id = with_forum?.[0]?.id; if (id !== undefined) { let forumLinkEl = document.querySelector('.projectInfo__forumLink'); - return forumLinkEl.href = "https://<%=ApplicationServer.FORUMS_SERVER_NAME%>/categories/" + id; + if(forumLinkEl){ + forumLinkEl.classList.add("enabled"); + forumLinkEl.href = "https://<%=ApplicationServer.FORUMS_SERVER_NAME%>/categories/" + id; + } } }); } + let projectId = ${project.id}; + updateForumLink(projectId); document.addEventListener("DOMContentLoaded", function(){ - let projectId = ${project.id}; - updateForumLink(projectId); - let accordion = document.getElementsByClassName("projectDetails__accordion"); for (let i = 0; i < accordion.length; i++) { accordion[i].addEventListener("click", function() { @@ -190,13 +192,20 @@ diff --git a/web/jsp/viewProjectManagementConsole.jsp b/web/jsp/viewProjectManagementConsole.jsp index ba1a7ec5cb..5c08547b81 100644 --- a/web/jsp/viewProjectManagementConsole.jsp +++ b/web/jsp/viewProjectManagementConsole.jsp @@ -55,15 +55,17 @@ let id = with_forum?.[0]?.id; if (id !== undefined) { let forumLinkEl = document.querySelector('.projectInfo__forumLink'); - return forumLinkEl.href = "https://<%=ApplicationServer.FORUMS_SERVER_NAME%>/categories/" + id; + if(forumLinkEl){ + forumLinkEl.classList.add("enabled"); + forumLinkEl.href = "https://<%=ApplicationServer.FORUMS_SERVER_NAME%>/categories/" + id; + } } }); } + let projectId = ${project.id}; + updateForumLink(projectId); document.addEventListener("DOMContentLoaded", function(){ - let projectId = ${project.id}; - updateForumLink(projectId); - let avatar = document.querySelector('.webHeader__avatar a'); let avatarImage = document.createElement('div'); avatarImage.className = "webHeader__avatarImage"; diff --git a/web/jsp/viewProjectPayments.jsp b/web/jsp/viewProjectPayments.jsp index ad58a9e203..2cb5592d65 100644 --- a/web/jsp/viewProjectPayments.jsp +++ b/web/jsp/viewProjectPayments.jsp @@ -44,14 +44,17 @@ let id = with_forum?.[0]?.id; if (id !== undefined) { let forumLinkEl = document.querySelector('.projectInfo__forumLink'); - return forumLinkEl.href = "https://<%=ApplicationServer.FORUMS_SERVER_NAME%>/categories/" + id; + if(forumLinkEl){ + forumLinkEl.classList.add("enabled"); + forumLinkEl.href = "https://<%=ApplicationServer.FORUMS_SERVER_NAME%>/categories/" + id; + } } }); } - document.addEventListener("DOMContentLoaded", function(){ - let projectId = ${project.id}; - updateForumLink(projectId); + let projectId = ${project.id}; + updateForumLink(projectId); + document.addEventListener("DOMContentLoaded", function(){ let avatar = document.querySelector('.webHeader__avatar a'); let avatarImage = document.createElement('div'); avatarImage.className = "webHeader__avatarImage"; @@ -125,7 +128,10 @@ - +
+ + +
diff --git a/web/jsp/viewReview.jsp b/web/jsp/viewReview.jsp index 4c485293cb..83c04fef67 100644 --- a/web/jsp/viewReview.jsp +++ b/web/jsp/viewReview.jsp @@ -419,7 +419,7 @@ - + :
<%@ include file="../includes/review/review_answer_reskin.jsp" %>

diff --git a/web/jsp/viewSpecificationReview.jsp b/web/jsp/viewSpecificationReview.jsp index a6a1293e30..94bf525c21 100644 --- a/web/jsp/viewSpecificationReview.jsp +++ b/web/jsp/viewSpecificationReview.jsp @@ -72,7 +72,7 @@ -
+