From e3c9a89a24437835e661efe63ea0453256b1111c Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 2 Jun 2017 15:14:48 +0200 Subject: [PATCH] OO-2798: add business path to the video runtime --- .../video/ui/ChapterEditController.java | 24 ++---- .../video/ui/VideoAdminErrorController.java | 15 ++-- .../video/ui/VideoChapterEditController.java | 25 +++--- .../ui/VideoQualityTableFormController.java | 20 ++--- .../video/ui/VideoRuntimeController.java | 35 ++++++-- .../video/ui/VideoSettingsController.java | 81 ++++++++++++++----- .../video/ui/_content/video_preview.html | 2 +- .../modules/video/ui/_content/video_run.html | 3 +- .../repository/ui/_content/web_content.html | 2 +- 9 files changed, 123 insertions(+), 84 deletions(-) diff --git a/src/main/java/org/olat/modules/video/ui/ChapterEditController.java b/src/main/java/org/olat/modules/video/ui/ChapterEditController.java index e9a0f5e56ba..6b960a8bf8d 100644 --- a/src/main/java/org/olat/modules/video/ui/ChapterEditController.java +++ b/src/main/java/org/olat/modules/video/ui/ChapterEditController.java @@ -33,8 +33,6 @@ 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.logging.OLog; -import org.olat.core.logging.Tracing; /** * The Class ChapterEditController. @@ -44,8 +42,6 @@ import org.olat.core.logging.Tracing; */ public class ChapterEditController extends FormBasicController { - private static final OLog log = Tracing.createLoggerFor(ChapterEditController.class); - private String time; private String chapter; private boolean chapterExists; @@ -100,8 +96,8 @@ public class ChapterEditController extends FormBasicController { FormLayoutContainer buttonGroupLayout = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); formLayout.add(buttonGroupLayout); - uifactory.addFormSubmitButton("submit", "video.chapter." + (chapterExists ? "edit" : "add"), buttonGroupLayout); uifactory.addFormCancelButton("cancel", buttonGroupLayout, ureq, getWindowControl()); + uifactory.addFormSubmitButton("submit", "video.chapter." + (chapterExists ? "edit" : "add"), buttonGroupLayout); } /** @@ -164,7 +160,7 @@ public class ChapterEditController extends FormBasicController { } else if (timeAlreadyExists()) { beginEl.setErrorKey("chapter.error.already.exists", null); } else { - this.fireEvent(ureq, Event.DONE_EVENT); + fireEvent(ureq, Event.DONE_EVENT); } } @@ -190,22 +186,16 @@ public class ChapterEditController extends FormBasicController { */ private boolean setTextElementValuesAndCheckFormat (){ boolean incorrectTimeFormat = false; - String time = beginEl.getValue(); + String beginTime = beginEl.getValue(); String chapterTitle = chapterTitleEl.getValue(); try { - videoChapterTableRow.setBegin(displayDateFormat.parse(time)); + videoChapterTableRow.setBegin(displayDateFormat.parse(beginTime)); videoChapterTableRow.setChapterName(chapterTitle); - videoChapterTableRow.setIntervals(time); + videoChapterTableRow.setIntervals(beginTime); } catch (ParseException e) { - log.error("The content of the TextElement cannot be parsed as a Date", e); + logError("The content of the TextElement cannot be parsed as a Date", e); incorrectTimeFormat = true; } return incorrectTimeFormat; } - - - - - - -} +} \ No newline at end of file diff --git a/src/main/java/org/olat/modules/video/ui/VideoAdminErrorController.java b/src/main/java/org/olat/modules/video/ui/VideoAdminErrorController.java index d0f69e2ea26..720981ca28e 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoAdminErrorController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoAdminErrorController.java @@ -67,7 +67,6 @@ public class VideoAdminErrorController extends FormBasicController { private TranscodingQueueTableModel tableModel; private FlexiTableElement tableEl; - private FormItemContainer formLayout; private FormLink refreshButton; private CloseableModalController closeableModalController; private HomePageDisplayController homePageDisplayController; @@ -107,11 +106,9 @@ public class VideoAdminErrorController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - this.formLayout = formLayout; setFormTitle("number.transcodings"); setFormDescription("number.transcodings"); setFormContextHelp("Portfolio template: Administration and editing#configuration"); - initTable(); } @@ -162,18 +159,18 @@ public class VideoAdminErrorController extends FormBasicController { } tableModel.setObjects(rows); - if (formLayout.hasFormComponent(tableEl)){ - formLayout.remove(tableEl); + if (flc.hasFormComponent(tableEl)){ + flc.remove(tableEl); } - if (formLayout.hasFormComponent(refreshButton)){ - formLayout.remove(refreshButton); + if (flc.hasFormComponent(refreshButton)){ + flc.remove(refreshButton); } - tableEl = uifactory.addTableElement(getWindowControl(), "queue", tableModel, getTranslator(), formLayout); + tableEl = uifactory.addTableElement(getWindowControl(), "queue", tableModel, getTranslator(), flc); tableEl.setCustomizeColumns(false); tableEl.setNumOfRowsEnabled(false); - refreshButton = uifactory.addFormLink("button.refresh", formLayout,Link.BUTTON); + refreshButton = uifactory.addFormLink("button.refresh", flc, Link.BUTTON); refreshButton.setIconLeftCSS("o_icon o_icon_refresh o_icon-fw"); } diff --git a/src/main/java/org/olat/modules/video/ui/VideoChapterEditController.java b/src/main/java/org/olat/modules/video/ui/VideoChapterEditController.java index 779176cba78..2895768360f 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoChapterEditController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoChapterEditController.java @@ -134,7 +134,6 @@ public class VideoChapterEditController extends FormBasicController { @Override public void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { - if(source == chapterTable) { if(event instanceof SelectionEvent) { SelectionEvent se = (SelectionEvent)event; @@ -147,7 +146,6 @@ public class VideoChapterEditController extends FormBasicController { doOpenCallout(ureq, vctr, true); } } - } else if (addChapterEl == source) { long currentLong = currentTimeCode != null ? (long) Float.parseFloat(currentTimeCode) * 1000 : 0; Date currentDate = new Date(currentLong); @@ -155,7 +153,11 @@ public class VideoChapterEditController extends FormBasicController { displayDateFormat.format(currentDate), currentDate, currentDate); doOpenCallout(ureq, vctr, false); } - + } + + @Override + protected void propagateDirtinessToContainer(FormItem fiSrc, FormEvent event) { + //avoid reload of html template, to prevent videoreload } @Override @@ -172,14 +174,14 @@ public class VideoChapterEditController extends FormBasicController { doAddOrUpdateChapter(ureq, chapterEditCtr.getVideoChapterTableRow()); } cmc.deactivate(); - cleanUpCMC(); + cleanUp(); } else if (source == cmc) { - cleanUpCMC(); + cleanUp(); } super.event(ureq, source, event); } - private void cleanUpCMC(){ + private void cleanUp(){ removeAsListenerAndDispose(cmc); removeAsListenerAndDispose(chapterEditCtr); cmc = null; @@ -199,6 +201,7 @@ public class VideoChapterEditController extends FormBasicController { } private void doOpenCallout(UserRequest ureq, VideoChapterTableRow videoChapterTableRow, boolean chapterExists) { + if(chapterEditCtr != null) return; chapterEditCtr = new ChapterEditController(ureq, getWindowControl(), videoChapterTableRow, chapterExists, chapters, duration); @@ -207,15 +210,9 @@ public class VideoChapterEditController extends FormBasicController { cmc = new CloseableModalController(getWindowControl(), translate("close"), chapterEditCtr.getInitialComponent(), true, translate("video.chapter." + (chapterExists ? "edit" : "new"))); listenTo(cmc); - cmc.activate(); } - @Override - protected void propagateDirtinessToContainer(FormItem fiSrc, FormEvent event) { - //avoid reload of html template, to prevent videoreload - } - private void doAddOrUpdateChapter(UserRequest ureq, VideoChapterTableRow row){ //only add if object does not yet exist if (!chapters.contains(row)){ @@ -231,6 +228,7 @@ public class VideoChapterEditController extends FormBasicController { organizeChapters(); loadTableModel(); saveChapters(ureq, row.getBegin()); + addToHistory(ureq, this); } private void organizeChapters () { @@ -254,5 +252,4 @@ public class VideoChapterEditController extends FormBasicController { } } } - -} +} \ No newline at end of file diff --git a/src/main/java/org/olat/modules/video/ui/VideoQualityTableFormController.java b/src/main/java/org/olat/modules/video/ui/VideoQualityTableFormController.java index fcfd220e18f..6c7f50e9594 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoQualityTableFormController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoQualityTableFormController.java @@ -66,7 +66,6 @@ public class VideoQualityTableFormController extends FormBasicController { private CloseableModalController cmc; private VelocityContainer previewVC; private OLATResource videoResource; - private FormItemContainer formLayout; private FormLink refreshbtn; private int count = 0; @@ -86,8 +85,6 @@ public class VideoQualityTableFormController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - this.formLayout = formLayout; - FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(QualityTableCols.resolution)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(QualityTableCols.dimension)); @@ -97,8 +94,7 @@ public class VideoQualityTableFormController extends FormBasicController { tableModel = new VideoQualityTableModel(columnsModel, getTranslator()); - initTable(); - + initTable(); } private void initTable(){ @@ -161,21 +157,19 @@ public class VideoQualityTableFormController extends FormBasicController { rows.sort(new VideoComparator()); tableModel.setObjects(rows); - if (formLayout.hasFormComponent(tableEl)){ - formLayout.remove(tableEl); + if (flc.hasFormComponent(tableEl)){ + flc.remove(tableEl); } - if (formLayout.hasFormComponent(refreshbtn)){ - formLayout.remove(refreshbtn); + if (flc.hasFormComponent(refreshbtn)){ + flc.remove(refreshbtn); } - tableEl = uifactory.addTableElement(getWindowControl(), "qualityTable", tableModel, getTranslator(), formLayout); + tableEl = uifactory.addTableElement(getWindowControl(), "qualityTable", tableModel, getTranslator(), flc); tableEl.setCustomizeColumns(false); tableEl.setNumOfRowsEnabled(false); - - refreshbtn = uifactory.addFormLink("button.refresh", formLayout, Link.BUTTON); + refreshbtn = uifactory.addFormLink("button.refresh", flc, Link.BUTTON); refreshbtn.setIconLeftCSS("o_icon o_icon_refresh o_icon-fw"); - } @Override diff --git a/src/main/java/org/olat/modules/video/ui/VideoRuntimeController.java b/src/main/java/org/olat/modules/video/ui/VideoRuntimeController.java index eba84a45b38..7c274b5d5c1 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoRuntimeController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoRuntimeController.java @@ -19,6 +19,8 @@ */ package org.olat.modules.video.ui; +import java.util.List; + import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.dropdown.Dropdown; @@ -29,6 +31,11 @@ import org.olat.core.gui.components.stack.PopEvent; import org.olat.core.gui.components.stack.RootEvent; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.generic.dtabs.Activateable2; +import org.olat.core.id.OLATResourceable; +import org.olat.core.id.context.ContextEntry; +import org.olat.core.id.context.StateEntry; +import org.olat.core.util.resource.OresHelper; import org.olat.repository.RepositoryEntry; import org.olat.repository.model.RepositoryEntrySecurity; import org.olat.repository.ui.RepositoryEntryRuntimeController; @@ -70,10 +77,23 @@ public class VideoRuntimeController extends RepositoryEntryRuntimeController { } } + @Override + public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { + entries = removeRepositoryEntry(entries); + if(entries != null && entries.size() > 0) { + String type = entries.get(0).getOLATResourceable().getResourceableTypeName(); + if("settings".equalsIgnoreCase(type)) { + entries = entries.subList(1, entries.size()); + doSettings(ureq).activate(ureq, entries, null); + } + } + super.activate(ureq, entries, state); + } + @Override protected void event(UserRequest ureq, Component source, Event event) { if(settingsLink == source){ - doSettingsconfig(ureq); + doSettings(ureq); } else if (source == changeVideoLink) { doReplaceVideo(ureq); } else { @@ -95,15 +115,17 @@ public class VideoRuntimeController extends RepositoryEntryRuntimeController { setActiveTool(changeVideoLink); } - private void doSettingsconfig(UserRequest ureq) { - if (settingsCtr != null) { - removeAsListenerAndDispose(settingsCtr); - } + private Activateable2 doSettings(UserRequest ureq) { + removeAsListenerAndDispose(settingsCtr); + RepositoryEntry entry = getRepositoryEntry(); - VideoSettingsController configCtrl = new VideoSettingsController(ureq, getWindowControl(), entry); + OLATResourceable ores = OresHelper.createOLATResourceableType("settings"); + WindowControl swControl = addToHistory(ureq, ores, null); + VideoSettingsController configCtrl = new VideoSettingsController(ureq, swControl, entry); listenTo(configCtrl); settingsCtr = pushController(ureq, translate("tab.video.settings"), configCtrl); setActiveTool(settingsLink); + return settingsCtr; } private void doRefreshVideoPosterIfEntryAdmin() { @@ -112,5 +134,4 @@ public class VideoRuntimeController extends RepositoryEntryRuntimeController { videoDisplayCtr.reloadVideoPoster(); } } - } \ No newline at end of file diff --git a/src/main/java/org/olat/modules/video/ui/VideoSettingsController.java b/src/main/java/org/olat/modules/video/ui/VideoSettingsController.java index b0c08c02fe9..6f0967e0693 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoSettingsController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoSettingsController.java @@ -19,6 +19,8 @@ */ package org.olat.modules.video.ui; +import java.util.List; + import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.link.Link; @@ -30,6 +32,11 @@ import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; +import org.olat.core.gui.control.generic.dtabs.Activateable2; +import org.olat.core.id.OLATResourceable; +import org.olat.core.id.context.ContextEntry; +import org.olat.core.id.context.StateEntry; +import org.olat.core.util.resource.OresHelper; import org.olat.repository.RepositoryEntry; /** @@ -37,7 +44,7 @@ import org.olat.repository.RepositoryEntry; * @author dfurrer, dirk.furrer@frentix.com, http://www.frentix.com * */ -public class VideoSettingsController extends BasicController { +public class VideoSettingsController extends BasicController implements Activateable2 { private RepositoryEntry entry; @@ -52,8 +59,6 @@ public class VideoSettingsController extends BasicController { private final VelocityContainer mainVC; private final SegmentViewComponent segmentView; - - public VideoSettingsController(UserRequest ureq, WindowControl wControl, RepositoryEntry entry ) { super(ureq, wControl); @@ -74,9 +79,35 @@ public class VideoSettingsController extends BasicController { segmentView.addSegment(qualityConfig, false); doOpenMetaDataConfig(ureq); - putInitialPanel(mainVC); + } + + @Override + protected void doDispose() { + // + } + @Override + public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { + if(entries == null || entries.isEmpty()) return; + + String type = entries.get(0).getOLATResourceable().getResourceableTypeName(); + if("metadata".equalsIgnoreCase(type)) { + doOpenMetaDataConfig(ureq); + segmentView.select(metaDataLink); + } else if("poster".equalsIgnoreCase(type)) { + doOpenPosterConfig(ureq); + segmentView.select(posterEditLink); + } else if("tracks".equalsIgnoreCase(type)) { + doOpenTrackConfig(ureq); + segmentView.select(trackEditLink); + } else if("quality".equalsIgnoreCase(type)) { + doOpenQualityConfig(ureq); + segmentView.select(qualityConfig); + } else if("chapters".equalsIgnoreCase(type)) { + doOpenChapterConfig(ureq); + segmentView.select(chapterEditLink); + } } @Override @@ -101,51 +132,61 @@ public class VideoSettingsController extends BasicController { } } - @Override - protected void doDispose() { - // TODO Auto-generated method stub - - } - private void doOpenMetaDataConfig(UserRequest ureq) { if(metaDataController == null) { - metaDataController = new VideoMetaDataEditFormController(ureq, getWindowControl(), entry); + OLATResourceable ores = OresHelper.createOLATResourceableType("metadata"); + WindowControl swControl = addToHistory(ureq, ores, null); + metaDataController = new VideoMetaDataEditFormController(ureq, swControl, entry); listenTo(metaDataController); + } else { + addToHistory(ureq, metaDataController); } mainVC.put("segmentCmp", metaDataController.getInitialComponent()); } private void doOpenPosterConfig(UserRequest ureq) { if(posterEditController == null) { - posterEditController = new VideoPosterEditController(ureq, getWindowControl(), entry.getOlatResource()); + OLATResourceable ores = OresHelper.createOLATResourceableType("poster"); + WindowControl swControl = addToHistory(ureq, ores, null); + posterEditController = new VideoPosterEditController(ureq, swControl, entry.getOlatResource()); listenTo(posterEditController); + } else { + addToHistory(ureq, posterEditController); } mainVC.put("segmentCmp", posterEditController.getInitialComponent()); } private void doOpenTrackConfig(UserRequest ureq) { if(trackEditController == null) { - trackEditController = new VideoTrackEditController(ureq, getWindowControl(), entry.getOlatResource()); + OLATResourceable ores = OresHelper.createOLATResourceableType("tracks"); + WindowControl swControl = addToHistory(ureq, ores, null); + trackEditController = new VideoTrackEditController(ureq, swControl, entry.getOlatResource()); listenTo(trackEditController); + } else { + addToHistory(ureq, trackEditController); } mainVC.put("segmentCmp", trackEditController.getInitialComponent()); } private void doOpenQualityConfig(UserRequest ureq) { - if(qualityEditController != null) { - removeAsListenerAndDispose(qualityEditController); - } - qualityEditController = new VideoQualityTableFormController(ureq, getWindowControl(), entry); + removeAsListenerAndDispose(qualityEditController); + + OLATResourceable ores = OresHelper.createOLATResourceableType("quality"); + WindowControl swControl = addToHistory(ureq, ores, null); + qualityEditController = new VideoQualityTableFormController(ureq, swControl, entry); listenTo(qualityEditController); mainVC.put("segmentCmp", qualityEditController.getInitialComponent()); } private void doOpenChapterConfig(UserRequest ureq){ if (chapterEditController == null){ - chapterEditController = new VideoChapterEditController(ureq, getWindowControl(), entry); + OLATResourceable ores = OresHelper.createOLATResourceableType("chapters"); + WindowControl swControl = addToHistory(ureq, ores, null); + chapterEditController = new VideoChapterEditController(ureq, swControl, entry); listenTo(chapterEditController); + } else { + addToHistory(ureq, chapterEditController); } mainVC.put("segmentCmp", chapterEditController.getInitialComponent()); } - -} +} \ No newline at end of file diff --git a/src/main/java/org/olat/modules/video/ui/_content/video_preview.html b/src/main/java/org/olat/modules/video/ui/_content/video_preview.html index b8877c63640..81f73bfb20f 100644 --- a/src/main/java/org/olat/modules/video/ui/_content/video_preview.html +++ b/src/main/java/org/olat/modules/video/ui/_content/video_preview.html @@ -4,7 +4,7 @@ <source type="video/mp4" src="$mediaUrl/$filename" /> </video> - <script defer="defer" type="text/javascript"> + <script type="text/javascript"> // <![CDATA[ ## using jQuery var mediaElementBaseUrl = BPlayer._mediaElementBaseUrl(); diff --git a/src/main/java/org/olat/modules/video/ui/_content/video_run.html b/src/main/java/org/olat/modules/video/ui/_content/video_run.html index c8d0aa3e213..911a97f515d 100644 --- a/src/main/java/org/olat/modules/video/ui/_content/video_run.html +++ b/src/main/java/org/olat/modules/video/ui/_content/video_run.html @@ -22,7 +22,7 @@ </video> - <script defer="defer" type="text/javascript"> + <script type="text/javascript"> // <![CDATA[ ## using jQuery var mediaElementBaseUrl = BPlayer._mediaElementBaseUrl(); @@ -75,7 +75,6 @@ #if($r.isNotNull($currentTimeAt)) player.play(); mediaElement.addEventListener('loadedmetadata', function(e) { - console.log('Start time', ${currentTimeAt}); player.setCurrentTime(${currentTimeAt}); player.pause(); }, false); diff --git a/src/main/java/org/olat/repository/ui/_content/web_content.html b/src/main/java/org/olat/repository/ui/_content/web_content.html index e32edcaece3..9fcc4168223 100644 --- a/src/main/java/org/olat/repository/ui/_content/web_content.html +++ b/src/main/java/org/olat/repository/ui/_content/web_content.html @@ -3,7 +3,7 @@ <img src="$mediaUrl/$filename" /> #elseif($movie) <p><span id="olatFlashMovieViewer1" class="olatFlashMovieViewer" style="display:block;border:solid 1px #000; width:${width}px; height:${height}px;"> - <script defer="defer" type="text/javascript"> + <script type="text/javascript"> // <![CDATA[ BPlayer.insertPlayer('$mediaUrl/$filename','olatFlashMovieViewer1',$width,$height,0,0,'video',undefined,false,true,false); // ]]> -- GitLab