{"id":1415,"date":"2026-08-25T13:26:33","date_gmt":"2026-08-25T11:26:33","guid":{"rendered":"https:\/\/support.netucate.net\/?p=1415"},"modified":"2026-08-25T13:26:33","modified_gmt":"2026-08-25T11:26:33","slug":"yulinc-plugin-v3-3-3-ilias-9-release-notes","status":"publish","type":"post","link":"https:\/\/support.netucate.net\/?p=1415","title":{"rendered":"YuLinc Plugin v3.3.3 (ILIAS 9) &#8211; Release Notes"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Sammel-Release: alle \u00c4nderungen seit v2.8.5 (keine Zwischenversion ver\u00f6ffentlicht). Update von v2.8.5 oder einer 3.3.x-Beta wird direkt unterst\u00fctzt, die Datenbank-Aktualisierung l\u00e4uft beim Plugin-Update automatisch.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Neue Funktionen<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Kalender-Integration (v2.9.0)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Jede YuLinc-Session erh\u00e4lt automatisch einen Eintrag im ILIAS-Kalender des \u00fcbergeordneten Kurses bzw. der Gruppe.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Eintrag wird beim Anlegen der Session erstellt, bei \u00c4nderungen (Titel, Startzeit, Dauer) aktualisiert und beim L\u00f6schen des Objekts mit entfernt<\/li>\n\n\n\n<li>Sichtbar in Agenda-, Tages-, Wochen- und Monatsansicht der Kursmitglieder<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Lernfortschritt \/ Anwesenheits-Statistik (v3.0.0)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Das Plugin unterst\u00fctzt jetzt den ILIAS-Lernfortschritt auf Basis der tats\u00e4chlichen Teilnahmezeiten.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Neuer Tab &#8222;Statistik&#8220; am YuLinc-Objekt: pro Teilnehmer erster\/letzter Beitritt, Anzahl Beitritte, Gesamtdauer, Lernfortschritt-Status<\/li>\n\n\n\n<li>Teilnahmedaten werden vom YuLinc-Server abgerufen (manuell im Statistik-Tab oder automatisch per Cron, siehe unten)<\/li>\n\n\n\n<li>Einstellbare Mindest-Teilnahmezeit pro Session: Minuten, die ein Teilnehmer mindestens anwesend sein muss, um als &#8222;Bestanden&#8220; zu gelten (0 = jede Teilnahme z\u00e4hlt)<\/li>\n\n\n\n<li>Status-Abbildung: nicht begonnen \/ in Bearbeitung \/ bestanden; Anbindung an den ILIAS-Lernfortschritt inkl. Ereignis-Weitergabe (z. B. f\u00fcr Vorbedingungen)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Automatische Synchronisation per Cron (v3.0.0)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Zwei neue ILIAS-Cron-Jobs \u00fcbernehmen den Abgleich der Teilnahmedaten:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>&#8222;Abgelaufene Sessions synchronisieren&#8220;<\/strong>\u00a0(Standard: st\u00fcndlich, automatisch aktiv): synchronisiert Sessions, deren geplante Zeit plus Puffer abgelaufen ist. Puffer in der Plugin-Konfiguration einstellbar (0-120 Minuten, Standard 15)<\/li>\n\n\n\n<li><strong>&#8222;Alle Sessions vollst\u00e4ndig synchronisieren&#8220;<\/strong>\u00a0(Standard: alle 3 Stunden, muss vom Administrator bewusst aktiviert werden): durchl\u00e4uft s\u00e4mtliche Sessions sequentiell mit Pause zwischen den API-Aufrufen<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Aufzeichnungen-Tab<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Neuer Tab &#8222;Aufzeichnungen&#8220; am YuLinc-Objekt:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Liste aller Aufzeichnungen der Session mit Datum, Dauer und Dateigr\u00f6\u00dfe<\/li>\n\n\n\n<li>Abspielen und Herunterladen direkt aus ILIAS<\/li>\n\n\n\n<li>L\u00f6schen mit Sicherheitsabfrage<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Rollenbasierte Account-Zuordnung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In der Plugin-Konfiguration kann jeder YuLinc-Account (Konfiguration) auf ausgew\u00e4hlte ILIAS-Rollen eingeschr\u00e4nkt werden. Nur Benutzer mit einer zugeordneten Rolle sehen den Account bei der Session-Anlage; ohne Zuordnung ist der Account f\u00fcr niemanden sichtbar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lizenzierung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Das Plugin wird \u00fcber einen Lizenzschl\u00fcssel in der Plugin-Konfiguration freigeschaltet. Die Premium-Funktionen (Aufzeichnungen, Statistik, Kalender, Lernfortschritt) erfordern eine g\u00fcltige Lizenz; die Basisfunktionen bleiben davon unber\u00fchrt. Die Pr\u00fcfung erfolgt online mit lokalem Zwischenspeicher.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Erweiterte Auswahl der Session-Dauer (v3.3.3)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die w\u00e4hlbare Session-Dauer wurde von maximal 240 Minuten auf bis zu 480 Minuten erweitert (neue Stufen: 75, 105, 135, 165, 210, 270, 300, 360, 420, 480) \u2014 identisch zur Auswahl der ILIAS-10-Version.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kopieren von YuLinc-Objekten (v3.3.3)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die ILIAS-Funktion &#8222;Kopieren&#8220; wird jetzt vollst\u00e4ndig unterst\u00fctzt. Beim Kopieren eines YuLinc-Objekts wird automatisch eine neue, eigenst\u00e4ndige YuLinc-Session mit den Einstellungen der Vorlage angelegt (Startzeit, Dauer, Session-Typ, Lobby, Breakout-R\u00e4ume usw.); der Kopierende wird als Moderator registriert und die lokalen ILIAS-Rollen werden korrekt initialisiert. Bisher entstand beim Kopieren nur ein leeres Objekt ohne eigene Session.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Bugfixes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Objekt-Icon wurde als Pixelrauschen dargestellt<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Problem:<\/strong>&nbsp;Das YuLinc-Icon erschien in der Repository-Ansicht und im Browser-Tab als buntes Pixelrauschen statt als Logo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ursache:<\/strong>&nbsp;Das in&nbsp;<code>icon_xyvc.svg<\/code>&nbsp;eingebettete PNG war in den 3.3.x-Paketen besch\u00e4digt (vier verf\u00e4lschte Zeichen in den Base64-Bilddaten, dadurch fehlerhafte Pr\u00fcfsummen im PNG-Datenstrom).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fix:<\/strong>&nbsp;Bilddaten aus der intakten v2.8.5 wiederhergestellt, beide Icon-Dateien gepr\u00fcft und ersetzt.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Datenbank \/ Update-Hinweise<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Beim Plugin-Update werden die Datenbank-Schritte 6-10 automatisch ausgef\u00fchrt: Spalte\u00a0<code>cal_entry_id<\/code>\u00a0(Kalender), neue Tabelle\u00a0<code>rep_robj_xyvc_att<\/code>\u00a0(Teilnahme-Tracking), Spalten\u00a0<code>min_attendance<\/code>\u00a0und\u00a0<code>assigned_roles<\/code><\/li>\n\n\n\n<li>Neue Datei\u00a0<code>plugin.xml<\/code>\u00a0registriert die beiden Cron-Jobs<\/li>\n\n\n\n<li>Nach dem Kopieren der Plugin-Dateien wie gewohnt:<code>bash cd \/var\/www\/html sudo -u www-data composer dump-autoload sudo -u www-data php setup\/cli.php build-artifacts --yes<\/code>anschlie\u00dfend in ILIAS unter Administration \u2192 Plugins das Update ausf\u00fchren<\/li>\n\n\n\n<li>Cron-Job &#8222;Alle Sessions vollst\u00e4ndig synchronisieren&#8220; bei Bedarf unter Administration \u2192 Allgemeine Einstellungen \u2192 Cron-Jobs aktivieren<\/li>\n\n\n\n<li>Lizenzschl\u00fcssel in der Plugin-Konfiguration hinterlegen, damit die Premium-Funktionen verf\u00fcgbar sind<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Sammel-Release: alle \u00c4nderungen seit v2.8.5 (keine Zwischenversion ver\u00f6ffentlicht). Update von v2.8.5 oder einer 3.3.x-Beta wird&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[28,21,16],"class_list":["post-1415","post","type-post","status-publish","format-standard","hentry","category-lms-integrationen-lti-1-3-und-api","tag-api","tag-gen2","tag-ilias","wpcat-25-id"],"_links":{"self":[{"href":"https:\/\/support.netucate.net\/index.php?rest_route=\/wp\/v2\/posts\/1415","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/support.netucate.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/support.netucate.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/support.netucate.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/support.netucate.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1415"}],"version-history":[{"count":1,"href":"https:\/\/support.netucate.net\/index.php?rest_route=\/wp\/v2\/posts\/1415\/revisions"}],"predecessor-version":[{"id":1416,"href":"https:\/\/support.netucate.net\/index.php?rest_route=\/wp\/v2\/posts\/1415\/revisions\/1416"}],"wp:attachment":[{"href":"https:\/\/support.netucate.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/support.netucate.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1415"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/support.netucate.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}