From 308c67ec27e9016200f5e2d7ca5ceece19fd7f6c Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Thu, 8 Aug 2019 14:24:27 +0200 Subject: [PATCH] OO-4181: Edubase: Static URLs for cover files --- .../EdubaseBookSectionListController.java | 16 ++++------------ .../edubase/EdubasePeekViewController.java | 6 ++++++ .../nodes/edubase/EdubaseRunController.java | 6 ++++++ .../olat/modules/edubase/EdubaseManager.java | 10 +++++++++- .../org/olat/modules/edubase/EdubaseModule.java | 17 +++++++++++++++++ .../edubase/manager/EdubaseManagerImpl.java | 9 +++++++++ .../edubase/ui/EdubaseAdminController.java | 7 +++++++ .../edubase/ui/_i18n/LocalStrings_de.properties | 4 ++-- .../edubase/ui/_i18n/LocalStrings_en.properties | 2 +- .../edubase/ui/_i18n/LocalStrings_fr.properties | 14 +++++++------- .../ui/_i18n/LocalStrings_pt_BR.properties | 12 ++++++------ .../resources/serviceconfig/olat.properties | 1 + 12 files changed, 75 insertions(+), 29 deletions(-) diff --git a/src/main/java/org/olat/course/nodes/edubase/EdubaseBookSectionListController.java b/src/main/java/org/olat/course/nodes/edubase/EdubaseBookSectionListController.java index 30b0b5cda98..d49216d9bbc 100644 --- a/src/main/java/org/olat/course/nodes/edubase/EdubaseBookSectionListController.java +++ b/src/main/java/org/olat/course/nodes/edubase/EdubaseBookSectionListController.java @@ -98,6 +98,7 @@ public class EdubaseBookSectionListController extends FormBasicController { // BookSections List<BookSection> bookSections = new ArrayList<>(config.getList(EdubaseCourseNode.CONFIG_BOOK_SECTIONS, BookSectionImpl.class)); bookSections.stream() + .map(bs -> edubaseManager.appendCoverUrl(bs)) .sorted(new PositionComparator()) .forEach(this::wrapBookSection); ensureBookSectionWrappersHaveAnEntry(); @@ -313,7 +314,7 @@ public class EdubaseBookSectionListController extends FormBasicController { private void showDetails(UserRequest ureq, BookSectionWrapper wrapper) { String bookId = setParsedBookId(wrapper); BookDetails bookDetails = edubaseManager.fetchBookDetails(bookId); - setCoverUrl(wrapper, bookDetails); + edubaseManager.appendCoverUrl(wrapper.getBookSection()); detailsController = new EdubaseBookSectionDetailsController( ureq, getWindowControl(), @@ -332,9 +333,8 @@ public class EdubaseBookSectionListController extends FormBasicController { private void setBookIdsAndCovers() { for (BookSectionWrapper wrapper: bookSectionWrappers) { - String bookId = setParsedBookId(wrapper); - BookDetails bookDetails = edubaseManager.fetchBookDetails(bookId); - setCoverUrl(wrapper, bookDetails); + setParsedBookId(wrapper); + edubaseManager.appendCoverUrl(wrapper.getBookSection()); } } @@ -344,14 +344,6 @@ public class EdubaseBookSectionListController extends FormBasicController { return bookId; } - private void setCoverUrl(BookSectionWrapper wrapper, BookDetails bookDetails) { - String coverUrl = bookDetails.getCoverUrl(); - if (coverUrl != null && coverUrl.substring(0, 5).equals("http:")) { - coverUrl = coverUrl.replace("http:", "https:"); - } - wrapper.getBookSection().setCoverUrl(coverUrl); - } - private void wrapBookSection(BookSection bookSection) { String bookSectionId = "" + countBookSections++; diff --git a/src/main/java/org/olat/course/nodes/edubase/EdubasePeekViewController.java b/src/main/java/org/olat/course/nodes/edubase/EdubasePeekViewController.java index ed6ea327594..e281f2138f1 100644 --- a/src/main/java/org/olat/course/nodes/edubase/EdubasePeekViewController.java +++ b/src/main/java/org/olat/course/nodes/edubase/EdubasePeekViewController.java @@ -34,7 +34,9 @@ import org.olat.core.gui.control.controller.BasicController; import org.olat.course.nodes.EdubaseCourseNode; import org.olat.modules.ModuleConfiguration; import org.olat.modules.edubase.BookSection; +import org.olat.modules.edubase.EdubaseManager; import org.olat.modules.edubase.model.PositionComparator; +import org.springframework.beans.factory.annotation.Autowired; /** * @@ -48,6 +50,9 @@ public class EdubasePeekViewController extends BasicController { private final static int NUMBER_BOOK_SECTION_DESC_DISABLED = 4; private final String nodeId; + + @Autowired + private EdubaseManager edubaseManager; public EdubasePeekViewController(UserRequest ureq, WindowControl wControl, ModuleConfiguration modulConfiguration, String nodeId) { @@ -64,6 +69,7 @@ public class EdubasePeekViewController extends BasicController { // BookSections List<BookSection> bookSections = modulConfiguration.getList(EdubaseCourseNode.CONFIG_BOOK_SECTIONS, BookSection.class).stream() + .map(bs -> edubaseManager.appendCoverUrl(bs)) .sorted(new PositionComparator()) .limit(NUMBER_BOOK_SECTION_DESC_DISABLED) .collect(Collectors.toList()); diff --git a/src/main/java/org/olat/course/nodes/edubase/EdubaseRunController.java b/src/main/java/org/olat/course/nodes/edubase/EdubaseRunController.java index dda4228e876..7f5aeba0965 100644 --- a/src/main/java/org/olat/course/nodes/edubase/EdubaseRunController.java +++ b/src/main/java/org/olat/course/nodes/edubase/EdubaseRunController.java @@ -38,8 +38,10 @@ import org.olat.course.nodes.EdubaseCourseNode; import org.olat.modules.ModuleConfiguration; import org.olat.modules.edubase.BookSection; import org.olat.modules.edubase.EdubaseLoggingAction; +import org.olat.modules.edubase.EdubaseManager; import org.olat.modules.edubase.model.PositionComparator; import org.olat.util.logging.activity.LoggingResourceable; +import org.springframework.beans.factory.annotation.Autowired; /** * @@ -58,6 +60,9 @@ public class EdubaseRunController extends BasicController { private Component overviewContainer; private Controller viewerController; private List<BookSection> bookSections; + + @Autowired + private EdubaseManager edubaseManager; public EdubaseRunController(UserRequest ureq, WindowControl wControl, ModuleConfiguration modulConfiguration) { super(ureq, wControl); @@ -79,6 +84,7 @@ public class EdubaseRunController extends BasicController { bookSections = modulConfiguration.getList(EdubaseCourseNode.CONFIG_BOOK_SECTIONS, BookSection.class).stream() + .map(bs -> edubaseManager.appendCoverUrl(bs)) .sorted(new PositionComparator()) .collect(Collectors.toList()); container.contextPut("bookSections", bookSections); diff --git a/src/main/java/org/olat/modules/edubase/EdubaseManager.java b/src/main/java/org/olat/modules/edubase/EdubaseManager.java index 73bb0fbcba3..31588698e6f 100644 --- a/src/main/java/org/olat/modules/edubase/EdubaseManager.java +++ b/src/main/java/org/olat/modules/edubase/EdubaseManager.java @@ -64,6 +64,14 @@ public interface EdubaseManager { */ public String getLtiLaunchUrl(BookSection bookSection); + /** + * Appends the static cover url. + * + * @param bookSection + * @return the modified bookSection + */ + public BookSection appendCoverUrl(BookSection bookSection); + /** * The application url is the target url of the edubase reader. The url is * depending on the module configuration unique per identity. @@ -72,7 +80,7 @@ public interface EdubaseManager { * @return */ public String getApplicationUrl(Identity identity); - + /** * Request details of a book version from the Edubase InfoDocVers Service. * diff --git a/src/main/java/org/olat/modules/edubase/EdubaseModule.java b/src/main/java/org/olat/modules/edubase/EdubaseModule.java index 81ab22f3c82..6fef888c847 100644 --- a/src/main/java/org/olat/modules/edubase/EdubaseModule.java +++ b/src/main/java/org/olat/modules/edubase/EdubaseModule.java @@ -43,6 +43,7 @@ public class EdubaseModule extends AbstractSpringModule implements ConfigOnOff { public static final String EDUBASE_READER_URL_UNIQUE = "edubase.readerUrl.unique"; public static final String EDUBASE_LTI_LAUNCH_URL = "edubase.ltiLaunchUrl"; public static final String EDUBASE_INFOVER_URL = "edubase.infoverUrl"; + public static final String EDUBASE_COVER_URL = "edubase.coverUrl"; @Value("${edubase.enabled:false}") private boolean enabled; @@ -56,6 +57,8 @@ public class EdubaseModule extends AbstractSpringModule implements ConfigOnOff { private String ltiLaunchUrl; @Value("${edubase.infoverUrl}") private String infoverUrl; + @Value("${edubase.coverUrl}") + private String coverUrl; @Autowired public EdubaseModule(CoordinatorManager coordinatorManager) { @@ -103,6 +106,11 @@ public class EdubaseModule extends AbstractSpringModule implements ConfigOnOff { if (StringHelper.containsNonWhitespace(infoverUrlObj)) { infoverUrl = infoverUrlObj; } + + String coverUrlObj = getStringPropertyValue(EDUBASE_COVER_URL, true); + if (StringHelper.containsNonWhitespace(coverUrlObj)) { + coverUrl = coverUrlObj; + } } @Override @@ -163,6 +171,15 @@ public class EdubaseModule extends AbstractSpringModule implements ConfigOnOff { setStringProperty(EDUBASE_INFOVER_URL, infoverUrl, true); } + public String getCoverUrl() { + return coverUrl; + } + + public void setCoverUrl(String coverUrl) { + this.coverUrl = coverUrl; + setStringProperty(EDUBASE_COVER_URL, coverUrl, true); + } + public void setEnabled(boolean enabled) { this.enabled = enabled; setStringProperty(EDUBASE_ENABLED, Boolean.toString(enabled), true); diff --git a/src/main/java/org/olat/modules/edubase/manager/EdubaseManagerImpl.java b/src/main/java/org/olat/modules/edubase/manager/EdubaseManagerImpl.java index 874dd3b900e..76497be16a8 100644 --- a/src/main/java/org/olat/modules/edubase/manager/EdubaseManagerImpl.java +++ b/src/main/java/org/olat/modules/edubase/manager/EdubaseManagerImpl.java @@ -141,6 +141,15 @@ public class EdubaseManagerImpl implements EdubaseManager { return url.toString(); } + @Override + public BookSection appendCoverUrl(BookSection bookSection) { + if (StringHelper.containsNonWhitespace(bookSection.getBookId())) { + String coverUrl = String.format(edubaseModule.getCoverUrl(), bookSection.getBookId()); + bookSection.setCoverUrl(coverUrl); + } + return bookSection; + } + @Override public String getApplicationUrl(Identity identity) { String readerUrl = edubaseModule.getReaderUrl(); diff --git a/src/main/java/org/olat/modules/edubase/ui/EdubaseAdminController.java b/src/main/java/org/olat/modules/edubase/ui/EdubaseAdminController.java index 025fc61053b..ad65c338a05 100644 --- a/src/main/java/org/olat/modules/edubase/ui/EdubaseAdminController.java +++ b/src/main/java/org/olat/modules/edubase/ui/EdubaseAdminController.java @@ -48,6 +48,7 @@ public class EdubaseAdminController extends FormBasicController { private TextElement edubaseReaderUrlEl; private MultipleSelectionElement edubaseReaderUrlUniqueEl; private TextElement edubaseInfoverUrlEl; + private TextElement edubaseCoverUrlEl; @Autowired private EdubaseModule edubaseModule; @@ -97,6 +98,10 @@ public class EdubaseAdminController extends FormBasicController { String edubaseInfoverUrl = edubaseModule.getInfoverUrl(); edubaseInfoverUrlEl = uifactory.addTextElement("admin.edubase.infover.url", "admin.edubase.infover.url", 128, edubaseInfoverUrl, edubaseCont); edubaseInfoverUrlEl.setMandatory(true); + + String edubaseCoverUrl = edubaseModule.getCoverUrl(); + edubaseCoverUrlEl = uifactory.addTextElement("admin.edubase.cover.url", "admin.edubase.cover.url", 128, edubaseCoverUrl, edubaseCont); + edubaseCoverUrlEl.setMandatory(true); // Edubook FormLayoutContainer edubookCont = FormLayoutContainer.createDefaultFormLayout("edubook_admin", getTranslator()); @@ -121,6 +126,7 @@ public class EdubaseAdminController extends FormBasicController { edubaseModule.setReaderUrl(edubaseReaderUrlEl.getValue()); edubaseModule.setReaderUrlUnique(edubaseReaderUrlUniqueEl.isAtLeastSelected(1)); edubaseModule.setInfoverUrl(edubaseInfoverUrlEl.getValue()); + edubaseModule.setCoverUrl(edubaseCoverUrlEl.getValue()); } @Override @@ -134,6 +140,7 @@ public class EdubaseAdminController extends FormBasicController { allOk &= validateIsMandatory(edubaseLtiLaunchUrlEl); allOk &= validateIsMandatory(edubaseReaderUrlEl); allOk &= validateIsMandatory(edubaseInfoverUrlEl); + allOk &= validateIsMandatory(edubaseCoverUrlEl); } return allOk & super.validateFormLogic(ureq); diff --git a/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_de.properties index a81318eec2b..ea07c5a9177 100644 --- a/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_de.properties @@ -1,5 +1,5 @@ -admin.edubase.coverver.url=URL "coverver" service -admin.edubase.description=Edubase ist die integrale Komplettlösung für digitale und gedruckte Publikationen. Mit dem OpenOlat Edubase Modul kann der Edubase Reader in Kurse eingebunden werden. Weitere Informationen sind auf der <a href\="http\://www.edubase.ch" target\=_blank>Webseite</a> von Edubase zu finden +admin.edubase.cover.url=URL "cover" service +admin.edubase.description=Edubase ist die integrale Komplettl\u00f6sung f\u00fcr digitale und gedruckte Publikationen. Mit dem OpenOlat Edubase Modul kann der Edubase Reader in Kurse eingebunden werden. Weitere Informationen sind auf der <a href\="http\://www.edubase.ch" target\=_blank>Webseite</a> von Edubase zu finden admin.edubase.enabled="Edubase" Kursbaustein admin.edubase.infover.url=URL "infover" service admin.edubase.lti.launch.url=URL LTI Start diff --git a/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_en.properties index 68032e4111b..b17b426622a 100644 --- a/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_en.properties @@ -1,4 +1,4 @@ -admin.edubase.coverver.url=URL "coverver" service +admin.edubase.cover.url=URL "cover" service admin.edubase.description=Edubase is the integral solution for digital and printed publications. The OpenOlat Edubase module enables you to integrate the Edubase Reader in courses. Further information is available on the <a href\="http\://www.edubase.ch" target\=_blank>website</a> of Edubase. admin.edubase.enabled="Edubase" course element admin.edubase.infover.url=URL "infover" service diff --git a/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_fr.properties index 9e0faf8faa9..e6d40a9e05c 100644 --- a/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_fr.properties @@ -1,15 +1,15 @@ #Thu May 31 16:12:53 CEST 2018 -admin.edubase.coverver.url=URL du service "coverver" -admin.edubase.description=Edubase est une solution compl\u00E8te pour les publications digitales et imprim\u00E9es. Avec le module OpenOlat Edubase, l0Edubase Reader peut \u00EAtre int\u00E9gr\u00E9 \u00E0 un cours. Vous trouverez de plus amples informations sur le site Edubase <a href\="http\://www.edubase.ch" target\=_blank>http\://www.edubase.ch</a>. -admin.edubase.enabled=El\u00E9ment de cours "Edubase" +admin.edubase.cover.url=URL du service "cover" +admin.edubase.description=Edubase est une solution compl\u00e8te pour les publications digitales et imprim\u00e9es. Avec le module OpenOlat Edubase, l0Edubase Reader peut \u00eatre int\u00e9gr\u00e9 \u00e0 un cours. Vous trouverez de plus amples informations sur le site Edubase <a href\="http\://www.edubase.ch" target\=_blank>http\://www.edubase.ch</a>. +admin.edubase.enabled=El\u00e9ment de cours "Edubase" admin.edubase.infover.url=URL du service "infover" -admin.edubase.lti.launch.url=URL de d\u00E9marrage LTI -admin.edubase.oauth.key=Cl\u00E9 +admin.edubase.lti.launch.url=URL de d\u00e9marrage LTI +admin.edubase.oauth.key=Cl\u00e9 admin.edubase.oauth.secret=Secret admin.edubase.reader.url=URL Edubase Reader admin.edubase.reader.url.unique=URL unique Edubase Reader -admin.edubase.reader.url.unique.help=L'URL Edubase Reader est form\u00E9e d'un param\u00E8tre sp\u00E9cifique \u00E0 l'utilisateur pour \u00E9viter les probl\u00E8mes li\u00E9s au nombres d'appareils. +admin.edubase.reader.url.unique.help=L'URL Edubase Reader est form\u00e9e d'un param\u00e8tre sp\u00e9cifique \u00e0 l'utilisateur pour \u00e9viter les probl\u00e8mes li\u00e9s au nombres d'appareils. admin.edubase.title=Edubase -admin.expert.settings=Configuration avanc\u00E9e +admin.expert.settings=Configuration avanc\u00e9e admin.menu.title=Edubase/Edubook admin.menu.title.alt=Element de cours Edubase et Edubook diff --git a/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_pt_BR.properties index 53e6d7a2220..e2ee8e10908 100644 --- a/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_pt_BR.properties +++ b/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_pt_BR.properties @@ -1,15 +1,15 @@ #Tue Jun 19 21:45:29 CEST 2018 -admin.edubase.coverver.url=Servi\u00E7o de "coverver" de URL -admin.edubase.description=Edubase \u00E9 a solu\u00E7\u00E3o integral para publica\u00E7\u00F5es digitais e impressas. O m\u00F3dulo OpenOlat Edubase permite integrar o leitor Edubase em cursos. Mais informa\u00E7\u00F5es est\u00E3o dispon\u00EDveis no <a href\="http\://www.edubase.ch" target\=_blank>Website</a> da Edubase. +admin.edubase.cover.url=Servi\u00e7o de "cover" de URL +admin.edubase.description=Edubase \u00e9 a solu\u00e7\u00e3o integral para publica\u00e7\u00f5es digitais e impressas. O m\u00f3dulo OpenOlat Edubase permite integrar o leitor Edubase em cursos. Mais informa\u00e7\u00f5es est\u00e3o dispon\u00edveis no <a href\="http\://www.edubase.ch" target\=_blank>Website</a> da Edubase. admin.edubase.enabled=Elemento de curso "Edubase" -admin.edubase.infover.url=Servi\u00E7o URL "infover" -admin.edubase.lti.launch.url=Lan\u00E7ar URL LTI +admin.edubase.infover.url=Servi\u00e7o URL "infover" +admin.edubase.lti.launch.url=Lan\u00e7ar URL LTI admin.edubase.oauth.key=Chave admin.edubase.oauth.secret=Segredo admin.edubase.reader.url=Leitor URL Edubase admin.edubase.reader.url.unique=URL Edubase Reader exclusivo -admin.edubase.reader.url.unique.help=O URL do Leitor do Edubase \u00E9 alterado por um token espec\u00EDfico do usu\u00E1rio para evitar problemas com o n\u00FAmero de dispositivos. +admin.edubase.reader.url.unique.help=O URL do Leitor do Edubase \u00e9 alterado por um token espec\u00edfico do usu\u00e1rio para evitar problemas com o n\u00famero de dispositivos. admin.edubase.title=Edubase -admin.expert.settings=Configura\u00E7\u00F5es avan\u00E7adas +admin.expert.settings=Configura\u00e7\u00f5es avan\u00e7adas admin.menu.title=Edubase/Edubook admin.menu.title.alt=Elementos de curso Edubase e Edubook diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties index 1b7829a4815..59a638e6ea0 100644 --- a/src/main/resources/serviceconfig/olat.properties +++ b/src/main/resources/serviceconfig/olat.properties @@ -1492,6 +1492,7 @@ edubase.readerUrl=https://app.edubase.ch/ edubase.readerUrl.unique=true edubase.ltiLaunchUrl=https://reader.silkcodeapps.de/lookup/srv/v2/lti/basicLaunch/ edubase.infoverUrl=https://reader.silkcodeapps.de/lookup/srv/v2/information/infodocvers/%s +edubase.coverUrl=https://reader.silkcodeapps.de/lookup/srv/v2/information/coververdesktop/%s ######################################## # Options for edu-sharing -- GitLab