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 30b0b5cda9827201ce66bb40a1edfe09d4839d92..d49216d9bbc5964a8ef067fd1471839882fced14 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 ed6ea32759417cd687bed001483c4ee826eb56b3..e281f2138f19cb95bafbecfd17c7040c82377a25 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 dda4228e8767e610a7fb0624eb02da6c25defa50..7f5aeba0965847b1f2d7f0132452bb3bbfd9044c 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 73bb0fbcba3416466ba8bedb49a9e5e9583afcc4..31588698e6f103879d50d93906630d4e36564abf 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 81ab22f3c82d846726422e6ea6a7450a6bde6077..6fef888c8479ab831006ad66d271dc4a8c08ccba 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 874dd3b900e4118a48eb42d342c21314261a2ce0..76497be16a89c1a75c802e5796ab9cde54319074 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 025fc61053b01bf9d2aa47fd1281f389ac0e5900..ad65c338a05eb51a74a7e0aeb21b5d13859243fa 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 a81318eec2b610851cce154d6086ce4a30f1cd13..ea07c5a9177169d77b3990e92dd02e1ba9292cc2 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 68032e4111b4200bd7215feef19b7a9a34f363d9..b17b426622ad45e3d5b03e4fa661c0586d42444b 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 9e0faf8faa9975feee5aa9039beaf94fa64a491d..e6d40a9e05c12fde2fb51104ced3c94e525c8555 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 53e6d7a2220da1a6bfadcdb637d12897e3f1093f..e2ee8e10908de26f945e6b2a358eb047e1cf2e7d 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 1b7829a4815dd7a0171170accf004682859161b8..59a638e6ea0d1d4807b9b0f8a9ecb4a1f5d535f0 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