From 4d544090f127841ad536d5fa35f7098ba3d0849b Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Mon, 1 Dec 2014 10:57:26 +0100 Subject: [PATCH] OO-1336: check if the resource can be launched or show an error message --- .../olat/course/nodes/CourseNodeFactory.java | 10 ++++--- .../nodes/feed/FeedNodeEditController.java | 28 +++++++++---------- .../feed/_i18n/LocalStrings_de.properties | 2 ++ .../feed/_i18n/LocalStrings_en.properties | 2 ++ 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/olat/course/nodes/CourseNodeFactory.java b/src/main/java/org/olat/course/nodes/CourseNodeFactory.java index 5545404860b..4cd2375a1c0 100644 --- a/src/main/java/org/olat/course/nodes/CourseNodeFactory.java +++ b/src/main/java/org/olat/course/nodes/CourseNodeFactory.java @@ -37,7 +37,6 @@ import org.olat.NewControllerFactory; import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.WindowControl; -import org.olat.core.logging.AssertException; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.course.CorruptedCourseException; @@ -128,23 +127,26 @@ public class CourseNodeFactory { * @param ureq * @param node */ - public void launchReferencedRepoEntryEditor(UserRequest ureq, WindowControl wControl, CourseNode node) { + public boolean launchReferencedRepoEntryEditor(UserRequest ureq, WindowControl wControl, CourseNode node) { RepositoryEntry repositoryEntry = node.getReferencedRepositoryEntry(); if (repositoryEntry == null) { // do nothing - return; + return false; } RepositoryHandler typeToEdit = RepositoryHandlerFactory.getInstance().getRepositoryHandler(repositoryEntry); if (typeToEdit.supportsEdit(repositoryEntry.getOlatResource()) == EditionSupport.no){ - throw new AssertException("Trying to edit repository entry which has no assoiciated editor: "+ typeToEdit); + log.error("Trying to edit repository entry which has no associated editor: "+ typeToEdit); + return false; } try { String businessPath = "[RepositoryEntry:" + repositoryEntry.getKey() + "][Editor:0]"; NewControllerFactory.getInstance().launch(businessPath, ureq, wControl); + return true; } catch (CorruptedCourseException e) { log.error("Course corrupted: " + repositoryEntry.getKey() + " (" + repositoryEntry.getOlatResource().getResourceableId() + ")", e); + return false; } } diff --git a/src/main/java/org/olat/course/nodes/feed/FeedNodeEditController.java b/src/main/java/org/olat/course/nodes/feed/FeedNodeEditController.java index e6e3b0d1a90..6394fcde365 100644 --- a/src/main/java/org/olat/course/nodes/feed/FeedNodeEditController.java +++ b/src/main/java/org/olat/course/nodes/feed/FeedNodeEditController.java @@ -214,16 +214,11 @@ public abstract class FeedNodeEditController extends ActivateableTabbableDefault } } - /** - * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, - * org.olat.core.gui.components.Component, - * org.olat.core.gui.control.Event) - */ @Override protected void event(UserRequest ureq, Component source, Event event) { if (source == chooseButton || source == changeButton) { searchController = new ReferencableEntriesSearchController(getWindowControl(), ureq, resourceTypeName, translate(BUTTON_CHOOSE_FEED)); - this.listenTo(searchController); + listenTo(searchController); cmc = new CloseableModalController(getWindowControl(), translate("close"), searchController.getInitialComponent(), true, translate(BUTTON_CREATE_FEED)); cmc.activate(); @@ -232,27 +227,30 @@ public abstract class FeedNodeEditController extends ActivateableTabbableDefault RepositoryEntry re = node.getReferencedRepositoryEntry(); if (re == null) { // The repository entry has been deleted meanwhile. - this.showError("error.repoentrymissing"); + showError("error.repoentrymissing"); } else { FeedSecurityCallback callback = new FeedPreviewSecurityCallback(); feedController = uiFactory.createMainController(re.getOlatResource(), ureq, getWindowControl(), callback, course .getResourceableId(), node.getIdent()); cmcFeedCtr = new CloseableModalController(getWindowControl(), translate("command.close"), feedController.getInitialComponent()); - this.listenTo(cmcFeedCtr); - // cmcFeedCtr.insertHeaderCss(); + listenTo(cmcFeedCtr); cmcFeedCtr.activate(); } } else if (source == editLink) { - CourseNodeFactory.getInstance().launchReferencedRepoEntryEditor(ureq, getWindowControl(), node); + boolean launched = CourseNodeFactory.getInstance().launchReferencedRepoEntryEditor(ureq, getWindowControl(), node); + if(!launched) { + RepositoryEntry re = node.getReferencedRepositoryEntry(); + if (re == null) { + showError("error.repoentrymissing"); + } else { + showError("error.wrongtype"); + } + } } - } - /** - * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, - * org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event) - */ + @Override public void event(UserRequest urequest, Controller source, Event event) { if (source == moderatroCtr) { if (event == Event.CHANGED_EVENT) { diff --git a/src/main/java/org/olat/course/nodes/feed/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/feed/_i18n/LocalStrings_de.properties index f02641ff9b4..44d23ab37ff 100644 --- a/src/main/java/org/olat/course/nodes/feed/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/nodes/feed/_i18n/LocalStrings_de.properties @@ -16,6 +16,8 @@ help.hover.feed.r=Hilfe, um den lesenden Zugang zu konfigurieren help.hover.feed.rw=Hilfe, um den schreibenden Zugang zu konfigurieren heip.hover.choose.feed=Hilfe zur Auswahl eines Feeds +error.repoentrymissing=Das Feed (Blog oder Podcast), das Sie anzeigen m\u00F6chten, wurde in der Zwischenzeit in der Ablage der Lernressourcen gel\u00F6scht. +error.wrongtype=Der Lernressourcen hat wahrscheinlich nicht den richtigen Typ. Pr\u00FCfen Sie dass Sie ein Podcast oder ein Blog an diesem Kursbaustein verbunden haben chelp.feed.p1=Wenn Sie noch keinen Feed (Blog oder Podcast) ausgew\u00E4hlt haben, wird dies angezeigt. chelp.feed.p2=Erstellen Sie erst den Feed (Blog oder Podcast) in den Lernressourcen. Klicken Sie dann auf die Schaltfläche "Blog/Podcast wählen, erstellen oder importieren", um in der Ablage der Lernressourcen den gew\u00FCnschten Inhalt auszuw\u00E4hlen. diff --git a/src/main/java/org/olat/course/nodes/feed/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/feed/_i18n/LocalStrings_en.properties index edbc1e7aed4..c00076c57c3 100644 --- a/src/main/java/org/olat/course/nodes/feed/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/nodes/feed/_i18n/LocalStrings_en.properties @@ -9,6 +9,8 @@ command.preview=Display preview condition.accessModerator.title=Moderate condition.accessPoster.title=Read and write condition.accessReader.title=Read only +error.repoentrymissing=This Feed (blog or podcast) has been deleted in the meantime within the storage folder of learning resources. +error.wrongtype=The learning resource has probably the wrong type. Please, make sure that you have linked a podcast or a blog to this course element. heip.hover.choose.feed=Help regarding your feed selection help.hover.feed.mo=Help regarding the access configuration as moderator help.hover.feed.r=Help regarding the access configuration as reader -- GitLab