diff --git a/.circleci/config.yml b/.circleci/config.yml index 1a2598711e..a3804fbb43 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -190,7 +190,8 @@ workflows: filters: branches: only: - - dev-maven + - reskin-or + - ci-fix-test - deployProd: context : org-global diff --git a/src/main/java/com/cronos/onlinereview/actions/projectlinks/EditProjectLinksAction.java b/src/main/java/com/cronos/onlinereview/actions/projectlinks/EditProjectLinksAction.java index 284332f2dd..43742da1e2 100644 --- a/src/main/java/com/cronos/onlinereview/actions/projectlinks/EditProjectLinksAction.java +++ b/src/main/java/com/cronos/onlinereview/actions/projectlinks/EditProjectLinksAction.java @@ -5,9 +5,11 @@ import com.cronos.onlinereview.Constants; import com.cronos.onlinereview.actions.DynamicModelDrivenAction; +import com.cronos.onlinereview.util.AuthorizationHelper; import com.cronos.onlinereview.model.DynamicModel; import com.cronos.onlinereview.util.ActionsHelper; import com.cronos.onlinereview.util.Comparators; +import com.cronos.onlinereview.util.ConfigHelper; import com.cronos.onlinereview.util.CorrectnessCheckResult; import com.cronos.onlinereview.util.LoggingHelper; import com.topcoder.onlinereview.component.exception.BaseException; @@ -69,6 +71,25 @@ public String execute() throws BaseException { } Project project = verification.getProject(); + request.setAttribute("projectStatus", project.getProjectStatus().getName()); + + final String projectTypeName = project.getProjectCategory().getProjectType().getName(); + + boolean hasForumType = project.getAllProperties().containsKey("Forum Type"); + + long projectId = project.getId(); + long forumId = -1; + String tempStr; + + tempStr = (String) project.getProperty("Developer Forum ID"); + if (tempStr != null && tempStr.trim().length() != 0) { + forumId = Long.parseLong(tempStr, 10); + } + + request.setAttribute("viewContestLink", ConfigHelper.getProjectTypeViewContestLink(projectTypeName, projectId)); + + request.setAttribute("forumLink", ConfigHelper.getProjectTypeForumLink( + (projectTypeName.equalsIgnoreCase("studio") && hasForumType) ? "NewStudio" : projectTypeName, forumId)); // obtains the project link manager ProjectLinkManager linkManager = ActionsHelper.createProjectLinkManager(); @@ -92,6 +113,8 @@ public String execute() throws BaseException { // set up projects except for deleted ones request.setAttribute("allProjects", allProjects); + request.setAttribute("isAllowedToContactPM", + AuthorizationHelper.hasUserPermission(request, Constants.CONTACT_PM_PERM_NAME)); // Populate the form with project and project link properties populateProjectLinkForm(getModel(), verification.getProject()); diff --git a/src/main/java/com/cronos/onlinereview/actions/projectmanagementconsole/ViewManagementConsoleAction.java b/src/main/java/com/cronos/onlinereview/actions/projectmanagementconsole/ViewManagementConsoleAction.java index 28db26b817..d569f2fc9f 100644 --- a/src/main/java/com/cronos/onlinereview/actions/projectmanagementconsole/ViewManagementConsoleAction.java +++ b/src/main/java/com/cronos/onlinereview/actions/projectmanagementconsole/ViewManagementConsoleAction.java @@ -9,6 +9,7 @@ import com.cronos.onlinereview.util.AuthorizationHelper; import com.cronos.onlinereview.util.CorrectnessCheckResult; import com.cronos.onlinereview.util.LoggingHelper; +import com.cronos.onlinereview.util.ConfigHelper; import com.topcoder.onlinereview.component.project.management.Project; import com.topcoder.onlinereview.component.exception.BaseException; @@ -64,6 +65,28 @@ public String execute() throws BaseException { Project project = verification.getProject(); initProjectManagementConsole(request, project); + request.setAttribute("projectStatus", project.getProjectStatus().getName()); + + final String projectTypeName = project.getProjectCategory().getProjectType().getName(); + + boolean hasForumType = project.getAllProperties().containsKey("Forum Type"); + + long projectId = project.getId(); + long forumId = -1; + String tempStr; + + tempStr = (String) project.getProperty("Developer Forum ID"); + if (tempStr != null && tempStr.trim().length() != 0) { + forumId = Long.parseLong(tempStr, 10); + } + + request.setAttribute("viewContestLink", ConfigHelper.getProjectTypeViewContestLink(projectTypeName, projectId)); + + request.setAttribute("forumLink", ConfigHelper.getProjectTypeForumLink( + (projectTypeName.equalsIgnoreCase("studio") && hasForumType) ? "NewStudio" : projectTypeName, forumId)); + request.setAttribute("isAllowedToContactPM", + AuthorizationHelper.hasUserPermission(request, Constants.CONTACT_PM_PERM_NAME)); + return Constants.SUCCESS_FORWARD_NAME; } } diff --git a/src/main/java/com/cronos/onlinereview/actions/projectpayments/EditProjectPaymentsAction.java b/src/main/java/com/cronos/onlinereview/actions/projectpayments/EditProjectPaymentsAction.java index 963cecff2c..b9e9775072 100644 --- a/src/main/java/com/cronos/onlinereview/actions/projectpayments/EditProjectPaymentsAction.java +++ b/src/main/java/com/cronos/onlinereview/actions/projectpayments/EditProjectPaymentsAction.java @@ -8,8 +8,10 @@ import com.cronos.onlinereview.Constants; import com.cronos.onlinereview.util.ActionsHelper; import com.cronos.onlinereview.util.AuthorizationHelper; +import com.cronos.onlinereview.util.ConfigHelper; import com.cronos.onlinereview.util.CorrectnessCheckResult; import com.cronos.onlinereview.util.LoggingHelper; +import com.topcoder.onlinereview.component.project.management.Project; import com.topcoder.onlinereview.component.project.payment.ProjectPayment; import com.topcoder.onlinereview.component.project.payment.ProjectPaymentManager; import com.topcoder.onlinereview.component.project.payment.ProjectPaymentFilterBuilder; @@ -64,7 +66,30 @@ public String execute() throws BaseException { // At this point, redirect-after-login attribute should be removed (if it exists) AuthorizationHelper.removeLoginRedirect(request); - long projectId = verification.getProject().getId(); + Project project = verification.getProject(); + + request.setAttribute("projectStatus", project.getProjectStatus().getName()); + + final String projectTypeName = project.getProjectCategory().getProjectType().getName(); + + boolean hasForumType = project.getAllProperties().containsKey("Forum Type"); + + long projectId = project.getId(); + long forumId = -1; + String tempStr; + + tempStr = (String) project.getProperty("Developer Forum ID"); + if (tempStr != null && tempStr.trim().length() != 0) { + forumId = Long.parseLong(tempStr, 10); + } + + request.setAttribute("viewContestLink", ConfigHelper.getProjectTypeViewContestLink(projectTypeName, projectId)); + + request.setAttribute("forumLink", ConfigHelper.getProjectTypeForumLink( + (projectTypeName.equalsIgnoreCase("studio") && hasForumType) ? "NewStudio" : projectTypeName, forumId)); + request.setAttribute("isAllowedToContactPM", + AuthorizationHelper.hasUserPermission(request, Constants.CONTACT_PM_PERM_NAME)); + ProjectPaymentManager projectPaymentManager = ActionsHelper.createProjectPaymentManager(); List payments = projectPaymentManager.search( ProjectPaymentFilterBuilder.createProjectIdFilter(projectId)); diff --git a/src/main/java/com/cronos/onlinereview/actions/projectpayments/ViewProjectPaymentsAction.java b/src/main/java/com/cronos/onlinereview/actions/projectpayments/ViewProjectPaymentsAction.java index 998ed3c479..d44a621c0d 100644 --- a/src/main/java/com/cronos/onlinereview/actions/projectpayments/ViewProjectPaymentsAction.java +++ b/src/main/java/com/cronos/onlinereview/actions/projectpayments/ViewProjectPaymentsAction.java @@ -13,6 +13,7 @@ import com.cronos.onlinereview.util.ConfigHelper; import com.cronos.onlinereview.util.CorrectnessCheckResult; import com.cronos.onlinereview.util.LoggingHelper; +import com.topcoder.onlinereview.component.project.management.Project; import com.topcoder.onlinereview.component.project.payment.ProjectPayment; import com.topcoder.onlinereview.component.project.payment.ProjectPaymentManager; import com.topcoder.onlinereview.component.project.payment.ProjectPaymentFilterBuilder; @@ -65,7 +66,27 @@ public String execute() throws BaseException { // At this point, redirect-after-login attribute should be removed (if it exists) AuthorizationHelper.removeLoginRedirect(request); - long projectId = verification.getProject().getId(); + Project project = verification.getProject(); + + request.setAttribute("projectStatus", project.getProjectStatus().getName()); + + final String projectTypeName = project.getProjectCategory().getProjectType().getName(); + + boolean hasForumType = project.getAllProperties().containsKey("Forum Type"); + + long projectId = project.getId(); + long forumId = -1; + String tempStr; + + tempStr = (String) project.getProperty("Developer Forum ID"); + if (tempStr != null && tempStr.trim().length() != 0) { + forumId = Long.parseLong(tempStr, 10); + } + + request.setAttribute("viewContestLink", ConfigHelper.getProjectTypeViewContestLink(projectTypeName, projectId)); + + request.setAttribute("forumLink", ConfigHelper.getProjectTypeForumLink( + (projectTypeName.equalsIgnoreCase("studio") && hasForumType) ? "NewStudio" : projectTypeName, forumId)); ProjectPaymentManager projectPaymentManager = ActionsHelper.createProjectPaymentManager(); List payments = projectPaymentManager.search( ProjectPaymentFilterBuilder.createProjectIdFilter(projectId)); @@ -74,6 +95,8 @@ public String execute() throws BaseException { Resource[] resources = ActionsHelper.getAllResourcesForProject(verification.getProject()); populateResourcesMap(request, resources); request.setAttribute("payments", payments); + request.setAttribute("isAllowedToContactPM", + AuthorizationHelper.hasUserPermission(request, Constants.CONTACT_PM_PERM_NAME)); request.setAttribute("isAllowedToEditPayments", AuthorizationHelper.hasUserPermission(request, Constants.EDIT_PAYMENTS_PERM_NAME)); request.setAttribute("pactsPaymentDetailBaseURL", ConfigHelper.getPactsPaymentDetailBaseURL()); diff --git a/src/main/java/com/cronos/onlinereview/mockups/MockHandleTag.java b/src/main/java/com/cronos/onlinereview/mockups/MockHandleTag.java index ed8b6ae43f..99e530e7e4 100644 --- a/src/main/java/com/cronos/onlinereview/mockups/MockHandleTag.java +++ b/src/main/java/com/cronos/onlinereview/mockups/MockHandleTag.java @@ -185,8 +185,9 @@ public int doEndTag() throws JspException { textColor = "coderTextOrange"; } + // Start preparing resulting output - StringBuilder results = new StringBuilder("/tc?module=MemberProfile&cr="); // appending coder's id to the generated link results.append(coderId); // tab will be specified only if tab local variable is not empty diff --git a/src/main/java/com/cronos/onlinereview/util/AuthorizationHelper.java b/src/main/java/com/cronos/onlinereview/util/AuthorizationHelper.java index bea92da1b0..c171ea890b 100644 --- a/src/main/java/com/cronos/onlinereview/util/AuthorizationHelper.java +++ b/src/main/java/com/cronos/onlinereview/util/AuthorizationHelper.java @@ -219,6 +219,9 @@ public static void gatherUserRoles(HttpServletRequest request) throws BaseExcept ExternalUser extUser = usrMgr.retrieveUser(getLoggedInUserId(request)); // Place handle of the user into session as attribute request.getSession().setAttribute("userHandle", extUser.getHandle()); + request.getSession().setAttribute("userFirstName", extUser.getFirstName()); + request.getSession().setAttribute("userLastName", extUser.getLastName()); + request.getSession().setAttribute("userEmail", extUser.getEmail()); } // Perform search for resources @@ -478,7 +481,7 @@ private static AuthorizationService retrieveAuthorizationService(HttpServletRequ * Sets the sso cookie service to be used for authenticating users based on * cookie. *

