Skip to content
Snippets Groups Projects
Commit 246bd4c7 authored by srosse's avatar srosse
Browse files

OO-454: implements delete recording (patch + delete only for "admin")

parent b21d4f2c
No related branches found
No related tags found
No related merge requests found
......@@ -120,6 +120,13 @@ public interface OpenMeetingsManager {
public String getRecordingURL(OpenMeetingsRecording recording)
throws OpenMeetingsException;
/**
* Delete a recording
* @param recording
* @return
*/
boolean deleteRecording(OpenMeetingsRecording recording);
/**
* A UUID mapped to the identity is saved in a cache
* @param token
......
......@@ -62,6 +62,8 @@ import org.openmeetings.axis.services.AddRoomWithModerationAndRecordingFlags;
import org.openmeetings.axis.services.AddRoomWithModerationAndRecordingFlagsResponse;
import org.openmeetings.axis.services.CloseRoom;
import org.openmeetings.axis.services.CloseRoomResponse;
import org.openmeetings.axis.services.DeleteFlvRecording;
import org.openmeetings.axis.services.DeleteFlvRecordingResponse;
import org.openmeetings.axis.services.DeleteRoom;
import org.openmeetings.axis.services.DeleteRoomResponse;
import org.openmeetings.axis.services.GetFlvRecordingByRoomId;
......@@ -638,6 +640,22 @@ public class OpenMeetingsManagerImpl implements OpenMeetingsManager, UserDataDel
}
}
@Override
public boolean deleteRecording (OpenMeetingsRecording recording) {
try {
String adminSID = adminLogin();
RoomServiceStub roomWs = getRoomWebService();
DeleteFlvRecording deleteRecordingCl = new DeleteFlvRecording();
deleteRecordingCl.setFlvRecordingId(recording.getRecordingId());
deleteRecordingCl.setSID(adminSID);
DeleteFlvRecordingResponse resp = roomWs.deleteFlvRecording(deleteRecordingCl);
return resp.get_return();
} catch (Exception e) {
log.error("", e);
return false;
}
}
@Override
public List<OpenMeetingsUser> getUsersOf(OpenMeetingsRoom room)
throws OpenMeetingsException {
......
......@@ -55,7 +55,7 @@ public class OpenMeetingsRecordingController extends BasicController {
mainVC = createVelocityContainer("recording");
downloadLink = LinkFactory.createLink("download", mainVC, this);
downloadLink.setTarget("_blanck");
downloadLink.setTarget("_blank");
downloadLink.setCustomEnabledLinkCSS("b_content_download");
try {
......
......@@ -34,6 +34,8 @@ 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.closablewrapper.CloseableModalController;
import org.olat.core.gui.control.generic.modal.DialogBoxController;
import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory;
import org.olat.core.gui.translator.Translator;
import org.olat.modules.openmeetings.manager.OpenMeetingsException;
import org.olat.modules.openmeetings.manager.OpenMeetingsManager;
......@@ -51,11 +53,19 @@ public class OpenMeetingsRecordingsController extends BasicController {
private TableController tableCtr;
private CloseableModalController cmc;
private OpenMeetingsRecordingController recordingController;
private DialogBoxController confirmRemoveRecording;
private final long roomId;
private final OpenMeetingsManager openMeetingsManager;
public OpenMeetingsRecordingsController(UserRequest ureq, WindowControl wControl, long roomId) {
/**
*
* @param ureq
* @param wControl
* @param roomId The room id
* @param admin True the user can delete recordings
*/
public OpenMeetingsRecordingsController(UserRequest ureq, WindowControl wControl, long roomId, boolean admin) {
super(ureq, wControl);
this.roomId = roomId;
......@@ -70,6 +80,9 @@ public class OpenMeetingsRecordingsController extends BasicController {
tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("room.name", OpenMeetingsRecordingsDataModel.Col.name.ordinal(), null, getLocale()));
tableCtr.addColumnDescriptor(new StaticColumnDescriptor("view", "view", translate("view")));
if(admin) {
tableCtr.addColumnDescriptor(new StaticColumnDescriptor("delete", "delete", translate("delete")));
}
tableCtr.setTableDataModel(new OpenMeetingsRecordingsDataModel());
loadModel();
......@@ -105,8 +118,17 @@ public class OpenMeetingsRecordingsController extends BasicController {
OpenMeetingsRecording recording = (OpenMeetingsRecording)tableCtr.getTableDataModel().getObject(row);
if("view".equals(e.getActionId())) {
doView(ureq, recording);
} else if("delete".equals(e.getActionId())) {
String text = getTranslator().translate("recording.remove", new String[]{ recording.getFilename() });
confirmRemoveRecording = activateYesNoDialog(ureq, null, text, confirmRemoveRecording);
confirmRemoveRecording.setUserObject(recording);
}
}
} else if (source == confirmRemoveRecording) {
if (DialogBoxUIFactory.isYesEvent(event)) { // yes case
OpenMeetingsRecording recording = (OpenMeetingsRecording)confirmRemoveRecording.getUserObject();
doDelete(ureq, recording);
}
}
}
......@@ -122,4 +144,9 @@ public class OpenMeetingsRecordingsController extends BasicController {
listenTo(cmc);
cmc.activate();
}
private void doDelete(UserRequest ureq, OpenMeetingsRecording recording) {
openMeetingsManager.deleteRecording(recording);
loadModel();
}
}
......@@ -239,7 +239,7 @@ public class OpenMeetingsRunController extends BasicController {
private void doOpenRecordings(UserRequest ureq) {
cleanupPopups();
recordingsController = new OpenMeetingsRecordingsController(ureq, getWindowControl(), room.getRoomId());
recordingsController = new OpenMeetingsRecordingsController(ureq, getWindowControl(), room.getRoomId(), admin || moderator);
listenTo(recordingsController);
cmc = new CloseableModalController(getWindowControl(), translate("close"), recordingsController.getInitialComponent(), true, translate("recordings"));
......
......@@ -24,9 +24,10 @@ openmeetings.module.enabled=Modul "OpenMeetings"
view=Ansehen
table.empty=Kein Raum wurde nicht gefunden.
recording.name=Name
recording.remove=M\u00F6chten Sie wirklich die Aufzeichnung "{0}" l\u00F6schen?
recordings=Aufzeichnungen
recordings.empty=Dieser Raum hat noch keine Aufzeichnung
rooms.title=Ra\u00FCme
rooms.title=R\u00E4ume
room.closed.explanation=Der Raum ist geschlossen.
room.comment=Beschreibung
room.members=Teilnehmer
......@@ -55,7 +56,7 @@ guest.room=Teilnehmer Informationen
first.name=Vorname
last.name=Nachname
users=Teilnehmer
users.description=Die Teilnehmerliste zeigt die sich aktuell im Raum befindenden Benutzer. Sie knnen die OpenMeetings Sitzung eines einzelnen Benutzer jederzeit beenden.
users.description=Die Teilnehmerliste zeigt die sich aktuell im Raum befindenden Benutzer. Sie k\u00F6nnen die OpenMeetings Sitzung eines einzelnen Benutzer jederzeit beenden.
users.empty=Der Raum ist leer
openolat.externaltype=External type
room.notfound.error=Der Raum wurde nicht gefunden
......
......@@ -77,6 +77,7 @@ openmeetings.module.enabled=Module "OpenMeetings"
view=View
table.empty=No raum has been found.
recording.name=Name
recording.remove=Do you really want to delete recording "{0}"?
recordings=Recordings
recordings.empty=This room hasn't any recordings
rooms.title=Room
......
......@@ -22,6 +22,7 @@ openmeetings.module.enabled=Module "OpenMeetings"
view=Regarder
table.empty=Aucune salle n'a \u00E9t\u00E9 trouv\u00E9e.
recording.name=Nom
recording.remove=Voulez-vous vraiment effacer l'enregistrement "{0}"?
recordings=Enregistrements
recordings.empty=La salle n'a aucun enregistrements disponibles.
rooms.title=Salle
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment