diff --git a/classes/GUI/Abstract/class.xvmpGUI.php b/classes/GUI/Abstract/class.xvmpGUI.php
index 4d26a7f8..ea57a964 100644
--- a/classes/GUI/Abstract/class.xvmpGUI.php
+++ b/classes/GUI/Abstract/class.xvmpGUI.php
@@ -255,6 +255,7 @@ public function buildPlayerContainerDTO(xvmpMedium $medium) : PlayerContainerDTO
$buttons = [];
if (!is_null($this->getObject())) {
$buttons[] = $this->buildPermLinkUI($medium);
+ $buttons[] = $this->buildStreamingLink($medium);
}
if ($medium->isDownloadAllowed()) {
@@ -333,6 +334,40 @@ public function buildPermLinkUI(xvmpMedium $video) : array
];
}
+ /**
+ * @param xvmpMedium $video
+ * @return ILIAS\UI\Component\Component[]
+ */
+ public function buildStreamingLink($video)
+ {
+ $medium = $video->getMedium();
+ if (is_array($medium)){
+ $medium = $medium[0];
+ }
+ // decode url
+ $medium = str_replace('&', '&', $medium);
+ $link_container = '';
+
+ if(ilObjViMPAccess::hasAccessToStreamingLink()){
+ $link_container = '
';
+
+ $copy_js = "";
+ return [
+ $this->dic->ui()->factory()->legacy(
+ ''. $this->pl->txt("perm_readlink"). '
'
+ ),
+ $this->dic->ui()->factory()->legacy($link_container),
+ $this->dic->ui()->factory()->legacy($copy_js)
+ ];
+ }
+ return [];
+ }
+
/**
* ajax
* @throws xvmpException
diff --git a/classes/class.ilObjViMPAccess.php b/classes/class.ilObjViMPAccess.php
index 0bfc2d8a..6b4cccd8 100644
--- a/classes/class.ilObjViMPAccess.php
+++ b/classes/class.ilObjViMPAccess.php
@@ -146,6 +146,19 @@ public static function hasUploadPermission($ref_id = null) : bool
return $ilAccess->checkAccess('rep_robj_xvmp_perm_upload', '', (int) $ref_id);
}
+ /**
+ * @param $ref_id
+ *
+ * @return bool
+ */
+ public static function hasAccessToStreamingLink($ref_id = NULL) {
+ if ($ref_id === NULL) {
+ $ref_id = $_GET['ref_id'];
+ }
+ global $DIC;
+ $ilAccess = $DIC['ilAccess'];
+ return $ilAccess->checkAccess('rep_robj_xvmp_perm_readlink', '',(int)$ref_id);
+ }
/**
* @param string $cmd
* @param string $permission
diff --git a/classes/class.ilObjViMPGUI.php b/classes/class.ilObjViMPGUI.php
index 836579f3..71093589 100644
--- a/classes/class.ilObjViMPGUI.php
+++ b/classes/class.ilObjViMPGUI.php
@@ -202,6 +202,10 @@ public function executeCommand() : void
$this->deleteObject();
break;
}
+ if($cmd == 'count_views') {
+ ilObjViMPGUI::countViews();
+ break;
+ }
parent::executeCommand();
break;
}
@@ -443,6 +447,14 @@ public function getPicture() : void
$key = $_GET['key'];
// TODO: implement picture wrapper, if api action is implemented
}
+ public static function countViews()
+ {
+ $mid = intval(filter_input(INPUT_GET, 'mid'));
+ if($mid && (!ilSession::get('vimp_view') || ilSession::get('vimp_view') != $mid)) {
+ xvmpRequest::addMediumCount($mid);
+ ilSession::set('vimp_view', $mid);
+ }
+ }
public function addUserAutoComplete()
{
diff --git a/classes/class.xvmp.php b/classes/class.xvmp.php
index 87ee3099..206e57b2 100644
--- a/classes/class.xvmp.php
+++ b/classes/class.xvmp.php
@@ -160,24 +160,48 @@ public static function deliverMedium(xvmpMedium $medium)
$medium_url = $medium_url[0];
}
$download_url = $medium_url . '?token=' . xvmp::getToken();
- $extension = pathinfo($medium_url)['extension'];
+ $download_url = $medium->getSource();
+ $extension = pathinfo($download_url)['extension'];
// get filesize
$ch = curl_init($download_url);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_HEADER, true);
- curl_setopt($ch, CURLOPT_NOBODY, true);
- curl_exec($ch);
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
+ curl_setopt($ch, CURLOPT_HEADER, TRUE);
+ //curl_setopt($ch, CURLOPT_NOBODY, TRUE);
+
+ curl_setopt($ch, CURLOPT_COOKIESESSION, true);
+ curl_setopt($ch, CURLOPT_COOKIEFILE, CLIENT_DATA_DIR . "/temp/vimp_cookie.txt");
+
+
+ $response = curl_exec($ch);
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
- curl_close($ch);
-
+
+ $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
+ $headers = substr($response, 0, $header_size);
+ $body = substr($response, $header_size);
+
+ $filename = $medium->getTitle() . '.' . 'mp4'; // Default filename
+ $content_type = 'application/octet-stream'; // Default content type
+ if (preg_match('/content-disposition:.*filename=["\']?([^"\']+)/', $headers, $matches)) {
+ $filename = $matches[1];
+ }
+
+ if (preg_match('/Content-Type:\s*([^\s]+)/i', $headers, $matches)) {
+ $content_type = $matches[1];
+ }
// deliver file
header('Content-Description: File Transfer');
- header('Content-Type: video/' . $extension);
- header('Content-Disposition: attachment; filename="' . $medium->getTitle() . '.' . $extension);
- header('Content-Length: ' . $size);
- readfile($download_url);
- exit;
+ header('Content-Type: ' . $content_type);
+ header('Content-Disposition: attachment; filename="' . $filename);
+ header('Content-Transfer-Encoding: binary');
+ header('Content-Length: ' . strlen($body));
+ header('Cache-Control: post-check=0, pre-check=0, max-age=0');
+ header('Pragma: public');
+ header('Expires: 0');
+
+ echo $body;
+ curl_close($ch);
+
}
/**
diff --git a/lang/ilias_de.lang b/lang/ilias_de.lang
index 1e17fc0b..89f9bb67 100644
--- a/lang/ilias_de.lang
+++ b/lang/ilias_de.lang
@@ -1,32 +1,32 @@
conf_object_title#:#Objektbezeichnung im Magazin
conf_object_title_info#:#Diese Bezeichnung wird beim Erstellen eines neuen Objektes im Magazin verwendet.
conf_api_key#:#API-Key
-conf_api_key_info#:#Ein API-Key kann in VIMP im Backend unter dem Punkt "API-Keys" generiert werden.
+conf_api_key_info#:#Ein API-Key kann in ViMP im Backend unter dem Punkt "API-Keys" generiert werden.
conf_api_user#:#API-Benutzername
-conf_api_user_info#:#Der API-Benutzer muss in VIMP existieren und dort über genügend Rechte verfügen, um neue Videos hochzuladen und beliebige Videos zu editieren und zu löschen.
+conf_api_user_info#:#Der API-Benutzer muss in ViMP existieren und dort über genügend Rechte verfügen, um neue Videos hochzuladen und beliebige Videos zu editieren und zu löschen.
conf_api_password#:#API-Passwort
conf_api_password_info#:#Passwort des obigen Benutzers.
conf_api_url#:#API-URL
conf_api_url_info#:#Basis Adresse der API. Z.B.: https://my-vimp.com/api
conf_user_mapping_ext#:#UserMapping (externe Benutzer)
-conf_user_mapping_ext_info#:#Nach dieser Formel werden die VIMP-Benutzernamen von externen ILIAS-Benutzern zusammengestellt. Folgende Platzhalter können verwendet werden:
{LOGIN}: Benutzername
{EXT_ID}: externe ID des Benutzers
{CLIENT_ID}: Client-ID dieser ILIAS-Installation
+conf_user_mapping_ext_info#:#Nach dieser Formel werden die ViMP-Benutzernamen von externen ILIAS-Benutzern zusammengestellt. Folgende Platzhalter können verwendet werden:
{LOGIN}: Benutzername
{EXT_ID}: externe ID des Benutzers
{CLIENT_ID}: Client-ID dieser ILIAS-Installation
conf_user_mapping_local#:#UserMapping (lokale Benutzer)
-conf_user_mapping_local_info#:#Nach dieser Formel werden die VIMP-Benutzernamen von lokalen ILIAS-Benutzern zusammengestellt. Folgende Platzhalter können verwendet werden:
{LOGIN}: Benutzername
{EXT_ID}: externe ID des Benutzers
{CLIENT_ID}: Client-ID dieser ILIAS-Installation
+conf_user_mapping_local_info#:#Nach dieser Formel werden die ViMP-Benutzernamen von lokalen ILIAS-Benutzern zusammengestellt. Folgende Platzhalter können verwendet werden:
{LOGIN}: Benutzername
{EXT_ID}: externe ID des Benutzers
{CLIENT_ID}: Client-ID dieser ILIAS-Installation
conf_allow_public#:#Videos öffentlich schalten aktivieren
conf_allow_public_info#:#Wenn aktiviert: Benutzer mit dem Recht "Einstellungen bearbeiten" dürfen beim Hochladen eines Videos auswählen, ob das Video den Status "Öffentlich" oder "Versteckt" hat. Ansonsten wird automatisch der Status "Versteckt" gesetzt.
conf_allow_public_upload#:#Recht „Upload“ darf Videos öffentlich schalten
conf_allow_public_upload_info#:#Wenn aktiviert: Benutzer mit dem Recht "Upload" dürfen ebenfalls Videos öffentlich schalten
conf_form_fields#:#Zusätzliche Formular-Felder
-conf_form_fields_info#:#Zusätzliche in VIMP konfigurierte Medienfelder können hier angegeben werden, um diese im Formular zum Hochladen und Bearbeiten eines Videos zur Verfügung zu stellen.
Textfeld 1: Feld-Name
Textfeld 2: Anzeige-Name
Checkbox 1: Pflichtfeld
Checkbox 2: Feld wird beim Hochladeformular automatisch mit dem Benutzernamen gefüllt
Checkbox 3: Beim Video-Player anzeigen
Auswahlfeld: Feldtyp
+conf_form_fields_info#:#Zusätzliche in ViMP konfigurierte Medienfelder können hier angegeben werden, um diese im Formular zum Hochladen und Bearbeiten eines Videos zur Verfügung zu stellen.
Textfeld 1: Feld-Name
Textfeld 2: Anzeige-Name
Checkbox 1: Pflichtfeld
Checkbox 2: Feld wird beim Hochladeformular automatisch mit dem Benutzernamen gefüllt
Checkbox 3: Beim Video-Player anzeigen
Auswahlfeld: Feldtyp
conf_filter_fields#:#Zusätzliche Tabellen-Filter
conf_filter_fields_info#:#Werden die zusätzlichen Medienfelder hier angegeben, stehen Sie anschliessend als Filter in Tabellen zur Verfügung.
Textfeld 1: Feld-Name
Textfeld 2: Anzeige-Name
conf_media_permissions#:#Medienberechtigungen nutzen
conf_media_permissions_info#:#Definiert, ob und welche Medienberechtigungen beim Upload und beim Editieren von Videos gesetzt werden dürfen.
conf_media_permissions_preselected#:#Vorauswahl
conf_media_permissions_preselected_info#:#Angegebene Medienberechtigungen im Upload-Dialog vorauswählen.
-conf_media_permissions_0_info#:#Achtung: Kann zu Fehler führen, falls in VIMP keine Standardmedienrechte aktiv sind (siehe VIMP Backend > Konfiguration > Medien > Medienrecht)
+conf_media_permissions_0_info#:#Achtung: Kann zu Fehler führen, falls in ViMP keine Standardmedienrechte aktiv sind (siehe ViMP Backend > Konfiguration > Medien > Medienrecht)
conf_mapping_priority#:#Priorität Mapping
-conf_mapping_priority_info#:#Definiert, auf welche Art zuerst nach dem Benutzer in VIMP gesucht wird. Wird dabei kein Benutzer gefunden, wird nach dem anderen Feld gesucht. Wird erneut nichts gefunden, wird ein entsprechender Benutzer erstellt.
+conf_mapping_priority_info#:#Definiert, auf welche Art zuerst nach dem Benutzer in ViMP gesucht wird. Wird dabei kein Benutzer gefunden, wird nach dem anderen Feld gesucht. Wird erneut nichts gefunden, wird ein entsprechender Benutzer erstellt.
conf_mapping_priority_0#:#Email
conf_mapping_priority_1#:#User-Mapping (wie oben definiert)
conf_api_settings#:#API
@@ -50,9 +50,9 @@ conf_cache_ttl_token_info#:#Time-To-Live in Sekunden
conf_cache_ttl_config#:#TTL Config
conf_cache_ttl_config_info#:#Time-To-Live in Sekunden
conf_cache#:#Caching
-conf_cache_info#:#Objekte werden zur Verbesserung der Performanz zwischengespeichert. Nach Ablauf der TTL wird ein Objekt aus dem Cache entfernt und neu geladen (bei Eingabe von 0 werden sie nicht automatisch entfernt). Der gesamte Cache kann mithilfe der Schaltfläche oben auf dieser Seite geleert werden. Innerhalb von VIMP-Objekten im Magazin können ausserdem die Videos dieser Objekte aus dem Cache entfernt und neu geladen werden.
+conf_cache_info#:#Objekte werden zur Verbesserung der Performanz zwischengespeichert. Nach Ablauf der TTL wird ein Objekt aus dem Cache entfernt und neu geladen (bei Eingabe von 0 werden sie nicht automatisch entfernt). Der gesamte Cache kann mithilfe der Schaltfläche oben auf dieser Seite geleert werden. Innerhalb von ViMP-Objekten im Magazin können ausserdem die Videos dieser Objekte aus dem Cache entfernt und neu geladen werden.
conf_embed_player#:#Embedded Videoplayer nutzen
-conf_embed_player_info#:#Wenn aktiviert, wird der eingebettete Videoplayer von VIMP genutzt. Wenn der Lernfortschritt für ein Objekt aktiviert ist, wird jedoch dennoch der Plugin-eigene Player verwendet, da der Lernfortschritt mit dem eingebetteten Player nicht gemessen werden kann.
+conf_embed_player_info#:#Wenn aktiviert, wird der eingebettete Videoplayer von ViMP genutzt. Wenn der Lernfortschritt für ein Objekt aktiviert ist, wird jedoch dennoch der Plugin-eigene Player verwendet, da der Lernfortschritt mit dem eingebetteten Player nicht gemessen werden kann.
conf_text#:#Textfeld
conf_checkbox#:#Checkbox
conf_form_field_type_0#:#Textfeld
@@ -60,7 +60,7 @@ conf_form_field_type_1#:#Checkbox
conf_upload_limit#:#Upload Limit (MB)
conf_upload_limit_info#:#Begrenzung der Dateigröße in MB. Geben Sie '0' ein, um keine Begrenzung festzulegen.
conf_disable_verify_peer#:#Peer-Verifizierung deaktivieren
-conf_disable_verify_peer_info#:#Deaktiviert für die Kommunikation mit VIMP die Verifizierung des Zertifikat-Herstellers.
+conf_disable_verify_peer_info#:#Deaktiviert für die Kommunikation mit ViMP die Verifizierung des Zertifikat-Herstellers.
conf_default_publication#:#Voreingestellter Zugriff
conf_default_publication_info#:#Vorauswahl des Feldes "Zugriff" beim Upload
msg_success#:#Änderungen erfolgreich gespeichert.
@@ -110,6 +110,7 @@ flush_video_cache_tooltip#:#Die Videodaten werden in ILIAS zwischengespeichert,
repository_preview#:#Vorschau im Magazin
no_preview#:#Keine Vorschau
perm_upload#:#Upload
+perm_readlink#:#Link zum ViMP-Video
access_denied#:#Zugriff verweigert.
status_legal#:#Transkodierung abgeschlossen
status_converting#:#Transkodierung läuft
@@ -122,10 +123,10 @@ to#:#Bis
category#:#Kategorie
views#:#Aufrufe
save_settings#:#Einstellungen Speichern
-exception_message#:#Es konnte keine Verbindung mit dem VIMP-Server hergestellt werden
+exception_message#:#Es konnte keine Verbindung mit dem ViMP-Server hergestellt werden
not_available#:#Nicht verfügbar
-not_available_description#:#Dieses Video wurde in VIMP nicht gefunden. Möglicherweise wurde es von der Plattform entfernt.
-confirm_delete_text#:#Achtung: Durch diese Aktion wird das Video endgültig in VIMP gelöscht und kann in keinem ILIAS-Objekt mehr verwendet werden. Sind Sie sicher, dass Sie das Video löschen möchten?
+not_available_description#:#Dieses Video wurde in ViMP nicht gefunden. Möglicherweise wurde es von der Plattform entfernt.
+confirm_delete_text#:#Achtung: Durch diese Aktion wird das Video endgültig in ViMP gelöscht und kann in keinem ILIAS-Objekt mehr verwendet werden. Sind Sie sicher, dass Sie das Video löschen möchten?
video_deleted#:#Video erfolgreich gelöscht.
media_permissions#:#Medienberechtigungen
media_permissions_info#:#Öffentliche und Versteckte Videos auf bestimmte Rollen einschränken.
@@ -153,7 +154,7 @@ form_msg_select#:#Bitte wählen Sie eine Datei zum Hochladen aus.
form_msg_not_supported#:#Dateityp nicht unterstützt.
msg_incomplete#:#Einige Felder dieses Formulares sind Pflichtfelder und müssen ausgefüllt werden. Bitte ergänzen Sie diese Felder.
form_incomplete#:#Einige Felder dieses Formulares sind Pflichtfelder und müssen ausgefüllt werden. Bitte ergänzen Sie diese Felder.
-object_title#:#VIMP-Objekt
+object_title#:#ViMP-Objekt
video_title#:#Video-Titel
msg_username_not_found#:#Der Benutzername konnte nicht gefunden werden.
msg_warning_change_owner#:#Achtung: Sie sind im Begriff, den Besitzer eines Ihrer Videos zu ändern. Nach dem Besitzerwechsel können Sie dieses Video nicht mehr bearbeiten. Sind Sie sicher, dass Sie fortfahren möchten?
@@ -162,16 +163,19 @@ msg_no_videos#:#Diesem Objekt wurden noch keine Videos hinzugefügt.
msg_error_login_not_found#:#Es konnte kein Benutzer mit diesem Benutzernamen in ILIAS gefunden werden.
confirmation_new_owner#:#Video Titel: "%s", neuer Besitzer: %s
new_owner#:#Neuer Besitzer
-xvmp_new#:#Neues VIMP-Objekt anlegen
+xvmp_new#:#Neues ViMP-Objekt anlegen
xvmp_add#:#Erstellen
-cat_create_xvmp#:#VIMP Erstellen
-crs_create_xvmp#:#VIMP Erstellen
-fold_create_xvmp#:#VIMP Erstellen
-grp_create_xvmp#:#VIMP Erstellen
-root_create_xvmp#:#VIMP Erstellen
-xvmp_visible#:#Anzeigen: VIMP ist sichtbar
+cat_create_xvmp#:#ViMP Erstellen
+crs_create_xvmp#:#ViMP Erstellen
+fold_create_xvmp#:#ViMP Erstellen
+grp_create_xvmp#:#ViMP Erstellen
+root_create_xvmp#:#ViMP Erstellen
+xvmp_visible#:#Anzeigen: ViMP ist sichtbar
xvmp_read#:#Lesezugriff: Videos können angezeigt werden
xvmp_rep_robj_xvmp_perm_upload#:#Upload: Videos können hochgeladen werden
+xvmp_rep_robj_xvmp_perm_readlink#:#Link zum Video kann angezeigt und kopiert werden
+xvmp_edit_learning_progress#:#Lernfortschrittseinstellungen bearbeiten
+xvmp_read_learning_progress#:#Lernfortschritt von anderen Benutzern einsehen
xvmp_write#:#Einstellungen bearbeiten: Einstellungen und Inhalte können bearbeitet werden
xvmp_delete#:#Löschen: Objekt kann gelöscht werden
xvmp_edit_permission#:#Rechteeinstellungen ändern: Rechteeinstellungen ändern
@@ -210,7 +214,5 @@ availability_between_short#:#%s - %s
availability_from_short#:#%s
availability_to_short#:#Bis %s
available#:#Verfügbar
-obj_xvmp#:#VIMP
-objs_xvmp#:#VIMP
-change_owner#:#Besitzer ändern
-auto_subtitle#:#Automatische Untertitel generieren
Bei Nutzung dieser Funktion erfolgt eine Übertragung
der Tonspur an den externen Dienst "Amberscript".
Bitte beachten Sie die dazugehörige
Datenschutzerklärung
+obj_xvmp#:#ViMP
+objs_xvmp#:#ViMP
\ No newline at end of file
diff --git a/lang/ilias_en.lang b/lang/ilias_en.lang
index c149454b..285810ed 100644
--- a/lang/ilias_en.lang
+++ b/lang/ilias_en.lang
@@ -1,30 +1,30 @@
conf_object_title#:#Object Title in Repository
conf_object_title_info#:#This term will be used when creating a new object in the repository.
conf_api_key#:#API Key
-conf_api_key_info#:#An API key can be generated in the VIMP backend configuration.
+conf_api_key_info#:#An API key can be generated in the ViMP backend configuration.
conf_api_user#:#API User
-conf_api_user_info#:#The API user must exist in VIMP and must be authorized to upload, edit and delete videos.
+conf_api_user_info#:#The API user must exist in ViMP and must be authorized to upload, edit and delete videos.
conf_api_password#:#API Password
conf_api_password_info#:#Password of the above user.
conf_api_url#:#API URL
-conf_api_url_info#:#Base URL of the VIMP API. E.g.: https://my-vimp.com/api
+conf_api_url_info#:#Base URL of the ViMP API. E.g.: https://my-vimp.com/api
conf_user_mapping_ext#:#User Mapping (external users)
-conf_user_mapping_ext_info#:#The formula, with which the VIMP logins of external ILIAS users are composed. The following placeholders can be used:
{LOGIN}: username
{EXT_ID}: external ID
{CLIENT_ID}: client ID of this ILIAS platform
+conf_user_mapping_ext_info#:#The formula, with which the ViMP logins of external ILIAS users are composed. The following placeholders can be used:
{LOGIN}: username
{EXT_ID}: external ID
{CLIENT_ID}: client ID of this ILIAS platform
conf_user_mapping_local#:#User Mapping (local users)
-conf_user_mapping_local_info#:#The formula, with which the VIMP logins of local ILIAS users are composed. The following placeholders can be used:
{LOGIN}: username
{EXT_ID}: external ID
{CLIENT_ID}: client ID of this ILIAS platform
+conf_user_mapping_local_info#:#The formula, with which the ViMP logins of local ILIAS users are composed. The following placeholders can be used:
{LOGIN}: username
{EXT_ID}: external ID
{CLIENT_ID}: client ID of this ILIAS platform
conf_allow_public#:#Allow setting videos public
conf_allow_public_info#:#Defines if users with the permission "Edit Settings" are authorized to set uploaded videos "Public". If deactivated, videos uploaded are always set "Hidden".
conf_allow_public_upload#:#Permission „Upload“ can set Videos public
conf_allow_public_upload_info#:#Defines if users with the permission "Upload" are authorized to set uploaded videos "Public". If deactivated, videos uploaded by such users are always set "Hidden".
conf_form_fields#:#Additional Form Fields
-conf_form_fields_info#:#Additional in VIMP defined media fields can be configured here and will thereby be available in the form for editing and uploading videos.
Textfield 1: Field name
Textfield 2: Display name
Checkbox 1: Required
Checkbox 2: Fill field automatically with username
Checkbox 3: Show below video player
Selection: Field Type
+conf_form_fields_info#:#Additional in ViMP defined media fields can be configured here and will thereby be available in the form for editing and uploading videos.
Textfield 1: Field name
Textfield 2: Display name
Checkbox 1: Required
Checkbox 2: Fill field automatically with username
Checkbox 3: Show below video player
Selection: Field Type
conf_filter_fields#:#Additional Table Filters
conf_filter_fields_info#:#The additional media fields can be configured here to make them available as filters in tables.
Textfield 1: Field name
Textfield 2: Display name
conf_media_permissions#:#Use Media Permissions
conf_media_permissions_info#:#Defines if and which media permissions can be set when uploading or editing a video.
conf_media_permissions_preselected#:#Preselection
conf_media_permissions_preselected_info#:#Preselect these permissions in the upload dialog.
-conf_media_permissions_0_info#:#Warning: can lead to errors if no default media permissions are selected in VIMP (see VIMP Backend > Configuration > Media > Media Permission)
+conf_media_permissions_0_info#:#Warning: can lead to errors if no default media permissions are selected in ViMP (see ViMP Backend > Configuration > Media > Media Permission)
conf_mapping_priority#:#Mapping Priority
conf_mapping_priority_info#:#Defines which way the plugin tries to find a user first. If no user is found this way, the plugin will search for the other field. If again nothing is found, a user will be created.
conf_mapping_priority_0#:#Email
@@ -50,9 +50,9 @@ conf_cache_ttl_token_info#:#Time-To-Live in seconds
conf_cache_ttl_config#:#TTL Config
conf_cache_ttl_config_info#:#Time-To-Live in seconds
conf_cache#:#Caching
-conf_cache_info#:#Objects are cached to improve performance. After the TTL of an object is expired, it will be removed and reloaded (if TTL = 0, the object will not be removed automatically). Flush the whole cache with the button on top of this form or flush only the video cache inside a VIMP Object.
+conf_cache_info#:#Objects are cached to improve performance. After the TTL of an object is expired, it will be removed and reloaded (if TTL = 0, the object will not be removed automatically). Flush the whole cache with the button on top of this form or flush only the video cache inside a ViMP Object.
conf_embed_player#:#Embedded Video Player
-conf_embed_player_info#:#Use VIMP's embedded video player. If the learning progress is active, the plugin will still use it's own player, since the learning progress can not be tracked with the embedded player.
+conf_embed_player_info#:#Use ViMP's embedded video player. If the learning progress is active, the plugin will still use it's own player, since the learning progress can not be tracked with the embedded player.
conf_text#:#Text Field
conf_checkbox#:#Checkbox
conf_form_field_type_0#:#Text Field
@@ -60,7 +60,7 @@ conf_form_field_type_1#:#Checkbox
conf_upload_limit#:#Upload Limit (MB)
conf_upload_limit_info#:#Limit for the uploaded filesize in MB. Enter '0' for no limit.
conf_disable_verify_peer#:#Disable Peer Verification
-conf_disable_verify_peer_info#:#Deactivates the verification of the SSL certificate owner when communicating with the VIMP server.
+conf_disable_verify_peer_info#:#Deactivates the verification of the SSL certificate owner when communicating with the ViMP server.
conf_default_publication#:#Default access
conf_default_publication_info#:#Select default access of videos during upload
msg_success#:#Changes saved successfully.
@@ -110,6 +110,7 @@ flush_video_cache_tooltip#:#The video data is saved temporarily in ILIAS to allo
repository_preview#:#Repository Preview
no_preview#:#No Preview
perm_upload#:#Upload
+perm_readlink#:#Link to the Video at the ViMP Server
access_denied#:#Permission denied.
status_legal#:#Transcoded successfully
status_converting#:#Transcoding
@@ -122,10 +123,10 @@ to#:#To
category#:#Category
views#:#Views
save_settings#:#Save Settings
-exception_message#:#A connection with the VIMP server could not be established
+exception_message#:#A connection with the ViMP server could not be established
not_available#:#Not Available
-not_available_description#:#This video was not found in VIMP, it may have been deleted from the platform.
-confirm_delete_text#:#Warning: this action will delete the video in VIMP and make the video unavailable in every ILIAS object using it. Are you sure that you want to delete this video?
+not_available_description#:#This video was not found in ViMP, it may have been deleted from the platform.
+confirm_delete_text#:#Warning: this action will delete the video in ViMP and make the video unavailable in every ILIAS object using it. Are you sure that you want to delete this video?
video_deleted#:#Video deleted successfully.
media_permissions#:#Media Permissions
media_permissions_info#:#Restrict public and hidden videos to certain roles.
@@ -153,7 +154,7 @@ form_msg_select#:#Please choose a file to upload.
form_msg_not_supported#:#File type not supported.
form_incomplete#:#Some of this forms fields are mandatory and need to be filled out. Please complete these fields.
msg_incomplete#:#Some of this forms fields are mandatory and need to be filled out. Please complete these fields.
-object_title#:#VIMP-Object
+object_title#:#ViMP-Object
video_title#:#Video Title
msg_username_not_found#:#The username could not be found.
msg_warning_change_owner#:#Warning: You are changing the owner of one of your videos. After this action you are not able to edit this video anymore. Do you want to continue?
@@ -162,18 +163,21 @@ msg_no_videos#:#There are currently no videos in this object.
msg_error_login_not_found#:#No user with the given username could be found in ILIAS.
confirmation_new_owner#:#Video title: "%s", new owner: %s
new_owner#:#New Owner
-xvmp_new#:#Create new VIMP object
+xvmp_new#:#Create new ViMP object
xvmp_add#:#Create
-cat_create_xvmp#:#Create VIMP
-crs_create_xvmp#:#Create VIMP
-fold_create_xvmp#:#Create VIMP
-grp_create_xvmp#:#Create VIMP
-root_create_xvmp#:#Create VIMP
-xvmp_visible#:#Visible: VIMP is visible
+cat_create_xvmp#:#Create ViMP
+crs_create_xvmp#:#Create ViMP
+fold_create_xvmp#:#Create ViMP
+grp_create_xvmp#:#Create ViMP
+root_create_xvmp#:#Create ViMP
+xvmp_visible#:#Visible: ViMP is visible
xvmp_read#:#Read: User can watch the videos
xvmp_rep_robj_xvmp_perm_upload#:#Upload: User can upload videos
-xvmp_write#:#Edit Settings: User can edit content and settings of VIMP object
-xvmp_delete#:#Delete: User can delete VIMP object
+xvmp_rep_robj_xvmp_perm_readlink#:#User can view and copy the link to the video
+xvmp_edit_learning_progress#:#User can edit learning progress settings
+xvmp_read_learning_progress#:#View Learning Progress of Subordinate Users
+xvmp_write#:#Edit Settings: User can edit content and settings of ViMP object
+xvmp_delete#:#Delete: User can delete ViMP object
xvmp_edit_permission#:#Change Permissions: User can change permission settings
form_title_change_owner#:#Search User
search#:#Search
@@ -210,7 +214,5 @@ availability_between_short#:#%s - %s
availability_from_short#:#%s
availability_to_short#:#Until %s
available#:#Available
-obj_xvmp#:#VIMP
-objs_xvmp#:#VIMP
-change_owner#:#Change Owner
-auto_subtitle#:#Automatic subtitle creation
Using this functionality results in a transfer of the
audio track to the third-party service Amberscript.
Please note the corresponding
privacy policy.
+obj_xvmp#:#ViMP
+objs_xvmp#:#ViMP
\ No newline at end of file
diff --git a/sql/dbupdate.php b/sql/dbupdate.php
index 772422d0..633441c9 100644
--- a/sql/dbupdate.php
+++ b/sql/dbupdate.php
@@ -125,4 +125,17 @@
xvmpConf::set(xvmpConf::F_FORM_FIELDS, $form_fields);
}
}
+?>
+<#11>
+
\ No newline at end of file
diff --git a/src/UIComponents/Player/VideoPlayer.php b/src/UIComponents/Player/VideoPlayer.php
index 837eaa62..d44fb056 100644
--- a/src/UIComponents/Player/VideoPlayer.php
+++ b/src/UIComponents/Player/VideoPlayer.php
@@ -115,12 +115,7 @@ public static function loadVideoJSAndCSS($load_observer)
*/
public function getHTML(): string
{
- if (xvmp::ViMPVersionGreaterEquals('4.4.0')
- && $this->increase_view_count
- && !($this->video instanceof xvmpDeletedMedium)) {
- xvmpRequest::addMediumCount($this->video->getMid());
- }
-
+
if ($this->embed) {
$width = $this->options['width'] ?? 0;
$height = $this->options['height'] ?? 0;
@@ -222,6 +217,12 @@ public function getHTML(): string
$videojs_script .= "player.vr();";
}
+ $this->ctrl->setParameterByClass(ilObjViMPGUI::class, 'mid', $this->video->getMid());
+ $link = $this->ctrl->getLinkTargetByClass(ilObjViMPGUI::class, 'count_views', null, true);
+ $count_views_script = "player.on('play', function(){var xhr = new XMLHttpRequest(); xhr.open('GET', '$link', true); " .
+ "xhr.onreadystatechange = () => { if (xhr.readyState === 4 && xhr.status === 200) try { JSON.parse(xhr.responseText); } catch (error) {} }; xhr.send();}) ";
+ $videojs_script .= $count_views_script;
+
$template->setCurrentBlock('script');
$template->setVariable('SCRIPT', 'if (typeof videojs === "undefined") { document.addEventListener("DOMContentLoaded", function() { ' . $videojs_script . ' });} else { ' . $videojs_script . ' }');
$template->parseCurrentBlock();