From 93de337e1734ea2a3f5189fbccae3ffbcaaf4d5b Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Mon, 10 Aug 2020 18:19:16 +0200 Subject: [PATCH] OO-4838: add an url to the calendar's tool link in course --- .../gui/components/link/LinkRenderer.java | 4 ++- .../course/run/CourseRuntimeController.java | 29 ++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/olat/core/gui/components/link/LinkRenderer.java b/src/main/java/org/olat/core/gui/components/link/LinkRenderer.java index 3a75af5f3e1..c2955f99976 100644 --- a/src/main/java/org/olat/core/gui/components/link/LinkRenderer.java +++ b/src/main/java/org/olat/core/gui/components/link/LinkRenderer.java @@ -199,7 +199,9 @@ public class LinkRenderer extends DefaultComponentRenderer { try(StringOutput href = new StringOutput()) { LinkPopupSettings popup = link.getPopup(); ubu.buildURI(href, new String[] { VelocityContainer.COMMAND_ID }, new String[] { command }, null, AJAXFlags.MODE_NORMAL); - sb.append("href=\"javascript:;\" onclick=\"o_openPopUp('").append(href).append("','") + boolean hasUrl = StringHelper.containsNonWhitespace(link.getUrl()); + String hrefUrl = hasUrl ? link.getUrl() : "javascript:;"; + sb.append("href=\"").append(hrefUrl).append("\" onclick=\"o_openPopUp('").append(href).append("','") .append(popup.getTarget()).append("',").append(popup.getWidth()) .append(",").append(popup.getHeight()).append("); return false;\" "); } catch(IOException e) { diff --git a/src/main/java/org/olat/course/run/CourseRuntimeController.java b/src/main/java/org/olat/course/run/CourseRuntimeController.java index 3b8caab2da9..cac069c6ba8 100644 --- a/src/main/java/org/olat/course/run/CourseRuntimeController.java +++ b/src/main/java/org/olat/course/run/CourseRuntimeController.java @@ -882,6 +882,8 @@ public class CourseRuntimeController extends RepositoryEntryRuntimeController im if (calendarIsEnabled && userCourseEnv != null) { calendarLink = LinkFactory.createToolLink("calendar",translate("command.calendar"), this, "o_icon_calendar"); calendarLink.setPopup(new LinkPopupSettings(950, 750, "cal")); + calendarLink.setUrl(BusinessControlFactory.getInstance() + .getAuthenticatedURLFromBusinessPathStrings(businessPathEntry, "[Calendar:0]")); calendarLink.setVisible(cc.isCalendarEnabled()); toolbarPanel.addTool(calendarLink); } @@ -1306,6 +1308,10 @@ public class CourseRuntimeController extends RepositoryEntryRuntimeController im if (forumLink != null && forumLink.isVisible()) { doForum(ureq); } + } else if("Calendar".equalsIgnoreCase(type)) { + if (calendarLink != null && calendarLink.isVisible()) { + doCalendar(ureq); + } } else if("Documents".equalsIgnoreCase(type)) { if (documentsLink != null && documentsLink.isVisible()) { activateSubEntries(ureq, doDocuments(ureq), entries); @@ -1963,7 +1969,7 @@ public class CourseRuntimeController extends RepositoryEntryRuntimeController im currentToolCtr = emailCtrl; } else { delayedClose = Delayed.email; - }; + } } private BlogToolController doBlog(UserRequest ureq) { @@ -2033,6 +2039,27 @@ public class CourseRuntimeController extends RepositoryEntryRuntimeController im return null; } + /** + * Open the calendar as sub-controller. + * + * @param ureq The user request + * @return The calendar controller + */ + private CourseCalendarController doCalendar(UserRequest ureq) { + OLATResourceable ores = OresHelper.createOLATResourceableType("Calendar"); + WindowControl swControl = addToHistory(ureq, ores, null); + CourseCalendarController calendarController = new CourseCalendarController(ureq, swControl, getUserCourseEnvironment()); + pushController(ureq, translate("command.calendar"), calendarController); + setActiveTool(calendarLink); + currentToolCtr = calendarController; + return calendarController; + } + + /** + * Open the course calendar as popup. + * + * @param ureq The user request + */ private void launchCalendar(UserRequest ureq) { ControllerCreator ctrlCreator = (lureq, lwControl) -> { ICourse course = CourseFactory.loadCourse(getRepositoryEntry()); -- GitLab