From 213675c93fffed97e806b01cb217173bb8bd4648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Mar=C3=ADa=20M=C3=A9ndez=20P=C3=A9rez?= Date: Tue, 21 Jan 2025 16:47:22 +0100 Subject: [PATCH 01/10] SAK-48816 SAMIGO: No bar is present for incorrect answers and The bar present for correct answer is purple in color rather than green (#13216) --- .../src/webapp/jsf/evaluation/histogramScores.jsp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/samigo/samigo-app/src/webapp/jsf/evaluation/histogramScores.jsp b/samigo/samigo-app/src/webapp/jsf/evaluation/histogramScores.jsp index f2a1bb260f16..e718ee8f57e7 100755 --- a/samigo/samigo-app/src/webapp/jsf/evaluation/histogramScores.jsp +++ b/samigo/samigo-app/src/webapp/jsf/evaluation/histogramScores.jsp @@ -445,7 +445,7 @@ $Id$
- " escape="false" /> @@ -481,7 +481,7 @@ $Id$
- " escape="false"> @@ -521,7 +521,7 @@ $Id$
- " escape="false"> From 6f935ef222f13161599a9749577ad3ad78c0e8fc Mon Sep 17 00:00:00 2001 From: Kunal Jaykam <50500283+kunaljaykam@users.noreply.github.com> Date: Tue, 21 Jan 2025 21:25:51 +0530 Subject: [PATCH 02/10] SAK-50848 Gradebook keyboard accessibility issues (#13181) --- .../webapp/scripts/gradebook-gbgrade-table.js | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/gradebookng/tool/src/webapp/scripts/gradebook-gbgrade-table.js b/gradebookng/tool/src/webapp/scripts/gradebook-gbgrade-table.js index 28914a8d3ce5..d2bab1d6714b 100644 --- a/gradebookng/tool/src/webapp/scripts/gradebook-gbgrade-table.js +++ b/gradebookng/tool/src/webapp/scripts/gradebook-gbgrade-table.js @@ -687,6 +687,8 @@ GbGradeTable.studentCellFormatter = function(cell, formatterParams, onRendered) td.dataset.studentId = student.userId; td.dataset.cellInitialized = cellKey; + td.dataset.rowIndex = rowIndex; + td.dataset.colIndex = colIndex; const metadata = { id: cellKey, @@ -2364,6 +2366,12 @@ GbGradeTable.setupDragAndDrop = function () { }); }; +GbGradeTable.isBoundaryCell = function(rowIndex, colIndex) { + const totalColumns = GbGradeTable.instance.getColumns().length; + + return colIndex === 0 || colIndex === totalColumns - 1; +}; + GbGradeTable.setupKeyboardNavigation = function() { // add grade table to the tab flow $(GbGradeTable.domElement).attr("tabindex", 0); @@ -2376,6 +2384,9 @@ GbGradeTable.setupKeyboardNavigation = function() { } }); + + let inBoundaryCell = false; + document.querySelector("#gradeTableWrapper").addEventListener("keydown", function(event) { let handled = false; @@ -2396,6 +2407,35 @@ GbGradeTable.setupKeyboardNavigation = function() { return iGotThis(true); } + const rowIndex = +current.getAttribute("data-row-index"); + const colIndex = +current.getAttribute("data-col-index"); + const totalColumns = GbGradeTable.instance.getColumns().length; + const totalRows = GbGradeTable.instance.getRows().length; + + if (GbGradeTable.isBoundaryCell(rowIndex, colIndex)) { + if (!inBoundaryCell) { + inBoundaryCell = true; + return; + } + + if ((event.key === "Tab" || event.key === "ArrowRight") && colIndex === totalColumns - 1) { + if (rowIndex < totalRows - 1) { + GbGradeTable.instance.addRange(GbGradeTable.instance.getRows()[rowIndex + 1].getCells()[0]); + event.preventDefault(); + } + } + + if (((event.shiftKey && event.key === "Tab") || event.key === "ArrowLeft") && colIndex === 0) { + if (rowIndex > 0) { + GbGradeTable.instance.scrollToColumn(totalColumns - 1, "end", true); + GbGradeTable.instance.addRange(GbGradeTable.instance.getRows()[rowIndex - 1].getCells()[totalColumns - 1]); + event.preventDefault(); + } + } + } else { + inBoundaryCell = false; + } + const editing = !!document.querySelector("#gradeTableWrapper .tabulator-cell.tabulator-editing"); // Space - open menu From 90c174611ab53d7fbf28969ffaa6a26c3e6223e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Mar=C3=ADa=20M=C3=A9ndez=20P=C3=A9rez?= Date: Tue, 21 Jan 2025 16:58:15 +0100 Subject: [PATCH 03/10] SAK-49348 Samigo event log filtering by assessment drop-down is not wide enough (#13217) --- samigo/samigo-app/src/webapp/jsf/event/eventLog.jsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samigo/samigo-app/src/webapp/jsf/event/eventLog.jsp b/samigo/samigo-app/src/webapp/jsf/event/eventLog.jsp index 09c031204143..1229a4d40f1e 100644 --- a/samigo/samigo-app/src/webapp/jsf/event/eventLog.jsp +++ b/samigo/samigo-app/src/webapp/jsf/event/eventLog.jsp @@ -42,7 +42,7 @@ - From f11b186381357abd0bb3bf2adfb8f55521b56fff Mon Sep 17 00:00:00 2001 From: hornersa Date: Tue, 21 Jan 2025 08:03:17 -0800 Subject: [PATCH 04/10] SAK-50864 Assignments site import remove clear for add due date to calendar (#13187) --- .../org/sakaiproject/assignment/impl/AssignmentServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentServiceImpl.java b/assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentServiceImpl.java index c87d550c85a4..358c29f68746 100644 --- a/assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentServiceImpl.java +++ b/assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentServiceImpl.java @@ -4361,7 +4361,6 @@ public Map transferCopyEntities(String fromContext, String toCon nProperties.remove(ResourceProperties.PROP_ASSIGNMENT_OPENDATE_ANNOUNCEMENT_MESSAGE_ID); // remove the link btw assignment and calendar item. One can add the due date to calendar afterwards - nProperties.remove(ResourceProperties.NEW_ASSIGNMENT_CHECK_ADD_DUE_DATE); nProperties.remove(AssignmentConstants.NEW_ASSIGNMENT_DUE_DATE_SCHEDULED); nProperties.remove(ResourceProperties.PROP_ASSIGNMENT_DUEDATE_CALENDAR_EVENT_ID); From 2916383a78a505d9351323a328722580bf6b5e49 Mon Sep 17 00:00:00 2001 From: Chris Maurer Date: Tue, 21 Jan 2025 11:24:51 -0500 Subject: [PATCH 05/10] SAK-50212 Kernel escape path and request parameter values before output to error page (#13214) --- .../api/src/main/java/org/sakaiproject/util/Web.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/kernel/api/src/main/java/org/sakaiproject/util/Web.java b/kernel/api/src/main/java/org/sakaiproject/util/Web.java index 8d72f749aba9..8c9991d50ffa 100644 --- a/kernel/api/src/main/java/org/sakaiproject/util/Web.java +++ b/kernel/api/src/main/java/org/sakaiproject/util/Web.java @@ -424,9 +424,9 @@ public static String snoop(PrintWriter out, boolean html, ServletConfig config, print(out, "Context path", contextPath); displayStringChars(out, contextPath); String pathInfo = req.getPathInfo(); - print(out, "Path info", pathInfo); + print(out, "Path info", FormattedText.escapeHtml(pathInfo, true)); displayStringChars(out, pathInfo); - print(out, "Path translated", req.getPathTranslated()); + print(out, "Path translated", FormattedText.escapeHtml(req.getPathTranslated(), true)); print(out, "Query string", req.getQueryString()); print(out, "Content length", req.getContentLength()); print(out, "Content type", req.getContentType()); @@ -460,7 +460,7 @@ public static String snoop(PrintWriter out, boolean html, ServletConfig config, while (e.hasMoreElements()) { String name = (String) e.nextElement(); - out.println(" " + name + " = " + req.getParameter(name)); + out.println(" " + name + " = " + FormattedText.escapeHtml(req.getParameter(name), true)); } out.println(prex); } @@ -477,9 +477,9 @@ public static String snoop(PrintWriter out, boolean html, ServletConfig config, if (vals != null) { out.print(b + " " + name + " = " + bx); - out.println(vals[0]); + out.println(FormattedText.escapeHtml(vals[0], true)); for (int i = 1; i < vals.length; i++) - out.println(" " + vals[i]); + out.println(" " + FormattedText.escapeHtml(vals[i], true)); } out.println(p); } From d1328d2a6ecd7b69cd5af8beca16050b3ec5a941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Mar=C3=ADa=20M=C3=A9ndez=20P=C3=A9rez?= Date: Tue, 21 Jan 2025 18:08:55 +0100 Subject: [PATCH 06/10] SAK-50065 Samigo event log download needs to have user-friendly text for the errors column instead of the variable value (#13218) --- .../tool/assessment/ui/servlet/event/ExportEventLogServlet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samigo/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/servlet/event/ExportEventLogServlet.java b/samigo/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/servlet/event/ExportEventLogServlet.java index 859829ad61b7..50d53ea4d46f 100644 --- a/samigo/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/servlet/event/ExportEventLogServlet.java +++ b/samigo/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/servlet/event/ExportEventLogServlet.java @@ -141,7 +141,7 @@ public void doGet(HttpServletRequest req, HttpServletResponse res) throws Servle add(csvDateFormat(eventLogData.getStartDate())); add(csvDateFormat(eventLogData.getEndDate())); add(minutes != null ? minutes.toString() : null); - add(StringUtils.trimToEmpty(eventLogData.getErrorMsg())); + add(StringUtils.trimToEmpty(RESOURCE_BUNDLE.getString(eventLogData.getErrorMsg()))); if (displayIpAddressColumn) { add(StringUtils.trimToEmpty(eventLogData.getIpAddress())); } From 1faecf799d253e69317d9262639f3ce80c6702dc Mon Sep 17 00:00:00 2001 From: Charles Severance Date: Tue, 21 Jan 2025 16:41:13 -0500 Subject: [PATCH 07/10] SAK-50894 LTI restore correct value for LAUNCH_PREFIX_LEGACY (#13219) --- lti/lti-api/src/java/org/sakaiproject/lti/api/LTIService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lti/lti-api/src/java/org/sakaiproject/lti/api/LTIService.java b/lti/lti-api/src/java/org/sakaiproject/lti/api/LTIService.java index 2b80fcf7aeed..fff113d23bec 100644 --- a/lti/lti-api/src/java/org/sakaiproject/lti/api/LTIService.java +++ b/lti/lti-api/src/java/org/sakaiproject/lti/api/LTIService.java @@ -43,7 +43,7 @@ public interface LTIService extends LTISubstitutionsFilter { /** Constants */ String ADMIN_SITE = "!admin"; String LAUNCH_PREFIX = "/access/lti/site/"; - String LAUNCH_PREFIX_LEGACY = "/access/lti/site/"; + String LAUNCH_PREFIX_LEGACY = "/access/basiclti/site/"; /** * This string starts the references to resources in this service. From d7c39b0e23461ab4a5ce8dc8322864d9318ee054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Mar=C3=ADa=20M=C3=A9ndez=20P=C3=A9rez?= Date: Wed, 22 Jan 2025 00:06:06 +0100 Subject: [PATCH 08/10] SAK-50893 Portal during site creation console error finding account panel (#13220) --- library/src/webapp/js/portal/portal.init.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/webapp/js/portal/portal.init.js b/library/src/webapp/js/portal/portal.init.js index e7523abe75d9..626f9b3a739b 100644 --- a/library/src/webapp/js/portal/portal.init.js +++ b/library/src/webapp/js/portal/portal.init.js @@ -23,7 +23,7 @@ document.addEventListener("DOMContentLoaded", () => { b.addEventListener("click", () => portal.search.setup({})); }); - document.getElementById("sakai-account-panel").addEventListener("show.bs.offcanvas", (e) => { + document.getElementById("sakai-account-panel")?.addEventListener("show.bs.offcanvas", (e) => { e.target.querySelector("sakai-grades")?.loadData(); e.target.querySelector("sakai-calendar")?.loadData(); From 8eec7d10996fdedec8dfb41eb6e9d4345867577e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Mar=C3=ADa=20M=C3=A9ndez=20P=C3=A9rez?= Date: Wed, 22 Jan 2025 00:08:07 +0100 Subject: [PATCH 09/10] SAK-50895 Portal footer links config changed (#13221) --- .../config/bundle/default.sakai.properties | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties b/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties index fce37b57beed..30b4ac772289 100644 --- a/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties +++ b/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties @@ -146,14 +146,13 @@ # FOOTER # ######################################################################## -# Links placed on the bottom nav - set the .count to the number of items, then add each item -# DEFAULTS as shown below (from component-manager/kernel.properties) -# bottomnav.count = 3 -# bottomnav.1 = Gateway -# bottomnav.2 = Accessibility Information -# bottomnav.3 = The Sakai Project -# ALTERNATELY, define bottomnav as a comma separated list of values to use -# bottomnav=Gateway,Accessibility Information,The Sakai Project +# Links placed within the footer - set the .count to the number of link, then add each link +# The values of each footerlink are seperated by a semicolon, the target option is optional +# Format: Linktext;Link location(;Link target) +# footerlinks.count = 3 +# footerlinks.1 = Gateway;/portal/site/!gateway +# footerlinks.2 = Accessibility Information;/portal/help/TOCDisplay/content.hlp?docId=accessibilityinformation;_blank +# footerlinks.3 = The Sakai Project;https://www.sakailms.org/;_blank # Powered by assertions placed at the bottom of the portal. # DEFAULTS as shown below (from component-manager/kernel.properties) From 2251b740ef3b6eaca8d1ccf152f0ab332c0e7423 Mon Sep 17 00:00:00 2001 From: Earle Nietzel Date: Tue, 21 Jan 2025 18:09:02 -0500 Subject: [PATCH 10/10] SAK-50805 SiteManage sub page navigation option (#13209) --- .../vm/sitesetup/toolGroupMultipleDisplay.vm | 35 +------------------ 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/site-manage/site-manage-tool/tool/src/webapp/vm/sitesetup/toolGroupMultipleDisplay.vm b/site-manage/site-manage-tool/tool/src/webapp/vm/sitesetup/toolGroupMultipleDisplay.vm index 741a57534c95..f67f4d60c6c8 100644 --- a/site-manage/site-manage-tool/tool/src/webapp/vm/sitesetup/toolGroupMultipleDisplay.vm +++ b/site-manage/site-manage-tool/tool/src/webapp/vm/sitesetup/toolGroupMultipleDisplay.vm @@ -191,7 +191,7 @@
- -