- * + * * @param ssoCookieService the ssoCookieService to set */ public void setSsoCookieService(SSOCookieService ssoCookieService) { @@ -489,7 +492,7 @@ public void setSsoCookieService(SSOCookieService ssoCookieService) { *

* Validate jwt token *

- * + * * @param token the jwt token * @throws JWTException if any error occurs * @return the DecodedJWT result diff --git a/src/main/java/com/cronos/onlinereview/util/ConfigHelper.java b/src/main/java/com/cronos/onlinereview/util/ConfigHelper.java index d54c89c2d1..3cbf52776a 100644 --- a/src/main/java/com/cronos/onlinereview/util/ConfigHelper.java +++ b/src/main/java/com/cronos/onlinereview/util/ConfigHelper.java @@ -593,6 +593,11 @@ public class ConfigHelper { */ private static final String CHALLENGE_BY_LEGACY_ID_URL_V5 = "challenge_by_legacy_id_url_v5"; + /** + *

A String providing support requests v5 url property.

+ */ + private static final String SUPPORT_REQUEST_URL_V5 = "support_request_url_v5"; + /** * This member variable holds the submitter role id. */ @@ -1069,6 +1074,11 @@ public class ConfigHelper { */ private static String challengeByLegacyIdUrlV5; + /** + * Support Request URL + */ + private static String supportRequestUrlV5; + static { // Obtaining the instance of Configuration Manager ConfigManager cfgMgr = new ConfigManager(); @@ -1696,6 +1706,8 @@ public class ConfigHelper { newAuthUrl = newAuth.getValue("new_auth_url"); challengeByLegacyIdUrlV5 = cfgMgr.getString(ONLINE_REVIEW_CFG_NS, CHALLENGE_BY_LEGACY_ID_URL_V5); + + supportRequestUrlV5 = cfgMgr.getString(ONLINE_REVIEW_CFG_NS, SUPPORT_REQUEST_URL_V5); } catch (Exception une) { System.out.println(une.getMessage()); une.printStackTrace(); @@ -2586,4 +2598,12 @@ public static String getNewAuthUrl() { public static String getChallengeByLegacyIdUrlV5() { return challengeByLegacyIdUrlV5; } + + /** + * Get support request url + * @return url + */ + public static String getSupportRequestUrlV5() { + return supportRequestUrlV5; + } } diff --git a/src/main/resources/MessageResources.properties b/src/main/resources/MessageResources.properties index 3ec1e092fd..2999e716fc 100644 --- a/src/main/resources/MessageResources.properties +++ b/src/main/resources/MessageResources.properties @@ -9,6 +9,7 @@ Pending=Pending Incomplete=Incomplete btnBack.img=/i/or/bttn_back.gif btnBack.alt=Go back +btnBack.home=Back To Home btnClose.img=/i/or/bttn_close.gif btnClose.alt=Close this window btnCancel.img=/i/or/bttn_cancel.gif @@ -24,7 +25,7 @@ btnSubmit.alt=Submit btnUpload.img=/i/or/bttn_upload.gif btnUpload.alt=Upload btnDelete.img=/i/or/bttn_delete.gif -btnDelete.alt=Cancel +btnDelete.alt=Delete btnClear.img=/i/or/bttn_clear.gif btnClear.alt=Clear btnSearch.img=/i/or/bttn_search.gif @@ -322,7 +323,7 @@ AggregationItemStatus.Accepted=Accepted # ----- Final Fix Review Item Status names ----- FinalReviewItemStatus.Fixed=Fixed -FinalReviewItemStatus.NotFixed=Not Fixed +FinalReviewItemStatus.NotFixed=Not Fixed # ----- Final Fix Review Approval Status names ----- FinalReviewApprovalStatus.Approved=Final Fixes are Approved @@ -389,40 +390,40 @@ exception.com.cronos.onlinereview.actions.project.ListProjectsAction=Unexpected # ----- Page jsp/editProject.jsp ----- editProject.title.CreateNew=Create New Project editProject.ProjectDetails.title=Project Details -editProject.ProjectDetails.Name=Name: -editProject.ProjectDetails.Type=Type: -editProject.ProjectDetails.Category=Category: -editProject.ProjectDetails.Payments=Price: -editProject.ProjectDetails.DRPoints=DR points: +editProject.ProjectDetails.Name=Name +editProject.ProjectDetails.Type=Type +editProject.ProjectDetails.Category=Category +editProject.ProjectDetails.Payments=Price +editProject.ProjectDetails.DRPoints=DR points editProject.ProjectDetails.DRPointsMessage=* If empty, price will be used editProject.ProjectDetails.ContestPrizes=Contest Prizes editProject.ProjectDetails.CheckpointPrizes=Checkpoint Prizes editProject.ProjectDetails.Prize.Place=Place editProject.ProjectDetails.Prize.Amount=Amount -editProject.ProjectDetails.Prize.NoOfPrizes=# of Prizes +editProject.ProjectDetails.Prize.NoOfPrizes=Number of Prizes # since Online Review Update - Add Project Dropdown v1.0 -editProject.ProjectDetails.BillingProject=Billing Project: -editProject.ProjectDetails.CockpitProject=Cockpit Project: +editProject.ProjectDetails.BillingProject=Billing Project +editProject.ProjectDetails.CockpitProject=Cockpit Project editProject.Preferences.title=Preferences -editProject.Preferences.Autopilot=Autopilot: -editProject.Preferences.Autopilot.Completion=Completion: +editProject.Preferences.Autopilot=Autopilot +editProject.Preferences.Autopilot.Completion=Completion editProject.Preferences.Autopilot.Completion.Desc=Phases will advance automatically based on completion of the previous phase. editProject.Preferences.Autopilot.TurnOff=Turn Off -editProject.Preferences.SendEmails=Send Email Notifications: +editProject.Preferences.SendEmails=Send Email Notifications editProject.Preferences.SendEmails.Desc=Receive email notifications when project status changes. editProject.Preferences.DoNotRate=Do Not Rate this Project editProject.Preferences.ReceiveTimeline=Receive Timeline Notifications editProject.Preferences.DigitalRun=Digital Run editProject.References.title=References -editProject.References.ForumId=Forum Id: -editProject.References.ComponentId=Component Id: -editProject.References.ExternalReferenceId=Component Version Id: +editProject.References.ForumId=Forum Id +editProject.References.ComponentId=Component Id +editProject.References.ExternalReferenceId=Component Version Id editProject.References.SVNModule=SVN Module: editProject.Notes.title=Notes @@ -431,7 +432,7 @@ editProject.CreateTimeline.title=Create Timeline editProject.CreateTimeline.UseTemplate=Use Timeline Template: editProject.Phases.AddNewPhase=Add a New Phase -editProject.Phases.CurrentPhase=Current
Phase +editProject.Phases.CurrentPhase=Current Phase editProject.Phases.PhaseName=Phase Name editProject.Phases.PhaseStart=Phase Start editProject.Phases.PhaseEnd=Phase End @@ -459,7 +460,7 @@ editProject.Phases.OpenPhase.img=/i/or/bttn_open.gif editProject.Phases.ClosePhase.alt=Close editProject.Phases.ClosePhase.img=/i/or/bttn_close.gif -editProject.Phases.Criteria.Scorecard=Review Scorecard: +editProject.Phases.Criteria.Scorecard=Review Scorecard editProject.Phases.Criteria.RequiredRegistrations.beforeInput=Required editProject.Phases.Criteria.RequiredRegistrations.afterInput=registrations before ending this phase. editProject.Phases.Criteria.RequiredRegistrations.note=*Phase end will adjust automatically if required submissions are not received before date specified. @@ -483,8 +484,8 @@ editProject.Prizes.AddPrize.alt=Add Prize editProject.Prizes.AddPrize.img=/i/or/bttn_add_prize.gif editProject.Status.title=Status -editProject.Status.CurrentStatus=Current Status: -editProject.Status.Explanation.description=You must provide an explanation below if making changes to project status: +editProject.Status.CurrentStatus=Current Status +editProject.Status.Explanation.description=You must provide an explanation below if making changes to project status. editProject.Explanation.title=Explanation editProject.Explanation.description=You must provide an explanation below if making changes to this project: @@ -513,7 +514,7 @@ viewProjectDetails.Paid.yes=Paid viewProjectDetails.Paid.no=Not Paid viewProjectDetails.NoOutstandingDeliverables=There are no outstanding deliverables. viewProjectDetails.box.Timeline=Timeline -viewProjectDetails.ReceiveTLNotifications=Receive Timeline Change Notifications +viewProjectDetails.ReceiveTLNotifications=Receive timeline change notifications viewProjectDetails.Timeline.Phase=Phase viewProjectDetails.Timeline.Status=Status viewProjectDetails.Timeline.Start=Start @@ -547,9 +548,9 @@ viewProjectDetails.box.Submission.ReviewResult=Review{0} Result viewProjectDetails.box.Submission.Download=Download Submission viewProjectDetails.box.Submission.Previous.UploadID=Previous upload: viewProjectDetails.box.Submission.icoShowMore.alt=View Previous Submissions -viewProjectDetails.box.Submission.icoShowMore.img=/i/or/plus.gif +viewProjectDetails.box.Submission.icoShowMore.img=/i/reskin/showMore.svg viewProjectDetails.box.Submission.icoShowLess.alt= -viewProjectDetails.box.Submission.icoShowLess.img=/i/or/minus.gif +viewProjectDetails.box.Submission.icoShowLess.img=/i/reskin/showMore.svg viewProjectDetails.box.Submission.icoTrash.alt=Remove this Submission viewProjectDetails.box.Submission.icoTrash.img=/i/or/icon_trash.gif viewProjectDetails.box.Submission.icoPassed.alt=Passed @@ -767,7 +768,7 @@ error.com.cronos.onlinereview.actions.manageProject.ReviewPayments.Percentage.In # ----- Page jsp/editProjectLinks.jsp ----- -editProjectLinks.box.editLinks=Edit Project Links +editProjectLinks.box.editLinks=Project Links editProjectLinks.editLink.ProjectID=Project ID editProjectLinks.editLink.SelectProject=Select A Project editProjectLinks.editLink.LinkType=Link Type @@ -782,7 +783,7 @@ editProjectLinks.btnDelete.alt=delete # ----- Page /jsp/contactManager.jsp ----- contactManager.title=Contact Project Manager contactManager.Contact=Contact -contactManager.Category=Category: +contactManager.Category=Category contactManager.Category.no=Select contactManager.Category.Question=Question contactManager.Category.Comment=Comment @@ -913,7 +914,7 @@ editReview.ModificationDate=Modification Date: editReview.CompositeScorecard.title=Combined Review Scorecard editReview.EditAggregation.title=Edit Aggregation Worksheet editReview.EditAggregation.Reviewer=Reviewer -editReview.EditAggregation.CommentNumber=Comment
Number +editReview.EditAggregation.CommentNumber=Comment editReview.EditAggregation.Response=Response editReview.EditAggregation.Weight=Weight editReview.EditAggregation.Type=Type @@ -1006,7 +1007,7 @@ projectPayments.box.title.CreationDate=Creation Date projectPayments.box.NoPayments=There are no payments. projectPayments.box.Paid.Yes=Yes projectPayments.box.Paid.No=No -projectPayments.box.Paid.View=view +projectPayments.box.Paid.View=View projectPayments.btnEditPayments.img=/i/or/bttn_edit_payments.gif projectPayments.btnEditPayments.alt=Edit Payments @@ -1098,20 +1099,20 @@ editSpecificationReview.BeforeReject=You are about to reject the Specification.\ # ----- /jsp/viewLateDeliverables.jsp page ----- viewLateDeliverables.ValidationFailed=There were validation errors. See below. -viewLateDeliverables.ProjectCategory.Label=Project Category: -viewLateDeliverables.ProjectStatus.Label=Project Status: +viewLateDeliverables.ProjectCategory.Label=Project Category +viewLateDeliverables.ProjectStatus.Label=Project Status viewLateDeliverables.SearchForm.title=Search Parameters -viewLateDeliverables.ProjectID.Label=Project ID: -viewLateDeliverables.DeliverableType.Label=Deliverable Type: -viewLateDeliverables.JustifiedStatus.Label=Lateness Justified: +viewLateDeliverables.ProjectID.Label=Project ID +viewLateDeliverables.DeliverableType.Label=Deliverable Type +viewLateDeliverables.JustifiedStatus.Label=Lateness Justified viewLateDeliverables.AdvancedSearchParameters=Advanced Search Parameters -viewLateDeliverables.LateMemberHandle.Label=Late Member Handle: -viewLateDeliverables.CockpitProject.Label=Cockpit Project: -viewLateDeliverables.ExplanationStatus.Label=Explanation Status: -viewLateDeliverables.ResponseStatus.Label=Response Status: -viewLateDeliverables.DeadlineMinDate.Label=Deadline min date: -viewLateDeliverables.DeadlineMaxDate.Label=Deadline max date: -viewLateDeliverables.LateDeliverableType.Label=Late Deliverable Type: +viewLateDeliverables.LateMemberHandle.Label=Late Member Handle +viewLateDeliverables.CockpitProject.Label=Cockpit Project +viewLateDeliverables.ExplanationStatus.Label=Explanation Status +viewLateDeliverables.ResponseStatus.Label=Response Status +viewLateDeliverables.DeadlineMinDate.Label=Deadline From +viewLateDeliverables.DeadlineMaxDate.Label=Deadline To +viewLateDeliverables.LateDeliverableType.Label=Late Deliverable Type viewLateDeliverables.SearchResults.title=Search Results viewLateDeliverables.SearchResults.column.ProjectName=Project Name viewLateDeliverables.SearchResults.column.ProjectCategory=Project Category @@ -1138,8 +1139,14 @@ editLateDeliverable.Explanation.label=Explanation: editLateDeliverable.Response.label=Response: editLateDeliverable.ValidationFailed=There were validation errors. See below. +# ----- supportModal.jsp page ----- +supportForm.firstName=First Name +supportForm.lastName=Last Name +supportForm.email=Email +supportForm.textArea=How can we help you? + # ----- /jsp/editFinalReview.jsp page ----- -viewScorecard.MinimumPassingScore=The minimum passing score: +viewScorecard.MinimumPassingScore=The minimum passing score: # ----- Root Catalog names ----- RootCatalog.Java=Java Catalog diff --git a/src/main/resources/config.xml b/src/main/resources/config.xml index c891448101..18f2a11bbf 100644 --- a/src/main/resources/config.xml +++ b/src/main/resources/config.xml @@ -918,7 +918,7 @@ 20 21 - + 13 1003 15 @@ -2095,4 +2095,7 @@ @topcoder_api_base_url_v5@/challenges?legacyId= - \ No newline at end of file + + @topcoder_api_base_url_v5@/challenges/support-requests + + diff --git a/web/css/reskin-or/reskin.css b/web/css/reskin-or/reskin.css new file mode 100644 index 0000000000..3a3572aec9 --- /dev/null +++ b/web/css/reskin-or/reskin.css @@ -0,0 +1,2620 @@ +@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600&family=Barlow:wght@600;700&family=Roboto:wght@400;500;700&display=swap'); + +:root { + --tc-black: #0c0c0c; + --tc-white: #fff; + --black: #000000; + --black-100: #2a2a2a; + --black-80: #555555; + --black-60: #767676; + --black-40: #aaaaaa; + --black-20: #d4d4d4; + --black-10: #e9e9e9; + --yellow-25: #FDFCD1; + --black-5: #f4f4f4; + --black-2: #fbfbfb; + --green: #137d60; + --blue-1: #eaf6fd; + --blue-25: #bae1f9; + --blue-3: #2c95d7; + --grey-1: #767676; + --turq-15: #E0FAF3; + --link-blue: #5FB7EE; + --turq-120: #0ab88a; + --turq-160: #137d60; + --gold-1: #ffd84d; + --silver-1: #d1d0cf; + --bronze-1: #d98f64; + --red-100: #ef476f; + --purple-100: #9d41c9; + --link-blue-dark: #0d61bf; + --handle-red: #ef3a3a; + --handle-grey: #555555; + --handle-green: #2d7e2d; + --handle-blue: #616bd5; + --handle-yellow: #f2c900; + --turq-140: #219174; + --legacy-100: #fd7d01; + --turq-180: #0d664e; + --screen-max: 1376px; + --header-height: 60px; + --footer-height: 48px; +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; +} + +.webHeader { + background-color: var(--tc-black); + display: block; + position: fixed; + top: 0; + width: 100%; + z-index: 999; +} + +.webHeader__inner { + align-items: center; + display: flex; + height: var(--header-height); + margin: 0 auto; + max-width: var(--screen-max); + padding: 0 32px; +} + +.webHeader__logo { + padding-right: 24px; +} + +.webHeader__logo svg { + fill: none; + height: 20px; + width: 56px; +} + +.webHeader__logo svg path { + fill: #fff; +} + +.webHeader__nav { + align-items: center; + border-left: 1px solid #555; + display: flex; + padding-left: 24px; + margin-right: auto; +} + +.webHeader__navMenu { + align-items: center; + color: #fff; + display: flex; + flex-direction: column; + text-transform: uppercase; + font-family: 'Barlow Condensed', sans-serif; + font-style: normal; + font-weight: 500; + font-size: 20px; +} + +.webHeader__navMenu--active::after { + content: ""; + background-color: var(--turq-120); + height: 2px; + width: 24px; +} + +.webHeader__avatar { + display: none; +} + +.webHeader__avatar a { + font-family: 'Barlow Condensed', sans-serif; + font-style: normal; + font-weight: 700; + font-size: 14px; + line-height: 14px; + text-decoration: none !important; + text-transform: uppercase; +} + +.webHeader__avatarImage { + display: flex; + justify-content: center; + align-items: center; + width: 32px; + height: 32px; + border-radius: 50%; + border: 2px white solid; + background: linear-gradient(84.45deg, #05456d 2.12%, #0a7ac0 97.43%); +} + +.webHeader a { + color: #fff !important; + text-decoration: none !important; +} + +.mainTabs { + width: 100%; + background-color: var(--black-10); + position: fixed; + top: var(--header-height); + z-index: 998; + font-family: Barlow, sans-serif; + text-transform: uppercase; + font-weight: 600; + font-size: 14px; + line-height: 20px; +} + +.mainTabs__inner { + height: 56px; + margin: 0 auto; + max-width: var(--screen-max); + display: flex; + align-items: center; + column-gap: 24px; + padding: 0 32px; +} + +.mainTabs a { + color: #555555 !important; + text-decoration: none !important; +} + +.mainTabs strong { + color: #2a2a2a !important; + text-decoration: none !important; + font-weight: 700; +} + +.divider { + height: 2px; + background: var(--black-10); + border-radius: 1px; + width: 100%; + margin: 24px 0 32px 0; +} + +.content { + margin: 0; + padding-bottom: 90px; + padding-top: 116px; + min-height: 100vh; +} + +.content--projectDetails { + padding-bottom: 144px; +} + +.content--manageProject { + padding-bottom: 148px; +} + +.content__inner { + display: block; + margin: 0 auto; + max-width: var(--screen-max); + padding: 0 32px; +} + +.projectInfo { + flex-grow: 1; + margin-bottom: -12px; +} + +.paymentTable__paid, +.viewProjectPayment__header, +.editProjectLink__header, +.error__projectName, +.scoreInfo__title { + display: flex; + align-items: flex-end; +} + +.editProject__header { + margin: 36px 0 16px; +} + +.editPayment__submission { + display: flex; + align-items: center; +} + +.editPayment__submission .selectCustom, +.editPayment__submission .selectCustom-add { + margin-left: 8px; + width: 28%; +} + +.error__projectName { + border-bottom: 2px solid var(--black-10); + border-radius: 1px; +} + +.scoreBoard__title, +.attention { + font-family: 'Barlow'; + font-style: normal; + font-weight: 600; + font-size: 24px; + margin-bottom: 17px; + line-height: 28px; + text-transform: uppercase; +} + +.attention { + margin: 32px 0 32px; +} + +.back-btn { + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 24px; + background: var(--tc-white); + cursor: pointer; + margin-right: 16px; + margin-bottom: 25px; + border: 1.5px solid var(--green); + border-radius: 24px; + box-sizing: border-box; +} + +.back-btn:hover { + color: var(--turq-140); + border-color: var(--turq-140); +} +.back-btn:active { + color: var(--turq-180); + border-color: var(--turq-180); +} +.back-btn .arrow-prev-icon { + content: url('/i/reskin/arrow-prev.svg'); +} + +.edit-back-btn { + margin-bottom: 43px; +} + +.toast__icon .success-icon { + content: url('/i/reskin/success-check.svg'); +} + +.toast-close { + content: url('/i/reskin/toast-close.svg'); +} + +.lateDeliverables__header, +.projectInfo__projectName { + font-family: 'Barlow Condensed', sans-serif; + font-style: normal; + font-weight: 600; + font-size: 34px; + line-height: 32px; + text-transform: uppercase; + color: var(--black-100); + text-align: left; + margin-top: 32px; + min-height: 32px; +} + +.projectInfo__info, +.scoreInfo__info { + display: flex; + align-items: center; + column-gap: 24px; +} + +.projectInfo__projectVersion, +.projectInfo__projectStatus, +.scoreInfo__reviewer, +.scoreInfo__submission, +.scoreInfo__date, +.scoreInfo__role { + font-family: 'Roboto', sans-serif; + font-style: normal; + font-weight: 700; + font-size: 12px; + line-height: 16px; + text-transform: uppercase; + color: var(--black-60); + text-align: left; + margin-top: 0; + letter-spacing: 1px; +} + +.projectInfo__links, +.scoreInfo__links { + display: flex; + column-gap: 16px; + margin-left: auto; +} + +.projectInfo__link, +.scoreInfo__link { + font-family: 'Roboto', sans-serif; + font-style: normal; + font-weight: 700; + font-size: 14px; + line-height: 14px; + text-decoration: none !important; + text-transform: uppercase; + color: var(--turq-160) !important; + letter-spacing: 0.03em; +} + +.accordionAction { + font-family: 'Roboto', sans-serif; + font-style: normal; + font-weight: 700; + font-size: 14px; + line-height: 14px; + text-transform: uppercase; + + color: var(--turq-160); + + display: flex; + column-gap: 24px; + align-items: center; + justify-content: flex-end; +} + +.accordionAction > * { + cursor: pointer; +} + +.collapse__all, +.expand__all { + font-family: 'Roboto', sans-serif; + font-style: normal; + font-weight: 700; + font-size: 14px; + line-height: 14px; + text-transform: uppercase; + color: var(--turq-160) !important; + align-items: center; + justify-content: flex-end; + text-decoration: none !important; +} + +.expand__all { + margin-right: 16px; +} + +.manageProject, +.viewProjectPayment, +.editProject, +.editProjectLink, +.projectDetails { + border: 2px solid var(--black-10); + border-radius: 8px; + padding: 16px 16px 0; + margin: 32px auto; +} + +.manageProject { + position: relative; +} + +.manageProject__title, +.viewProjectPayment__title, +.editProjectLink__title, +.projectDetails__title { + font-family: 'Barlow', sans-serif; + font-style: normal; + font-weight: 600; + font-size: 24px; + line-height: 28px; + color: #000; + text-transform: uppercase; + flex-grow: 1; +} + +.manageProject__sectionHeader, +.editProject__sectionHeader, +.viewProjectPayment__sectionHeader, +.editProjectLink__sectionHeader, +.projectDetails__sectionHeader { + display: flex; + align-items: center; + padding-bottom: 16px; +} + +.editProject__checkbox, +.projectDetails__notificationCheckbox { + /* TC-Type/Desktop/Body/Body-Main */ + font-family: 'Roboto', sans-serif; + font-style: normal; + font-weight: 400; + font-size: 16px; + line-height: 24px; + position: relative; + display: inline-flex; + align-items: center; +} + +.editProject__checkbox input[type="checkbox"], +.projectDetails__notificationCheckbox input[type="checkbox"] { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; + cursor: pointer; +} + + +.projectDetails__notificationCheckbox input[type="checkbox"] ~ .checkbox-label { + margin: 8px; +} + +.projectDetails__notificationCheckbox input[type="checkbox"] ~ .preferences__email { + margin-left: 0; + margin-right: 8px; +} + +.editPhaseTable__body td input[type="checkbox"] ~ .checkbox-label { + margin: 0; +} + +.editPhaseTable__body td input[type="checkbox"] ~ .checkbox-label::before, +.projectDetails__notificationCheckbox input[type="checkbox"] ~ .checkbox-label::before { + content: ''; + display: block; + width: 20px; + height: 20px; + background-color: #fff; + border: 1.52px solid #7f7f7f; + border-radius: 3px; + box-sizing: border-box; +} + +.editPhaseTable__body td input[type="checkbox"] ~ .checkbox-label::after, +.projectDetails__notificationCheckbox input[type="checkbox"] ~ .checkbox-label::after { + content: url('/i/reskin/checkbox.svg'); + display: none; + box-sizing: border-box; +} + +.editPhaseTable__body td input[type="checkbox"]:checked ~ .checkbox-label::before, +.projectDetails__notificationCheckbox input[type="checkbox"]:checked ~ .checkbox-label::before { + display: none; +} + +.editPhaseTable__body td input[type="checkbox"]:checked ~ .checkbox-label::after, +.projectDetails__notificationCheckbox input[type="checkbox"]:checked ~ .checkbox-label::after { + display: block; +} + +.editPhaseTable__body td input[type="checkbox"]:disabled:checked ~ .checkbox-label::after { + content: url('/i/reskin/checkbox-disabled.svg'); + box-sizing: border-box; +} + +.lateDeliverables__accordion, +.projectDetails__accordion { + margin-left: 30px; + background-image: url("/i/reskin/chevron-up.svg"); + height: 32px; + width: 32px; + cursor: pointer; +} + +.lateDeliverables__accordion--collapse, +.projectDetails__accordion--collapse { + background-image: url("/i/reskin/chevron-down.svg"); + height: 32px; + width: 32px; +} + +.projectDetails__tabs { + /* TC-Type/Desktop/Tabs/Medium-Tab-Bold */ + font-family: 'Barlow', sans-serif; + font-style: normal; + font-weight: 600; + font-size: 14px; + line-height: 20px; + display: flex; + background: #eaf6fd; + border-radius: 4px 4px 0 0; + align-items: stretch; + text-transform: uppercase; + box-shadow: 0 1px 0 var(--black-20); + margin-bottom: 25px; +} + +.projectDetails__tab:first-child { + border-radius: 4px 0 0 0; +} + +.projectDetails__tab a { + text-decoration: none !important; + color: var(--black-80) !important; +} + +.projectDetails__tab--active a { + text-decoration: none !important; + color: var(--black-100) !important; + font-weight: 700; +} + +.projectDetails__tab:hover { + background-color: #d6edfc; +} + +.projectDetails__tab { + padding: 11px 16px; +} + +.projectDetails__tab--active { + background: var(--blue-25); + display: flex; + justify-content: center; + position: relative; +} + +.projectDetails__tab--active:hover { + background: var(--blue-25); +} + +.projectDetails__tab--active::after { + content: ""; + background-image: url("/i/reskin/nav-active-item.svg"); + height: 10px; + width: 58px; + justify-content: center; + z-index: 99; + display: block; + position: absolute; + top: 100%; +} + +table.scorecard { + background: var(--tc-white); + margin-bottom: 32px; +} + +table.scorecard tr.highlighted { + background: var(--yellow-25); + border-bottom: 2px solid var(--black-10); +} + +table.scorecard td.title { + padding: 8px 16px; + font-family: 'Barlow'; + font-weight: 700; + font-size: 14px; + line-height: 20px; + text-transform: uppercase; + background: var(--black-10); + border-bottom: 2px solid var(--black-20); + border-radius: 8px 8px 0px 0px; +} + +.subheader, +.subheader__weight, +.subheader__response { + font-family: 'Barlow'; + font-style: normal; + font-weight: 600; + font-size: 14px; + line-height: 20px; + text-transform: uppercase; + color: var(--black-60); + padding: 8px 16px; + background: var(--black-5); +} + +.subheader__weight, +.subheader__response { + font-size: 11px; + line-height: 14px; +} + +.subheader__response { + padding-left: 0; +} + +.hideText { + display: none; +} + +.showText { + display: block; +} + +table.scorecard tr.light { + background-color: var(--tc-white) +} + +table.scorecard td.value, table.scorecard td.approvalText, table.scorecard td.valueC, td.valueR, td.valueB, +table.scorecard td.totalValue, table.scorecard td.totalValueC, td.totalValueR, td.totalValueB, +table.scorecard td.response { + border-top: 2px solid var(--black-10); + padding: 16px; + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-size: 14px; + vertical-align: top; + color: var(--black-100); + line-height: 22px; +} + +table.scorecard td.totalValue, +table.scorecard td.totalValueC, td.totalValueR, +table.scorecard td.approvalText { + padding: 8px 16px; +} + +b { + font-weight: 500; +} + +table.scorecard td.response { + padding: 10px 16px 10px 50px; +} + +table.scorecard td.totalValueC, +.responseNum { + font-weight: 500; +} + +table.scorecard td.totalValue, table.scorecard td.totalValueC, td.totalValueR, td.totalValueB { + border-top: 0; + border-bottom: 2px solid var(--black-10); +} + +table.scorecard tr.finalResponse, +table.scorecard tr.approval, +table.scorecard tr.review { + background: var(--black-20); +} + +table.scorecard td.header, table.scorecard td.reviewerResp, +table.scorecard td.headerC, table.scorecard td.headerT, +table.scorecard td.headerF, table.scorecard td.headerN, +table.scorecard td.headerR { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + font-size: 14px; + line-height: 22px; + color: var(--black-100); + padding: 8px 16px; +} + +table.scorecard td.reviewerResp { + font-weight: 400; +} + +table.scorecard tr.finalComment { + background-color: var(--tc-white); + border-bottom: 2px solid var(--black-10); +} + +table.scorecard td.header { + background-color: var(--black-20); +} + +table.scorecard td.headerN, +table.scorecard td.valueR { + padding-left: 0; +} + +table.scorecard td.headerT { + padding-right: 0; +} + +.statLink { + margin-left: 4px; + margin-right: 14px; +} + +.question { + margin-right: 22px; + font-weight: 500; +} + +.guideline { + margin-left: 34px; + margin-top: 16px; +} + +.addPayment, +.phaseButton, +.deletePayment, +.backToHome, +.addResource, +.deleteResource, +.editPaymentBtn, +.returnBtn { + display: inline-flex; + align-items: center; + font-family: 'Roboto'; + font-weight: 700; + font-size: 16px; + height: 48px; + line-height: 24px; + letter-spacing: 0.008em; + text-transform: uppercase; + padding: 12px 24px; + background: var(--tc-white); + border: 2px solid var(--turq-160); + border-radius: 24px; + color: var(--turq-160); + cursor: pointer; + text-decoration: none !important; +} + +.editPaymentBtn { + margin-right: 12px; +} + +.deleteResource, +.addResource { + padding: 4px 18px; + font-size: 13px; + line-height: 24px; + height: 32px; +} + +.addResource:hover, +.deleteResource:hover, +.addPayment:hover, +.phaseButton:hover, +.deletePayment:hover, +.submit__btn:hover, +.backToHome:hover, +.editPaymentBtn:hover, +.returnBtn:hover { + color: var(--turq-140); + border-color: var(--turq-140) !important; +} + +.addResource:active, +.addPayment:active, +.deleteResource:active, +.phaseButton:active, +.deletePayment:active, +.submit__btn:active, +.backToHome:active, +.editPaymentBtn:active, +.returnBtn:active { + color: var(--turq-180); + border-color: var(--turq-180) !important; +} + +.phaseButton, +.deletePayment, +.addPayment { + padding: 3px 16px; + font-size: 12px; + height: 24px; +} + +table.scorecard td.reviewerResp input { + width: 18px; + height: 18px; +} + +.cta { + position: fixed; + width: 100%; + bottom: var(--footer-height); + background-color: #fff; + z-index: 999; + box-shadow: 0 0 16px 16px rgb(42 42 42 / 10%); +} + +.cta__inner { + padding: 16px 32px; + column-gap: 16px; + display: flex; + justify-content: flex-end; + max-width: var(--screen-max); + margin: auto; +} + +.cta a { + display: inline-flex; + align-items: center; + height: 48px !important; + padding: 12px 22px !important; + background: none !important; + border: 2px solid var(--green); + border-radius: 50px; + text-transform: uppercase; + user-select: none; + font-family: Roboto, sans-serif; + font-weight: 700; + font-size: 16px; + line-height: 24px !important; + letter-spacing: 00.008em; + color: var(--green); + text-decoration: none !important; +} + +.webFooter { + border-top: 1px solid var(--black-10); + height: var(--footer-height); + width: 100%; + position: fixed; + bottom: 0; + z-index: 999; + background-color: #fff; +} + +.webFooter__inner { + align-items: center; + color: #2a2a2a; + display: flex; + margin: 0 auto; + max-width: var(--screen-max); + padding: 16px 32px; + + /* TC-Type/Desktop/Body/Body-Ultra-Small */ + font-family: 'Roboto', sans-serif; + font-style: normal; + font-weight: 400; + font-size: 12px; + line-height: 18px; +} + +.webFooter__links { + align-items: center; + display: flex; + gap: 16px; +} + +.webFooter__socials { + align-items: center; + color: #7f7f7f; + display: flex; + gap: 4px; + margin-left: auto; +} + +.webFooter a { + color: #2a2a2a !important; + text-decoration: none !important; + cursor: pointer; +} + +.coderTextBlack, +.coderTextRed, +.coderTextYellow, +.coderTextBlue, +.coderTextGreen, +.coderTextGray, +.coderTextOrange { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + font-size: 14px; + line-height: 22px; + text-decoration: none !important; +} + +.scoreInfo__info .coderTextGray, +.scoreInfo__info .coderTextRed, +.scoreInfo__info .coderTextYellow, +.scoreInfo__info .coderTextGreen, +.scoreInfo__info .coderTextBlue, +.scoreInfo__info .coderTextGray, +.scoreInfo__info .coderTextBlack { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + font-size: 12px; + line-height: 16px; + letter-spacing: 1px; + text-transform: none +} + +.coderTextBlack { + color: var(--black-100) !important; +} + +.coderTextRed { + color: var(--handle-red) !important; +} + +.coderTextGray { + color: var(--handle-grey) !important; +} + +.coderTextGreen { + color: var(--handle-green) !important; +} + +.coderTextBlue { + color: var(--handle-blue) !important; +} + +.coderTextYellow { + color: var(--handle-yellow) !important; +} + +.coderTextOrange { + color: var(--legacy-100) !important; +} + +.editProjectPaymentTable__header th, +.editPhaseTable__header th, +.projectLinkTable__header th, +.myInfoTable__header th, +.timelineTable__header th, +.phasesTable__header th, +.prizesTable__header th, +.resourcesTable__header th, +.reviewPaymentTable__header th, +.projectListTable__header th, +.editPrizeTable__header td.header, +.addResourcesTable__header td.title, +.lateDeliverablesTable__header th, +.projectPaymentTable__header th { + height: 30px; + background: var(--black-5); + font-family: 'Barlow'; + font-style: normal; + font-weight: 600; + font-size: 11px; + line-height: 14px; + text-transform: uppercase; + text-align: left; + color: var(--black-80); + padding: 0 16px; +} + +.editPrizeTable__header td.header { + border-top: none; + vertical-align: middle; +} + + +.projectLinkTable__header th { + padding-right: 8px; +} + +.editProjectPaymentTable__header th:first-child, +.projectLinkTable__header th:first-child, +.editPhaseTable__header th:first-child, +.myInfoTable__header th:first-child, +.addResourcesTable__header td.title:first-child, +.timelineTable__header--left th:first-child, +.phasesTable__header th:first-child, +.prizesTable__header th:first-child, +.reviewPaymentTable__header th:first-child, +.resourcesTable__header th:first-child, +.projectListTable__header th:first-child, +.editPrizeTable__header td.header:first-child, +.lateDeliverablesTable__header th:first-child, +.projectPaymentTable__header th:first-child { + border-top-left-radius: 8px; +} + +.editProjectPaymentTable__header th:last-child, +.myInfoTable__header th:last-child, +.editPhaseTable__header th:last-child, +.addResourcesTable__header td.title:last-child, +.reviewPaymentTable__header th:last-child, +.timelineTable__header--right th:last-child, +.phasesTable__header th:last-child, +.editPrizeTable__header td.header:last-child, +.prizesTable__header th:last-child, +.resourcesTable__header th:last-child, +.projectListTable__header th:last-child, +.lateDeliverablesTable__header th:last-child, +.projectPaymentTable__header th:last-child, +.projectLinkTable__header th:last-child { + border-top-right-radius: 8px; +} + +.editProjectPaymentTable__body td, +.timelineTable__body td, +.phasesTable__body td, +.editProjectDetailsTable__body td, +.editPrizeTable__body td, +.resourcesTable__body td, +.prizesTable__body td, +.preferencesTable__body td, +.editPhaseTable__body td, +.editResourceTable__body td, +.projectListTable__body td, +.extendRegistration__body td, +.extendSubTable__body td, +.addResourcesTable__body td, +.reviewPaymentTable__body td, +.projectPaymentTable__body td { + height: 56px; + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + font-size: 14px; + line-height: 22px; + color: var(--black-100); + padding: 0 8px 0 16px; + border-top: 2px solid var(--black-10); +} + +.editProjectDetailsTable__body td { + padding: 16px; + width: 50%; +} + +.editProjectDetailsTable__body td .selectCustom { + width: 100%; +} + +.editProjectDetailsTable__body tr td:first-child { + border-right: 2px solid var(--black-10); +} + +.editPhaseTable__body td { + padding: 18px 8px 16px 16px; + vertical-align: top; +} + +.projectLinkTable__body td, +.myInfoTable__body td { + padding: 18px 16px 16px 16px ; + vertical-align: top; + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + font-size: 14px; + line-height: 22px; + border-top: 2px solid var(--black-10); + color: var(--black-100); +} + +.preferencesTable__body td { + padding: 16px 8px 16px 16px; +} + +.projectLinkTable__body td { + vertical-align: middle; + padding: 18px 8px 16px 16px; +} + + +.myInfoTable__body .roles__info td { + padding: 0 16px 12px 0; + border: none; +} + +.projectList__inner { + margin-bottom: 32px; +} + +.projectListTable__body { + vertical-align: top; +} + +.projectListTable__body td { + padding: 16px; + margin-bottom: 16px; +} + +.projectListTable__body td.challengeName { + min-width: calc(0.395 * var(--screen-max)); + max-width: calc(0.395 * var(--screen-max)); + padding-top: 26px; +} + +.projectListTable__header th:first-child, +.projectListTable__body td.challengeName.my { + min-width: calc(0.28 * var(--screen-max)); + max-width: calc(0.28 * var(--screen-max)); +} + +.projectListTable__body td.challengeName div { + display: flex; + flex-direction: column; + width: 100%; + gap: 8px; + white-space: normal !important; +} + +.projectListTable__body td.challengeName span { + font-family: 'Roboto', sans-serif; + font-style: normal; + font-weight: 700; + font-size: 12px; + line-height: 16px; + text-transform: uppercase; + color: var(--black-60); + text-align: left; + letter-spacing: 1px; +} + +.projectListTable__body td.noChallenges { + height: 550px; + font-size: 24px; + font-weight: 400; + color: #000000; + vertical-align: middle; + text-align: center; +} + +.projectListTable__body tr:last-child td { + border-bottom: 2px solid var(--black-10); +} + +.projectListPagination { + display: flex; + justify-content: space-between; + margin-top: 24px; + margin-bottom: 0px +} + +.projectListPagination div { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + font-size: 14px; + line-height: 22px; + color: var(--black-100); + padding: 0; +} + +.myInfoTable th { + width: 50%; +} + +.prizesTable th { + width: 33% +} + +.phasesTable__registrants th, +.resourcesTable th { + width: 20%; +} + +.phasesTable__specification th { + width: 25%; +} + +.phasesTable th:first-child { + width: 23%; +} + +.phasesTable__review th:first-child { + width: unset; +} + +.reviewers__section .value, +.reviewers__section .reviewer { + padding: 0 16px 16px 16px; + font-family: 'Roboto'; + font-weight: 500; + font-size: 14px; + color: var(--black-100); + line-height: 22px; +} + +.reviewer p { + font-family: 'Roboto'; + font-weight: 500; + font-size: 14px; + line-height: 22px; + margin: 0; +} + +.reviewer span { + margin-right: 2px; +} + +.myInfoTable a, +.timelineTable a, +.timelineTable a:hover, +.phasesTable a, +.projectDetailsGrid a, +.resourcesTable a, +.projectListTable a, +.projectListTable a:hover, +.projectPaymentTable a, +.lateDeliverables__expand a { + color: var(--link-blue-dark); + text-decoration: none !important; +} + +/* Scrollbar CSS */ + /* Firefox */ +.timelineProgressBar { + scrollbar-width: auto; + scrollbar-color: var(--black-20) var(--tc-white); + width: 248px; + height: 16px; +} + +/* Chrome, Edge, and Safari */ +.timelineProgressBar::-webkit-scrollbar { + width: 16px; + width: 248px; + height: 16px; +} + +.timelineProgressBar::-webkit-scrollbar-track { + background: var(--tc-white); + width: 248px; + height: 16px; +} + +.timelineProgressBar::-webkit-scrollbar-thumb { + background-color: var(--black-20); + border-radius: 8px; + width: 248px; + height: 16px; + border: 3px solid var(--tc-white); +} + +.myInfoTable__deliverableItem { + margin: 8px 0; +} + +.timelineTable__body--right td { + padding-left: 8px; +} + +.timelineTable__body--left td:last-child { + border-right: 2px solid var(--black-10); +} + +.timelineTable__body--right tr:last-child td, +.timelineTable__body--left tr:last-child td { + border-bottom: 2px solid var(--black-10); +} + +.ganttRow dt { + height: 24px; + background: var(--purple-100); + border-radius: 16px; + transform: matrix(-1, 0, 0, 1, 0, 0); +} + +.currentTime { + top: 32px; + border-left: 1px dashed blue; + bottom: 0; + display: block; + position: absolute; +} + +.phasesTable__placements { + display: inline-flex; + justify-content: center; + align-items: center; + padding: 8px; + width: 32px; + height: 32px; + border-radius: 20px; + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + font-size: 12px; + line-height: 18px; + margin-right: 8px; +} + +.phasesTable { + width: 100%; +} + +td.phasesTable__empty, +td.resourcesTable__empty { + height: 20px; +} + +.phasesTable__body--center td { + text-align: center; + border-top: unset; +} + +.phasesTable__placements--first { + background: var(--gold-1); +} + +.phasesTable__placements--second { + background: var(--silver-1); +} + +.phasesTable__placements--third { + background: var(--bronze-1); +} + +.phasesTable__placements--forth, +.phasesTable__placements--fifth { + background: var(--turq-15); +} + +.phasesTable__placements--failed { + background: var(--red-100); +} + +.projectDetailsGrid { + column-count: 3; + column-rule: 2px solid var(--black-10); + column-gap: 0; + margin-bottom: -2px; +} + +.projectDetailsGrid a, +.projectDetailsGrid { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + font-size: 14px; + line-height: 22px; +} + +.projectDetailsGrid .body { + margin-top: 8px; + font-weight: 400; +} + +.projectDetailsGrid .item { + height: 84px; + padding: 16px; + -webkit-column-break-inside: avoid; + page-break-inside: avoid; + break-inside: avoid; + border-bottom: 2px solid var(--black-10); +} + +.projectDetailsGrid { + border-top: 2px solid var(--black-10); +} + +.custom-select-container { + font-family:'Roboto'; + max-width: 326px; + max-height: 62px; + margin-bottom: 24px; +} + +.custom-select-container *:after, +.custom-select-container *:before { + box-sizing: border-box; +} + +.select-custom-wrapper, +.custom-select-wrapper { + position: relative; + user-select: none; + width: 100%; +} + +.custom-select { + display: flex; + flex-direction: column; + border: solid 1px var(--black-40); + border-radius: 4px; + padding-top: 8px; +} + +.custom-select.disabled { + font-weight: 400; + font-size: 14px; + line-height: 22px; + color: #767676 !important; +} + +.grey { + height: 40px; + padding: 8px 0; + background: var(--tc-white); + border: 1px solid var(--black-40); +} + +.greyText { + font-weight: 400 !important; + color: var(--black-60) !important; +} + +.select-selected:hover:not(.disabled), +.custom-select:hover:not(.disabled) { + border-color: var(--turq-160); + cursor: pointer; +} + +.custom-select.open { + border-color: var(--turq-160); +} + +.selectCustom__label, +.custom-select__label { + font-weight: 500; + font-size: 11px; + line-height: 10px; + color: var(--turq-160); + margin-left: 10px; +} + +.selectCustom__label { + position: relative; + top: 7px; +} + +.selectedText--label { + padding: 10px 10px 0 10px; +} + +.greyText, +.custom-select__trigger { + position: relative; + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 1px; + padding: 0 10px; + font-size: 14px; + font-weight: 300; + color: var(--black-100); + height: 27px; + line-height: 22px; + background: none; + cursor: pointer; + width: 100%; + border: none; +} + +.custom-select__trigger--unselected { + color: var(--black-60); +} + +.custom-options { + position: absolute; + display: block; + top: 104%; + left: 0; + right: 0; + border: 1px solid var(--black-40); + background: var(--tc-white); + opacity: 0; + visibility: hidden; + pointer-events: none; + z-index: 2; + border-radius: 4px; + max-height: 250px; + overflow: auto; +} + +.custom-select.open .custom-options { + opacity: 1; + visibility: visible; + pointer-events: all; + z-index:9999; +} + +.custom-option { + position: relative; + display: block; + padding: 8px 16px; + font-size: 16px; + font-weight: 400; + color: var(--black-100); + line-height: 24px; + cursor: pointer; + transition: all 0.5s; +} + +.custom-option-grey { + padding: 6px 10px; +} + +.custom-option:not(.group):hover { + cursor: pointer; + color: var(--tc-white); + background-color: var(--turq-160); +} + +.custom-option.group { + cursor: default; + font-weight: 500; +} + +.custom-option.group:hover { + background: none; +} + +.custom-option.selected { + font-weight: 700; + font-size: 16px; + line-height: 24px; + color: var(--black-100); +} + +.custom-option.selected:not(.group):hover { + color: var(--tc-white); +} + +.arrow { + position: relative; + height: 7px; + width: 7px; +} + +.arrow::after { + content: url('/i/reskin/arrow-down-sm.svg'); + position: absolute; + right: 1px; + height: 100%; +} + +.lateDeliverables__basic, +.lateDeliverables__advanced, +.lateDeliverables__results { + display: flex; + flex-direction: column; + border-radius: 8px; + border: 2px solid var(--black-10); + padding: 16px; + margin: 32px auto; +} + +.lateDeliverables__title, +.contactManager__title { + font-family: 'Barlow'; + font-style: normal; + font-weight: 600; + font-size: 24px; + line-height: 28px; + text-transform: uppercase; + color: #000000; +} + +.lateDeliverables__row { + display: flex; + gap: 16px; + margin: 16px 0 0; +} + +.lateDeliverables__input { + flex-basis: 33%; +} + +.lateDeliverables__selection { + font-family: 'Roboto'; +} + +.projectDetails__inputText, +.lateDeliverables__inputText, +.support__inputText { + display: flex; + flex-direction: column; + background: var(--tc-white); + border: 1px solid var(--black-40); + border-radius: 4px; + height: 48px; + padding: 8px 10px; +} + +.support__inputText { + padding: 8px 10px 1px; + margin-bottom: 18px; +} + +.projectDetails__inputText label, +.lateDeliverables__inputText label, +.support__inputText label, +.support__message label, +.explanation label, +.contactManager label { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + font-size: 11px; + line-height: 10px; + color: var(--turq-160); +} + +.projectDetails__inputText input, +.lateDeliverables__inputText input, +.support__inputText input, +.support__message textarea, +.explanation textarea, +.contactManager textarea { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-size: 14px; + line-height: 22px; + padding: 0; + margin-bottom: 4px; + color: var(--black-100); + border: none; + resize: none; + width: 100%; +} + +.contactManager textarea { + margin-top: 7px; +} + +.support__message { + margin-bottom: 18px; +} + +.support__message textarea { + height: 48px; +} + +.inputDate:hover:not([disabled]), +.inputTime:hover:not([disabled]), +.resourceHandle:hover:not([disabled]), +.edit__inputBoxDuration:hover:not([disabled]), +.editInputBox:hover:not([disabled]), +.lateDeliverables__input:hover, +.explanation__message:hover, +.contactManager__message:hover, +.support__input:hover, +.support__message:hover { + border-color: var(--turq-160); +} + +.support__contact .support__inputText:focus-within, +.support__message:focus-within { + border-width: 2px; + padding: 7px 9px 0; + border-color: var(--turq-160); +} + +.support__contact .support__inputText:focus-within input, +.support__message:focus-within textarea { + color: var(--black-100); +} + +.inputDate:focus, +.inputTime:focus, +.edit__inputBoxDuration:focus, +.editInputBox:focus, +.resourceHandle:focus, +.projectDetails__inputText input:focus, +.lateDeliverables__inputText input:focus, +.support__inputText input:focus, +.support__message textarea:focus, +.explanation textarea:focus, +.contactManager textarea:focus { + outline: none; +} + +.lateDeliverables__advancedHeader { + display: flex; + align-items: center; +} + +.lateDeliverables__accordion { + margin-left: auto; +} + +.saveChanges__button, +.lateDeliverables__button, +.contactManager__button { + display: flex; + justify-content: flex-end; + gap: 16px; + margin-bottom: 32px; +} + +.saveChanges__button { + margin-top: 56px; +} + +.editProjectLink__add, +.saveChanges__cancel, +.saveChanges__save, +.lateDeliverables__search, +.lateDeliverables__clear, +.contactManager__submit, +.contactManager__cancel { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + font-size: 16px; + line-height: 24px; + letter-spacing: 0.008em; + text-transform: uppercase; + cursor: pointer; + display: flex; + justify-content: center; + align-items: center; + padding: 12px 22px; + width: 110px; + height: 48px; + border-radius: 50px; + text-decoration: none !important; +} + +.editProjectLink__add, +.saveChanges__cancel, +.saveChanges__save, +.lateDeliverables__clear, +.contactManager__cancel { + background: var(--tc-white); + border: 2px solid var(--turq-160); + color: var(--turq-160); +} + +.saveChanges__save { + width: auto; +} + +.saveChanges__save:disabled { + border-color: var(--black-5) !important; + color: var(--black-60) !important; + cursor: not-allowed; +} + +.editProjectLink__add { + width: 66px; + height: 32px; + font-weight: 700; + font-size: 13px; + line-height: 24px; + letter-spacing: 0.008em; +} + +.saveChanges__cancel:hover, +.saveChanges__save:hover, +.editProjectLink__add:hover { + color: var(--turq-140); + border-color: var(--turq-140); +} + +.saveChanges__cancel:active, +.saveChanges__save:active, +.editProjectLink__add:active { + color: var(--turq-180); + border-color: var(--turq-180); +} + + +.lateDeliverables__search, +.contactManager__submit { + background: var(--turq-160); + border: 2px solid var(--turq-160); + color: var(--tc-white) !important; +} + +.contactManager__submit:disabled { + background: var(--black-5); + border: 2px solid var(--black-5); + color: var(--black-60) !important; + cursor: not-allowed; +} + +.lateDeliverables__resultHeader { + display: flex; + align-items: center; + margin-bottom: 16px; +} + +.lateDeliverables__expand { + display: flex; + margin-left: auto; + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + font-size: 14px; + line-height: 22px; + column-gap: 24px; +} + +.contactManager { + display: flex; + flex-direction: column; + align-items: center; +} + +.explanation { + width: 100%; +} + +.contactManager__category { + font-family: 'Roboto'; + width: 440px; + margin: 24px 0 16px; +} + +.contactManager__message, +.explanation__message, +.support__message { + display: flex; + flex-direction: column; + background: var(--tc-white); + border: 1px solid var(--black-40); + border-radius: 4px; + padding: 8px 10px; +} + +.support__message { + padding: 8px 10px 1px; +} + +.explanation__message { + margin: 16px 0 16px; + height: 120px; + width: 100%; +} + +.contactManager__message { + width: 440px; + height: 120px; + margin: 16px 0 40px; +} + +.errorBanner { + padding: 16px; + border-width: 2px 0px; + border-style: solid; + border-color: var(--black-10); + margin-bottom: 56px; +} + +.errorBanner .errorPrefix, .errorReason { + font-family: 'Roboto'; + font-weight: 400; + font-size: 14px; + margin-bottom: 16px; + margin-top: 0; + color: var(--black-100); + line-height: 22px; +} + +.errorRed { + color: var(--red-100); + font-weight: 500; +} + +.errorReason { + margin: 0; + font-weight: 500; +} + +.errorReason span { + font-weight: 400; +} + +.modal { + display: flex; + justify-content: center; + align-items: center; + height: 100%; + position: fixed; + top: 0; + width: 100%; + visibility: hidden; + opacity: 0; + z-index: 9999; + transition: all 0.3s ease; + } + .show { + opacity: 1; + visibility: visible; + } + .modal__bg { + background: rgba(0, 0, 0, 0.5); + height: 100%; + width: 100%; + position: fixed; + } + .modal__content { + background: var(--tc-white); + max-width: 600px; + position: fixed; + z-index: 1000; + background: var(--tc-white); + box-shadow: 0 12px 15px 0 rgb(0 0 0 / 25%); + max-width: 800px; + overflow-y: auto; + position: relative; + text-align: left; + vertical-align: middle; + display: flex; + flex-direction: column; + height: 100vh; + margin: auto; + padding: 24px 32px 32px; + width: 100vw; + } + .modal__lg { + width: 700px; + } + .modal__md { + width: 450px; + } + .modal__header { + padding: 5px 0 0; + } + .modal__title { + font-family: "Barlow Condensed"; + font-weight: 600; + font-size: 22px; + margin: 0; + text-transform: uppercase; + line-height: 26px; + } + @media (max-width: 744px) { + .modal__title { + font-size: 18px; + line-height: 20px; + } + } + .modal__body { + display: flex; + flex: 1 1 auto; + flex-direction: column; + margin: 0 -32px -32px; + overflow: auto; + padding: 0 32px 32px; + font-size: 16px; + line-height: 24px; + font-family: "Roboto"; + } + .modal__divider { + border: 1px solid var(--black-10); + border-radius: 1px; + width: 100%; + margin: 24px 0; + } + .modal__close { + top: 26px; + cursor: pointer; + display: flex; + padding: 4px; + position: absolute; + right: 14px; + } + .modal__close:active { + border-radius: 50%; + background-color: var(--black-10); + } + .modal__footer { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: 24px 0 0 0; + gap: 16px; + border-top: 2px solid var(--black-10); + } + @media (min-width: /* --xs-max */ 465px) { + .modal__content { + border-radius: 8px; + height: auto; + max-height: 93vh; + min-width: 450px; + } + } + +.term__container { + line-height: 20px; + } + .term__container ol { + list-style: none; + padding: 0; + margin-top: 0; + } + .term__container li { + padding: 0; + } + .term__container h4 { + font-family: "Barlow Condensed"; + font-weight: 600; + text-transform: uppercase; + margin: 20px 0; + font-size: 18px; + line-height: 22px; + } + .term__container p { + margin-bottom: 20px; + } + .term__container p.sm { + font-size: 14px; + } + .term__container ul.a { + list-style-type: disc; + list-style: disc; + } + .term__container ul.a li { + padding-left: 0; + margin-left: 20px; + } + .term__container ul.b { + list-style-type: disc; + list-style: disc; + } + .term__container ul.b li { + padding-left: 0; + margin-left: 20px; + } + .term__container ul.c { + list-style-type: disc; + list-style: disc; + } + .term__container ul.c li { + padding-left: 0; + margin-left: 20px; + } + .term__container ul.d { + list-style-type: disc; + list-style: disc; + } + .term__container ul.d li { + padding-left: 0; + margin-left: 20px; + } + .term__container ul.e { + list-style-type: disc; + list-style: disc; + } + .term__container ul.e li { + padding-left: 0; + margin-left: 20px; + } + .term__container a { + text-decoration: underline; + color: var(--link-blue); + } + .term__container a:hover { + color: var(--tc-black); + } + +.support__info p { + margin-bottom: 16px; + margin-top: 0; +} + +.support__contact { + display: flex; + flex-direction: column; +} + +.input__wrapper { + display: flex; + flex-direction: column; + justify-content: flex-start; +} + +.supportInput__error { + align-items: center; + color: var(--handle-red); + display: flex; + line-height: 14px; + margin-top: 4px; + font-family: 'Roboto'; + font-size: 11px; + font-weight: 400; +} + +.supportInput__error span { + margin: 0; +} + +.supportInput__error.hide { + display: none; +} + +.supportInput__error.show { + display: none; +} + +.supportInput__error img { + height: 12px; + margin-right: 4px; + width: 12px; +} + +.inputWrapper__error { + border-color: var(--handle-red) !important; + color: #ef3a3a; + margin-bottom: 0; + border-width: 2px; + padding: 7px 9px 0; +} + +.submit__container { + display: flex; + justify-content: flex-end; +} + +.submit__btn.secondary { + background-color: #fff; + border-color: #137d60; + color: #137d60; +} + +.submit__container .submit__btn { + font-size: 14px; + padding: 8px 24px; + border: 2px solid; + border-radius: 25px; + cursor: pointer; + display: inline-block; + font-family: 'Roboto'; + font-weight: 700; + line-height: 24px; + text-transform: uppercase; + white-space: nowrap; +} + +.submit__container .submit__btn:disabled, +.submit__container .submit__btn:disabled:hover, +.submit__container .submit__btn:disabled:active { + background-color: #f4f4f4; + border-color: #f4f4f4 !important; + color: #7f7f7f; + cursor: not-allowed; +} + +.submitForm__error { + background-color: #f4f4f4; + color: var(--handle-red); + display: flex; + margin-bottom: 20px; + padding: 4px; + font-family: 'Roboto'; + font-size: 11px; + line-height: 16px; + font-weight: 500; +} + +.submitForm__error img { + height: 16px; + margin-right: 4px; + width: 16px; +} + +.submitForm__error.hide { + display: none; +} + +.loading-spinner { + position: fixed; + width: 100%; + height: 100%; + top: 0; + left: 0; + background: #0000001a; + color: white; + z-index: 1000; + display: flex; + justify-content: center; + align-items: center; + transition: opacity 1s ease; + opacity: 1; + visibility: hidden; + z-index: 99999; +} + +.spinner { + position: absolute; + width: 100px; + height: 100px; + margin: auto; + border: 4px solid #2196f3; + border-radius: 100%; + -webkit-animation: scaleout 0.4s infinite ease-in-out; + animation: scaleout 1.0s infinite ease-in-out; +} + +@-webkit-keyframes scaleout { + 0% { -webkit-transform: scale(0) } + 100% { + -webkit-transform: scale(1.0); + opacity: 0; + } +} + +@keyframes scaleout { + 0% { + transform: scale(0); + } 100% { + transform: scale(1.0); + opacity: 0; + } +} + +.loading-spinner.isLoading { + visibility: visible; + pointer-events: none; +} + +.paid__divider { + width: 1px; + height: 22px; + margin: 0 8px 0; + background: var(--black-40); +} + +.edit__projectLink { + padding: 16px 16px 0px; + border: 2px solid var(--black-10); + border-radius: 8px; + width: 100%; +} + +.editProjectPaymentTable__body td { + width: 31%; +} + +.custom-radio { + display: inline-block; + position: relative; + } + + .custom-radio input[type='radio'] { + display: none; + } + + .custom-radio label { + font-family: 'Roboto'; + font-weight: 400; + font-size: 16px; + margin-right: 12px; + line-height: 24px; + cursor: pointer; + color: var(--black-100); + } + + .custom-radio label:before { + content: " "; + display: inline-block; + position: relative; + top: 4px; + margin: 0 8px 0 0; + width: 20px; + height: 20px; + box-sizing: border-box; + border-radius: 50%; + border: 1.5px solid var(--black-60); + background-color: transparent; + } + + .custom-radio .phaseUseDuration, + .custom-radio .phaseUseDuration:before { + margin: 0; + } + + .custom-radio input[type=radio]:checked + label:before { + border-color: var(--green); + } + + .custom-radio input[type=radio]:disabled + label:before { + border-color: var(--black-20); + } + + .custom-radio input[type=radio]:checked + label:after { + border-radius: 11px; + width: 10px; + height: 10px; + position: absolute; + top: 9px; + left: 5px; + content: " "; + display: block; + background: var(--green); + } + + .custom-radio input[type=radio]:disabled + label:after { + background: var(--black-20); + } + + .custom-radio label.fixedAmt { + font-weight: 500; + font-size: 14px; + line-height: 22px; + margin-right: 2px; + } + + .custom-radio label.percentage { + margin-right: 0; + } + +.table__error, +.editProjectLink__error td { + font-family: 'Roboto'; + font-size: 14px; + padding-bottom: 18px; + padding-top: 6px; +} + +.table__error { + padding-bottom: 0; +} + +.selectCustom-add, +.selectCustom { + position: relative; + font-family: 'Roboto'; + width: 65%; +} + +.selectCustom-add select, +.selectCustom select { + display: none; +} + +.selectCustom label { + display: none; +} + +.select-selected { + background-color: var(--tc-white); +} + +.select-label { + height: 48px !important; + padding: 0 !important; +} + +.with-label .select-selected:after { + top: 24px !important; +} + +.inputDate:disabled, +.inputTime:disabled, +.custom-select.disabled, +.edit__inputBoxDuration:disabled, +.editInputBox:disabled, +.resourceHandle:disabled, +.select-selected.disabled { + color: var(--black-60); + background: var(--black-10); + cursor: default; +} + +.select-selected:after { + position: absolute; + content: url('/i/reskin/arrow-down-sm.svg'); + top: 13px; + right: 16px; + width: 0; + height: 0; + border: 6px solid transparent; +} + +.select-items div,.select-selected { + padding: 9px 10px; + height: 40px; + font-weight: 400; + border: 1px solid var(--black-40); + border-radius: 4px; + cursor: pointer; + user-select: none; +} + +.select-items div { + border: none; + border-radius: 0; + width: 100%; +} + +.select-items { + position: absolute; + background: var(--tc-white); + border: 1px solid var(--black-40); + border-radius: 4px; + max-height: 250px; + overflow: auto; + top: 42px; + left: 0; + right: 0; + z-index: 99; +} + +.with-label .select-items { + top: 50px; +} + +.select-hide { + display: none; +} + +.select-items div:hover { + cursor: pointer; + color: var(--tc-white); + background-color: var(--turq-160); +} + +.same-as-selected { + font-weight: 700 !important; + color: var(--black-100); +} + +.newTr { + height: 74px; +} + +.inputDate, +.inputTime, +.editInputBox, +.resourceHandle, +.edit__inputBoxDuration { + padding: 12px 10px; + width: 80px; + height: 40px; + background: var(--tc-white); + border: 1px solid var(--black-40); + border-radius: 4px; + font-weight: 400; + font-size: 14px; + line-height: 22px; + font-family: 'Roboto'; + text-align: right; + margin-left: 4px; + color: var(--black-100); +} + +.editInputBox { + margin: 0 0 8px; +} + +.resourceHandle { + width: 52%; + text-align: left; +} + +.inputTime { + width: 58px; + text-align: left; + margin-right: 4px; +} + +.inputDate { + text-align: left; + margin-left: 6px; +} + +.addResourcesTable__title th, +.extendSubTable__header th, +.extendRegistration__header th { + font-family: 'Barlow'; + font-weight: 600; + font-size: 18px; + padding: 16px 0; + line-height: 22px; + text-align: left; + text-transform: uppercase; + color: var(--black-100); +} + +.addResourcesTable__body td.label, +.extendSubTable__body td.label, +.extendRegistration__body td.label { + width: 52%; +} + +.addResourcesTable__body td.input, +.extendRegistration__body td.input, +.extendSubTable__body td.input { + height: 74px; + border-bottom: 2px solid var(--black-10); +} + +.addResInput { + width: 98%; + text-align: left; +} + +.addResourcesTable__body td.input:last-child { + border-bottom: none +} + +.manageProjectForm { + margin-bottom: 0; +} + +.editPrizeTable__body td.center { + text-align: center; +} + +.editResourceTable__body td, +.editPrizeTable__body td, +.reviewPaymentTable__body td { + height: 74px; +} + +.viewManageButtom { + position: absolute; + right: 0; +} + +.editProject__checkbox .when { + margin-left: 8px; + order: 1; + font-weight: 400; + font-size: 16px; + line-height: 24px; + color: var(--black-60); +} + +.whenCheck { + margin: 8px 0 8px; +} + +.editProject__selection { + margin-bottom: 8px; + flex-grow: 1; +} + +.starts { + width: 33%; +} + +.plusminus { + width: 56px; +} + +.dayshrs { + width: 96px; +} + +.customRadio__top { + top: -8px; +} + +.highlighted { + background-color: var(--turq-15); +} + +.scorecard__label { + display: flex; + align-items: center; +} + +.scorecard__label .label{ + margin-right: 6px; +} + +.preferences__label { + font-weight: 400; + font-size: 14px; + line-height: 22px; + color: #767676; + margin-left: 29px; +} + +.preferences__checkboxWrap { + display: flex; + gap: 60px; +} + +.scorecard__label .selectCustom { + width: 82%; +} + +.resource__select { + display: flex; + gap: 8px; + width: 75%; + align-items: center; +} + +#headerNav { + position: fixed; + width: 100%; + z-index: 999; + top: 0; +} + +#footerNav { + position: fixed; + width: 100%; + z-index: 999; + bottom: 0; +} + +.checkPoint__chevron { + margin-left: 29px +} \ No newline at end of file diff --git a/web/css/reskin-or/toasts.css b/web/css/reskin-or/toasts.css new file mode 100644 index 0000000000..27a3670cd6 --- /dev/null +++ b/web/css/reskin-or/toasts.css @@ -0,0 +1,133 @@ +#toast { + position: fixed; + top: 22px; + right: 22px; + z-index: 999999; +} + +.toast { + display: flex; + justify-content: space-between; + background-color: #fff; + padding: 8px; + border-radius: 4px; + width: 320px; + color: #757575; + font-family: sans-serif; + box-shadow: 0 5px 8px rgba(0, 0, 0, 0.08); + transition: all linear 0.3s; + min-height: 64px; + max-height: 800px; +} + +.t-progress-bar { + display: block; + position: absolute; + bottom: 0; + left: 0; + height: 6px; + width: 100%; + border-radius: 0 0 0 0.5rem; + background-color: #07bc0c; + animation: progress-bar-animation linear forwards var(--toast-duration, 4000ms); + transform-origin: left; +} + +@keyframes slideInLeft { + from { + opacity: 0; + transform: translateX(calc(100% + 22px)); + } + to { + opacity: 1; + transform: translateX(0); + } +} + +@keyframes slideOut { + 0% { + transform: translateX(0%); + } + 100% { + transform: translateX(calc(100% + 22px)); + } +} + +@keyframes progress-bar-animation { + to { + transform: scaleX(0); + } +} + +.toast--success .toast__icon { + color: #47d864; +} + +.toast--info { + border-color: #2f86eb; +} + +.toast--info .toast__icon { + color: #2f86eb; +} + +.toast--warning { + border-color: #ffc021; +} + +.toast--warning .toast__icon { + color: #ffc021; +} + +.toast--error { + border-color: #ff623d; +} + +.toast--error .toast__icon { + color: #ff623d; +} + +.toast + .toast { + margin-top: 24px; +} + +.toast__icon { + display: flex; + flex-shrink: 0; + margin-inline-end: 10px; + width: 20px; +} + +.toast__body { + align-items: center; + display: flex; + flex: 1 1 auto; + margin: auto 0; + padding: 6px; + margin-top: 10px; + margin-bottom: 10px; +} + +.toast__title { + font-size: 16px; + font-weight: 600; + color: #333; +} + +.toast__msg { + font-size: 16px; + font-weight: 500; + margin: 0; +} + +.toast__close { + color: #000; + opacity: .3; +} + +.toast__close > svg { + fill: currentColor; + height: 16px; + width: 14px; + cursor: pointer; +} diff --git a/web/i/reskin/arrow-down-sm.svg b/web/i/reskin/arrow-down-sm.svg new file mode 100644 index 0000000000..a7f4187d88 --- /dev/null +++ b/web/i/reskin/arrow-down-sm.svg @@ -0,0 +1,3 @@ + + + diff --git a/web/i/reskin/arrow-prev.svg b/web/i/reskin/arrow-prev.svg new file mode 100644 index 0000000000..4c17ae49fc --- /dev/null +++ b/web/i/reskin/arrow-prev.svg @@ -0,0 +1,3 @@ + + + diff --git a/web/i/reskin/checkbox-disabled.svg b/web/i/reskin/checkbox-disabled.svg new file mode 100644 index 0000000000..4ca73c7c89 --- /dev/null +++ b/web/i/reskin/checkbox-disabled.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/web/i/reskin/checkbox.svg b/web/i/reskin/checkbox.svg new file mode 100644 index 0000000000..14283486cd --- /dev/null +++ b/web/i/reskin/checkbox.svg @@ -0,0 +1,3 @@ + + + diff --git a/web/i/reskin/chevron-down-sm.svg b/web/i/reskin/chevron-down-sm.svg new file mode 100644 index 0000000000..98a2bdb287 --- /dev/null +++ b/web/i/reskin/chevron-down-sm.svg @@ -0,0 +1,3 @@ + + + diff --git a/web/i/reskin/chevron-down.svg b/web/i/reskin/chevron-down.svg new file mode 100644 index 0000000000..f5b213f1ae --- /dev/null +++ b/web/i/reskin/chevron-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/web/i/reskin/chevron-up-sm.svg b/web/i/reskin/chevron-up-sm.svg new file mode 100644 index 0000000000..01be9f3119 --- /dev/null +++ b/web/i/reskin/chevron-up-sm.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/web/i/reskin/chevron-up.svg b/web/i/reskin/chevron-up.svg new file mode 100644 index 0000000000..e4a183d9a0 --- /dev/null +++ b/web/i/reskin/chevron-up.svg @@ -0,0 +1,3 @@ + + + diff --git a/web/i/reskin/cross.svg b/web/i/reskin/cross.svg new file mode 100644 index 0000000000..f2bd314dfa --- /dev/null +++ b/web/i/reskin/cross.svg @@ -0,0 +1 @@ + diff --git a/web/i/reskin/error.svg b/web/i/reskin/error.svg new file mode 100644 index 0000000000..2ef21d0696 --- /dev/null +++ b/web/i/reskin/error.svg @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/web/i/reskin/form-error.svg b/web/i/reskin/form-error.svg new file mode 100644 index 0000000000..fa147ad8b8 --- /dev/null +++ b/web/i/reskin/form-error.svg @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/web/i/reskin/modal-close.svg b/web/i/reskin/modal-close.svg new file mode 100644 index 0000000000..906fc7122e --- /dev/null +++ b/web/i/reskin/modal-close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/i/reskin/nav-active-item.svg b/web/i/reskin/nav-active-item.svg new file mode 100644 index 0000000000..c3584e7472 --- /dev/null +++ b/web/i/reskin/nav-active-item.svg @@ -0,0 +1,4 @@ + + + + diff --git a/web/i/reskin/showMore.svg b/web/i/reskin/showMore.svg new file mode 100644 index 0000000000..aee06aae89 --- /dev/null +++ b/web/i/reskin/showMore.svg @@ -0,0 +1,3 @@ + + + diff --git a/web/i/reskin/success-check.svg b/web/i/reskin/success-check.svg new file mode 100644 index 0000000000..984f37d945 --- /dev/null +++ b/web/i/reskin/success-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/i/reskin/toast-close.svg b/web/i/reskin/toast-close.svg new file mode 100644 index 0000000000..6e1fda07cb --- /dev/null +++ b/web/i/reskin/toast-close.svg @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/web/includes/inc_footer_reskin.jsp b/web/includes/inc_footer_reskin.jsp new file mode 100644 index 0000000000..9ca82625e7 --- /dev/null +++ b/web/includes/inc_footer_reskin.jsp @@ -0,0 +1,97 @@ +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="or" uri="/or-tags" %> +<%@ taglib prefix="orfn" uri="/tags/or-functions" %> +<%@ page import="com.topcoder.onlinereview.component.webcommon.ApplicationServer" %> + + + + + +
+
+
+
+ +
+ + + + + +<%-- Analytics --%> + + + + + + + diff --git a/web/includes/inc_header_reskin.jsp b/web/includes/inc_header_reskin.jsp new file mode 100644 index 0000000000..e9510e83a9 --- /dev/null +++ b/web/includes/inc_header_reskin.jsp @@ -0,0 +1,29 @@ +<%@ page language="java" isELIgnored="false" %> +<%@ page import="java.text.DecimalFormat,com.topcoder.onlinereview.component.webcommon.ApplicationServer" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="or" uri="/or-tags" %> +<%@ taglib prefix="orfn" uri="/tags/or-functions" %> +<%@ taglib prefix="tc-webtag" uri="/tags/tc-webtags" %> + + + +
+
+ +
+
+ Online Review +
+
+ +
+ +
+
+
+
diff --git a/web/includes/privacyPolicyModal.jsp b/web/includes/privacyPolicyModal.jsp new file mode 100644 index 0000000000..b4a16d8639 --- /dev/null +++ b/web/includes/privacyPolicyModal.jsp @@ -0,0 +1,967 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> + \ No newline at end of file diff --git a/web/includes/project/project_detail.jsp b/web/includes/project/project_detail.jsp deleted file mode 100644 index 195825d53d..0000000000 --- a/web/includes/project/project_detail.jsp +++ /dev/null @@ -1,90 +0,0 @@ -<%-- - - Author: TCSASSEMBLER - - Version: 2.0 - - Copyright (C) 2005-2014 TopCoder Inc., All Rights Reserved. - - - - Description: This page fragment renders the details on selected project. ---%> -<%@ page language="java" isELIgnored="false" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="or" uri="/or-tags" %> -<%@ taglib prefix="orfn" uri="/tags/or-functions" %> - - - - - - - - - - - - - - - - - - - - - - <%----%> - <%----%> - <%----%> - <%----%> - <%----%> - <%----%> - <%----%> - <%----%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- ${orfn:htmlEncode(project.allProperties["SVN Module"])}
Type:${projectType}
Category:${projectCategory}
This contest is part of the Digital Run:${projectDRFlag}
DR Points:${projectDRFlag=="Yes"?orfn:displayPaymentAmt(pageContext.request, projectDRP):""}
- : - - ${orfn:htmlEncode(scorecard.name)} - ${orfn:htmlEncode(scorecard.version)} - -
${billingProject}
- ${requestScope.cockpitProject} -
${projectStatus}

diff --git a/web/includes/project/project_detail_reskin.jsp b/web/includes/project/project_detail_reskin.jsp new file mode 100644 index 0000000000..89fcd6c8ea --- /dev/null +++ b/web/includes/project/project_detail_reskin.jsp @@ -0,0 +1,70 @@ +<%@ page language="java" isELIgnored="false" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="or" uri="/or-tags" %> +<%@ taglib prefix="orfn" uri="/tags/or-functions" %> + +
+
+
+ +
+
+
+
+ +
+
+ + + +
+
Type:
+
${projectType}
+
+
+
Category:
+
${projectCategory}
+
+ +
+ + + + +
+
+
+
+ + + + +
+
+
${billingProject}
+
+
+ + + +
+
+
${projectStatus}
+
+
+
+
diff --git a/web/includes/project/project_edit_prizes.jsp b/web/includes/project/project_edit_prizes.jsp index 30c36f1558..9f4d17bdfd 100644 --- a/web/includes/project/project_edit_prizes.jsp +++ b/web/includes/project/project_edit_prizes.jsp @@ -12,22 +12,44 @@ <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="or" uri="/or-tags" %> -
-
    -
  • -
  • -
-
-
+
+
+
+ Prizes +
+
+ +
+
+ + + +
+
+ + + +
+
+
+
    +
  • +
  • +
+
+
+
+ - - +
+ + - - + + @@ -35,18 +57,20 @@ - @@ -55,21 +79,23 @@ - @@ -78,21 +104,23 @@ class="light"class="dark" > - + +
- - + + - +
+ +
- <or:text key='editProject.Prizes.DeletePrize.alt' /> + +
${prizeIdx + 1} - disabled="disabled" value="" /> - + disabled="disabled" value="" /> +
contest_prizes_amount[${prizeIdx}]
+
+
contest_prizes_num[${prizeIdx}]
+ - <or:text key='editProject.Prizes.DeletePrize.alt' /> +
- <or:text key='editProject.Prizes.AddPrize.alt' /> +
- - + + + - - + + @@ -100,18 +128,20 @@ - @@ -120,21 +150,23 @@ - @@ -143,12 +175,14 @@ class="light"class="dark" > - + + -
\ No newline at end of file +
+
diff --git a/web/includes/project/project_edit_resource_payments.jsp b/web/includes/project/project_edit_resource_payments.jsp index 78c3a8ceeb..efd96cb060 100644 --- a/web/includes/project/project_edit_resource_payments.jsp +++ b/web/includes/project/project_edit_resource_payments.jsp @@ -24,136 +24,164 @@ -display:none;"> - +
display:none;"> + + - - - - - - - - - - - + + + + - - - - - - - - - - - - - + + + + - + - - - - - - - - - - - - - + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- - - - - - - - - - - - - - - - - - - <or:text key='btnDelete.alt' /> -
- ${resourceRoles[resourceId]} - -
${prefix}Payments[${vs.index}].resourceId
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
- /> - - /> - + +
+ +
+ +
+
+
+
+ + - style="display: none;" href="#" onclick="return addPayment(this, '${tableId}', '${vs.index}', '${resourceId}');"><or:text key='editProjectPayments.box.AddPayment.alt' /> +
- - - - - - - - - -
${prefix}Payments[${vs.index}].paymentTypes[${paymentIdx}]
-
${prefix}Payments[${vs.index}].paymentIds[${paymentIdx}]
-
- - - - - - - - - - - -
submitterPayments[${vs.index}].submissionIds[${paymentIdx}]
-
-
- - disabled="disabled" value="" /> -
${prefix}Payments[${vs.index}].amounts[${paymentIdx}]
-
- style="display: none;" href="#" onclick="return deletePayment(this);" class="delete_payment_${resourceId}" rel="${paid}" resourceId="${resourceId}" resourceIdx="${vs.index}"><or:text key='btnDelete.alt' /> -
+ ${resourceRoles[resourceId]} + +
${prefix}Payments[${vs.index}].resourceId
+
+
+ /> + +
+
+ /> + +
+
+ style="display: none;" href="#" onclick="return addPayment(this, '${tableId}', '${vs.index}', '${resourceId}');"> +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
${prefix}Payments[${vs.index}].paymentTypes[${paymentIdx}]
+
${prefix}Payments[${vs.index}].paymentIds[${paymentIdx}]
+
+ + + + + + + + + +
+ +
+ +
+
+
submitterPayments[${vs.index}].submissionIds[${paymentIdx}]
+
+
+ + disabled="disabled" value="" /> +
${prefix}Payments[${vs.index}].amounts[${paymentIdx}]
+
+ style="display: none;" href="#" onclick="return deletePayment(this);" class="delete_payment_${resourceId} deletePayment" rel="${paid}" resourceId="${resourceId}" resourceIdx="${vs.index}"> +
\ No newline at end of file diff --git a/web/includes/project/project_edit_resources.jsp b/web/includes/project/project_edit_resources.jsp index 2e76dfb67c..981e29a581 100644 --- a/web/includes/project/project_edit_resources.jsp +++ b/web/includes/project/project_edit_resources.jsp @@ -12,77 +12,91 @@ <%@ taglib prefix="or" uri="/or-tags" %> <%@ taglib prefix="orfn" uri="/tags/or-functions" %> - - - - - - - - - - - - - - - - - +
+
+
+ +
+
+
+
- - - - - - - - - - disabled - value="" /> - -
resources_name[${resourceIdx}]
-
- - <or:text key='editProject.Resources.AddResource.alt' /> - - - <or:text key='editProject.Resources.DeleteResource.alt' /> - - - -
+ + + + + + + + + + + + + + + + + - <%-- TODO: Iterate through exisitng resources here (for edit page only) --%> - - - - - -
+
+
+ +
+
+ +
+
+ + + + + + +
+ disabled + value="" /> + +
resources_name[${resourceIdx}]
+
+ + + + + + + + +

+ <%-- TODO: Iterate through exisitng resources here (for edit page only) --%> + + + + + + + + diff --git a/web/includes/project/project_edit_timeline.jsp b/web/includes/project/project_edit_timeline.jsp index ced25790eb..1432a014da 100644 --- a/web/includes/project/project_edit_timeline.jsp +++ b/web/includes/project/project_edit_timeline.jsp @@ -1,562 +1,758 @@ -<%-- - - Author: TCSASSEMBLER - - Version: 2.0 - - Copyright (C) 2004 - 2014 TopCoder Inc., All Rights Reserved. - - - - Description: This page fragment displays the form input elements group for editing the timeline and other - - parameters for single project phase. ---%> -<%@ page language="java" isELIgnored="false" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="or" uri="/or-tags" %> - - - -<%-- If creating a new project, show "Create Timeline" table --%> - - - - - - - - - - -
- - - - -

-
- - - - - - - - - - - - - - <%-- PHASE ROW GOES HERE --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- PHASE CRITERIA ROWS GO HERE --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- disabled value="" /> - disabled value="" /> - - <or:text key='editProject.Phases.OpenPhase.alt' /><or:text key='editProject.Phases.ClosePhase.alt' /> - ${projectForm.map['phase_name'][phaseIdx]} -   ${projectForm.map['phase_number'][phaseIdx]} - - - disabled value="" /> - disabled value="" /> - - disabled value="" /> - disabled value="" /> - disabled value="" /> - - - - - - disabled - onclick="return fixedStartTimeBoxChanged(this, ${phaseIdx})" /> - disabled /> - disabled /> - -
- - - - - - - - - - - disabled - onclick="return phaseStartByPhaseBoxChanged(this, ${phaseIdx})" /> - -
- -
- -
- -
- disabled - value="" /> -
- -
- -
- disabled /> - disabled value="" /> - disabled value="" /> - - - - disabled /> - disabled value="" /> - - - -   - - <or:text key='editProject.Phases.DeletePhase.alt' /> - - -
- - -
- - - - - - disabled - size="30" name="phase_required_reviewers[${phaseIdx}]" value=""/> - -  
- - - -
- - - - - - - disabled/> - - -  
- - - -
- - -
- - -
- - -

- - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
- -
- -
- <%----%> -<%-- - /> ---%> - /> - - -
-<%-- - /> ---%> - /> - -
- -
- -
- -
- -
- -
-
- <%----%> - /> - - - - - <%----%> - /> - - - <or:text key='editProject.Phases.AddPhase.alt' /> -

-
+<%-- + - Author: TCSASSEMBLER + - Version: 2.0 + - Copyright (C) 2004 - 2014 TopCoder Inc., All Rights Reserved. + - + - Description: This page fragment displays the form input elements group for editing the timeline and other + - parameters for single project phase. +--%> +<%@ page language="java" isELIgnored="false" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="or" uri="/or-tags" %> + + + + + +<%-- If creating a new project, show "Create Timeline" table --%> + + + + + + + + + + +
+ + + + +

+
+ + + + + + + + + + + + + + + + <%-- PHASE ROW GOES HERE --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + <%-- PHASE CRITERIA ROWS GO HERE --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ disabled value="" /> + disabled value="" /> + + + + + + + + + ${projectForm.map['phase_name'][phaseIdx]} +   ${projectForm.map['phase_number'][phaseIdx]} + + + disabled value="" /> + disabled value="" /> + + disabled value="" /> + disabled value="" /> + disabled value="" /> + + + + + +
+ disabled + onclick="return fixedStartTimeBoxChanged(this, ${phaseIdx})" /> + + +
+ disabled /> + disabled /> + +
+ + + + + + + + + + +
+
+ disabled + onclick="return phaseStartByPhaseBoxChanged(this, ${phaseIdx})" /> + + +
+
+
+ +
+
+
+
+
+
+
+ + + >${projectForm.map['phase_name'][i]} + +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ + > + > +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ + >+ + >- +
+
+
+
+
+ disabled + value="" /> +
+ +
+
+
+
+
+
+
+ + > + > + > +
+
+
+
+
+
+ +
+
+ disabled /> + +
+ disabled value="" /> + disabled value="" /> + + +
+
+ disabled /> + +
+ disabled value="" /> + +
+ +   + + <or:text key='editProject.Phases.DeletePhase.alt' /> + + +
+
+ + + +
+ +
+
+ +
+ + + + + + disabled + size="30" name="phase_required_reviewers[${phaseIdx}]" value=""/> + +  
+
+ + + +
+ +
+
+ +
+ + + + + + + disabled/> + + +  
+
+ + + +
+ +
+
+ +
+
+ + + +
+ +
+
+ + +
+
+ + + +
+ +
+
+ +
+
+ + + +
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+ +
+ <%----%> +<%-- + /> +--%> + /> + + +
+<%-- + /> +--%> + /> + +
+ +
+ +
+ +
+ +
+ +
+
+ <%----%> + /> + + + + + <%----%> + /> + + + <or:text key='editProject.Phases.AddPhase.alt' /> +

+
diff --git a/web/includes/project/project_info_reskin.jsp b/web/includes/project/project_info_reskin.jsp new file mode 100644 index 0000000000..ac821dfe52 --- /dev/null +++ b/web/includes/project/project_info_reskin.jsp @@ -0,0 +1,37 @@ +<%@ page language="java" isELIgnored="false" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="or" uri="/or-tags" %> +<%@ taglib prefix="orfn" uri="/tags/or-functions" %> + + +
+

${project.allProperties["Project Name"]} ${param.titleAction}

+
+ +

${project.allProperties["Project Version"]}

+
+

${projectStatus}

+ + +
+
diff --git a/web/includes/project/project_list_reskin.jsp b/web/includes/project/project_list_reskin.jsp new file mode 100644 index 0000000000..47f717a264 --- /dev/null +++ b/web/includes/project/project_list_reskin.jsp @@ -0,0 +1,179 @@ +<%-- + - Author: TCSASSEMBLER + - Version: 2.0 + - Copyright (C) 2005-2014 TopCoder Inc., All Rights Reserved. + - + - Description: This page fragment renders the list of projects of selected status. +--%> +<%@ page language="java" isELIgnored="false" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="or" uri="/or-tags" %> +<%@ taglib prefix="orfn" uri="/tags/or-functions" %> + + + + + +
+
+
+ Challenge type +
+
+
+
+ + --- ${type.name} (${type.count}) --- + + + ${category.name} (${category.count}) + + + +
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + ${project.allProperties['Project Name']} + + version ${project.allProperties['Project Version']} +
+
${myRoles[idxrProject.index]}${orfn:displayDate(pageContext.request, phaseEndDates[idxrProject.index])}${orfn:displayDate(pageContext.request, projectEndDates[idxrProject.index])}${not empty myDeliverables[idxrProject.index] ? myDeliverables[idxrProject.index] : '-'}----
+ +
+ + + + + + + + +
+ +
+
+ Showing ${showingProjectsFrom} to ${showingProjectsTo} of ${totalProjectCount} projects +
+ +
+ +
+
+
+
+
diff --git a/web/includes/project/project_myrole.jsp b/web/includes/project/project_myrole.jsp deleted file mode 100644 index 1de2fa2e94..0000000000 --- a/web/includes/project/project_myrole.jsp +++ /dev/null @@ -1,186 +0,0 @@ -<%-- - - Author: TCSASSEMBLER - - Version: 2.0 - - Copyright (C) 2005 - 2014 TopCoder Inc., All Rights Reserved. - - - - Description: This page fragment renders the details on roles assigned to current user in context of - - selected project. ---%> -<%@ page language="java" isELIgnored="false" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="or" uri="/or-tags" %> -<%@ taglib prefix="tc-webtag" uri="/tags/tc-webtags" %> -<%@ taglib prefix="orfn" uri="/tags/or-functions" %> - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - ${"$"}${orfn:displayPaymentAmt(pageContext.request, paymentAmount)} - - - - - - - - - - - - - - -

- ${"$"}${orfn:displayPaymentAmt(pageContext.request, requestScope.totalPayment)} - - (potentially -${paymentPenaltyPercentage}% due to the delay) - - - (-${paymentPenaltyPercentage}% due to the delay) - -
-
- - - - - <or:text key='global.Completed' /> - - - <or:text key='global.DeadlineNear' /> - - - <or:text key='global.Late' /> - - - ${orfn:displayDate(pageContext.request, myDeliverableDates[deliverableStatus.index])} - <%-- -
-
-
- - - -
-
-
- -
-
-
-
--%> -
-
- - - - - - - <or:text key='global.Completed' /> - - - <or:text key='global.DeadlineNear' /> - - - <or:text key='global.Late' /> - - - ${orfn:displayDate(pageContext.request, outstandingDeliverableDates[deliverableStatus.index])} - - : - - - - ${deliverable.submission} - - () - -
-
-
-
-
- - -

-
- - - There are unresponded late deliverables! See the list here. - -

diff --git a/web/includes/project/project_myrole_reskin.jsp b/web/includes/project/project_myrole_reskin.jsp new file mode 100644 index 0000000000..29032fcbdd --- /dev/null +++ b/web/includes/project/project_myrole_reskin.jsp @@ -0,0 +1,88 @@ +<%@ page language="java" isELIgnored="false" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="or" uri="/or-tags" %> +<%@ taglib prefix="tc-webtag" uri="/tags/tc-webtags" %> +<%@ taglib prefix="orfn" uri="/tags/or-functions" %> + +
+
+
+ +
+
+
+
+ +
+ + + + + + + + + + + + + + +
+ + + + + + + + + +
+ +
+
+ + +
+ + + + + <or:text key='global.Completed' /> + + + <or:text key='global.DeadlineNear' /> + + + <or:text key='global.Late' /> + + + ${orfn:displayDate(pageContext.request, outstandingDeliverableDates[deliverableStatus.index])} + + : + + + + ${deliverable.submission} + + () + + + +
+
+
+ + + + + + + There are unresponded late deliverables! See the list here. + +
+
+
diff --git a/web/includes/project/project_phase_reskin.jsp b/web/includes/project/project_phase_reskin.jsp new file mode 100644 index 0000000000..2987db722c --- /dev/null +++ b/web/includes/project/project_phase_reskin.jsp @@ -0,0 +1,1508 @@ +<%@page import="com.topcoder.onlinereview.component.webcommon.ApplicationServer"%> +<%@ page language="java" isELIgnored="false" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="or" uri="/or-tags" %> +<%@ taglib prefix="tc-webtag" uri="/tags/tc-webtags" %> +<%@ taglib prefix="orfn" uri="/tags/or-functions" %> + + +
+ +
+
+ Phases +
+
+
+
+
+
+ +
+ +
+
+ + + + + +
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
${registrantEmail}${reliability}${rating} + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
">
+ + + + + + + + + 1st + + + 2nd + + + 3rd + + + 4th + + + 5th + + +   + + + + + + + <or:text key='${failureKeyName}' /> + + + + ${placeStr} + + + + + + ${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)} + + + + + + + + + () + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ : + + + + + + + + + + + [ + + ] + + + <%-- and group.uploadingTestcasesAllowed --%> + + +
+ + + + + + + + + 1st + + + 2nd + + + 3rd + + +   + + + + + + + <or:text key='${failureKeyName}' /> + + + + ${placeStr} + + + + + ${submission.id} + + + ${submission.id} + + + + + ${submission.id} + + + ${submission.id} + + + + () + + ${orfn:displayDate(pageContext.request, group.reviewDates[submissionStatus.index])}${orfn:displayScore(pageContext.request, finalScore)}${orfn:displayScore(pageContext.request, review.score)}[ + ${unresolvedAppeals[reviewStatus.index]} / + ${totalAppeals[reviewStatus.index]} + ]
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1st + ${winningSubmission.id} + () + ${orfn:displayDate(pageContext.request, group.aggregation.modificationTimestamp)}
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1st + ${winningSubmission.id} + () + ${orfn:displayDate(pageContext.request, group.finalFix.creationTimestamp)} + + + ${orfn:displayDate(pageContext.request, group.finalReview.modificationTimestamp)} +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1st + ${winningSubmission.id} + () + ${orfn:displayDate(pageContext.request, group.finalFix.modificationTimestamp)} + + + + + + + + + + + + + ${orfn:displayDate(pageContext.request, approval.modificationTimestamp)} + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + ${orfn:displayDate(pageContext.request, review.modificationTimestamp)} + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + ${group.specificationSubmission.id} + + + ${group.specificationSubmission.id} + + () + ${orfn:displayDate(pageContext.request, group.specificationSubmission.upload.creationTimestamp)} + ${orfn:displayDate(pageContext.request, group.specificationReview.modificationTimestamp)} + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <%-- Checkpoint Submission ID --%> + + + <%-- Checkpoint Submission Date --%> + + + <%-- Checkpoint Screener --%> + + + <%-- Checkpoint Screening Score --%> + + + + + + + + + + + <%-- Checkpoint Screening Results --%> + + + + <%-- Checkpoint Reviewer --%> + + + <%-- Checkpoint Review Score --%> + + + + + + + + + + <%-- Checkpoint Review Results --%> + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + 1st + + + 2nd + + + 3rd + + + 4th + + + 5th + + +   + + + + + + + <or:text key='${failureKeyName}' /> + + + + ${placeStr} + + + + + ${submission.id} + + + ${submission.id} + + + + + ${submission.id} + + + ${submission.id} + + + + () + + + <%-- Delete Checkpoint Submission --%> + + + + <or:text key='viewProjectDetails.box.Submission.icoTrash.alt' /> + + + + + + ${orfn:displayDate(pageContext.request, submission.upload.creationTimestamp)} + + + + + + + + + + + + + + + + + + + + + + + + + + + ${orfn:displayScore(pageContext.request, review.score)} + + + ${orfn:displayScore(pageContext.request, review.score)} + + + + + + + + + + + + + + + + + + + + + + + + + + () + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${orfn:displayScore(pageContext.request, review.score)} + + + ${orfn:displayScore(pageContext.request, review.score)} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <or:text key='viewProjectDetails.box.Submission.icoShowMore.alt' /> + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ : + +
+ + + + + + 1st + + + 2nd + + + 3rd + + + 4th + + + 5th + + +   + + + + + + + <or:text key='${failureKeyName}' /> + + + + ${placeStr} + + + + + ${submission.id} + + + ${submission.id} + + + + + + ${submission.id} + + + ${submission.id} + + + + () + + ${orfn:displayDateBr(pageContext.request, group.reviewDates[0])}${orfn:displayScore(pageContext.request, finalScore)}${orfn:displayScore(pageContext.request, review.score)}
+
+
+
+
+
+
+
+
+ diff --git a/web/includes/project/project_prizes.jsp b/web/includes/project/project_prizes.jsp deleted file mode 100644 index c6a0212176..0000000000 --- a/web/includes/project/project_prizes.jsp +++ /dev/null @@ -1,90 +0,0 @@ -<%-- - - Author: TCSASSEMBLER - - Version: 2.0 - - Copyright (C) 2013 - 2014 TopCoder Inc., All Rights Reserved. - - - - Description: This page fragment displays the content of prizes on Project Details screen. ---%> -<%@ page language="java" isELIgnored="false" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="or" uri="/or-tags" %> -<%@ taglib prefix="tc-webtag" uri="/tags/tc-webtags" %> -<%@ taglib prefix="orfn" uri="/tags/or-functions" %> - -
-
    -
  • -
  • -
-
-
- - - - - - - - - - - - class="light"class="dark" > - - - - - - - - - - - -
${vs.count}${"$"}${orfn:displayPaymentAmt(pageContext.request, prize.prizeAmount)}${prize.numberOfSubmissions}
There are no prizes.
- - - - - - - - - - - - class="light"class="dark" > - - - - - - - - - - - -
- - diff --git a/web/includes/project/project_prizes_reskin.jsp b/web/includes/project/project_prizes_reskin.jsp new file mode 100644 index 0000000000..51ded66d1f --- /dev/null +++ b/web/includes/project/project_prizes_reskin.jsp @@ -0,0 +1,98 @@ +<%-- + - Author: TCSASSEMBLER + - Version: 2.0 + - Copyright (C) 2013 - 2014 TopCoder Inc., All Rights Reserved. + - + - Description: This page fragment displays the content of prizes on Project Details screen. +--%> +<%@ page language="java" isELIgnored="false" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="or" uri="/or-tags" %> +<%@ taglib prefix="tc-webtag" uri="/tags/tc-webtags" %> +<%@ taglib prefix="orfn" uri="/tags/or-functions" %> + +
+
+
+ Prizes +
+
+
+
+ + +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + +
${vs.count}${"$"}${orfn:displayPaymentAmt(pageContext.request, prize.prizeAmount)}${prize.numberOfSubmissions}
There are no prizes.
+ + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + diff --git a/web/includes/project/project_resource.jsp b/web/includes/project/project_resource.jsp deleted file mode 100644 index d494103f77..0000000000 --- a/web/includes/project/project_resource.jsp +++ /dev/null @@ -1,116 +0,0 @@ -<%-- - - Author: TCSASSEMBLER - - Version: 2.0 - - Copyright (C) 2011 - 2014 TopCoder Inc., All Rights Reserved. - - - - Description: This page fragment displays the content of resources on Project Details screen. ---%> -<%@ page language="java" isELIgnored="false" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="or" uri="/or-tags" %> -<%@ taglib prefix="tc-webtag" uri="/tags/tc-webtags" %> -<%@ taglib prefix="orfn" uri="/tags/or-functions" %> - - -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - ${users[idxrResource.index].email} ${"$"}${orfn:displayPaymentAmt(pageContext.request, resourcePaymentsAmount[resource.id])} - - -

- - -
diff --git a/web/includes/project/project_resource_reskin.jsp b/web/includes/project/project_resource_reskin.jsp new file mode 100644 index 0000000000..2bf749a36d --- /dev/null +++ b/web/includes/project/project_resource_reskin.jsp @@ -0,0 +1,127 @@ +<%@ page language="java" isELIgnored="false" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="or" uri="/or-tags" %> +<%@ taglib prefix="tc-webtag" uri="/tags/tc-webtags" %> +<%@ taglib prefix="orfn" uri="/tags/or-functions" %> + + + +
+
+
+ +
+
+
+
+ +
+
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + ${users[idxrResource.index].email} ${"$"}${orfn:displayPaymentAmt(pageContext.request, resourcePaymentsAmount[resource.id])} + + +
+
+
+ + +
diff --git a/web/includes/project/project_tab_info_reskin.jsp b/web/includes/project/project_tab_info_reskin.jsp new file mode 100644 index 0000000000..2bd6fe08ee --- /dev/null +++ b/web/includes/project/project_tab_info_reskin.jsp @@ -0,0 +1,12 @@ + + +
+

+

+
diff --git a/web/includes/project/project_tabs_reskin.jsp b/web/includes/project/project_tabs_reskin.jsp new file mode 100644 index 0000000000..48fd82f67e --- /dev/null +++ b/web/includes/project/project_tabs_reskin.jsp @@ -0,0 +1,47 @@ +<%@ page language="java" isELIgnored="false" %> +<%@ page import="java.text.DecimalFormat,com.topcoder.onlinereview.component.webcommon.ApplicationServer" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="or" uri="/or-tags" %> +<%@ taglib prefix="orfn" uri="/tags/or-functions" %> + +
+
+ +
+ + My Open Projects + + + + My Open Projects + + +
+
+ +
+ + All Open Projects + + + + All Open Projects + + +
+ + +
+ + Late Deliverables + + + + Late Deliverables + + +
+
+
+
diff --git a/web/includes/project/project_timeline.jsp b/web/includes/project/project_timeline.jsp deleted file mode 100644 index 351d59c96f..0000000000 --- a/web/includes/project/project_timeline.jsp +++ /dev/null @@ -1,111 +0,0 @@ -<%-- - - Author: TCSASSEMBLER - - Version: 2.0 - - Copyright (C) 2005 - 2014 TopCoder Inc., All Rights Reserved. - - - - Description: This page fragment renders the details on project phasee along with Gantt chart. ---%> -<%@ page language="java" isELIgnored="false" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="or" uri="/or-tags" %> -<%@ taglib prefix="orfn" uri="/tags/or-functions" %> - - - - - - - - - - - - - - - - - -
- - -  
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- This should never happen --%> - - - - - - - - -
- - - - - ${orfn:displayDate(pageContext.request, originalStart[phaseStatus.index])}${orfn:displayDate(pageContext.request, originalEnd[phaseStatus.index])}
-
-
- -
-
- - - - - - - - - -
 
- -
-
-
${orfn:getGanttHours(pageContext, ganttLengths[phaseStatus.index])}
-
-
-
-

diff --git a/web/includes/project/project_timeline_reskin.jsp b/web/includes/project/project_timeline_reskin.jsp new file mode 100644 index 0000000000..fe932b63b7 --- /dev/null +++ b/web/includes/project/project_timeline_reskin.jsp @@ -0,0 +1,115 @@ +<%@ page language="java" isELIgnored="false" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="or" uri="/or-tags" %> +<%@ taglib prefix="orfn" uri="/tags/or-functions" %> + +
+
+
+ +
+
+ + + + + +
+
+
+
+ +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <%-- This should never happen --%> + + + + + + + + + +
+ + + + + ${orfn:displayDate(pageContext.request, originalStart[phaseStatus.index])}${orfn:displayDate(pageContext.request, originalEnd[phaseStatus.index])}
+
+
+ +
+
+ + + + + + + + + + + + +
 
+ +
+
 
+
${orfn:getGanttHours(pageContext, ganttLengths[phaseStatus.index])}
+
+
+
+
+
+
diff --git a/web/includes/review/review_comments.jsp b/web/includes/review/review_comments.jsp index 7450f1ee36..6bb99ae5db 100644 --- a/web/includes/review/review_comments.jsp +++ b/web/includes/review/review_comments.jsp @@ -22,7 +22,7 @@ - + @@ -49,19 +49,19 @@ - + - - + -  ${orfn:htmlEncode(comment.comment)} + ${orfn:htmlEncode(comment.comment)} - + <%--
-
+
--%> diff --git a/web/includes/review/review_project.jsp b/web/includes/review/review_project.jsp index 5bc241e98e..e8f875a6fc 100644 --- a/web/includes/review/review_project.jsp +++ b/web/includes/review/review_project.jsp @@ -39,98 +39,88 @@
-
- - - - - -
- - - - - - -
${rootCatalogName} - ${orfn:htmlEncode(project.allProperties['Project Name'])} - - - ${orfn:htmlEncode(project.allProperties['Project Version'])} - -
-
- - - - - - | - - - - - - | - - - - - - | - - - -
+
+ +

+ ${orfn:htmlEncode(project.allProperties['Project Name'])} +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + ${sid} + + () + +
+
+
+
+ + +
+
+
+
+ ${myRole}
+
+
- - -   - - -   - - -   - - -   - - -   - - -   - - -   - - -   - - -   - - -   - - - - -
-
- -   ${sid} - - () - -
-
- -   -
-
${myRole}
\ No newline at end of file + + + diff --git a/web/includes/review/review_question.jsp b/web/includes/review/review_question.jsp index 96e5aee1fa..214deaaea2 100644 --- a/web/includes/review/review_question.jsp +++ b/web/includes/review/review_question.jsp @@ -12,18 +12,19 @@
- <or:text key='global.plus.alt'/> - ${groupStatus.index + 1}.${sectionStatus.index + 1}.${questionStatus.index + 1} + <or:text key='global.plus.alt'/> + ${groupStatus.index + 1}.${sectionStatus.index + 1}.${questionStatus.index + 1} ${orfn:htmlEncode(question.description)}
- <or:text key='global.minus.alt'/> - ${groupStatus.index + 1}.${sectionStatus.index + 1}.${questionStatus.index + 1} + <or:text key='global.minus.alt'/> + ${groupStatus.index + 1}.${sectionStatus.index + 1}.${questionStatus.index + 1} ${orfn:htmlEncode(question.description)}
- ${orfn:htmlEncode(question.guideline)} +
+ ${orfn:htmlEncode(question.guideline)} +
${orfn:displayScore(pageContext.request, question.weight)} - \ No newline at end of file diff --git a/web/includes/review/review_static_answer.jsp b/web/includes/review/review_static_answer.jsp index dd1b2e3dac..ac5893bee3 100644 --- a/web/includes/review/review_static_answer.jsp +++ b/web/includes/review/review_static_answer.jsp @@ -3,7 +3,7 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="or" uri="/or-tags" %> <%@ taglib prefix="orfn" uri="/tags/or-functions" %> - + @@ -18,7 +18,7 @@ - + ${fn:replace(item.answer, '/10', '')} diff --git a/web/includes/review/review_table_title.jsp b/web/includes/review/review_table_title.jsp index ed0b2fb2a5..cd5e145fc2 100644 --- a/web/includes/review/review_table_title.jsp +++ b/web/includes/review/review_table_title.jsp @@ -11,11 +11,11 @@ - + - diff --git a/web/includes/supportModal.jsp b/web/includes/supportModal.jsp new file mode 100644 index 0000000000..d935a72e19 --- /dev/null +++ b/web/includes/supportModal.jsp @@ -0,0 +1,272 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page language="java" isELIgnored="false" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="or" uri="/or-tags" %> +<%@ taglib prefix="orfn" uri="/tags/or-functions" %> +<%@ taglib prefix="tc-webtag" uri="/tags/tc-webtags" %> + + + + + diff --git a/web/includes/termsModal.jsp b/web/includes/termsModal.jsp new file mode 100644 index 0000000000..10404f65b9 --- /dev/null +++ b/web/includes/termsModal.jsp @@ -0,0 +1,203 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> + \ No newline at end of file diff --git a/web/js/or/edit_project_payments.js b/web/js/or/edit_project_payments.js index b2523dc6bf..3ea3e5eb6e 100644 --- a/web/js/or/edit_project_payments.js +++ b/web/js/or/edit_project_payments.js @@ -17,6 +17,19 @@ function changeDisableStatus(eles, disabled) { eles[i].disabled = disabled; } } + +function changeSelectState(eles, disabled) { + for (var i = 0; i < eles.length; i++) { + let selectWrap = eles[i].parentNode.getElementsByClassName("select-selected")[0]; + if (disabled == "disabled") { + if (!selectWrap.classList.contains("disabled")) { + selectWrap.classList.add("disabled"); + } + } else { + selectWrap.classList.remove("disabled"); + } + } +} /** * The handler when "Automatic/Manual" radio button is clicked. * @param resourceId the resource id @@ -36,6 +49,7 @@ function changeAutomatic(resourceId, automatic) { var paid = trs[i].getAttribute("rel"); if (paid != "true") { changeDisableStatus(trs[i].getElementsByTagName("select"), automatic ? "disabled" : ""); + changeSelectState(trs[i].getElementsByTagName("select"), automatic ? "disabled" : ""); changeDisableStatus(trs[i].getElementsByTagName("input"), automatic ? "disabled" : ""); } } @@ -109,11 +123,11 @@ function addPayment(btn, tablePrefix, resourceIdx, resourceId) { var table = document.getElementById(tablePrefix + "-table"); var newTr = cloneInputRow(table.rows[2]); newTr.style.display = "table-row"; - newTr.className = "tr_payment_" + resourceId; + newTr.className = "tr_payment_" + resourceId + " newTr"; assignRelToName(newTr.getElementsByTagName("input")); assignRelToName(newTr.getElementsByTagName("select")); var aobj = newTr.cells[3].getElementsByTagName("a")[0]; - aobj.className = "delete_payment_" + resourceId; + aobj.className = "delete_payment_" + resourceId + " deletePayment"; aobj.setAttribute("resourceId", resourceId); aobj.setAttribute("resourceIdx", resourceIdx); if (tablePrefix == "submitters") { @@ -131,8 +145,106 @@ function addPayment(btn, tablePrefix, resourceIdx, resourceId) { } patchChildrenIndex(dojo.html.getElementsByClass("tr_payment_" + resourceId), resourceIdx); if (tablePrefix == "submitters") paymentTypeChange(newTr.cells[0].getElementsByTagName("select")[0]); + customSelect(newTr.getElementsByClassName("selectCustom-add")); return false; } + +function customSelect(selectWrapper) { + for (let i = 0; i < selectWrapper.length; i++) { + const selectElem = selectWrapper[i].getElementsByTagName("select")[0]; + const wrapperNode = selectWrapper[i].getElementsByClassName("select-custom-wrapper")[0]; + const fieldLabel = selectWrapper[i].getElementsByTagName("label")[0]; + const a = document.createElement("div"); + const customSelectWrap = document.createElement("div"); + customSelectWrap.setAttribute("class", "select-custom-wrapper"); + a.setAttribute("class", "select-selected"); + const selectedText = document.createElement("div") + selectedText.setAttribute("class", "selectedText"); + + if (wrapperNode) { + wrapperNode.remove(); + } + if (selectElem.disabled) { + a.classList.add("disabled"); + } + if (fieldLabel) { + a.classList.add('select-label') + customSelectWrap.classList.add("with-label"); + const labelElmt = document.createElement("span"); + selectedText.classList.add("selectedText--label"); + labelElmt.setAttribute("class", "selectCustom__label"); + labelElmt.innerHTML = fieldLabel.innerHTML; + a.appendChild(labelElmt) + } + a.appendChild(selectedText); + if (selectElem.options.length > 0) { + a.querySelector('.selectedText').innerHTML = selectElem.options[selectElem.selectedIndex].innerHTML; + } + customSelectWrap.appendChild(a) + selectWrapper[i].appendChild(customSelectWrap); + + + const b = document.createElement("div"); + b.setAttribute("class", "select-items select-hide"); + for (let j = 0; j < selectElem.length; j++) { + const c = document.createElement("div"); + c.innerHTML = selectElem.options[j].innerHTML; + c.setAttribute("data-value", selectElem.options[j].getAttribute('value')) + c.addEventListener("click", function(e) { + const s = this.parentNode.parentNode.parentNode.getElementsByTagName("select")[0]; + const h = this.parentNode.previousSibling.querySelector(".selectedText"); + s.value = c.getAttribute("data-value") + if (s.getAttribute("onchange")) { + s.onchange(); + } + for (let i = 0; i < s.length; i++) { + if (s.options[i].innerHTML == this.innerHTML) { + s.selectedIndex = i; + h.innerHTML = this.innerHTML; + y = this.parentNode.getElementsByClassName("same-as-selected"); + for (let k = 0; k < y.length; k++) { + y[k].removeAttribute("class"); + } + this.setAttribute("class", "same-as-selected"); + break; + } + } + h.click(); + }); + b.appendChild(c); + } + customSelectWrap.appendChild(b) + selectWrapper[i].appendChild(customSelectWrap); + a.addEventListener("click", function(e) { + e.stopPropagation(); + closeAllSelect(this); + if (!selectElem.disabled) { + this.nextSibling.classList.toggle("select-hide"); + this.classList.toggle("select-arrow-active"); + } + }); + document.addEventListener("click", closeAllSelect); + } +} + +function closeAllSelect(elmnt) { + const arrNo = []; + const x = document.getElementsByClassName("select-items"); + const y = document.getElementsByClassName("select-selected"); + + for (let i = 0; i < y.length; i++) { + if (elmnt == y[i]) { + arrNo.push(i) + } else { + y[i].classList.remove("select-arrow-active"); + } + } + for (i = 0; i < x.length; i++) { + if (arrNo.indexOf(i)) { + x[i].classList.add("select-hide"); + } + } +} /** * Enable all elements in a specific form. * @param form the specific form @@ -170,7 +282,7 @@ function setSelectOptions(selectObj, options) { * @param selectObj the DOM element of the payment type widget */ function paymentTypeChange(selectObj) { - var tr = selectObj.parentNode.parentNode; + var tr = selectObj.parentNode.parentNode.parentNode; var resourceId = tr.cells[3].getElementsByTagName("a")[0].getAttribute("resourceid"); var options = []; var subs = []; @@ -181,6 +293,8 @@ function paymentTypeChange(selectObj) { } for (var i = 0; i < subs.length; i++) options[subs[i]] = subs[i]; setSelectOptions(tr.cells[1].getElementsByTagName("select")[0], options); + customSelect(tr.cells[1].getElementsByClassName("selectCustom-add")) + customSelect(tr.cells[1].getElementsByClassName("selectCustom")) } /** * The handler when a tab is clicked. @@ -192,9 +306,9 @@ function showTab(tableId, aobj) { document.getElementById("reviewers-table").style.display = "none"; document.getElementById("copilots-table").style.display = "none"; document.getElementById(tableId).style.display = "table"; - var lis = aobj.parentNode.parentNode.getElementsByTagName("li"); - for (var i = 0; i < lis.length; i++) lis[i].className = ""; - aobj.parentNode.className = "current"; + var lis = document.getElementsByClassName("projectDetails__tab"); + for (var i = 0; i < lis.length; i++) lis[i].className = "projectDetails__tab"; + aobj.parentNode.className = "projectDetails__tab projectDetails__tab--active"; } /** * The handler when the document body loaded. It will make the disable/visible state consistent with diff --git a/web/js/or/late_deliverable_search.js b/web/js/or/late_deliverable_search.js index 208712b70a..a52e118aaf 100644 --- a/web/js/or/late_deliverable_search.js +++ b/web/js/or/late_deliverable_search.js @@ -68,7 +68,7 @@ function validate_project_id(thisForm, msgList) { /** * Validates the minimum/maximum deadline. - * + * * @param thisForm the late deliverable search form * @param msgList the list of error messages * @param errorDivID ID for span element to display validation error @@ -86,7 +86,7 @@ function validate_deadline(thisForm, msgList, errorDivID, fieldName) { if (value == 'MM.DD.YYYY') { value = ''; } - + // empty is allowed if (!emptyString.test(value)) { var parsedDate = getDateString(value); @@ -103,9 +103,9 @@ function validate_deadline(thisForm, msgList, errorDivID, fieldName) { /** * Validates the minimum/maximum deadline. - * + * * @param input the input field providing the date value - * @return a value to be set for input field on focus + * @return a value to be set for input field on focus */ function getDateValueOnFocus(input, isOnFocus) { var val = input.value; @@ -128,9 +128,9 @@ function getDateValueOnFocus(input, isOnFocus) { /** * Validates the minimum/maximum deadline. - * + * * @param input the input field providing the date value - * @return a value to be set for input field on focus + * @return a value to be set for input field on focus */ function getTextValueOnFocus(input, isOnFocus) { var val = input.value; @@ -274,7 +274,7 @@ function validate_form(thisForm, popup) { /** * Sets the value of specified input element to empty string if current value of that element is equal to specified * default value. - * + * * @param input a form input element. * @param defaultValue a default value for the input value. */ @@ -340,7 +340,7 @@ function reset_form(thisForm) { msgDiv.style.display = "none"; clearServerSideMessages(); - + colorFormFields(); } @@ -351,11 +351,11 @@ function clearServerSideMessages() { var msgDiv = document.getElementById("handle_serverside_validation"); msgDiv.innerHTML = ""; msgDiv.style.display = "none"; - + msgDiv = document.getElementById("project_id_serverside_validation"); msgDiv.innerHTML = ""; msgDiv.style.display = "none"; - + msgDiv = document.getElementById("deadline_serverside_validation"); msgDiv.innerHTML = ""; msgDiv.style.display = "none"; @@ -374,6 +374,11 @@ function clearForm(thisForm) { var elements = thisForm.elements; for (i = 0; i < elements.length; i++) { + var reset_value = elements[i].getAttribute("data-reset"); + if(reset_value != null) { + elements[i].value = reset_value; + continue; + } var field_type = elements[i].type.toLowerCase(); switch (field_type) { @@ -442,7 +447,7 @@ function expandAll() { /** * Handles the event on clicking the collapse/expand button. - * + * * @param srcElement a source element of the event. */ function expcollHandler(srcElement) { @@ -465,7 +470,7 @@ function expcollHandler(srcElement) { /** * Submits the Edit Late Deliverable form having it's input fileds validated first. If validation fails teh form * is not submitted. - * + * * @param thisForm the form to validate */ function submitEditLateDeliverableForm(thisForm) { @@ -485,7 +490,7 @@ function submitEditLateDeliverableForm(thisForm) { /** * Validates the form when saving the changes to the late deliverable. - * + * * @param thisForm the form to validate * @return true if no validation failures */ @@ -501,7 +506,7 @@ function validateEditLateDeliverableForm(thisForm) { /** * Validates the minimum/maximum deadline. - * + * * @param thisForm the late deliverable search form * @param msgList the list of error messages * @param errorDivID ID for span element to display validation error @@ -529,8 +534,8 @@ function validateText(thisForm, msgList, errorDivID, fieldName) { } /** - * Submits the Search Late Deliverables Form if Enter key is pressed on specified input element. - * + * Submits the Search Late Deliverables Form if Enter key is pressed on specified input element. + * * @param e an event for key pressing. */ function submitOnEnter(input, e) { diff --git a/web/js/toasts.js b/web/js/toasts.js new file mode 100644 index 0000000000..5131008294 --- /dev/null +++ b/web/js/toasts.js @@ -0,0 +1,43 @@ +// Toast function +function toast({ title = "", message = "", type = "success", duration = 4000 }) { + const main = document.getElementById("toast"); + if (main) { + const toast = document.createElement("div"); + + // Auto remove toast + const autoRemoveId = setTimeout(function () { + main.removeChild(toast); + }, duration + 1000); + + // Remove toast when clicked + toast.onclick = function (e) { + if (e.target.closest(".toast__close")) { + main.removeChild(toast); + clearTimeout(autoRemoveId); + } + }; + + const icons = { + success: "success-icon", + }; + const icon = icons[type]; + const delay = (duration / 1000).toFixed(2); + + toast.classList.add("toast", `toast--${type}`); + toast.style.animation = `slideInLeft ease .3s, slideOut linear 0.2s ${delay}s forwards`; + + toast.innerHTML = ` +
+
+ +
+

${message}

+
+
+ +
+
+ `; + main.appendChild(toast); + } +} diff --git a/web/jsp/contactManager.jsp b/web/jsp/contactManager.jsp index e8018aec7f..304e4e80e7 100644 --- a/web/jsp/contactManager.jsp +++ b/web/jsp/contactManager.jsp @@ -1,10 +1,3 @@ -<%-- - - Author: TCSASSEMBLER - - Version: 2.0 - - Copyright (C) 2014 TopCoder Inc., All Rights Reserved. - - - - Description: This page provides the view contact the project manager. ---%> <%@ page contentType="text/html;charset=UTF-8" %> <%@ page language="java" isELIgnored="false" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> @@ -23,7 +16,6 @@ - + + + + + -
- -
- - - - - -
-
-

${tableTitle}

${tableTitle}

- | - + + +
- - - - - -
${rootCatalogName} - ${project.allProperties["Project Name"]} - - - ${project.allProperties["Project Version"]} - -
-

- - - - - -
- - - - - - - - - - -

- - - - -

-
-   - - <or:text key='btnCancel.alt' /> - -

-
+ + + + + +
+
+
+

${project.allProperties["Project Name"]}

+
+ +

${project.allProperties["Project Version"]}

+
+

${projectStatus}

+
+
+
+
+ + +
Contact Managers
+ + +
+ +
+
+ +
+
+
+
+ + > + > + > + > + > +
- +
-
- - +
+ + +
+ +
+ + + + +
+ +
+
+ diff --git a/web/jsp/editProject.jsp b/web/jsp/editProject.jsp index 74661ca235..c1619f90ee 100644 --- a/web/jsp/editProject.jsp +++ b/web/jsp/editProject.jsp @@ -14,6 +14,7 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="or" uri="/or-tags" %> +<%@ page import="java.text.DecimalFormat,com.topcoder.onlinereview.component.webcommon.ApplicationServer" %> <%@ taglib prefix="orfn" uri="/tags/or-functions" %> @@ -32,7 +33,10 @@ - + + + + @@ -43,6 +47,7 @@ + @@ -226,9 +231,41 @@ if (!canEdit) return; var eles = getChildrenByNamePrefix(document.body, prefix); for (var i = 0; i < eles.length; i++) { + var selectElmt = eles[i].parentNode.querySelector(".select-selected") var ori = eles[i].disabled; eles[i].disabled = disabled ? "disabled" : ""; if (ori != "disabled" && disabled) eles[i].value = "1"; + if (selectElmt) { + if (disabled) { + if (!selectElmt.classList.contains("disabled")) { + selectElmt.classList.add("disabled"); + } + } else { + selectElmt.classList.remove("disabled"); + } + } + } + } + + /** + * Disable or enable the new select. + * + * @param prefix the prefix of select widget name. + * @param disabled true if to disable, false to enable. + * @param canEdit whether we can edit the select widget. + */ + function disableNewSelect(prefix, disabled, canEdit) { + if (!canEdit) return; + var eles = getChildrenByNamePrefix(document.body, prefix); + for (var i = 0; i < eles.length; i++) { + var elem = eles[i].parentNode.querySelector(".custom-select"); + if (disabled) { + if (!elem.classList.contains("disabled")) { + elem.classList.add("disabled"); + } + } else { + elem.classList.remove("disabled"); + } } } @@ -248,6 +285,7 @@ projectCategories[i]["name"], projectCategories[i]["id"]); } } + customSelect(projectCategoryNode.parentNode.parentNode.getElementsByClassName("selectCustom")) onProjectCategoryChange(projectCategoryNode); disableSelect("contest_prizes_num[", projectTypeNode.value != 3, canEditContestPrize); disableSelect("contest_prizes_num_dump[", projectTypeNode.value != 3, canEditContestPrize); @@ -352,6 +390,7 @@ scorecardNode.value = defaultScorecards[i]["id"]; } } + customSelect(scorecardNode.parentNode.parentNode.getElementsByClassName("selectCustom")); } } @@ -401,7 +440,7 @@ var buttonsCell = allNewCells[2]; // Make delete button visible and hide add button - var images = buttonsCell.getElementsByTagName("img"); + var images = buttonsCell.getElementsByTagName("a"); images[0].style["display"] = "none"; images[1].style["display"] = "inline"; // Retrieve hidden inputs @@ -451,7 +490,7 @@ for (var i = 0; i < rows.length; i++) { // Skip hidden rows as they shouldn't affect row coloring if (rows[i].style["display"] == "none") continue; - rows[i].className = (initial++ % 2 == 0) ? "light" : "dark"; + rows[i].className = (initial++ % 2 == 0) ? "editPrizeTable__header" : "dark"; } } @@ -472,6 +511,7 @@ // Update resource phase combo fillResourcePhaseCombo(resourceNode, phaseIdNodes, phaseActionNodes, phaseTypeNodes, phaseNumberNodes); + customSelect(resourceNode.getElementsByClassName("selectCustom phaseSelect")) } @@ -1048,11 +1088,11 @@ * @param aObject the DOM object of the link which have been clicked. */ function showPrizeTab(id, aObject) { - var liEles = aObject.parentNode.parentNode.getElementsByTagName("li"); + var liEles = aObject.parentNode.parentNode.getElementsByTagName("div"); for (var i = 0; i < liEles.length; i++) { - liEles[i].className = ""; + liEles[i].className = "projectDetails__tab"; } - aObject.parentNode.className = "current"; + aObject.parentNode.className = "projectDetails__tab projectDetails__tab--active"; // Remove focus from the link that triggered the activation if (aObject.blur) { @@ -1092,6 +1132,7 @@ for (var idx = 3; idx < rows.length - 1; idx++) { rows[idx].className = (idx - 3) % 2 == 0 ? "light" : "dark"; } + customSelect(rows[rows.length - 3].getElementsByClassName("selectCustom")) } /** @@ -1110,374 +1151,484 @@ rows[idx].className = (idx - 3) % 2 == 0 ? "light" : "dark"; } if (rows.length - 5 > 0) { - rows[rows.length - 3].cells[3].innerHTML = 'Delete'; + rows[rows.length - 3].cells[3].innerHTML = 'Delete Prize'; } } //--> + <%-- --%> -
-
+ - - + -
+
+
+
+ +
+
- - - <%-- TODO: Validation errors display should be much more than is here --%> - - - - - - - -

-
- - <%-- If editing the existing project, render its pid --%> - - - - - - - - - - <%-- If creating a new project, show project details table --%> - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
- -

-
- - <%-- If creating a new project, show the edit prizes section here --%> - - - - - <%-- If editing the existing project, include timeline editor here --%> - - - - - <%-- If editing the existing project, include phases details tabs here --%> - - - - - - - - - - - - - - - - - - -
- /> -
- />
- /> -
- />
- />
- />

- - - - - <%-- If creating a new project, name this table as "References" --%> +
+
+
+ Phases +
+
+
+ + + <%-- TODO: Validation errors display should be much more than is here --%> + +
+ + + + + +

+ + + <%-- If editing the existing project, render its pid --%> + + + + + + + + + + <%-- If creating a new project, show project details table --%> - + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +

+
+ + <%-- If creating a new project, show the edit prizes section here --%> + + + + + <%-- If editing the existing project, include timeline editor here --%> + + - <%-- If editing the existing project, name this table as "Project Details" --%> + + <%-- If editing the existing project, include phases details tabs here --%> - + + + - - <%-- If editing the existing project, should have project name edited here --%> - - - - - - - - - - - - /> + +
+
+ +
+ + +
+ /> +
+ + + + +
+
+
+ /> + + +
+

+
+
+ /> + + +
+
+ /> + + + /> +
+ + + + +
+
+ +
+
+
+ <%-- If creating a new project, name this table as "References" --%> + + - - - - - - - - - - - - -
- - - - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - - - - -
- - - - - - -
- - - -
- - - - - -
- - - - +
+
+
+ + + <%-- If editing the existing project, should have project name edited here --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+
+ + + +
+
+
+ + +
+
+
+ + + +
+
+
+ + +
+
+ + +
+
+ + + +
+
+
+ +
+
+
+ +
+
+
+
+ + + >${billingProject.name} + +
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+ + + >${cockpitProject.name} + +
+
+
+
+ +
+
+
+
+ + <%-- If edit an existing project, show the edit prizes section here --%> + + + + + + + + + + - - - - - - - - - - -
- - <%-- If edit an existing project, show the edit prizes section here --%> - - - - - - - - - - - - - - -
- notes
- - -

- - <%-- If creating a new project, include timeline editor here --%> - - - - - <%-- Include resources editor --%> - - - - - - - - - - - - - -
-

   -
- status -

-
- -

- - - - - - - - - - - -
-   - explanation
- -

-
- -
- -   - <or:text key='btnCancel.alt' /> - - -   - <or:text key='btnCancel.alt' /> - + + + + + + + <%-- If creating a new project, include timeline editor here --%> + + + + + <%-- Include resources editor --%> + + + +
+
+
+ +
+
+
+
+
+ +
+
+
+ +
+
+
+
+ + + > + +
+
+
+
+
+ status +
+
+ + +
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+
+ + + explanation
+
+
+
+
+
+
- +
+
+
+ + + + + + + +
-
+ diff --git a/web/jsp/editProjectLinks.jsp b/web/jsp/editProjectLinks.jsp index 137f65170c..7d9008926f 100644 --- a/web/jsp/editProjectLinks.jsp +++ b/web/jsp/editProjectLinks.jsp @@ -1,169 +1,272 @@ -<%-- - - Author: TCSASSEMBLER - - Version: 2.0 - - Copyright (C) 2014 TopCoder Inc., All Rights Reserved. - - - - Description: This page displays project links edition page. ---%> -<%@ page contentType="text/html;charset=UTF-8" %> -<%@ page language="java" isELIgnored="false" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="or" uri="/or-tags" %> -<%@ taglib prefix="orfn" uri="/tags/or-functions" %> - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
-
-
- - - - - - - - - - -

-
- -
-

${project.allProperties["Project Name"]} version ${project.allProperties["Project Version"]} - Manage Project Links

-
- - - -
-   - <or:text key='btnCancel.alt' /> -
-
-
-
- - - -
-
- - - +<%-- + - Author: TCSASSEMBLER + - Version: 2.0 + - Copyright (C) 2014 TopCoder Inc., All Rights Reserved. + - + - Description: This page displays project links edition page. +--%> +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ page language="java" isELIgnored="false" %> +<%@ page import="java.text.DecimalFormat,com.topcoder.onlinereview.component.webcommon.ApplicationServer" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="or" uri="/or-tags" %> +<%@ taglib prefix="orfn" uri="/tags/or-functions" %> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+
+
+ + + + + diff --git a/web/jsp/editProjectPayments.jsp b/web/jsp/editProjectPayments.jsp index 967606e360..57690fb363 100644 --- a/web/jsp/editProjectPayments.jsp +++ b/web/jsp/editProjectPayments.jsp @@ -8,6 +8,7 @@ <%@ page import="com.cronos.onlinereview.Constants" %> <%@ page contentType="text/html;charset=UTF-8" %> <%@ page language="java" isELIgnored="false" %> +<%@ page import="java.text.DecimalFormat,com.topcoder.onlinereview.component.webcommon.ApplicationServer" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> @@ -32,7 +33,10 @@ - + + + + @@ -63,87 +67,130 @@ var contestPaymentTypeText = ''; var checkpointPaymentTypeText = ''; //--> + -
- -
- - + - + -
-
- -
-
-

${project.allProperties["Project Name"]} - version ${project.allProperties["Project Version"]} - Edit Payments

+
+
+ +
+
+
+
- - - - - - - - -
-
- - - - - - -
-
    -
  • class="current" >
  • -
  • class="current">
  • -
  • class="current">
  • -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
-
-   - <or:text key='btnCancel.alt' /> +
+
+ + + + + + + + + + + + + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
- +
+
+
+ +
- -
-
+ + diff --git a/web/jsp/listProjects.jsp b/web/jsp/listProjects.jsp index fb48a9ef7f..8010ab916b 100644 --- a/web/jsp/listProjects.jsp +++ b/web/jsp/listProjects.jsp @@ -44,27 +44,37 @@ + + + + + -
- -
+ - - - - -
- -
- - + +
+
+ +
+
-
+ + diff --git a/web/jsp/userError.jsp b/web/jsp/userError.jsp index b4e6411ecc..04a61d1ce4 100644 --- a/web/jsp/userError.jsp +++ b/web/jsp/userError.jsp @@ -9,6 +9,8 @@ <%@ page language="java" isELIgnored="false" %> <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="or" uri="/or-tags" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + @@ -18,11 +20,12 @@ + + + - - @@ -31,38 +34,59 @@ + -
- -
- - - - - -
-
- -
-
- - ${errorTitle} -
-
- - ${errorMessage} -
+ + -
+
+
+
+ +

+ ${project.allProperties['Project Name']} +

- - - +

+ +

+
+

+ ${errorTitle} +

+ ${errorMessage}

+
+
+ + + + + + + + + + + + +
+
+ -
diff --git a/web/jsp/viewApproval.jsp b/web/jsp/viewApproval.jsp index 2375e92b30..484279d427 100644 --- a/web/jsp/viewApproval.jsp +++ b/web/jsp/viewApproval.jsp @@ -22,14 +22,14 @@
+ + + + - - - - - + -
- -
- - - - - -
-
- - - - - <%-- Note, that the form is a "dummy" one, only needed to support Struts tags inside of it --%> - View${reviewType}?rid=${review.id} - + + + +
+
+ +
+ + + <%-- Note, that the form is a "dummy" one, only needed to support Struts tags inside of it --%> + View${reviewType}?rid=${review.id} + + + + + + + + + + + + + + + + - -
+ ${orfn:htmlEncode(group.name)}    + (${orfn:displayScore(pageContext.request, group.weight)})
+ ${orfn:htmlEncode(section.name)}    + (${orfn:displayScore(pageContext.request, section.weight)})
- - - + + <%@ include file="../includes/review/review_question.jsp" %> + <%@ include file="../includes/review/review_static_answer.jsp" %> - - - - - - - - - - - <%@ include file="../includes/review/review_question.jsp" %> - <%@ include file="../includes/review/review_static_answer.jsp" %> - - <%@ include file="../includes/review/review_comments.jsp" %> - - - - - - - - - - - - - - - - - - - - + <%@ include file="../includes/review/review_comments.jsp" %> + -
- ${orfn:htmlEncode(group.name)}   - (${orfn:displayScore(pageContext.request, group.weight)})
- ${orfn:htmlEncode(section.name)}   - (${orfn:displayScore(pageContext.request, section.weight)})
${orfn:displayScore(pageContext.request, review.score)}

-
- - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + -
- - - - - - - - - - -
- -

${orfn:displayScore(pageContext.request, review.score)}

-
- -
- - <or:text key='btnClose.alt' /> - - - - <or:text key='btnBack.alt' /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + -
- - - +
+ +
+
+ + <or:text key='btnClose.alt' /> + + + + + +
- - - +
- -
- + diff --git a/web/jsp/viewFinalReview.jsp b/web/jsp/viewFinalReview.jsp index 18a52b2902..a68c87f85d 100644 --- a/web/jsp/viewFinalReview.jsp +++ b/web/jsp/viewFinalReview.jsp @@ -22,210 +22,193 @@ + + + + - - - - + + -
- -
- - - - - -
-
- - - - - - - - - - + + + +
+
+ +
+ + + + +
${orfn:htmlEncode(group.name)}
+ + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - -
${orfn:htmlEncode(group.name)}
${orfn:htmlEncode(section.name)}
+
+ <or:text key='global.plus.alt' /> + ${groupStatus.index + 1}.${sectionStatus.index + 1}.${questionStatus.index + 1} + ${orfn:htmlEncode(question.description)} +
+
+ <or:text key='global.minus.alt' /> + ${groupStatus.index + 1}.${sectionStatus.index + 1}.${questionStatus.index + 1} + ${orfn:htmlEncode(question.description)} +
+ ${orfn:htmlEncode(question.guideline)} +
+
+
${orfn:htmlEncode(section.name)}
-
- <or:text key='global.plus.alt' /> - ${groupStatus.index + 1}.${sectionStatus.index + 1}.${questionStatus.index + 1} - ${orfn:htmlEncode(question.description)} -
-
- <or:text key='global.minus.alt' /> - ${groupStatus.index + 1}.${sectionStatus.index + 1}.${questionStatus.index + 1} - ${orfn:htmlEncode(question.description)}
- ${orfn:htmlEncode(question.guideline)} -
-
- - -
-
-
- - - - - -
${commentNum} - - - - - - - - - - - - () - - - - - - ${orfn:htmlEncode(comment.comment)} - - - -
${commentNum} + + + + + + + + + + + + () + + + + + +  ${orfn:htmlEncode(comment.comment)} + + + +

- - - - - - - - - - - - - - - - - - - - - - - -

- -
- - <or:text key='btnClose.alt' /> - - - - <or:text key='btnBack.alt' /> - -
-

- -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + <or:text key='btnClose.alt' /> + + + + + +
- - - -
- -
+
+ diff --git a/web/jsp/viewLateDeliverables.jsp b/web/jsp/viewLateDeliverables.jsp index 5685639b81..ccaf5aa3da 100644 --- a/web/jsp/viewLateDeliverables.jsp +++ b/web/jsp/viewLateDeliverables.jsp @@ -1,10 +1,3 @@ -<%-- - - Author: TCSASSEMBLER - - Version: 2.0 - - Copyright (C) 2010 - 2014 TopCoder Inc., All Rights Reserved. - - - - Description: This page displays late deliverables page. ---%> <%@ page contentType="text/html;charset=UTF-8" %> <%@ page language="java" isELIgnored="false" %> <%@ page import="java.util.Date" %> @@ -44,305 +37,459 @@ var ajaxSupportUrl = ""; + + + + + + -
-
- - - - -
-
- -
-
- -
- + + + + + +
+
+
+

Late Deliverables

+
+ +
+ +
+ +
+
+
- - - - - + + + +
+
-
- - - - - - - - - + + + + + + - - - - - - - - - - - -
- +
+
+
+ +
+
+
+
+ + > - + > - - -
- +
+
+
+ +
+
+
+
+ + > + + > - - -
- - -
- - -
project_id
-
- -
handle
-
- -
-
- - - - - - - style="display:none"> - - - - - - - - - - - - - - - - - - - - -
- - -
- - - - - - - - - - - -
- - - - - - - - - - - -
- max_deadline
-
- - - +
+ +
+
+
+ +
+
+
+
+ + + > + +
+
+
+
+ +
+ -
-
-
- -    - +
+
+ + +
project_id
+
+ +
+ + +
handle
+
+ +
+ +
+
+
+ +
+
+
+
+ + >Any + >Justified + >Not justified +
+
+
+
+
- +
- - - -
- +
+
+
+
lateDeliverables__accordion--collapse">
+
+
style="display:none"> +
+
+ +
+
+
+ +
+
+
+
+ + > + + > + + +
+
+
+
+
+ +
+ +
+
+
+ +
+
+
+
+ + > + > + > +
+
+
+
+
+ +
+ +
+
+
+ +
+
+
+
+ + > + > + > +
+
+
+
+
- - -
- [ | ] -

- - - + +
+
+ + + +
+ +
+ + + +
+ max_deadline
+
+ +
+ +
+
+
+ +
+
+
+
+ + > + + > + +
+
+
+
+
+
+ + + + +
+ +
+ + +
+ + + + + + +
+ +
+
+ +
+
+
+ +
+ +
+ + +
+
+ +
+ - + + + - + + + - - - + + + + + + + - + version ${project.allProperties['Project Version']} + + + - - - + + + - - +
+ + + - - - -
- - + ${project.projectCategory.name}${project.projectStatus.name}
${project.projectCategory.name}${project.projectStatus.name}
+ + + + + +
+ +
-
+ + + - \ No newline at end of file + diff --git a/web/jsp/viewProjectDetails.jsp b/web/jsp/viewProjectDetails.jsp index 30b4b51a27..b933a47c7d 100644 --- a/web/jsp/viewProjectDetails.jsp +++ b/web/jsp/viewProjectDetails.jsp @@ -14,6 +14,7 @@ <%@ taglib prefix="or" uri="/or-tags" %> <%@ taglib prefix="tc-webtag" uri="/tags/tc-webtags" %> <%@ taglib prefix="orfn" uri="/tags/or-functions" %> + @@ -30,6 +31,7 @@ + + -
- -
- - - - - -
-
-
- - - - - - - - -
- - <or:text key='viewProjectDetails.btnPayments.alt' />  - - - <or:text key='viewProjectDetails.btnManagementConsoleLink.alt' />  - - - <or:text key='viewProjectDetails.btnEditLink.alt' />  - - - <or:text key='viewProjectDetails.btnEdit.alt' />  - -
-
-
- - + + + + +
+
+ +
+
+
Expand All
+
Collapse All
+
+ + + + + + + +
+
+
+
+ + + + + + + + + + + + +
+ + diff --git a/web/jsp/viewProjectManagementConsole.jsp b/web/jsp/viewProjectManagementConsole.jsp index 0875b09909..ba1a7ec5cb 100644 --- a/web/jsp/viewProjectManagementConsole.jsp +++ b/web/jsp/viewProjectManagementConsole.jsp @@ -11,6 +11,7 @@ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ page import="java.text.DecimalFormat,com.topcoder.onlinereview.component.webcommon.ApplicationServer" %> <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="or" uri="/or-tags" %> <%@ taglib prefix="orfn" uri="/tags/or-functions" %> @@ -27,10 +28,13 @@ - + + + + - + @@ -42,785 +46,867 @@ src="/js/or/validation_util.js"> + -
-
+ - - + -
-
- -
-
-

${project.allProperties["Project Name"]} - version ${project.allProperties["Project Version"]} - Manage Project

+
+
+ +
+
+
+
+ project management
- -
-
-
    -
  • - <%-- Only show the tab for design and development --%> -
  • -
    - -
  • -
  • -
    -
  • -
  • -
-
- - -
- - <%-- Validation errors area --%> - - - - - - -
- - - -
-
-
-
- - - - - + <%-- Design or Development only --%> + +
+
+
+ + + +
+ <%-- Only show the tab for design and development --%> +
+ + + +
+ +
+ + + +
+
+
+ + + +
+
+
+ + + - - - - -
+ + <%-- Validation errors area --%> + + + + + + + + +
+ + + +
+ +
+
+
+
+ + <%-- Create Design Distribution --%> + + + + + + - - - - - - - - + + + -
- +
- + +   + + + - + + +
+ distribution_package_name +
- + +   + - + + +
+ distribution_rs +
- + + - disabled="disabled" - value="" /> -
- submission_phase_extension -
+
+ + + + + +
+ +
+ distribution_additional1 +
+
+ <or:text key='btnClear.alt' /> +
+ + + + + + + +
+ +
+ distribution_additional2 +
+
+ <or:text key='btnClear.alt' /> +
+
- - <%-- Add Resources area --%> - - - - - - - - - - - - + + + + + - + + - - - - - -
- - +
+ + + + + + + +
+ +
+ distribution_additional3 +
+
+ <or:text key='btnClear.alt' /> +
+
+ + + + + + /> + + + +
- resource_role_id[${index.index}] + upload_to_server
- +
+ /> + +
- resource_handles[${index.index}] + return_distribution

- - -
-   - <or:text key='btnCancel.alt' /> -   -
-
-
-
- <%-- Design or Development only --%> - -
- -
- - - - - - - -
- - <%-- Validation errors area --%> - - - - + - +
- - - +
+  
- -
-
-
-
- - <%-- Create Design Distribution --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-   - - - - - -
- distribution_package_name -
-
-   - - - -
- distribution_rs -
-
- - - + + + <%-- Upload Distribution --%> + + + +
- - - -
- -
- distribution_additional1 -
-
- <or:text key='btnClear.alt' /> -
-
- - - - - - - -
- -
- distribution_additional2 -
-
- <or:text key='btnClear.alt' /> -
-
- - - - - - - -
- -
- distribution_additional3 -
-
- <or:text key='btnClear.alt' /> -
-
- - - - - - /> - - - - -
- upload_to_server -
-
- /> - - -
- return_distribution -
-
-   -
-
- - <%-- Upload Distribution --%> - - - - - - - - - - - - - - -
- - - - - - - - -
- - - -
- distribution_file -
-   -

-
- <or:text key='btnReturnToProjDet.alt' /> -   -
-
-
-
-
<%-- // Design or Development only --%> - <%-- Review Feedback tab --%> - -
-
    -
  • - - <%-- Only show the tab for design and development --%> -
  • -
    -
  • -
  • -
  • -
  • - -
-
- - - + + + + +
- - - - <%-- If any feedback already exist then just display the existing feedback --%> - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - + + + +
- - - - , - - - - - -
- - - checked="checked"/> - - checked="checked"/> + + + + + + + + + - checked="checked"/> +
+ - ${orfn:htmlEncode(detail.feedbackText)} + + +
+ distribution_file +
+  
- -
${orfn:htmlEncode(feedback.comment)}

+
+ <or:text key='btnReturnToProjDet.alt' /> +   +
+ +
+
+
<%-- // Design or Development only --%> + <%-- Review Feedback tab --%> + +
+
+
+ + + +
+ + <%-- Only show the tab for design and development --%> +
+ + + +
-
- -
- -
- <or:text key='manageProject.ReviewPerformance.btnEdit.alt' /> -   - <or:text key='btnReturnToProjDet.alt' />   -
-
+
+ + + +
+
+ + + +
- - - <%-- Otherwise since there are no feedbacks yet then display the form for submitting - feedbacks --%> - - <%-- Validation errors area --%> - - +
+
+ + - - - - -
+ + + + <%-- If any feedback already exist then just display the existing feedback --%> + - - + + + + + + + + + + + + + + + + + + + + + + + + + +
- - - + + + + + , + + + + +
+ + + checked="checked"/> + + checked="checked"/> + + checked="checked"/> + + ${orfn:htmlEncode(detail.feedbackText)} +
+ +
${orfn:htmlEncode(feedback.comment)}
+
- - - - <%-- Save Review Feedback form --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- - -
- reviewerScore[${resourceIdx}] -
-
- disabled="disabled" /> - - disabled="disabled" /> - - disabled="disabled" /> - - -
- reviewerFeedback[${resourceIdx}] -
-
- />
- -
- explanation -
-
-
-
- -   - +
+ <or:text key='manageProject.ReviewPerformance.btnEdit.alt' /> +   <or:text key='btnCancel.alt' />   - - - <or:text key='btnCancel.alt' />   + src="" alt="" border="0"/>   +
+
+
+ + + <%-- Otherwise since there are no feedbacks yet then display the form for submitting + feedbacks --%> + + <%-- Validation errors area --%> + + + + + + +
+ + + +
+
+
-
-
-
- - -
-
-
- <%-- // Review Feedbacks --%> - -
-
    -
  • - - <%-- Only show the tab for design and development --%> -
  • -
    - -
  • -
  • -
    -
  • -
  • - -
+ + <%-- Save Review Feedback form --%> + + + -
- - - +
+
+ +   + + <or:text key='btnCancel.alt' />   + + + <or:text key='btnCancel.alt' />   + +
+
+ + + + + -
- - <%-- Validation errors area --%> - - +
- - -
- - - + +
-
-
-
- - - - - -
-
-
-   - <or:text key='btnCancel.alt' /> -   -
-
-
-
+ +
+ <%-- // Review Feedbacks --%> + +
+
+
+ + + +
+ + <%-- Only show the tab for design and development --%> +
+ + + +
+
+ +
+ + + +
+
+
+ + + +
+
+ + + + +
+ + <%-- Validation errors area --%> + + + + + + +
+ + + +
+
+
+
+ + + + + +
+ + +
+
+
+
+
+
-
- - -
-
+ - + <%session.removeAttribute("success_upload");%> - + + -
- -
- - + + - +
+
+
+ + + -
-
- -
-
-

${project.allProperties["Project Name"]} - version ${project.allProperties["Project Version"]} - Payments

+ +
+
+
+
+
+ project payments +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + class="light"class="dark" > + + + + + + + + + + + + +
${payment.projectPaymentId}${resourceRoles[resourceId]}${payment.projectPaymentType.name} + + + ${payment.submissionId} + + + + + + ${"$"}${orfn:displayPaymentAmt(pageContext.request, payment.amount)} + + + +
+ + +
+
+
+
+
- - - - - - - - - - - - - - - - - - - - - - class="light"class="dark" > - - - - - - - - - - - - - - -
${payment.projectPaymentId}${resourceRoles[resourceId]}${payment.projectPaymentType.name}${payment.submissionId}${"$"}${orfn:displayPaymentAmt(pageContext.request, payment.amount)} - - - - () - - -
-
- -
+
- <or:text key='projectPayments.btnEditPayments.alt' />  + - <or:text key='btnReturnToProjDet.alt' /> +
- -
- -
- + diff --git a/web/jsp/viewReview.jsp b/web/jsp/viewReview.jsp index 1787fc860c..472290ea6c 100644 --- a/web/jsp/viewReview.jsp +++ b/web/jsp/viewReview.jsp @@ -25,14 +25,14 @@ + + + + - - - - - + -
- -
- - - - - -
-
- - - - - <%-- Note, that the form is a "dummy" one, only needed to support Struts tags inside of it --%> - View${fn:replace(reviewType, ' ', '')}?rid=${review.id} - - - - - - - - - - - - - - - - - - - - - - - - - <%@ include file="../includes/review/review_question.jsp" %> - <%@ include file="../includes/review/review_static_answer.jsp" %> - - - - - - - - - - - - - <%@ include file="../includes/review/review_comments.jsp" %> - - - - + + + +
+
+ + +
+ + + <%-- Note, that the form is a "dummy" one, only needed to support Struts tags inside of it --%> + View${fn:replace(reviewType, ' ', '')}?rid=${review.id} + + + +
- ${orfn:htmlEncode(group.name)}   - (${orfn:displayScore(pageContext.request, group.weight)})
- ${orfn:htmlEncode(section.name)}   - (${orfn:displayScore(pageContext.request, section.weight)})
${appealStatuses[itemIdx]} - <or:text key='editReview.Button.Appeal.alt' /> -
-
- :
-
- <or:text key='editReview.Button.SubmitAppeal.alt' />
-
-
+ + + + + + + + + + + + + + + + + + + + + <%@ include file="../includes/review/review_question.jsp" %> + <%@ include file="../includes/review/review_static_answer.jsp" %> + + + + + + - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - + + <%@ include file="../includes/review/review_comments.jsp" %> + + + + + + + + + - -
+ ${orfn:htmlEncode(group.name)}     + (${orfn:displayScore(pageContext.request, group.weight)})
+ ${orfn:htmlEncode(section.name)}     + (${orfn:displayScore(pageContext.request, section.weight)})
${appealStatuses[itemIdx]}
- :
-
- - -
- :
- <%@ include file="../includes/review/review_answer.jsp" %>

- <or:text key='editReview.Button.SubmitAppealResponse.alt' /> -
+ <or:text key='editReview.Button.Appeal.alt' /> +
${orfn:displayScore(pageContext.request, review.score)}
+
+ :
+
+ <or:text key='editReview.Button.SubmitAppeal.alt' />
+
+
+ :
+
+ + +
+ :
+ <%@ include file="../includes/review/review_answer.jsp" %>

+ <or:text key='editReview.Button.SubmitAppealResponse.alt' /> +

-
-
- - <or:text key='btnClose.alt' /> - - - - <or:text key='btnBack.alt' /> + + + + + + + + + + + + +

${orfn:displayScore(pageContext.request, review.score)}

+ + + + + + + +
-
-
- -
-
- - - + + + + + +
+ + +
+ + <or:text key='btnClose.alt' /> + + + + + + +
+ +
- -
- + diff --git a/web/jsp/viewSpecificationReview.jsp b/web/jsp/viewSpecificationReview.jsp index 8f639e9019..a6a1293e30 100644 --- a/web/jsp/viewSpecificationReview.jsp +++ b/web/jsp/viewSpecificationReview.jsp @@ -24,12 +24,11 @@ - - - + + + - + + -
- -
- - - - - -
-
- - - - - <%-- Note, that the form is a "dummy" one, only needed to support Struts tags inside of it --%> - View${reviewType}?rid=${review.id} - + + + +
+
+ +
+ + + <%-- Note, that the form is a "dummy" one, only needed to support Struts tags inside of it --%> + View${reviewType}?rid=${review.id} + + + + + + + + + + + + + + + + - -
+ ${orfn:htmlEncode(group.name)}   + (${orfn:displayScore(pageContext.request, group.weight)})
+ ${orfn:htmlEncode(section.name)}   + (${orfn:displayScore(pageContext.request, section.weight)})
- - - + + <%@ include file="../includes/review/review_question.jsp" %> + <%@ include file="../includes/review/review_static_answer.jsp" %> - - - - - - - - - - - <%@ include file="../includes/review/review_question.jsp" %> - <%@ include file="../includes/review/review_static_answer.jsp" %> - - <%@ include file="../includes/review/review_comments.jsp" %> - - - - - - - - - - - - - - - - - - - - + <%@ include file="../includes/review/review_comments.jsp" %> + -
- ${orfn:htmlEncode(group.name)}   - (${orfn:displayScore(pageContext.request, group.weight)})
- ${orfn:htmlEncode(section.name)}   - (${orfn:displayScore(pageContext.request, section.weight)})
${orfn:displayScore(pageContext.request, review.score)}

-
- - - - - - - - - - - - + + + + + + + + + + + + + - + -
- - - - - - - - -
${orfn:displayScore(pageContext.request, review.score)}
-
- -
- - <or:text key='btnClose.alt' /> - - - - <or:text key='btnBack.alt' /> - -
-
- -
-
- - - + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+ + <or:text key='btnClose.alt' /> + + + + + + +
+ +
- -
- +