diff --git a/src/main/java/org/olat/modules/video/VideoManager.java b/src/main/java/org/olat/modules/video/VideoManager.java index 70b8124218b89b76c0c2f51b83603291fb6e9f11..1f50f82fe7b20154a956cacd370471d1eef7790b 100644 --- a/src/main/java/org/olat/modules/video/VideoManager.java +++ b/src/main/java/org/olat/modules/video/VideoManager.java @@ -45,6 +45,9 @@ import org.olat.resource.OLATResource; */ public interface VideoManager { + public static final String FILETYPE_SRT = "srt"; + public static final String DOT = "." ; + /** * Checks for video file. * diff --git a/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java b/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java index 28d716d331bdb941e33f368a739c93495e1941d2..92f4850e4fc1f30020febcc328582cab5397af81 100644 --- a/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java +++ b/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java @@ -105,14 +105,13 @@ public class VideoManagerImpl implements VideoManager { protected static final String DIRNAME_REPOENTRY = "repoentry"; public static final String FILETYPE_MP4 = "mp4"; private static final String FILETYPE_JPG = "jpg"; - private static final String FILETYPE_SRT = "srt"; private static final String FILENAME_POSTER_JPG = "poster.jpg"; private static final String FILENAME_VIDEO_MP4 = "video.mp4"; private static final String FILENAME_CHAPTERS_VTT = "chapters.vtt"; private static final String FILENAME_VIDEO_METADATA_XML = "video_metadata.xml"; private static final String DIRNAME_MASTER = "master"; public static final String TRACK = "track_"; - public static final String DOT = "." ; + private static final SimpleDateFormat displayDateFormat = new SimpleDateFormat("HH:mm:ss"); private static final SimpleDateFormat vttDateFormat = new SimpleDateFormat("HH:mm:ss.SSS"); diff --git a/src/main/java/org/olat/modules/video/manager/VideoTranscodingDAO.java b/src/main/java/org/olat/modules/video/manager/VideoTranscodingDAO.java index 8c84631017674b746785bf93bd559e69461b955c..cc8ce11585f4d36c07998c22cbbffff121aaa2bd 100644 --- a/src/main/java/org/olat/modules/video/manager/VideoTranscodingDAO.java +++ b/src/main/java/org/olat/modules/video/manager/VideoTranscodingDAO.java @@ -26,7 +26,6 @@ import java.util.List; import javax.persistence.EntityNotFoundException; import org.olat.core.commons.persistence.DB; -import org.olat.modules.video.VideoManager; import org.olat.modules.video.VideoTranscoding; import org.olat.modules.video.model.TranscodingCount; import org.olat.modules.video.model.VideoTranscodingImpl; @@ -47,8 +46,6 @@ public class VideoTranscodingDAO { @Autowired private DB dbInstance; - @Autowired - private VideoManager videoManager; /** * Factory method to create and persist new video transcoding objects for a diff --git a/src/main/java/org/olat/modules/video/ui/QualityTableRow.java b/src/main/java/org/olat/modules/video/ui/QualityTableRow.java index c6f0cdb11065143b6a897cc0d864c9fa17474517..b3f7b750c08ee98e49dca7b78c0e1cc47d0348ca 100644 --- a/src/main/java/org/olat/modules/video/ui/QualityTableRow.java +++ b/src/main/java/org/olat/modules/video/ui/QualityTableRow.java @@ -19,7 +19,6 @@ */ package org.olat.modules.video.ui; -import org.olat.core.gui.components.form.flexible.FormUIFactory; import org.olat.core.gui.components.form.flexible.elements.FormLink; /** @@ -37,8 +36,6 @@ public class QualityTableRow { private String format; private FormLink deleteLink; - protected FormUIFactory uifactory = FormUIFactory.getInstance(); - /** * * @param resolution diff --git a/src/main/java/org/olat/modules/video/ui/TrackTableRow.java b/src/main/java/org/olat/modules/video/ui/TrackTableRow.java index a61129732e9fd2bcd4e9572cb889a5876b2b36b7..025d1db6127ab8ea0f9baf85e5e78db28a4caba3 100644 --- a/src/main/java/org/olat/modules/video/ui/TrackTableRow.java +++ b/src/main/java/org/olat/modules/video/ui/TrackTableRow.java @@ -19,7 +19,6 @@ */ package org.olat.modules.video.ui; -import org.olat.core.gui.components.form.flexible.FormUIFactory; import org.olat.core.gui.components.form.flexible.elements.FormLink; import org.olat.core.util.vfs.VFSLeaf; @@ -32,30 +31,25 @@ import org.olat.core.util.vfs.VFSLeaf; */ public class TrackTableRow { - private String language; - private VFSLeaf track; - private FormLink deleteLink; - - protected FormUIFactory uifactory = FormUIFactory.getInstance(); + private final String language; + private final VFSLeaf track; + private final FormLink deleteLink; public TrackTableRow(String language, VFSLeaf track, FormLink deleteLink) { this.language = language; this.track = track; this.deleteLink = deleteLink; - this.deleteLink.setIconLeftCSS("o_icon o_icon-fw o_icon_delete_item"); - } - public VFSLeaf getTrack(){ + public VFSLeaf getTrack() { return track; } - public String getLanguage(){ + public String getLanguage() { return language; } - public FormLink getDeleteLink(){ + public FormLink getDeleteLink() { return deleteLink; } - -} +} \ No newline at end of file diff --git a/src/main/java/org/olat/modules/video/ui/TrackUploadEvent.java b/src/main/java/org/olat/modules/video/ui/TrackUploadEvent.java new file mode 100644 index 0000000000000000000000000000000000000000..5341ffb763a2b195d7a5baec138a9159176a02a5 --- /dev/null +++ b/src/main/java/org/olat/modules/video/ui/TrackUploadEvent.java @@ -0,0 +1,50 @@ +/** + * <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.video.ui; + +import org.olat.core.gui.control.Event; +import org.olat.core.util.vfs.VFSLeaf; + +/** + * + * Initial date: 21 sept. 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class TrackUploadEvent extends Event { + + private static final long serialVersionUID = -2951558903014424854L; + private final String lang; + private final VFSLeaf track; + + public TrackUploadEvent(String lang, VFSLeaf track) { + super("track-upload"); + this.lang = lang; + this.track = track; + } + + public String getLang() { + return lang; + } + + public VFSLeaf getTrack() { + return track; + } +} diff --git a/src/main/java/org/olat/modules/video/ui/TranscodingQueueTableModel.java b/src/main/java/org/olat/modules/video/ui/TranscodingQueueTableModel.java index d2f8cabbdf0b4ad2cdb0f38ad6bce35a2159c0ce..ff347673fb8e120be7d229ec39533e36e46ea5aa 100644 --- a/src/main/java/org/olat/modules/video/ui/TranscodingQueueTableModel.java +++ b/src/main/java/org/olat/modules/video/ui/TranscodingQueueTableModel.java @@ -19,7 +19,6 @@ */ package org.olat.modules.video.ui; -import org.olat.core.gui.components.form.flexible.FormUIFactory; import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiTableDataModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiSortableColumnDef; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; @@ -34,7 +33,6 @@ import org.olat.core.gui.translator.Translator; */ public class TranscodingQueueTableModel extends DefaultFlexiTableDataModel<TranscodingQueueTableRow>{ - protected FormUIFactory uifactory = FormUIFactory.getInstance(); private Translator translator; public TranscodingQueueTableModel(FlexiTableColumnModel columnModel, Translator translator) { super(columnModel); diff --git a/src/main/java/org/olat/modules/video/ui/TranscodingQueueTableRow.java b/src/main/java/org/olat/modules/video/ui/TranscodingQueueTableRow.java index 218bc12be9f4024a8c0bbea43e42cc3f53abfd60..84ca97b8e577e6bee3d7b2c10f80c51bd0d8dae7 100644 --- a/src/main/java/org/olat/modules/video/ui/TranscodingQueueTableRow.java +++ b/src/main/java/org/olat/modules/video/ui/TranscodingQueueTableRow.java @@ -21,7 +21,6 @@ package org.olat.modules.video.ui; import java.util.Date; -import org.olat.core.gui.components.form.flexible.FormUIFactory; import org.olat.core.gui.components.form.flexible.elements.FormLink; /** @@ -42,8 +41,6 @@ public class TranscodingQueueTableRow { private FormLink retranscodeLink; private Object[] failureReason; - protected FormUIFactory uifactory = FormUIFactory.getInstance(); - /** * Instantiates a new transcoding queue table row. diff --git a/src/main/java/org/olat/modules/video/ui/TranscodingTableModel.java b/src/main/java/org/olat/modules/video/ui/TranscodingTableModel.java index d5534291b93abb40aa14f2138db4af953892159d..81f34f0318e63d1641111556fa69b4c775cd51e5 100644 --- a/src/main/java/org/olat/modules/video/ui/TranscodingTableModel.java +++ b/src/main/java/org/olat/modules/video/ui/TranscodingTableModel.java @@ -19,7 +19,6 @@ */ package org.olat.modules.video.ui; -import org.olat.core.gui.components.form.flexible.FormUIFactory; import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiTableDataModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiSortableColumnDef; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; @@ -33,7 +32,6 @@ import org.olat.core.gui.translator.Translator; */ public class TranscodingTableModel extends DefaultFlexiTableDataModel<TranscodingRow>{ - protected FormUIFactory uifactory = FormUIFactory.getInstance(); private Translator translator; public TranscodingTableModel(FlexiTableColumnModel columnModel, Translator translator) { super(columnModel); diff --git a/src/main/java/org/olat/modules/video/ui/VideoQualityTableModel.java b/src/main/java/org/olat/modules/video/ui/VideoQualityTableModel.java index 9c98528d74fa066b85db16b0f797944987091491..639449e9d79f334e12701c26c39d4540fb0b637c 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoQualityTableModel.java +++ b/src/main/java/org/olat/modules/video/ui/VideoQualityTableModel.java @@ -19,7 +19,6 @@ */ package org.olat.modules.video.ui; -import org.olat.core.gui.components.form.flexible.FormUIFactory; import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiTableDataModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiSortableColumnDef; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; @@ -34,7 +33,6 @@ import org.olat.core.gui.translator.Translator; */ public class VideoQualityTableModel extends DefaultFlexiTableDataModel<QualityTableRow>{ - protected FormUIFactory uifactory = FormUIFactory.getInstance(); private Translator translator; public VideoQualityTableModel(FlexiTableColumnModel columnModel, Translator translator) { super(columnModel); diff --git a/src/main/java/org/olat/modules/video/ui/VideoTrackEditController.java b/src/main/java/org/olat/modules/video/ui/VideoTrackEditController.java index 426c69285927e800a203c63f190d106d4b369c19..80035a0dac27ab515cc2ce538c7c80fb6fbed37d 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoTrackEditController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoTrackEditController.java @@ -20,10 +20,9 @@ package org.olat.modules.video.ui; import java.util.ArrayList; -import java.util.HashMap; +import java.util.List; import java.util.Map; -import org.olat.core.commons.modules.bc.FolderEvent; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; @@ -58,11 +57,10 @@ public class VideoTrackEditController extends FormBasicController { private VideoTrackUploadForm trackUploadForm; private CloseableModalController cmc; - private Map<String, TrackTableRow> rows; - + private OLATResource videoResource; + @Autowired private VideoManager videoManager; - private OLATResource videoResource; public VideoTrackEditController(UserRequest ureq, WindowControl wControl, OLATResource videoResource) { super(ureq, wControl, LAYOUT_BAREBONE); @@ -87,78 +85,82 @@ public class VideoTrackEditController extends FormBasicController { columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, TrackTableCols.file.i18nKey(), TrackTableCols.file.ordinal(), true, TrackTableCols.file.name())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(TrackTableCols.language.i18nKey(), TrackTableCols.language.ordinal(), true, TrackTableCols.language.name())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, TrackTableCols.delete.i18nKey(), TrackTableCols.delete.ordinal(),false, TrackTableCols.delete.name())); - tableModel = new VideoTracksTableModel(columnsModel, getTranslator()); + tableModel = new VideoTracksTableModel(columnsModel, getLocale()); tableEl = uifactory.addTableElement(getWindowControl(), "tracks", tableModel, getTranslator(), generalCont); tableEl.setCustomizeColumns(false); Map<String, VFSLeaf> tracks = videoManager.getAllTracks(videoResource); - rows = new HashMap<String,TrackTableRow>(tracks.size()); - if (!tracks.isEmpty()) { - for (Map.Entry<String, VFSLeaf> entry : tracks.entrySet()) { - FormLink delButton = uifactory.addFormLink(entry.getKey(), "deleteTrack", "track.delete", "track.delete", null, Link.BUTTON); - rows.put(entry.getKey(), new TrackTableRow(entry.getKey(), entry.getValue(), delButton)); - - } - tableModel.setObjects(new ArrayList<TrackTableRow>(rows.values())); + List<TrackTableRow> rows = new ArrayList<>(tracks.size()); + for (Map.Entry<String, VFSLeaf> entry : tracks.entrySet()) { + rows.add(forgeRow(entry.getKey(), entry.getValue())); } -// tableEl.setVisible(!videoManager.getAllTracks(videoResource).isEmpty()); - tableEl.setVisible(true); + tableModel.setObjects(rows); tableEl.setEmtpyTableMessageKey("track.notrack"); addButton = uifactory.addFormLink("add.track", generalCont, Link.BUTTON); } - - @Override - protected boolean validateFormLogic(UserRequest ureq) { - - return true; + + private TrackTableRow forgeRow(String language, VFSLeaf track) { + FormLink delButton = uifactory.addFormLink("lang_".concat(language), "deleteTrack", "track.delete", "track.delete", null, Link.LINK); + delButton.setIconLeftCSS("o_icon o_icon-fw o_icon_delete_item"); + TrackTableRow row = new TrackTableRow(language, track, delButton); + delButton.setUserObject(row); + return row; } @Override protected void formOK(UserRequest ureq) { - + // } @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { if (addButton == source) { doAddTrack(ureq); - }else if (source.getComponent() instanceof Link){ - String lang = rows.get(source.getName()).getLanguage(); - videoManager.removeTrack(videoResource, lang); - rows.remove(rows.get(source.getName()).getLanguage()); - tableModel.setObjects(new ArrayList<TrackTableRow>(rows.values())); - tableEl.reset(); + } else if (source instanceof FormLink) { + FormLink link = (FormLink)source; + if("deleteTrack".equals(link.getCmd())) { + TrackTableRow row = (TrackTableRow)link.getUserObject(); + videoManager.removeTrack(videoResource, row.getLanguage()); + List<TrackTableRow> rows = tableModel.getObjects(); + rows.remove(row); + tableModel.setObjects(rows); + tableEl.reset(true, true, true); + } } } @Override public void event(UserRequest ureq, Controller source, Event event) { - if(source == trackUploadForm){ - rows.put(trackUploadForm.getLang(), new TrackTableRow(trackUploadForm.getLang(), (VFSLeaf) ((FolderEvent) event).getItem(), uifactory.addFormLink(trackUploadForm.getLang(),"deleteTrack", "track.delete", "track.delete", null, Link.BUTTON))); - tableModel.setObjects(new ArrayList<TrackTableRow>(rows.values())); - tableEl.reset(); - tableEl.setVisible(true); - tableEl.setEnabled(true); - cmc.deactivate(); - // cleanup - removeAsListenerAndDispose(trackUploadForm); - removeAsListenerAndDispose(cmc); - } else if(event.getCommand() == "CLOSE_MODAL_EVENT"){ + if(source == trackUploadForm) { + if(event instanceof TrackUploadEvent) { + TrackUploadEvent fEvent = (TrackUploadEvent)event; + TrackTableRow row = forgeRow(fEvent.getLang(), fEvent.getTrack()); + List<TrackTableRow> rows = tableModel.getObjects(); + rows.add(row); + tableModel.setObjects(rows); + tableEl.reset(true, true, true); + } cmc.deactivate(); - // cleanup - removeAsListenerAndDispose(trackUploadForm); - removeAsListenerAndDispose(cmc); + cleanUp(); + } else if(cmc == source){ + cleanUp(); } } - + + private void cleanUp() { + removeAsListenerAndDispose(trackUploadForm); + removeAsListenerAndDispose(cmc); + trackUploadForm = null; + cmc = null; + } private void doAddTrack(UserRequest ureq) { trackUploadForm = new VideoTrackUploadForm(ureq, getWindowControl(), videoResource); listenTo(trackUploadForm); + cmc = new CloseableModalController(getWindowControl(), "close", trackUploadForm.getInitialComponent()); listenTo(cmc); cmc.activate(); } - -} +} \ No newline at end of file diff --git a/src/main/java/org/olat/modules/video/ui/VideoTrackUploadForm.java b/src/main/java/org/olat/modules/video/ui/VideoTrackUploadForm.java index 26cbc5529caed726208d54715aaad998d2a91b38..de9d549906d08a5b237f50993b73e525385040ca 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoTrackUploadForm.java +++ b/src/main/java/org/olat/modules/video/ui/VideoTrackUploadForm.java @@ -21,14 +21,10 @@ package org.olat.modules.video.ui; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; import java.util.Locale; -import java.util.Set; import java.util.stream.Collectors; -import org.apache.commons.io.FilenameUtils; -import org.olat.core.commons.modules.bc.FolderEvent; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.FileElement; @@ -36,9 +32,10 @@ import org.olat.core.gui.components.form.flexible.elements.SingleSelection; 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.util.vfs.Quota; import org.olat.core.util.vfs.VFSContainer; +import org.olat.core.util.vfs.VFSLeaf; import org.olat.modules.video.VideoManager; import org.olat.modules.video.manager.VideoManagerImpl; import org.olat.resource.OLATResource; @@ -56,17 +53,11 @@ public class VideoTrackUploadForm extends FormBasicController { private FileElement fileEl; private SingleSelection langsItem; - private long remainingSpace; private VFSContainer mediaContainer; @Autowired private VideoManager videoManager; - private static final Set<String> trackMimeTypes = new HashSet<String>(); - static { - trackMimeTypes.add("text/plain"); - } - public VideoTrackUploadForm(UserRequest ureq, WindowControl wControl, OLATResource videoResource) { super(ureq, wControl); mediaContainer = videoManager.getMasterContainer(videoResource); @@ -75,13 +66,10 @@ public class VideoTrackUploadForm extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - remainingSpace = Quota.UNLIMITED; - List<String> langs = new ArrayList<String>(); - List<String> dispLangs = new ArrayList<String>(); - - + List<String> langs = new ArrayList<>(); + List<String> dispLangs = new ArrayList<>(); for(Locale locale : SimpleDateFormat.getAvailableLocales()){ - if(locale.hashCode()!=0){ + if(locale.hashCode() != 0){ langs.add(locale.getLanguage()); dispLangs.add(locale.getDisplayLanguage(getTranslator().getLocale())); } @@ -90,47 +78,57 @@ public class VideoTrackUploadForm extends FormBasicController { List<String> langsWithoutDup = langs.parallelStream().distinct().collect(Collectors.toList()); List<String> dispLangsWithoutDup = dispLangs.parallelStream().distinct().collect(Collectors.toList()); - langsItem = uifactory.addDropdownSingleselect("track.langs", formLayout, langsWithoutDup.toArray(new String[langsWithoutDup.size()]), dispLangsWithoutDup.toArray(new String[dispLangsWithoutDup.size()]), null); + langsItem = uifactory.addDropdownSingleselect("track.langs", formLayout, + langsWithoutDup.toArray(new String[langsWithoutDup.size()]), + dispLangsWithoutDup.toArray(new String[dispLangsWithoutDup.size()]), null); fileEl = uifactory.addFileElement(getWindowControl(), "track.upload", formLayout); -// fileEl.limitToMimeType(trackMimeTypes, "video.config.track.error.type", null); langsItem.setMandatory(true); FormLayoutContainer buttonGroupLayout = FormLayoutContainer.createButtonLayout("buttonGroupLayout", getTranslator()); formLayout.add(buttonGroupLayout); buttonGroupLayout.setElementCssClass("o_sel_upload_buttons"); + + uifactory.addFormCancelButton("cancel", buttonGroupLayout, ureq, getWindowControl()); uifactory.addFormSubmitButton("track.upload", buttonGroupLayout); } @Override - protected void formOK(UserRequest ureq) { - if ( fileEl.isUploadSuccess()) { - if (remainingSpace != -1) { - if (fileEl.getUploadFile().length() / 1024 > remainingSpace) { - fileEl.setErrorKey("QuotaExceeded", null); - fileEl.getUploadFile().delete(); - return; - } - } else { - String uploadfilename = VideoManagerImpl.TRACK + langsItem.getSelectedKey() + VideoManagerImpl.DOT - + FilenameUtils.getExtension(fileEl.getUploadFileName()); - fileEl.setUploadFileName(uploadfilename); - fireEvent(ureq, new FolderEvent(FolderEvent.UPLOAD_EVENT, fileEl.moveUploadFileTo(mediaContainer))); + protected boolean validateFormLogic(UserRequest ureq) { + boolean allOk = true; + + fileEl.clearError(); + if (fileEl.isUploadSuccess()) { + String filename = fileEl.getUploadFileName(); + if(!filename.endsWith(VideoManager.FILETYPE_SRT)) { + fileEl.setErrorKey("track.upload.error.filetype", null); + allOk &= false; } } else { fileEl.setErrorKey("track.upload.error.nofile", null); + allOk &= false; } + return allOk & super.validateFormLogic(ureq); } - - protected String getLang(){ - return langsItem.getSelectedKey(); + @Override + protected void formOK(UserRequest ureq) { + if (fileEl.isUploadSuccess()) { + String uploadfilename = VideoManagerImpl.TRACK + langsItem.getSelectedKey() + + VideoManager.DOT + VideoManager.FILETYPE_SRT; + fileEl.setUploadFileName(uploadfilename); + VFSLeaf track = fileEl.moveUploadFileTo(mediaContainer); + fireEvent(ureq, new TrackUploadEvent(langsItem.getSelectedKey(), track)); + } } + @Override + protected void formCancelled(UserRequest ureq) { + fireEvent(ureq, Event.CANCELLED_EVENT); + } @Override protected void doDispose() { // nothing to dispose - } } \ No newline at end of file diff --git a/src/main/java/org/olat/modules/video/ui/VideoTracksTableModel.java b/src/main/java/org/olat/modules/video/ui/VideoTracksTableModel.java index b11e79c29193d15636da9814eb442321711c18a1..2a33ec90ade4cb27d770b45eed55cd4d110363f6 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoTracksTableModel.java +++ b/src/main/java/org/olat/modules/video/ui/VideoTracksTableModel.java @@ -21,10 +21,8 @@ package org.olat.modules.video.ui; import java.util.Locale; -import org.olat.core.gui.components.form.flexible.FormUIFactory; import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiTableDataModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; -import org.olat.core.gui.translator.Translator; /** * table-model for to list de available subtitle-tracks in the metadata @@ -35,16 +33,16 @@ import org.olat.core.gui.translator.Translator; */ public class VideoTracksTableModel extends DefaultFlexiTableDataModel<TrackTableRow>{ - protected FormUIFactory uifactory = FormUIFactory.getInstance(); - private Translator translator; - public VideoTracksTableModel(FlexiTableColumnModel columnModel, Translator translator) { + private final Locale locale; + + public VideoTracksTableModel(FlexiTableColumnModel columnModel, Locale locale) { super(columnModel); - this.translator = translator; + this.locale = locale; } @Override public VideoTracksTableModel createCopyWithEmptyList() { - return new VideoTracksTableModel(getTableColumnModel(), translator); + return new VideoTracksTableModel(getTableColumnModel(), locale); } @@ -53,7 +51,7 @@ public class VideoTracksTableModel extends DefaultFlexiTableDataModel<TrackTable TrackTableRow track = getObject(row); switch(TrackTableCols.values()[col]) { case file: return track.getTrack(); - case language: return new Locale(track.getLanguage()).getDisplayLanguage(this.translator.getLocale()); + case language: return new Locale(track.getLanguage()).getDisplayLanguage(locale); case delete: return track.getDeleteLink(); default: return ""; } @@ -74,5 +72,4 @@ public class VideoTracksTableModel extends DefaultFlexiTableDataModel<TrackTable return i18nKey; } } - } \ No newline at end of file diff --git a/src/main/java/org/olat/modules/video/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/video/ui/_i18n/LocalStrings_de.properties index 3b6c48c2d246712c6c6fc503ccd8df8f09fd5cc3..ce4a5405de9ba2dc9a85d5eed496e10d8a1847e7 100644 --- a/src/main/java/org/olat/modules/video/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/video/ui/_i18n/LocalStrings_de.properties @@ -27,7 +27,7 @@ number.transcodings.failed=fehlgeschlagen poster.error.filetype=F\u00FCr Poster Bild werden nur Bilder vom Typ JPG unterst\u00FCtzt. poster.help=Bild vom Typ JPG. Bitte \u00FCberpr\u00FCfen Sie, ob das Poster genau die gleiche Aufl\u00F6sung hat wie das Originalvideo (gleiche H\u00F6he und Breite in Pixel). poster.select=W\u00E4hlen Sie ein Posterbild aus -quality.delete=l\u00F6schen +quality.delete=L\u00F6schen quality.master=Master video quality.resolution.1080=1080p Full-HD quality.resolution.2160=2160p 4K @@ -70,13 +70,14 @@ topnav.video.alt=Bibliothek mit frei verf\u00FCgbaren Lernvideos track.delete=L\u00F6schen track.langs=Sprache track.notrack=F\u00FCr dieses Video wurden noch keine Untertitel hinterlegt. W\u00E4hlen Sie den Button "$\:add.track" um Untertiteldateien hinzuzuf\u00FCgen. -track.table.header.delete=l\u00F6schen +track.table.header.delete=L\u00F6schen track.table.header.file=Datei track.table.header.language=Sprache track.table.label=Untertitel track.upload=Hochladen track.upload.error.nofile=Bitte w\u00E4hlen Sie eine Datei aus. track.upload.error.nolang=Bitte w\u00E4hlen Sie eine Sprache aus dieser Liste aus +track.upload.error.filetype=F\u00FCr Untertitel werden nur Datei vom Typ WebVTT mit dem Endung .srt unterst\u00FCtzt. transcoding.processing=In Bearbeitung transcoding.waiting=In Warteschlange transcoding.error=Stammdatei besch\u00E4digt @@ -109,7 +110,7 @@ video.config.track.error.type=nur *.vtt and *.srt Dateien sind erlaubt video.config.track.table.file=Untertitel Datei video.config.tracks=Verf\u00FCgbare Untertiteldateien video.config.tracks.table.add=hinzuf\u00FCgen -video.config.tracks.table.delete=l\u00F6schen +video.config.tracks.table.delete=L\u00F6schen video.config.tracks.table.lang=Sprache video.config.width=Breite video.contact=Kontakt diff --git a/src/main/java/org/olat/modules/video/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/video/ui/_i18n/LocalStrings_en.properties index c1ce0d95a2568b2ae1d10d5625f46133e7a34cea..9f28e08b33f7db9bba551cd0f916b9033ed9f90c 100644 --- a/src/main/java/org/olat/modules/video/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/video/ui/_i18n/LocalStrings_en.properties @@ -77,6 +77,7 @@ track.table.label=Subtitles track.upload=Upload track.upload.error.nofile=Please select a file. track.upload.error.nolang=Please select a language form the list +track.upload.error.filetype=For subtitles only files of type WebVTT with the ending .srt are supported. transcoding.processing=Processing transcoding.waiting=Queuing transcoding.error=Master file damaged diff --git a/src/main/java/org/olat/modules/video/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/video/ui/_i18n/LocalStrings_fr.properties index d4a06f98b6bd54aa77f3771f0aa5a28f7840086e..3e5abeb9b306c434a481fbcfaebb3e9555061873 100644 --- a/src/main/java/org/olat/modules/video/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/modules/video/ui/_i18n/LocalStrings_fr.properties @@ -78,6 +78,7 @@ track.table.label=Sous-titres track.upload=T\u00E9l\u00E9charger track.upload.error.nofile=Choisissez un fichier s'il vous pla\u00EEt. track.upload.error.nolang=Choisissez une langue de la liste +track.upload.error.filetype=Pour les sous-titres, seuls les fichiers au format WebVTT avec le suffixe .srt sont support\u00E9s. transcoding.error=Master endommag\u00E9 transcoding.inefficient=Qualit\u00E9 m\u00E9diocre transcoding.processing=En cours