From ff4e078c74ff5ea007190cf450271d9d91d02f03 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 3 Aug 2016 16:22:51 +0200 Subject: [PATCH] OO-2057: implement edit for media / artefact --- .../EfficiencyStatementMediaHandler.java | 6 + .../fo/portfolio/ForumMediaHandler.java | 7 +- .../org/olat/modules/portfolio/Media.java | 6 + .../olat/modules/portfolio/MediaHandler.java | 2 + .../portfolio/handler/CitationHandler.java | 5 + .../portfolio/handler/FileHandler.java | 10 ++ .../portfolio/handler/ImageHandler.java | 12 ++ .../portfolio/handler/TextHandler.java | 5 + .../portfolio/handler/VideoHandler.java | 10 ++ .../portfolio/ui/BinderController.java | 2 - .../portfolio/ui/MediaCenterController.java | 2 +- .../portfolio/ui/MediaDetailsController.java | 83 +++++++++++- .../media/CollectCitationMediaController.java | 44 ++++-- .../ui/media/CollectFileMediaController.java | 42 +++++- .../ui/media/CollectImageMediaController.java | 43 ++++-- .../ui/media/CollectTextMediaController.java | 32 ++++- .../ui/media/CollectVideoMediaController.java | 47 +++++-- .../ui/media/StandardEditMediaController.java | 128 ++++++++++++++++++ .../portfolio/ui/media/UploadMedia.java | 19 +++ .../portfolio/BlogEntryMediaHandler.java | 6 + .../wiki/portfolio/WikiMediaHandler.java | 6 + 21 files changed, 461 insertions(+), 56 deletions(-) create mode 100644 src/main/java/org/olat/modules/portfolio/ui/media/StandardEditMediaController.java diff --git a/src/main/java/org/olat/course/assessment/portfolio/EfficiencyStatementMediaHandler.java b/src/main/java/org/olat/course/assessment/portfolio/EfficiencyStatementMediaHandler.java index 1dbcd0ed1de..dd92a5b75f1 100644 --- a/src/main/java/org/olat/course/assessment/portfolio/EfficiencyStatementMediaHandler.java +++ b/src/main/java/org/olat/course/assessment/portfolio/EfficiencyStatementMediaHandler.java @@ -36,6 +36,7 @@ import org.olat.modules.portfolio.MediaInformations; import org.olat.modules.portfolio.MediaLight; import org.olat.modules.portfolio.handler.AbstractMediaHandler; import org.olat.modules.portfolio.manager.MediaDAO; +import org.olat.modules.portfolio.ui.media.StandardEditMediaController; import org.olat.portfolio.model.artefacts.AbstractArtefact; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -125,4 +126,9 @@ public class EfficiencyStatementMediaHandler extends AbstractMediaHandler { ctrl.disableMediaCollector(); return ctrl; } + + @Override + public Controller getEditMediaController(UserRequest ureq, WindowControl wControl, Media media) { + return new StandardEditMediaController(ureq, wControl, media); + } } diff --git a/src/main/java/org/olat/modules/fo/portfolio/ForumMediaHandler.java b/src/main/java/org/olat/modules/fo/portfolio/ForumMediaHandler.java index dfdc5314e33..0732a20c46f 100644 --- a/src/main/java/org/olat/modules/fo/portfolio/ForumMediaHandler.java +++ b/src/main/java/org/olat/modules/fo/portfolio/ForumMediaHandler.java @@ -44,6 +44,7 @@ import org.olat.modules.portfolio.MediaLight; import org.olat.modules.portfolio.handler.AbstractMediaHandler; import org.olat.modules.portfolio.manager.MediaDAO; import org.olat.modules.portfolio.manager.PortfolioFileStorage; +import org.olat.modules.portfolio.ui.media.StandardEditMediaController; import org.olat.portfolio.manager.EPFrontendManager; import org.olat.portfolio.model.artefacts.AbstractArtefact; import org.springframework.beans.factory.annotation.Autowired; @@ -154,5 +155,9 @@ public class ForumMediaHandler extends AbstractMediaHandler { public Controller getMediaController(UserRequest ureq, WindowControl wControl, Media media) { return new ForumMessageMediaController(ureq, wControl, media); } - + + @Override + public Controller getEditMediaController(UserRequest ureq, WindowControl wControl, Media media) { + return new StandardEditMediaController(ureq, wControl, media); + } } diff --git a/src/main/java/org/olat/modules/portfolio/Media.java b/src/main/java/org/olat/modules/portfolio/Media.java index 9391b80fc9e..2360ec6415c 100644 --- a/src/main/java/org/olat/modules/portfolio/Media.java +++ b/src/main/java/org/olat/modules/portfolio/Media.java @@ -51,12 +51,18 @@ public interface Media extends MediaLight, DublinCoreMetadata { @Override public String getTitle(); + + public void setTitle(String title); @Override public String getDescription(); + public void setDescription(String description); + public String getContent(); + public void setContent(String content); + @Override public String getBusinessPath(); diff --git a/src/main/java/org/olat/modules/portfolio/MediaHandler.java b/src/main/java/org/olat/modules/portfolio/MediaHandler.java index 901e4e17099..545fe96ab8b 100644 --- a/src/main/java/org/olat/modules/portfolio/MediaHandler.java +++ b/src/main/java/org/olat/modules/portfolio/MediaHandler.java @@ -54,5 +54,7 @@ public interface MediaHandler { public Media createMedia(AbstractArtefact artefact); public Controller getMediaController(UserRequest ureq, WindowControl wControl, Media media); + + public Controller getEditMediaController(UserRequest ureq, WindowControl wControl, Media media); } diff --git a/src/main/java/org/olat/modules/portfolio/handler/CitationHandler.java b/src/main/java/org/olat/modules/portfolio/handler/CitationHandler.java index 6d4559f8088..b347c9bce86 100644 --- a/src/main/java/org/olat/modules/portfolio/handler/CitationHandler.java +++ b/src/main/java/org/olat/modules/portfolio/handler/CitationHandler.java @@ -91,6 +91,11 @@ public class CitationHandler extends AbstractMediaHandler implements Interactive return new CitationMediaController(ureq, wControl, media); } + @Override + public Controller getEditMediaController(UserRequest ureq, WindowControl wControl, Media media) { + return new CollectCitationMediaController(ureq, wControl, media); + } + @Override public PageElementAddController getAddPageElementController(UserRequest ureq, WindowControl wControl) { return new CollectCitationMediaController(ureq, wControl); diff --git a/src/main/java/org/olat/modules/portfolio/handler/FileHandler.java b/src/main/java/org/olat/modules/portfolio/handler/FileHandler.java index 76c64740e4c..b68a39e2656 100644 --- a/src/main/java/org/olat/modules/portfolio/handler/FileHandler.java +++ b/src/main/java/org/olat/modules/portfolio/handler/FileHandler.java @@ -115,6 +115,11 @@ public class FileHandler extends AbstractMediaHandler implements InteractiveAddP return thumbnail; } + public VFSItem getItem(Media media) { + VFSContainer storageContainer = fileStorage.getMediaContainer(media); + return storageContainer.resolve(media.getRootFilename()); + } + @Override public MediaInformations getInformations(Object mediaObject) { String title = null; @@ -176,6 +181,11 @@ public class FileHandler extends AbstractMediaHandler implements InteractiveAddP return new FileMediaController(ureq, wControl, media); } + @Override + public Controller getEditMediaController(UserRequest ureq, WindowControl wControl, Media media) { + return new CollectFileMediaController(ureq, wControl, media); + } + @Override public PageElementAddController getAddPageElementController(UserRequest ureq, WindowControl wControl) { return new CollectFileMediaController(ureq, wControl); diff --git a/src/main/java/org/olat/modules/portfolio/handler/ImageHandler.java b/src/main/java/org/olat/modules/portfolio/handler/ImageHandler.java index 46e30b33cbb..7a341b54d72 100644 --- a/src/main/java/org/olat/modules/portfolio/handler/ImageHandler.java +++ b/src/main/java/org/olat/modules/portfolio/handler/ImageHandler.java @@ -122,6 +122,11 @@ public class ImageHandler extends AbstractMediaHandler implements InteractiveAdd return thumbnail; } + + public VFSItem getImage(Media media) { + VFSContainer storageContainer = fileStorage.getMediaContainer(media); + return storageContainer.resolve(media.getRootFilename()); + } @Override public MediaInformations getInformations(Object mediaObject) { @@ -180,12 +185,19 @@ public class ImageHandler extends AbstractMediaHandler implements InteractiveAdd public Controller getMediaController(UserRequest ureq, WindowControl wControl, Media media) { return new ImageMediaController(ureq, wControl, media); } + + /* @Override public Controller getEditor(UserRequest ureq, WindowControl wControl, PageElement element) { return new ImageMediaEditorController(ureq, wControl, (MediaPart)element); }*/ + @Override + public Controller getEditMediaController(UserRequest ureq, WindowControl wControl, Media media) { + return new CollectImageMediaController(ureq, wControl, media); + } + @Override public PageElementAddController getAddPageElementController(UserRequest ureq, WindowControl wControl) { return new CollectImageMediaController(ureq, wControl); diff --git a/src/main/java/org/olat/modules/portfolio/handler/TextHandler.java b/src/main/java/org/olat/modules/portfolio/handler/TextHandler.java index ef038df0229..70e27ba5afc 100644 --- a/src/main/java/org/olat/modules/portfolio/handler/TextHandler.java +++ b/src/main/java/org/olat/modules/portfolio/handler/TextHandler.java @@ -106,6 +106,11 @@ public class TextHandler extends AbstractMediaHandler implements InteractiveAddP return new TextMediaController(ureq, wControl, media); } + @Override + public Controller getEditMediaController(UserRequest ureq, WindowControl wControl, Media media) { + return new CollectTextMediaController(ureq, wControl, media); + } + @Override public PageElementAddController getAddPageElementController(UserRequest ureq, WindowControl wControl) { return new CollectTextMediaController(ureq, wControl); diff --git a/src/main/java/org/olat/modules/portfolio/handler/VideoHandler.java b/src/main/java/org/olat/modules/portfolio/handler/VideoHandler.java index 82e0259343e..bc9cad6bdb1 100644 --- a/src/main/java/org/olat/modules/portfolio/handler/VideoHandler.java +++ b/src/main/java/org/olat/modules/portfolio/handler/VideoHandler.java @@ -120,6 +120,11 @@ public class VideoHandler extends AbstractMediaHandler implements InteractiveAdd return thumbnail; } + + public VFSItem getVideoItem(Media media) { + VFSContainer storageContainer = fileStorage.getMediaContainer(media); + return storageContainer.resolve(media.getRootFilename()); + } @Override public MediaInformations getInformations(Object mediaObject) { @@ -178,6 +183,11 @@ public class VideoHandler extends AbstractMediaHandler implements InteractiveAdd public Controller getMediaController(UserRequest ureq, WindowControl wControl, Media media) { return new VideoMediaController(ureq, wControl, media); } + + @Override + public Controller getEditMediaController(UserRequest ureq, WindowControl wControl, Media media) { + return new CollectVideoMediaController(ureq, wControl, media); + } @Override public PageElementAddController getAddPageElementController(UserRequest ureq, WindowControl wControl) { diff --git a/src/main/java/org/olat/modules/portfolio/ui/BinderController.java b/src/main/java/org/olat/modules/portfolio/ui/BinderController.java index 3daf14e8239..f54b6110f2d 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/BinderController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/BinderController.java @@ -125,8 +125,6 @@ public class BinderController extends BasicController implements TooledControlle protected void doDispose() { // } - - @Override public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { diff --git a/src/main/java/org/olat/modules/portfolio/ui/MediaCenterController.java b/src/main/java/org/olat/modules/portfolio/ui/MediaCenterController.java index a86f9e44949..9bcd6e497ad 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/MediaCenterController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/MediaCenterController.java @@ -440,7 +440,7 @@ public class MediaCenterController extends FormBasicController OLATResourceable bindersOres = OresHelper.createOLATResourceableInstance("Media", mediaKey); WindowControl swControl = addToHistory(ureq, bindersOres, null); Media media = portfolioService.getMediaByKey(mediaKey); - detailsCtrl = new MediaDetailsController(ureq, swControl, media); + detailsCtrl = new MediaDetailsController(ureq, swControl, stackPanel, media); listenTo(detailsCtrl); String displayName = StringHelper.escapeHtml(media.getTitle()); diff --git a/src/main/java/org/olat/modules/portfolio/ui/MediaDetailsController.java b/src/main/java/org/olat/modules/portfolio/ui/MediaDetailsController.java index 17d1eeecc23..191931e55da 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/MediaDetailsController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/MediaDetailsController.java @@ -26,6 +26,7 @@ import java.util.stream.Collectors; import org.olat.NewControllerFactory; import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.Component; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.FormLink; @@ -34,8 +35,14 @@ import org.olat.core.gui.components.form.flexible.impl.FormBasicController; import org.olat.core.gui.components.form.flexible.impl.FormEvent; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.components.link.Link; +import org.olat.core.gui.components.link.LinkFactory; +import org.olat.core.gui.components.stack.TooledController; +import org.olat.core.gui.components.stack.TooledStackedPanel; +import org.olat.core.gui.components.stack.TooledStackedPanel.Align; import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; import org.olat.core.gui.control.generic.dtabs.Activateable2; import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; @@ -56,27 +63,43 @@ import org.springframework.beans.factory.annotation.Autowired; * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * */ -public class MediaDetailsController extends FormBasicController implements Activateable2 { +public class MediaDetailsController extends FormBasicController implements Activateable2, TooledController { + + private Link editLink; + private final TooledStackedPanel stackPanel; + + private Controller mediaCtrl; + private Controller mediaEditCtrl; + private CloseableModalController cmc; private int counter; private Media media; - private MediaHandler handler; - - private Controller mediaCtrl; + private final MediaHandler handler; + private final List<BinderLight> usedInList; @Autowired private UserManager userManager; @Autowired private PortfolioService portfolioService; - public MediaDetailsController(UserRequest ureq, WindowControl wControl, Media media) { + public MediaDetailsController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel, Media media) { super(ureq, wControl, "media_details"); this.media = media; + this.stackPanel = stackPanel; handler = portfolioService.getMediaHandler(media.getType()); - + usedInList = portfolioService.getUsedInBinders(media); initForm(ureq); } + @Override + public void initTools() { + if(usedInList == null || usedInList.isEmpty()) { + editLink = LinkFactory.createToolLink("edit", translate("edit"), this); + editLink.setIconLeftCSS("o_icon o_icon-lg o_icon_edit"); + stackPanel.addTool(editLink, Align.left); + } + } + @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { if(formLayout instanceof FormLayoutContainer) { @@ -114,7 +137,7 @@ public class MediaDetailsController extends FormBasicController implements Activ categoriesEl.setEnabled(false); } - List<BinderLight> usedInList = portfolioService.getUsedInBinders(media); + List<FormLink> binderLinks = new ArrayList<>(usedInList.size()); for(BinderLight binder:usedInList) { FormLink link = uifactory.addFormLink("binder_" + (++counter), binder.getTitle(), null, layoutCont, Link.LINK | Link.NONTRANSLATED); @@ -124,6 +147,10 @@ public class MediaDetailsController extends FormBasicController implements Activ layoutCont.contextPut("binderLinks", binderLinks); } } + + private void reload(UserRequest ureq) { + initForm(flc, this, ureq); + } @Override protected void doDispose() { @@ -140,6 +167,36 @@ public class MediaDetailsController extends FormBasicController implements Activ // } + @Override + public void event(UserRequest ureq, Component source, Event event) { + if(editLink == source) { + doEdit(ureq); + } + super.event(ureq, source, event); + } + + @Override + protected void event(UserRequest ureq, Controller source, Event event) { + if(mediaEditCtrl == source) { + if(event == Event.DONE_EVENT || event == Event.CHANGED_EVENT) { + reload(ureq); + fireEvent(ureq, Event.CHANGED_EVENT); + } + cmc.deactivate(); + cleanUp(); + } else if(cmc == source) { + cleanUp(); + } + super.event(ureq, source, event); + } + + private void cleanUp() { + removeAsListenerAndDispose(mediaEditCtrl); + removeAsListenerAndDispose(cmc); + mediaEditCtrl = null; + cmc = null; + } + @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { if(source instanceof FormLink) { @@ -152,4 +209,16 @@ public class MediaDetailsController extends FormBasicController implements Activ } super.formInnerEvent(ureq, source, event); } + + private void doEdit(UserRequest ureq) { + if(mediaEditCtrl != null) return; + + mediaEditCtrl = handler.getEditMediaController(ureq, getWindowControl(), media); + listenTo(mediaEditCtrl); + + String title = translate("edit"); + cmc = new CloseableModalController(getWindowControl(), null, mediaEditCtrl.getInitialComponent(), true, title, true); + listenTo(cmc); + cmc.activate(); + } } diff --git a/src/main/java/org/olat/modules/portfolio/ui/media/CollectCitationMediaController.java b/src/main/java/org/olat/modules/portfolio/ui/media/CollectCitationMediaController.java index 0e7d6d4d234..705c8ce29eb 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/media/CollectCitationMediaController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/media/CollectCitationMediaController.java @@ -41,6 +41,7 @@ import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; +import org.olat.modules.portfolio.Category; import org.olat.modules.portfolio.CitationSourceType; import org.olat.modules.portfolio.Media; import org.olat.modules.portfolio.PortfolioService; @@ -75,6 +76,11 @@ public class CollectCitationMediaController extends FormBasicController implemen private TextElement descriptionEl, textEl; private TextBoxListElement categoriesEl; + private SingleSelection sourceTypeEl; + private TextElement urlEl, sourceEl, languageEl; + private TextElement creatorsEl, placeEl, publisherEl; + private TextElement editionEl, volumeEl, seriesEl, publicationTitleEl, issueEl, pagesEl, institutionEl; + private CitationXml citation; private Media mediaReference; private Map<String,String> categories = new HashMap<>(); @@ -96,6 +102,21 @@ public class CollectCitationMediaController extends FormBasicController implemen updateCitationFieldsVisibility(); } + public CollectCitationMediaController(UserRequest ureq, WindowControl wControl, Media media) { + super(ureq, wControl); + setTranslator(Util.createPackageTranslator(PortfolioHomeController.class, getLocale(), getTranslator())); + setTranslator(Util.createPackageTranslator(MetaInfoController.class, getLocale(), getTranslator())); + businessPath = media.getBusinessPath(); + mediaReference = media; + + List<Category> categoryList = portfolioService.getCategories(media); + for(Category category:categoryList) { + categories.put(category.getName(), category.getName()); + } + initForm(ureq); + updateCitationFieldsVisibility(); + } + public Media getMediaReference() { return mediaReference; } @@ -119,12 +140,15 @@ public class CollectCitationMediaController extends FormBasicController implemen @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - titleEl = uifactory.addTextElement("artefact.title", "artefact.title", 255, "", formLayout); + String title = mediaReference == null ? null : mediaReference.getTitle(); + titleEl = uifactory.addTextElement("artefact.title", "artefact.title", 255, title, formLayout); titleEl.setMandatory(true); - descriptionEl = uifactory.addRichTextElementForStringData("artefact.descr", "artefact.descr", "", 6, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); + String desc = mediaReference == null ? null : mediaReference.getDescription(); + descriptionEl = uifactory.addRichTextElementForStringData("artefact.descr", "artefact.descr", desc, 6, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); - textEl = uifactory.addRichTextElementForStringData("citation", "citation", "", 10, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); + String text = mediaReference == null ? null : mediaReference.getContent(); + textEl = uifactory.addRichTextElementForStringData("citation", "citation", text, 10, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); categoriesEl = uifactory.addTextBoxListElement("categories", "categories", "categories.hint", categories, formLayout, getTranslator()); categoriesEl.setElementCssClass("o_sel_ep_tagsinput"); @@ -133,7 +157,8 @@ public class CollectCitationMediaController extends FormBasicController implemen initMetadataForm(formLayout); initCitationForm(formLayout); - String date = Formatter.getInstance(getLocale()).formatDate(new Date()); + Date collectDate = mediaReference == null ? new Date() : mediaReference.getCollectionDate(); + String date = Formatter.getInstance(getLocale()).formatDate(collectDate); uifactory.addStaticTextElement("artefact.collect.date", "artefact.collect.date", date, formLayout); if(StringHelper.containsNonWhitespace(businessPath)) { @@ -146,12 +171,7 @@ public class CollectCitationMediaController extends FormBasicController implemen uifactory.addFormSubmitButton("save", "save", buttonsCont); uifactory.addFormCancelButton("cancel", buttonsCont, ureq, getWindowControl()); } - - private TextElement creatorsEl, placeEl, publisherEl; - //date - private TextElement urlEl, sourceEl, languageEl; - - + protected void initMetadataForm(FormItemContainer formLayout) { String creators = (mediaReference != null ? mediaReference.getCreators() : null); creatorsEl = uifactory.addTextElement("creator", "mf.creator", -1, creators, formLayout); @@ -171,10 +191,6 @@ public class CollectCitationMediaController extends FormBasicController implemen String language = (mediaReference != null ? mediaReference.getLanguage() : null); languageEl = uifactory.addTextElement("language", "mf.language", -1, language, formLayout); } - - private SingleSelection sourceTypeEl; - - private TextElement editionEl, volumeEl, seriesEl, publicationTitleEl, issueEl, pagesEl, institutionEl; protected void initCitationForm(FormItemContainer formLayout) { diff --git a/src/main/java/org/olat/modules/portfolio/ui/media/CollectFileMediaController.java b/src/main/java/org/olat/modules/portfolio/ui/media/CollectFileMediaController.java index b4a49b89581..56bad804b4d 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/media/CollectFileMediaController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/media/CollectFileMediaController.java @@ -40,6 +40,9 @@ import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; +import org.olat.core.util.vfs.JavaIOItem; +import org.olat.core.util.vfs.VFSItem; +import org.olat.modules.portfolio.Category; import org.olat.modules.portfolio.Media; import org.olat.modules.portfolio.PortfolioService; import org.olat.modules.portfolio.handler.FileHandler; @@ -81,6 +84,19 @@ public class CollectFileMediaController extends FormBasicController implements P initForm(ureq); } + public CollectFileMediaController(UserRequest ureq, WindowControl wControl, Media media) { + super(ureq, wControl); + mediaReference = media; + setTranslator(Util.createPackageTranslator(PortfolioHomeController.class, getLocale(), getTranslator())); + businessPath = media.getBusinessPath(); + + List<Category> categoryList = portfolioService.getCategories(media); + for(Category category:categoryList) { + categories.put(category.getName(), category.getName()); + } + initForm(ureq); + } + public Media getMediaReference() { return mediaReference; } @@ -104,15 +120,24 @@ public class CollectFileMediaController extends FormBasicController implements P @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - titleEl = uifactory.addTextElement("artefact.title", "artefact.title", 255, "", formLayout); + String title = mediaReference == null ? null : mediaReference.getTitle(); + titleEl = uifactory.addTextElement("artefact.title", "artefact.title", 255, title, formLayout); titleEl.setMandatory(true); - descriptionEl = uifactory.addRichTextElementForStringData("artefact.descr", "artefact.descr", "", 8, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); + String desc = mediaReference == null ? null : mediaReference.getTitle(); + descriptionEl = uifactory.addRichTextElementForStringData("artefact.descr", "artefact.descr", desc, 8, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); fileEl = uifactory.addFileElement(getWindowControl(), "artefact.file", "artefact.file", formLayout); fileEl.addActionListener(FormEvent.ONCHANGE); - - + if(mediaReference != null) { + fileEl.setEnabled(false); + + VFSItem item = fileHandler.getItem(mediaReference); + if(item instanceof JavaIOItem) { + fileEl.setInitialFile(((JavaIOItem)item).getBasefile()); + } + } + categoriesEl = uifactory.addTextBoxListElement("categories", "categories", "categories.hint", categories, formLayout, getTranslator()); categoriesEl.setElementCssClass("o_sel_ep_tagsinput"); categoriesEl.setAllowDuplicates(false); @@ -120,7 +145,8 @@ public class CollectFileMediaController extends FormBasicController implements P //String source = "Forum"; //uifactory.addStaticTextElement("artefact.source", "artefact.source", source, formLayout); - String date = Formatter.getInstance(getLocale()).formatDate(new Date()); + Date collectDate = mediaReference == null ? new Date() : mediaReference.getCollectionDate(); + String date = Formatter.getInstance(getLocale()).formatDate(collectDate); uifactory.addStaticTextElement("artefact.collect.date", "artefact.collect.date", date, formLayout); if(StringHelper.containsNonWhitespace(businessPath)) { @@ -144,7 +170,7 @@ public class CollectFileMediaController extends FormBasicController implements P boolean allOk = true; fileEl.clearError(); - if(fileEl.getUploadFile() == null || fileEl.getUploadSize() < 1) { + if(fileEl.getInitialFile() == null && (fileEl.getUploadFile() == null || fileEl.getUploadSize() < 1)) { fileEl.setErrorKey("form.legende.mandatory", null); allOk &= false; } @@ -161,7 +187,9 @@ public class CollectFileMediaController extends FormBasicController implements P String uploadedFilename = fileEl.getUploadFileName(); mediaReference = fileHandler.createMedia(title, description, uploadedFile, uploadedFilename, businessPath, getIdentity()); } else { - //TODO can we update an artefact? + mediaReference.setTitle(titleEl.getValue()); + mediaReference.setDescription(descriptionEl.getValue()); + mediaReference = portfolioService.updateMedia(mediaReference); } List<String> updatedCategories = categoriesEl.getValueList(); diff --git a/src/main/java/org/olat/modules/portfolio/ui/media/CollectImageMediaController.java b/src/main/java/org/olat/modules/portfolio/ui/media/CollectImageMediaController.java index 8ed4bc325bf..7867937c592 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/media/CollectImageMediaController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/media/CollectImageMediaController.java @@ -40,6 +40,9 @@ import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; +import org.olat.core.util.vfs.JavaIOItem; +import org.olat.core.util.vfs.VFSItem; +import org.olat.modules.portfolio.Category; import org.olat.modules.portfolio.Media; import org.olat.modules.portfolio.PortfolioService; import org.olat.modules.portfolio.handler.ImageHandler; @@ -81,6 +84,19 @@ public class CollectImageMediaController extends FormBasicController implements initForm(ureq); } + public CollectImageMediaController(UserRequest ureq, WindowControl wControl, Media media) { + super(ureq, wControl); + setTranslator(Util.createPackageTranslator(PortfolioHomeController.class, getLocale(), getTranslator())); + businessPath = media.getBusinessPath(); + mediaReference = media; + + List<Category> categoryList = portfolioService.getCategories(media); + for(Category category:categoryList) { + categories.put(category.getName(), category.getName()); + } + initForm(ureq); + } + public Media getMediaReference() { return mediaReference; } @@ -104,25 +120,32 @@ public class CollectImageMediaController extends FormBasicController implements @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - titleEl = uifactory.addTextElement("artefact.title", "artefact.title", 255, "", formLayout); + String title = mediaReference == null ? null : mediaReference.getTitle(); + titleEl = uifactory.addTextElement("artefact.title", "artefact.title", 255, title, formLayout); titleEl.setMandatory(true); - descriptionEl = uifactory.addRichTextElementForStringData("artefact.descr", "artefact.descr", "", 8, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); + String desc = mediaReference == null ? null : mediaReference.getDescription(); + descriptionEl = uifactory.addRichTextElementForStringData("artefact.descr", "artefact.descr", desc, 8, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); fileEl = uifactory.addFileElement(getWindowControl(), "artefact.file", "artefact.file", formLayout); fileEl.addActionListener(FormEvent.ONCHANGE); fileEl.setMaxUploadSizeKB(10000, null, null); fileEl.setPreview(ureq.getUserSession(), true); fileEl.setDeleteEnabled(true); + if(mediaReference != null) { + fileEl.setEnabled(false); + VFSItem item = fileHandler.getImage(mediaReference); + if(item instanceof JavaIOItem) { + fileEl.setInitialFile(((JavaIOItem)item).getBasefile()); + } + } categoriesEl = uifactory.addTextBoxListElement("categories", "categories", "categories.hint", categories, formLayout, getTranslator()); categoriesEl.setElementCssClass("o_sel_ep_tagsinput"); categoriesEl.setAllowDuplicates(false); - - //String source = "Forum"; - //uifactory.addStaticTextElement("artefact.source", "artefact.source", source, formLayout); - - String date = Formatter.getInstance(getLocale()).formatDate(new Date()); + + Date collectDate = mediaReference == null ? new Date() : mediaReference.getCollectionDate(); + String date = Formatter.getInstance(getLocale()).formatDate(collectDate); uifactory.addStaticTextElement("artefact.collect.date", "artefact.collect.date", date, formLayout); if(StringHelper.containsNonWhitespace(businessPath)) { @@ -146,7 +169,7 @@ public class CollectImageMediaController extends FormBasicController implements boolean allOk = true; fileEl.clearError(); - if(fileEl.getUploadFile() == null || fileEl.getUploadSize() < 1) { + if(fileEl.getInitialFile() == null && (fileEl.getUploadFile() == null || fileEl.getUploadSize() < 1)) { fileEl.setErrorKey("form.legende.mandatory", null); allOk &= false; } @@ -163,7 +186,9 @@ public class CollectImageMediaController extends FormBasicController implements String uploadedFilename = fileEl.getUploadFileName(); mediaReference = fileHandler.createMedia(title, description, uploadedFile, uploadedFilename, businessPath, getIdentity()); } else { - //TODO can we update an artefact? + mediaReference.setTitle(titleEl.getValue()); + mediaReference.setDescription(descriptionEl.getValue()); + mediaReference = portfolioService.updateMedia(mediaReference); } List<String> updatedCategories = categoriesEl.getValueList(); diff --git a/src/main/java/org/olat/modules/portfolio/ui/media/CollectTextMediaController.java b/src/main/java/org/olat/modules/portfolio/ui/media/CollectTextMediaController.java index 94a8f131bc2..246e5f0d4cd 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/media/CollectTextMediaController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/media/CollectTextMediaController.java @@ -37,6 +37,7 @@ import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; +import org.olat.modules.portfolio.Category; import org.olat.modules.portfolio.Media; import org.olat.modules.portfolio.PortfolioService; import org.olat.modules.portfolio.handler.TextHandler; @@ -77,6 +78,20 @@ public class CollectTextMediaController extends FormBasicController implements P initForm(ureq); } + public CollectTextMediaController(UserRequest ureq, WindowControl wControl, Media media) { + super(ureq, wControl); + setTranslator(Util.createPackageTranslator(PortfolioHomeController.class, getLocale(), getTranslator())); + businessPath = media.getBusinessPath(); + mediaReference = media; + + List<Category> categoryList = portfolioService.getCategories(media); + for(Category category:categoryList) { + categories.put(category.getName(), category.getName()); + } + + initForm(ureq); + } + public Media getMediaReference() { return mediaReference; } @@ -100,18 +115,22 @@ public class CollectTextMediaController extends FormBasicController implements P @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - titleEl = uifactory.addTextElement("artefact.title", "artefact.title", 255, "", formLayout); + String title = mediaReference == null ? null : mediaReference.getTitle(); + titleEl = uifactory.addTextElement("artefact.title", "artefact.title", 255, title, formLayout); titleEl.setMandatory(true); - descriptionEl = uifactory.addRichTextElementForStringData("artefact.descr", "artefact.descr", "", 6, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); + String desc = mediaReference == null ? null : mediaReference.getDescription(); + descriptionEl = uifactory.addRichTextElementForStringData("artefact.descr", "artefact.descr", desc, 6, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); - textEl = uifactory.addRichTextElementForStringData("artefact.text", "artefact.text", "", 10, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); + String content = mediaReference == null ? null : mediaReference.getContent(); + textEl = uifactory.addRichTextElementForStringData("artefact.text", "artefact.text", content, 10, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); categoriesEl = uifactory.addTextBoxListElement("categories", "categories", "categories.hint", categories, formLayout, getTranslator()); categoriesEl.setElementCssClass("o_sel_ep_tagsinput"); categoriesEl.setAllowDuplicates(false); - String date = Formatter.getInstance(getLocale()).formatDate(new Date()); + Date collectDate = mediaReference == null ? new Date() : mediaReference.getCollectionDate(); + String date = Formatter.getInstance(getLocale()).formatDate(collectDate); uifactory.addStaticTextElement("artefact.collect.date", "artefact.collect.date", date, formLayout); if(StringHelper.containsNonWhitespace(businessPath)) { @@ -145,7 +164,10 @@ public class CollectTextMediaController extends FormBasicController implements P String content = textEl.getValue(); mediaReference = fileHandler.createMedia(title, description, content, businessPath, getIdentity()); } else { - //TODO can we update an artefact? + mediaReference.setTitle(titleEl.getValue()); + mediaReference.setDescription(descriptionEl.getValue()); + mediaReference.setContent(textEl.getValue()); + mediaReference = portfolioService.updateMedia(mediaReference); } List<String> updatedCategories = categoriesEl.getValueList(); diff --git a/src/main/java/org/olat/modules/portfolio/ui/media/CollectVideoMediaController.java b/src/main/java/org/olat/modules/portfolio/ui/media/CollectVideoMediaController.java index 0f38580edd8..c0cbd38e22e 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/media/CollectVideoMediaController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/media/CollectVideoMediaController.java @@ -40,9 +40,12 @@ import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; +import org.olat.core.util.vfs.JavaIOItem; +import org.olat.core.util.vfs.VFSItem; +import org.olat.modules.portfolio.Category; import org.olat.modules.portfolio.Media; import org.olat.modules.portfolio.PortfolioService; -import org.olat.modules.portfolio.handler.ImageHandler; +import org.olat.modules.portfolio.handler.VideoHandler; import org.olat.modules.portfolio.model.MediaPart; import org.olat.modules.portfolio.ui.PortfolioHomeController; import org.olat.modules.portfolio.ui.editor.AddElementInfos; @@ -70,7 +73,7 @@ public class CollectVideoMediaController extends FormBasicController implements private AddElementInfos userObject; @Autowired - private ImageHandler fileHandler; + private VideoHandler fileHandler; @Autowired private PortfolioService portfolioService; @@ -81,6 +84,20 @@ public class CollectVideoMediaController extends FormBasicController implements initForm(ureq); } + public CollectVideoMediaController(UserRequest ureq, WindowControl wControl, Media media) { + super(ureq, wControl); + setTranslator(Util.createPackageTranslator(PortfolioHomeController.class, getLocale(), getTranslator())); + businessPath = media.getBusinessPath(); + mediaReference = media; + + List<Category> categoryList = portfolioService.getCategories(media); + for(Category category:categoryList) { + categories.put(category.getName(), category.getName()); + } + + initForm(ureq); + } + public Media getMediaReference() { return mediaReference; } @@ -104,25 +121,33 @@ public class CollectVideoMediaController extends FormBasicController implements @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - titleEl = uifactory.addTextElement("artefact.title", "artefact.title", 255, "", formLayout); + String title = mediaReference == null ? null : mediaReference.getTitle(); + titleEl = uifactory.addTextElement("artefact.title", "artefact.title", 255, title, formLayout); titleEl.setMandatory(true); - descriptionEl = uifactory.addRichTextElementForStringData("artefact.descr", "artefact.descr", "", 8, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); + String desc = mediaReference == null ? null : mediaReference.getDescription(); + descriptionEl = uifactory.addRichTextElementForStringData("artefact.descr", "artefact.descr", desc, 8, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); fileEl = uifactory.addFileElement(getWindowControl(), "artefact.file", "artefact.file", formLayout); fileEl.addActionListener(FormEvent.ONCHANGE); fileEl.setMaxUploadSizeKB(250000, null, null); fileEl.setPreview(ureq.getUserSession(), true); fileEl.setDeleteEnabled(true); + if(mediaReference != null) { + fileEl.setEnabled(false); + + VFSItem item = fileHandler.getVideoItem(mediaReference); + if(item instanceof JavaIOItem) { + fileEl.setInitialFile(((JavaIOItem)item).getBasefile()); + } + } categoriesEl = uifactory.addTextBoxListElement("categories", "categories", "categories.hint", categories, formLayout, getTranslator()); categoriesEl.setElementCssClass("o_sel_ep_tagsinput"); categoriesEl.setAllowDuplicates(false); - //String source = "Forum"; - //uifactory.addStaticTextElement("artefact.source", "artefact.source", source, formLayout); - - String date = Formatter.getInstance(getLocale()).formatDate(new Date()); + Date collectDate = mediaReference == null ? new Date() : mediaReference.getCollectionDate(); + String date = Formatter.getInstance(getLocale()).formatDate(collectDate); uifactory.addStaticTextElement("artefact.collect.date", "artefact.collect.date", date, formLayout); if(StringHelper.containsNonWhitespace(businessPath)) { @@ -146,7 +171,7 @@ public class CollectVideoMediaController extends FormBasicController implements boolean allOk = true; fileEl.clearError(); - if(fileEl.getUploadFile() == null || fileEl.getUploadSize() < 1) { + if(fileEl.getInitialFile() == null && (fileEl.getUploadFile() == null || fileEl.getUploadSize() < 1)) { fileEl.setErrorKey("form.legende.mandatory", null); allOk &= false; } @@ -163,7 +188,9 @@ public class CollectVideoMediaController extends FormBasicController implements String uploadedFilename = fileEl.getUploadFileName(); mediaReference = fileHandler.createMedia(title, description, uploadedFile, uploadedFilename, businessPath, getIdentity()); } else { - //TODO can we update an artefact? + mediaReference.setTitle(titleEl.getValue()); + mediaReference.setDescription(descriptionEl.getValue()); + mediaReference = portfolioService.updateMedia(mediaReference); } List<String> updatedCategories = categoriesEl.getValueList(); diff --git a/src/main/java/org/olat/modules/portfolio/ui/media/StandardEditMediaController.java b/src/main/java/org/olat/modules/portfolio/ui/media/StandardEditMediaController.java new file mode 100644 index 00000000000..6733747c906 --- /dev/null +++ b/src/main/java/org/olat/modules/portfolio/ui/media/StandardEditMediaController.java @@ -0,0 +1,128 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.portfolio.ui.media; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.elements.TextBoxListElement; +import org.olat.core.gui.components.form.flexible.elements.TextElement; +import org.olat.core.gui.components.form.flexible.impl.FormBasicController; +import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.Event; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.id.context.BusinessControlFactory; +import org.olat.core.util.Formatter; +import org.olat.core.util.StringHelper; +import org.olat.core.util.Util; +import org.olat.modules.portfolio.Category; +import org.olat.modules.portfolio.Media; +import org.olat.modules.portfolio.PortfolioService; +import org.olat.modules.portfolio.ui.PortfolioHomeController; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * Initial date: 03.08.2016<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class StandardEditMediaController extends FormBasicController { + + private TextElement titleEl; + private TextElement descriptionEl; + private TextBoxListElement categoriesEl; + + private Media mediaReference; + private final String businessPath; + private Map<String,String> categories = new HashMap<>(); + + @Autowired + private PortfolioService portfolioService; + + public StandardEditMediaController(UserRequest ureq, WindowControl wControl, Media media) { + super(ureq, wControl); + setTranslator(Util.createPackageTranslator(PortfolioHomeController.class, getLocale(), getTranslator())); + businessPath = media.getBusinessPath(); + mediaReference = media; + + List<Category> categoryList = portfolioService.getCategories(media); + for(Category category:categoryList) { + categories.put(category.getName(), category.getName()); + } + + initForm(ureq); + } + + @Override + protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + String title = mediaReference == null ? null : mediaReference.getTitle(); + titleEl = uifactory.addTextElement("artefact.title", "artefact.title", 255, title, formLayout); + titleEl.setMandatory(true); + + String desc = mediaReference == null ? null : mediaReference.getDescription(); + descriptionEl = uifactory.addRichTextElementForStringData("artefact.descr", "artefact.descr", desc, 8, 6, false, null, null, formLayout, ureq.getUserSession(), getWindowControl()); + + categoriesEl = uifactory.addTextBoxListElement("categories", "categories", "categories.hint", categories, formLayout, getTranslator()); + categoriesEl.setElementCssClass("o_sel_ep_tagsinput"); + categoriesEl.setAllowDuplicates(false); + + Date collectDate = mediaReference == null ? new Date() : mediaReference.getCollectionDate(); + String date = Formatter.getInstance(getLocale()).formatDate(collectDate); + uifactory.addStaticTextElement("artefact.collect.date", "artefact.collect.date", date, formLayout); + + if(StringHelper.containsNonWhitespace(businessPath)) { + String link = BusinessControlFactory.getInstance().getURLFromBusinessPathString(businessPath); + uifactory.addStaticTextElement("artefact.collect.link", "artefact.collect.link", link, formLayout); + } + + FormLayoutContainer buttonsCont = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); + formLayout.add(buttonsCont); + uifactory.addFormSubmitButton("save", "save", buttonsCont); + uifactory.addFormCancelButton("cancel", buttonsCont, ureq, getWindowControl()); + } + + @Override + protected void doDispose() { + // + } + + @Override + protected void formOK(UserRequest ureq) { + mediaReference.setTitle(titleEl.getValue()); + mediaReference.setDescription(descriptionEl.getValue()); + mediaReference = portfolioService.updateMedia(mediaReference); + + List<String> updatedCategories = categoriesEl.getValueList(); + portfolioService.updateCategories(mediaReference, updatedCategories); + + fireEvent(ureq, Event.DONE_EVENT); + } + + @Override + protected void formCancelled(UserRequest ureq) { + fireEvent(ureq, Event.CANCELLED_EVENT); + } +} diff --git a/src/main/java/org/olat/modules/portfolio/ui/media/UploadMedia.java b/src/main/java/org/olat/modules/portfolio/ui/media/UploadMedia.java index 96114aa1ada..43d5c45af6e 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/media/UploadMedia.java +++ b/src/main/java/org/olat/modules/portfolio/ui/media/UploadMedia.java @@ -1,3 +1,22 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ package org.olat.modules.portfolio.ui.media; import java.io.File; diff --git a/src/main/java/org/olat/modules/webFeed/portfolio/BlogEntryMediaHandler.java b/src/main/java/org/olat/modules/webFeed/portfolio/BlogEntryMediaHandler.java index 9ec3417a872..4801ea2a0a7 100644 --- a/src/main/java/org/olat/modules/webFeed/portfolio/BlogEntryMediaHandler.java +++ b/src/main/java/org/olat/modules/webFeed/portfolio/BlogEntryMediaHandler.java @@ -36,6 +36,7 @@ import org.olat.modules.portfolio.MediaLight; import org.olat.modules.portfolio.handler.AbstractMediaHandler; import org.olat.modules.portfolio.manager.MediaDAO; import org.olat.modules.portfolio.manager.PortfolioFileStorage; +import org.olat.modules.portfolio.ui.media.StandardEditMediaController; import org.olat.modules.webFeed.managers.FeedManager; import org.olat.modules.webFeed.models.Feed; import org.olat.modules.webFeed.models.Item; @@ -135,4 +136,9 @@ public class BlogEntryMediaHandler extends AbstractMediaHandler { public Controller getMediaController(UserRequest ureq, WindowControl wControl, Media media) { return new BlogEntryMediaController(ureq, wControl, media, true); } + + @Override + public Controller getEditMediaController(UserRequest ureq, WindowControl wControl, Media media) { + return new StandardEditMediaController(ureq, wControl, media); + } } diff --git a/src/main/java/org/olat/modules/wiki/portfolio/WikiMediaHandler.java b/src/main/java/org/olat/modules/wiki/portfolio/WikiMediaHandler.java index 0581316926b..66b23512852 100644 --- a/src/main/java/org/olat/modules/wiki/portfolio/WikiMediaHandler.java +++ b/src/main/java/org/olat/modules/wiki/portfolio/WikiMediaHandler.java @@ -31,6 +31,7 @@ import org.olat.modules.portfolio.MediaInformations; import org.olat.modules.portfolio.MediaLight; import org.olat.modules.portfolio.handler.AbstractMediaHandler; import org.olat.modules.portfolio.manager.MediaDAO; +import org.olat.modules.portfolio.ui.media.StandardEditMediaController; import org.olat.modules.wiki.WikiPage; import org.olat.portfolio.model.artefacts.AbstractArtefact; import org.springframework.beans.factory.annotation.Autowired; @@ -105,4 +106,9 @@ public class WikiMediaHandler extends AbstractMediaHandler { public Controller getMediaController(UserRequest ureq, WindowControl wControl, Media media) { return new WikiPageMediaController(ureq, wControl, media); } + + @Override + public Controller getEditMediaController(UserRequest ureq, WindowControl wControl, Media media) { + return new StandardEditMediaController(ureq, wControl, media); + } } -- GitLab