Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 135-translatable-study-areas
  • ci-opt
  • course-members-export-as-word
  • data-vue-app
  • docblocks-for-magic-methods
  • extensible-sorm-action-parameters
  • http-client-and-factories
  • icon-renewal
  • jsonapi-atomic-operations
  • jsonapi-mvv-routes
  • main
  • pipeline-improvements
  • rector
  • sorm-configuration-trait
  • studip-rector
  • tic-2341
  • vueify-messages
  • webpack-optimizations
18 results

Target

Select target project
  • alexander.vorwerk/studip
  • hochschule-wismar/stud-ip
  • tleilax/studip
  • marcus/studip
  • manschwa/studip
  • eberhardt/studip
  • uol/studip
  • pluta/studip
  • thienel/extern-uni-b
  • studip/studip
  • strohm/studip
  • uni-osnabrueck/studip
  • FloB/studip
  • universit-t-rostock/studip
  • Robinyyy/studip
  • jakob.diel/studip
  • HyperSpeeed/studip
  • ann/studip
  • nod3zer0/stud-ip-siple-saml-php-plugin
  • erik.hillmann/studip
20 results
Select Git revision
  • 1204-oer-vorschlage-von-studierenden-polishing
  • 5.0
  • 5.1
  • 5.2
  • 5.3
  • 5.4
  • 5.5
  • 6.0
  • 805-oer-campus-loschen-von-filtern-nicht-barrierefrei
  • 853-oer-post-upload-dialog-zum-teilen-von-dateien
  • biest-00671-2
  • biest-01110
  • biest-02063
  • biest-02192-and-02196
  • biest-02386
  • biest-02988
  • biest-03109
  • biest-03119
  • biest-03798
  • biest-05112
  • biest-05181
  • biest-05260
  • biest-05480
  • biest-05488
  • biest-1054
  • biest-1171-vue-widget
  • biest-1310
  • biest-1347
  • biest-1844
  • biest-1874
  • biest-1910
  • biest-1917
  • biest-2055
  • biest-2094
  • biest-2131
  • biest-2217
  • biest-236-2
  • biest-2381
  • biest-2553
  • biest-2553-2
  • biest-2652
  • biest-2721
  • biest-2742
  • biest-2748
  • biest-2813
  • biest-2865-2
  • biest-2981
  • biest-3026
  • biest-3095
  • biest-3098
  • biest-3131
  • biest-3427
  • biest-3457
  • biest-3545
  • biest-3568
  • biest-3580
  • biest-3641
  • biest-3641-2
  • biest-3664
  • biest-3665
  • biest-3721
  • biest-3721-2
  • biest-3759
  • biest-3785
  • biest-3894
  • biest-3999-cache-for-sidebar-widget
  • biest-4463
  • biest-4564-2
  • biest-4577
  • biest-4710
  • biest-4760
  • biest-4859
  • biest-5044
  • biest-5149
  • biest-5156
  • biest-5238
  • biest-5342
  • biest-5559
  • biest-5563
  • biest-832-50
  • biest-832-51
  • biest-887-50
  • biest-889
  • biest-cicd-performance
  • cherry-pick-435a68d4
  • courseware-chunk
  • default-stockimages
  • devops-4082
  • devops-5331
  • docs
  • feature/peerreview-6
  • icon-creation
  • issue-2373
  • issue-2388
  • issue-2484
  • issue-2532
  • issue-2664
  • issue-2707
  • issue-2836
  • issue-2924
  • v5.0
  • v5.0.1
  • v5.0.2
  • v5.0.3
  • v5.0.4
  • v5.0.5
  • v5.0.6
  • v5.0.7
  • v5.0.8
  • v5.0.9
  • v5.1
  • v5.1.1
  • v5.1.2
  • v5.1.3
  • v5.1.4
  • v5.1.5
  • v5.1.6
  • v5.1.7
  • v5.1.8
  • v5.1.9
  • v5.2
  • v5.2.1
  • v5.2.2
  • v5.2.3
  • v5.2.4
  • v5.2.5
  • v5.2.6
  • v5.2.7
  • v5.2.8
  • v5.2.9
  • v5.3
  • v5.3.1
  • v5.3.10
  • v5.3.2
  • v5.3.3
  • v5.3.4
  • v5.3.5
  • v5.3.6
  • v5.3.7
  • v5.3.8
  • v5.3.9
  • v5.4
  • v5.4.1
  • v5.4.2
  • v5.4.3
  • v5.4.4
  • v5.4.5
  • v5.4.6
  • v5.4.7
  • v5.5
  • v5.5.1
  • v5.5.2
  • v5.5.3
  • v5.5.4
154 results
Show changes
Commits on Source (403)
Showing
with 718 additions and 122 deletions
# 14.07.2023 v 5.3.1
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.3.1&state=all
- Courseware: Error: `fallbackFocus` did not return a node [#1866]
- Courseware: Sperrhinweis im Abschnittstitel bricht um [#2354]
- OER: Fehler nach "Jetzt für den OER-Campus bereitstellen." [#2590]
- Anfasser in der Courseware im Inhaltsverzeichnis verhalten sich bei längeren Titeln unerwartet [#2618]
- Courseware: Ohne gesetzte Bearbeitungsrechte kann jeder Inhalte in einer VA bearbeiten [#2747]
- Umsortieren von Personal wirft SQL Fehler [#2749]
- Aufgaben-Ansicht in der Courseware [#2752]
- Meldung "Passwort ist zu kurz" beim Ändern des globalen Status [#2755]
- Sortierung in der Ansicht "Aufgaben" in der Courseware [#2756]
- Fehler beim Aufruf von "public/web_migrate.php" [#2765]
- Lernmaterial kopieren unlogische Semesterauswahl [#2770]
- Um ein Lernmaterial zu kopieren darf ich Veranstaltungen auswählen die kein Lernmaterial enthalten [#2771]
- Weitere PHP8-Fehler [#2803]
- OER: Man verliert die Suchergebnisse, wenn man Material anschaut [#2831]
- PHP Warnungen in language.inc.php [#2834]
- PHP8-Warnung in public/sendfile.php [#2835]
- Startseite: Arbeitsplatzwidget kürzt Erklärungstext nicht [#2851]
# 14.07.2023 v 5.2.3
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.2.3&state=all
- Barrierefreiheit: kontrastreiches Farbschema stellt Bilder und Smileys (in Blubber) schwarz dar. [#2536]
- OER: Merkwürdigkeiten beim Dateiupload [#2589]
- MVV: Fehler beim Nachladen der Studiengangsteile unter MVV_Versionen [#2731]
- globale externe Seite vom Typ TemplatePersondetails zeigt keine Personen mehr an [#2741]
- Typo auf Seite Raumverwaltung > Export > Belegungsplan-Seriendruck [#2744]
- OER-Campus: Eintrag für OERSI geht beim Deaktivieren kaputt [#2811]
# 14.07.2023 v 5.1.4
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.1.4&state=all
- Courseware: HTML-Escaping im Inhaltsverzeichnis des PDF-Exports [#2556]
- cli Kommando user:delete wirft unverständliche Fehlermeldung [#2786]
- Fehler in StudipNews::GetNewsByAuthor() wenn SORT_NEW_BY_CHDATE deaktiviert ist [#2789]
- JSONAPI: Unvollständige Informationen zu einer Exception [#2814]
- JSONAPI: Möglichkeit zur Sortierung ist defekt [#2815]
- JSONAPI: Check-Methoden für Query-Parameter geben nicht die konkreten fehlerhaften Felder aus [#2816]
- Ressourcenbaum ist aus der Sidebar verschwunden [#2843]
# 14.07.2023 v 5.0.6
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.0.6&state=all
- Courseware Tabs erhalten keine eindeutige id [#700]
- Fehlerhafte Einträge in mail_queue_entries [#1134]
- Semester lassen sich überschneiden [#1956]
- Courseware: Nach Anlegen einer Seite sollte man auf der Seite landen [#1974]
- Terminkalender: Springen an Termine vor 1970 ist möglich [#2076]
- Courseware: Checkbox im Bestätigungs-Block ist nicht tastaturbedienbar [#2114]
- OER Campus: Bei Entwurf: Zugriff verweigert [#2527]
- Systemeigenschaften eines Raumes sind unveränderbar [#2707]
- PHP - Warnung in members.php [#2711]
- MVV: Drag&Drop von Modulteilen bei 2 Elementen [#2732]
- Installer: Class 'AccessDeniedException' not found [#2734]
- Texte in Datumsfeldern werden abgeschnitten (Firefox) [#2760]
- Verwaltung von Veranstaltungen zeigt immer deutsche Veranstaltungstitel an [#2761]
- Vorlesungsverzeichnis zeigt immer deutsche Veranstaltungstitel an [#2763]
- Liste aller Veranstaltungen der Einrichtung zeigt immer deutsche Veranstaltungstitel an [#2764]
- Ablaufplan: "Thema hinzufügen" fügt den Suchbegriff statt des ausgewählten Themas hinzu [#2784]
- Fehler beim Löschen von Nutzern [#2788]
- Lokalisation klappt auf Mac OS nicht [#2809]
- Startseite: Verschieben von Widgets inkonsistent [#2821]
- Missing template "messages/purge" [#2830]
# 14.06.2023 v 5.3
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.3&state=all
- Teilnehmerseite nutzt nicht SORM [#29]
- StEP00348: Responsive Navigation Stud.IP 5.x [#32]
- Template templates/shared/contentgroup-table.php wird nicht verwendet [#564]
- Fehlender globaler Schalter für das Abschalten von Evaluationen (veranstaltungsunabhängig) [#647]
- Evaluationen mit Fragebögen [#703]
- Neue Courseware Blöcke für Biografie [#730]
- Neuer Courseware-Block: Zeitstrahl [#734]
- Neue HTML-Grundstruktur für Stud.IP [#838]
- OER Post-Upload-Dialog zum Teilen von Dateien [#853]
- StEP00368: Update des CKEditors auf v5 [#914]
- StEP00362: Rechte- und Zugriffsverwaltung für Arbeitsplatz > Lernmaterialien [#919]
- Ladeanimation systemweit vereinheitlichen [#930]
- PHP8: Veranstaltungs-Module für Übersicht und Verwaltung werfen Warnungen [#1016]
- Unterstützung von "LTI Content Item" für Stud.IP als Tool-Provider [#1079]
- Liste der Lehrveranstaltungen eines Nutzers als Widget für die Startseite [#1080]
- CKEditor 5: Toolbar bleibt nicht sticky [#1083]
- Styling des Sidebar-Suchwidgets an das Erscheinungsbild der globalen Suche anpassen [#1103]
- Suchen erzeugen PHP8 Warnungen [#1104]
- PHP8 Warnungen in der Raumverwaltung [#1110]
- Admin-Seiten erzeugen PHP8-Warnungen [#1118]
- Modulverwaltung erzeugt PHP8 Warnings [#1127]
- CKE: CSS verlegen [#1139]
- resource_bookings.repeat_quantity wird nicht mehr verwendet und kann weg [#1142]
- `url_for`/`link_for` ohne Controller-Angabe auf `action_url` (o.ä.) umstellen [#1189]
- Kategorien im Profil auf I18N umstellen [#1260]
- Buchungen eines Termins nur bis zu einem bestimmten Zeitraum vor dem Termin erlauben [#1264]
- Kleinere PHP8-Probleme beheben [#1283]
- Druckfunktionen der Raumverwaltung erweitern [#1311]
- Vollbildmodus: Animation in der Kopfzeile bei jedem Seitenwechsel [#1312]
- Vollbildmodus: Klickbereich in der Navigation zu klein [#1313]
- Vollbildmodus: Anklickbare Elemente haben nur manchmal einen entsprechenden Mauscursor [#1314]
- Vollbildmodus: Verschachtelte fokussierbare Elemente bei "Start" und im Profil [#1315]
- Vollbildmodus: Pfeil bricht bei langen Titel in die folgende Zeile um [#1316]
- Vollbildmodus: Navigationspunkte enthalten die falsche Kurs-ID [#1317]
- Vollbildmodus: Kopfzeile bricht bei langen Veranstaltungstiteln in mehrere Zeilen um [#1319]
- Vollbildmodus: Als Admin aus der Suche angesprungene Kurse haben keine Navigation [#1320]
- Vollbildmodus: Scrolling der Sidebar ist kaputt, wenn sich die Höhe der Sidebar ändert [#1321]
- Vollbildmodus: Sidebar liegt vor der Navigation [#1322]
- Vollbildmodus: Dropdown in der Sidebar ist zu breit (oder die Sidebar zu schmal) [#1323]
- Mobilansicht: leere Sidebar überdeckt die komplette Seite [#1325]
- Mobilansicht: Layout-Probleme nach Umschaltung auf Desktopansicht [#1326]
- Semesterfilter "Aktuelles und nächstes Semester" in der Suche [#1348]
- Bulk-Aktion „Berechtigungen für alle Räume setzen“ in der Gebäudeübersicht hinzufügen [#1351]
- Bulk-Aktion „Berechtigungen für alle Räume setzen“ in der Gebäudeübersicht hinzufügen [#1352]
- Zitatformatierung: Auf kontrastreiche Darstellung anpassen [#1375]
- Skiplinks standardmäßig anschalten und orange Markierung von fokussierten Elementen entfernen [#1388]
- Dateibereich: Anzahl der lesbaren Dateien und Ordner innerhalb eines Ordners in der Dateitabelle anzeigen [#1392]
- Dateibereich: Themen bei Sitzungsordnern anzeigen [#1393]
- Responsive Navigation: Javascript-Fehler auf der Startseite [#1399]
- Vollbildmodus: Feste Scrollbars in der Navigation [#1400]
- Vollbildmodus: Navigationskontext des Kurses nicht erreichbar [#1403]
- Feststehende Bennenung "OER Campus" [#1420]
- Meine Veranstaltungen - zu lange Texte [#1468]
- OER Campus: „Eigenes Lernmaterial hochladen“ umbenennen in „Neues Lernmaterial hochladen“ [#1472]
- Serialisieren von SORM-Objekten schlägt ggf. fehl [#1473]
- CLI Twillo-Generate-Private Key auf die neue Struktur umstellen [#1477]
- Sidebar sollte nach Wahl ein Aktion verschwinden [#1481]
- Less nach SASS überführen [#1482]
- Scrollverhalten der Sidebar im neuen Mobilmodus [#1483]
- Less auf SCCS umstellen [#1488]
- NutzerIn über die Benutzerverwaltung aus Veranstaltungen austragen [#1489]
- DatafieldEntryModel statt SQL nutzen [#1491]
- Funktion zum Abschalten des WYSIWYG-Editors soll nicht mehr im WYSIWYG enthalten sein [#1495]
- CKEditor: Datei mit Übersetzungen wird beim Build gelöscht [#1508]
- CKEditor: Eingabefeld ist zu klein und paßt sich nicht mehr an den Inhalt an [#1509]
- CKEditor: Quellcode-Anzeige geht nicht über die volle Breite und hat keinen Scrollbar [#1511]
- CKEditor: data-editor Attribut funktioniert nicht mehr [#1513]
- CKEditor: einige Icons sind im Quellcode-Modus anklickbar [#1515]
- CKEditor: Tabellen sind beim Bearbeiten immer zentriert [#1518]
- CKEditor: Icons nach dem Update größer als bisher [#1519]
- CKEditor: Eingabehilfe für Smileys ist vorkonfiguriert und nicht deaktivierbar [#1520]
- CKEditor: Vorschau für den Formeleditor fehlt [#1521]
- CKEditor: Probleme mit der "Sonderzeichen" Funktion [#1522]
- CKEditor: Änderung am Courseware-CSS [#1526]
- CKEditor: Eingabefelder zu breit (u.a. im Profil) [#1527]
- CKEditor: Falscher Cursor im Editorbereich [#1528]
- CKEditor: Anordnung der Toolbar in Nachrichten Dialog ist unvorteilhaft [#1539]
- Visuelle Kennzeichnung von barrierefreien Dateien in den Dateibereichen [#1540]
- Less in SCSS migrieren [#1543]
- Less nach SASS migrieren [#1547]
- CKEditor: Formatierung für "Code" verhält sich seltsam [#1553]
- Fehler beim Einbinden von studip-wysiwyg.css [#1560]
- Schlechter Kontrast im Titel des "Bestätigen"-Dialogs [#1562]
- Deprecated-Warnung in der Verwendung von phpCAS [#1573]
- Fehler im SCSS-Compiler [#1574]
- CKEditor: Informationen zur Bedienung nicht mehr da [#1578]
- SQL-Fehler beim Aufruf des Profils [#1579]
- Ansicht- und Sortierungsauswahl für Admin-VA-Filter direkt in einer Veranstaltung [#1583]
- Select2 auch bei select-Elementen mit optgroup automatisch aktivieren [#1592]
- Funktionalität des AccessibleForm-Plugins in den Kern übernehmen [#1596]
- Optimierung der Darstellungsstruktur mehrerer Lernmaterialien in Courseware [#1599]
- StudipTransformFormat und transformBeforeSave als "deprecated" markieren [#1601]
- SCSS Funktionsname verhindert bauen von Stud.IP [#1603]
- Webpack DevServer entfernen [#1608]
- Überspringen rekursiver ILIAS-Objektermittlung wenn keine Modultypen ausgewählt [#1615]
- Aktion „Buchungen mit Kommentaren“ liefert keine Buchungen, wenn man nur eine individuelle Raumgruppe hat [#1624]
- Stud.IP-Logo wird nicht mehr angezeigt [#1633]
- CKEditor: eingefügte Bilder lassen sich von der Größe her nicht verändern. [#1635]
- Fehlermeldung bei Klick auf Verwaltung-Grunddaten [#1638]
- RESTAPI-Routen für die Sprechstunden/Terminvergabe entfernen [#1642]
- Courseware: Anordnen von Blöcken und Abschnitten vereinfachen [#1645]
- Courseware: Umsortieren und Verschieben von Seiten im Inhaltsverzeichnis [#1646]
- PHP-Templates mit DocBlocks erweitern [#1649]
- Konfigurationsschalter MY_COURSES_ALLOW_TILED_DISPLAY entfernen [#1654]
- Virencheck beim Dateiupload [#1658]
- Erweiterung Courseware: Zertifikate, Erinnerungen und Rücksetzen des Fortschritts [#1660]
- Node.js-Version in package.json hochsetzen [#1662]
- webpack-notifier: Benachrichtigung bei Fehlern [#1663]
- Polishing: OER-Vorschläge von Studierenden [#1674]
- Export in der Benutzerverwaltung soll auch Datenfelder enthalten [#1678]
- Weitere Probleme mit PHP8 beheben [#1679]
- CKEditor: Toolbar wird außerhalb des Dialogs angezeigt [#1682]
- Dependency Injection Container zur Verfügung stellen [#1684]
- Umstellung von `lib/classes/Log.php` auf Verwendung eines PSR-3 kompatiblen Loggers [#1686]
- Fatal Error im bootstrap mit PHP 8.1 [#1688]
- CK-Editor: Icongröße und -anordnung [#1690]
- PHP8.1 Warnings [#1691]
- Stundenplan ist defekt [#1693]
- Vue-Dateien auch durch eslint prüfen [#1696]
- Benachrichtigungen sind nicht mehr bedienbar [#1701]
- Studienbereiche in der Veranstaltungsverwaltung defekt [#1702]
- Ankündigungen lassen sich nachträglich nicht bearbeiten [#1704]
- Veranstaltungsübersicht: Datei-Icon hat keinen Titel [#1705]
- Anzeigefehler bei select2 durch Umstellung auf SCSS [#1706]
- CKEditor: Formatierung für "kursiv" wird beim Speichern entfernt [#1712]
- DI-Container in Trails verfügbar machen [#1714]
- Weitere PHP8-Warnings [#1717]
- Sidebar-Suchwidget verwendet einen Link für das Zurücksetzen-Icon statt eines Buttons [#1719]
- Courseware-Suche: Zurücksetzen-Icon ist nicht tastaturbedienbar [#1721]
- Courseware: Aktions-Widget der Sidebar taucht nicht im Skiplink-Menü auf [#1722]
- Veranstaltungen-Widget sagt nicht, dass es Veranstaltungen beinhaltet und seine Elemente sind in der falschen Reihenfolge [#1724]
- Courseware-Block: Galerie [#1742]
- Responsive Navigation hat Probleme mit der Tastaturbedienbarkeit [#1745]
- Neue HTML-Struktur hat Probleme mit der Tastatursteuerung [#1747]
- CKEditor: Toolbar bleibt nur halb sticky [#1749]
- Undefined variable $fullcalendar_studip_urls [#1753]
- Undefined variable $my_bosses [#1754]
- Externe Seiten Undefined variable $config_name [#1756]
- Funktion "zum Seitenanfang scrollen" ist immer sichtbar [#1758]
- Responsive Navigation hat Probleme bei der Benutzung eines Screenreaders [#1759]
- Link Export wird angezeigt, obwohl man keine Berechtigung hat [#1763]
- Weitere PHP8 Warnungen und Fehler [#1764]
- Studienbereichszuordnung funktioniert nicht mehr [#1768]
- PHP Warnungen im Belegungsplan [#1782]
- Polyfill für [autofocus] entfernen [#1784]
- i18n-Erweiterung für die Zusatzangaben [#1791]
- Rollen bei der Zuweisung gruppiert anzeigen [#1793]
- Tests für die Terminvergabe/Sprechstunden schlagen zu gewissen Zeiten fehl [#1794]
- Alternative kleinere Varianten der Editor-Toolbar [#1798]
- Falsche Abstände im Formular zum Versenden einer Nachricht [#1803]
- Barrierefreiheits-Probleme in StEP 703 [#1805]
- Warning: Use of undefined constant schedule_settings - assumed 'schedule_settings' [#1806]
- Weitere PHP8 Fehler / Warnungen beheben [#1807]
- Blubber aktualisiert sich nicht richtig [#1809]
- OER Lernmaterialien werden nicht richtig dargestellt [#1811]
- Neue HTML-Struktur hat Probleme bei der Benutzung mit Screenreadern [#1817]
- Hauptnavigation: Abstände haben sich verschoben [#1823]
- Icons in "Scrollmenü" sind nicht mehr weiß [#1828]
- Polishing TIC: Einheitlicher Anfasser zu Verschieben [#1833]
- Polishing TIC: Neue Icons 5.3 [#1834]
- CKEditor ragt über den Dialog hinaus [#1837]
- Changelog in Markdown umwandeln [#1843]
- Release Notes 5.3 [#1846]
- Zweite Navigationsebene ist unsichtbar [#1850]
- Courseware: Sperre für Abschnitt wird aufgehoben, obwohl er noch bearbeitet wird [#1853]
- Barrierefreiheits-Probleme in StEP #1599 [#1854]
- Polishing für die neue HTML-Stuktur und die responsive Ansicht [#1858]
- Polishing: Hintergrund ist blau (statt weiß) [#1859]
- StEP1646 hat Barrierefreiheits-Probleme [#1863]
- Twillo-Generate-Private speichert im falschen Pfad [#1864]
- Courseware: Embed-Block funktioniert nicht mehr [#1865]
- Blubber: Liste der Konversationen in der Sidebar fehlt [#1867]
- Vergrößerte Darstellung von Bildern (big-image-handler) hat keinen transparenten Hintergrund mehr [#1868]
- Courseware: Fehler beim Speichern eines Blocks [#1869]
- OER Campus: Man kann kein Material mehr hochladen [#1870]
- Polishing für die neue responsive Navigation [#1880]
- Aktueller Seitentitel im Wiki ggf. nicht mehr sichtbar [#1894]
- „Berechtigungen für alle Räume setzen“ lädt bei einem Gebäude ohne Räume die Gebäudeübersicht neu im Dialog [#1895]
- CKEditor: Anpassen der Bildgröße ist immer noch nicht brauchbar [#1898]
- CKEditor: vorhandene Tabellen werden beim Bearbeiten automatisch verändert [#1899]
- Der neue CK-Editor blendet im Dialog eine Scrollbar ein [#1902]
- Nachrichten schreiben - Input verweist auf ein nicht vorhandene ID [#1903]
- Argument 1 passed to AdmissionApplication::addMembers() must be of the type string, null given [#1904]
- Polishing: Responsive/Vollbild: Rückkehr aus dem Vollbildmodus wirft mich in die Notification [#1907]
- Unschöner Umbruch bei vielen Menüeinträgen auf Ebene 2 [#1909]
- Position des Inhaltsverzeichnisses nicht mehr korrekt [#1910]
- Weitere PHP8-Fehler [#1911]
- CSS-Variablen werden mehrfach ausgeliefert [#1912]
- „Barriere melden“ Formular leitet nicht auf die Seite zurück, von der es aufgerufen wurde [#1914]
- Courseware Elemente hinzufügen auf einer neuen Seite im Lesemodus möglich [#1919]
- Nach Anlegen eines regelmäßigen Termins wird dieser nicht direkt angezeigt [#1941]
- Erster Termin eines regelmäßigen Termins wird doppelt angelegt [#1942]
- Regelmäßige Termine werden in der Verwaltungs-Ansicht mehrfach pro Semester angezeigt [#1943]
- Raum-Zeit: Kaputte Darstellung im Dialog [#1951]
- Bug im Fragebogen-Editor erlaubt keine Plugins [#1952]
- Kopfzeile überdeckt die Skiplinks [#1955]
- Kontrastreiches Farbschema für responsive Navigation korrigieren [#1961]
- Blubber: Gelber Menüpfeil klebt rechts am Bildrand [#1962]
- Fragebogen Validierung wird nicht ausgeführt [#1963]
- Courseware: Edit-Modus hängt zu hoch [#1969]
- Evaluationen bleiben angeschaltet [#1979]
- Über tooltipIcon() erstellte Tooltips werden nicht mehr angezeigt [#1984]
- Non-static method CourseMember::getMembers() should not be called statically [#1986]
- Aufgabentext in Vips ist nicht mehr sichtbar [#1987]
- Courseware Inhaltsverzeichnis an falscher Position [#1988]
- I18NString - store not possible, metadata is missing [#1990]
- Courseware Aufgaben lassen sich nicht verlängern [#1991]
- Falsche Nachricht des Companion in der Lernmaterial Übersicht [#1992]
- Sidebar nicht mehr beim Scrollen fixiert [#1994]
- Skiplinks werden beim Laden einer Seite unterhalb des Footers angezeigt [#1999]
- Escape (z.B. zum Verlassen eines Dialogs) schließt den Vollbildmodus [#2001]
- Ankündigung erstellen: Es kann kein Bereich ausgewählt werden [#2002]
- Zertifikatsversand muss für neue Coursewarefunktionen angepasst werden [#2027]
- Too few arguments to function Admin_UserController::delete_studycourse_action(), [#2030]
- Rechteabfrage für Struktur Elemente fehlerhaft [#2033]
- "Zweistufiger" Vollbildmodus [#2037]
- Responsive Navigation: Titel verwendet den Namen des Tools statt den Titel der Navigation [#2038]
- Responsive Navigation: Sidebar ist rechts abgeschnitten (und Scrollbar wird sichtbar) [#2039]
- Responsive Navigation: Sidebar überdeckt in der Courseware Teile der Contentbar [#2040]
- "Willkommen bei Courseware" Buttons verhalten sich nicht wie erwartet [#2045]
- CKEditor: Absätze im Editor sind eingerückt, wenn das Element in einem <label> steckt [#2046]
- Polishing TIC: JSONAPI-Container mit Dependency Injection Container aus #1684 zusammenführen [#2047]
- Courseware: Kopieren in den gleichen Kurs läuft ggf. in eine Rekursion [#2049]
- PHP 8 Fehler im Wiki [#2056]
- CKEditor: Links bekommen immer target="_blank" [#2058]
- PHP 8 Fehler VA-Übersicht [#2059]
- PHP 8 Fehler VA-Forum [#2060]
- Kopfzeile und Hilfe/Fullscreen-Icon scrollen nach rechts aus dem Anzeigebereich heraus [#2061]
- Courseware Import Wording und Position [#2066]
- Warning: Undefined variable $isOpenGraph [#2068]
- Warning: Undefined array key 5 [#2070]
- PHP8: Fehler in der Einrichtungshierachie [#2079]
- Courseware Links in der Suche zeigen nicht auf den gefundenen Inhalt [#2087]
- Anfasser im Inhaltsverzeichnis im Arbeitsplatz verschoben [#2088]
- Polishing: SVG-Icons optimieren [#2090]
- Einige Skiplinks funktionieren in der responsiven Navigation nicht mehr [#2097]
- Courseware: Contentbar ist breiter als der Bildschirm (und läuft nach rechts raus) [#2098]
- Courseware: Umsortieren bietet Seiten an, an denen ich keine Rechte habe [#2099]
- Courseware: Fehler im Arbeitsplatz, wenn es noch kein Lernmaterial gibt [#2100]
- Courseware: Studenten können keine Lernmaterialien mehr anlegen [#2101]
- Freigabe von Seiten wird beim Importieren und Kopieren nicht vererbt [#2102]
- Courseware Einstellungen Funktions- und Kontext-basiert sinnvoll gruppieren und platzieren [#2105]
- Freigegeben Courseware Inhalte nicht auffindbar [#2108]
- Fehlender Hinweistext beim Seiten-Verknüpfen-Wizard [#2111]
- Menü-Items und Stud.IP-Logo verschwinden bei kleinen Fenstern (Überlauf kaputt) [#2112]
- Courseware Vorlagen Auswahl wird nicht weitergegeben [#2118]
- 'Mehr' Seite fehlt mehr in Mobilnavigation [#2124]
- Bei Auswahl von zu kopierenden Lernmaterialien aus Veranstaltungen sind gleichnamige Veranstaltungen nicht unterscheidbar [#2126]
- Lernmaterialauswahl beim Kopieren einer Seite nicht mit Tastatur möglich [#2127]
- Responsive Navigation: Icons in Content-Bar und Kopfzeile haben rechts zu viel Abstand [#2130]
- Responsive Navigation: Animation ist kaputt, Zuklappen des Inhaltsverzeichisses ist zeitverzögert [#2131]
- Kontrastmodus: Courseware-Übersichtsseite Aktionsmenü ist nicht sichtbar. [#2134]
- WYSIWYG: Formular springt beim Umschalten zwischen Standard- und Code-View leicht [#2135]
- OER-Campus: Flyout für Suchfilter ist kaputt [#2137]
- Wiki/Courseware: Inhaltsverzeichnis hängt falsch [#2138]
- Courseware: Companion im Vollbild zu weit rechts [#2139]
- vue-select: Zu kleine Schriftgröße [#2140]
- Ungenutzer import in Unit Model [#2142]
- Fehler bei Migration CreateCwUnitsTable [#2144]
- JS-Fehler auf der Loginseite [#2146]
- Scrollen im Wiki und Arbeitsplatz nicht möglich [#2150]
- Responsive Navigation: Inhaltsverzeichnis an falscher Position [#2151]
- Responsive Navigation: Inhaltsverzeichnis im Wiki zu schmal und nicht bedienbar [#2152]
- Anlegen von Coursewares funktioniert nicht immer [#2153]
- MVV: Hinzufügen von LV-Gruppen läuft auf einen Fehler [#2156]
- Belegungspläne für Externe kaputt [#2160]
- Courseware: Beim Löschen eines Nutzers oder Kurses bleiben CW-Units in der DB zurück [#2161]
- Juristische Probleme mit Barriere-Melden-Formular [#2167]
- Öffentlicher Fragebogen mit "Information" wird falsch angezeigt [#2168]
- Fragebogen mit "Information" auf Startseite kaputt [#2169]
- Warning: Undefined array key 1 in lib/classes/StudipCoreFormat.php on line 476 [#2174]
- PHP8-Warnungen im Forum [#2175]
- PHP8-Warning: Undefined variable $shape [#2180]
- „Buchungen exportieren“ im Aktionsmenü eines Raumes funktioniert mangels Auswahl von Wochentagen nicht [#2181]
- Warning: compact(): Undefined variable $from_plugin [#2185]
- PHP8-Warning in app/controllers/admission/courseset.php [#2190]
- PHP8-Warnung in app/controllers/admission/restricted_courses.php [#2191]
- Weitere PHP8-Warnungen [#2193]
- Nicht lesbare Seiten zeigen keine Fehlermeldung [#2198]
- PHP8-Warning in app/views/profile_modules/index.php [#2203]
- PHP8-Warnung in lib/classes/forms/ [#2204]
- Textstringprobleme in Courseware-Zertifikatsversand [#2206]
- Courseware: Fortschrittsindikator ist nicht immer auf der gleichen Höhe [#2207]
- Fragebögen: Aktionsmenü hat keine Bearbeiten-Aktion [#2208]
- PHP8 - Potentielle Stellen im NewsController, die zu Fehlern/Warnungen führen könnten [#2214]
- PHP8-Warnung in app/views/calendar/schedule/entry.php und der Pluginübersicht [#2215]
- PHP8 Warning app/views/calendar/single/_calhead_label_day.php [#2216]
- Keine Veranstaltungstermine im Kalender [#2218]
- Terminkalender Ansichten Jahr und Tag defekt [#2219]
- Weitere PHP8-Warnungen beim Anlegen einer Veranstaltung [#2222]
- PHP8-Warnungen im Dateibereich [#2226]
- Courseware: Standardschriftart statt Lato im Upload-Button [#2229]
- PHP8-Fehler und Warning auf "Meine Veranstaltungen" [#2232]
- PHP8-Warnungen im Profil [#2233]
- Weitere PHP8-Warnungen [#2235]
- PHP8: Undefined variable $table_id app/views/files/_fileref_tr.php on line 11 [#2237]
- PHP8 - Warnung in app/controllers/admin/courses.php [#2238]
- PHP8 - Warnungen in app/views/admin/courses/sidebar.php [#2239]
- PHP8 - Warnungen in app/controllers/admin/user.php [#2241]
- PHP8 - Warnungen auf Datei- und Aktivitätsübersicht [#2243]
- PHP8 - Warnungen in den Fragebögen [#2244]
- PHP8 - Warnungen / Fehler in den Zugangsberechtigungen einer Veranstaltung [#2245]
- Undefined global variable $perm in lib/plugins/db/RolePersistence.class.php [#2246]
- "Back to top" verdeckt Content [#2247]
- PHP8 - Warnungen auf der TeilnehmerInnen-Seite [#2249]
- PHP8-Fehler aus dem Error-Log des DevBoards [#2250]
- PHP8 - Weitere Fehler / Warnungen innerhalb einer Veranstaltung [#2256]
- Fehler von PHPStan [#2257]
- PHP8 - Warnungen in der Suchen [#2258]
- Courseware Inhaltsverzeichnis funktioniert nach Seitenwechsel nicht mehr [#2259]
- Sequentielle Abfolge zeigt Seiten die noch nicht erreicht werden dürfen [#2260]
- Weitere PHP8-Warnungen aus dem DevBoard [#2261]
- Anfasser im Forum ist nicht vertikal zentriert [#2263]
- Likert-Icon fehlt beim Ausfüllen des Fragebogens [#2264]
- PHP8 - Warnungen beim Bearbeiten der Einrichtungsdaten [#2266]
- PHP8 - Warnungen bei der Konfiguration von Raumgruppen [#2268]
- PHP8-Warnungen aus dem Errorlog [#2269]
- PHP8 - Warnung auf Admin -> Veranstaltungen [#2271]
- PHP8: TypeError: Cannot increment array [#2273]
- PHP8-Warnungen auf dem Errorlog [#2275]
- PHP8 - Warnungen im OER-Marktplatz [#2276]
- PHP8 - Fragebögen lassen sich nicht abspeichern [#2277]
- Zeilenumbrüche verschwinden bei kill_format() bzw. removeHtml() [#2278]
- PHP8 - Warnungen in der Courseware [#2279]
- PHP8 - Warnungen im Anlegeassistenten und Studienbereiche [#2280]
- Courseware: Warning: Undefined array key "sum" [#2281]
- Modulverwaltung: Fach bearbeiten erzeugt ein neues Fach [#2282]
- PHP8 - Warnungen in MyRealmModel [#2283]
- PHP8 - Weitere Warnungen in der Courseware [#2284]
- PHP8 - Warnungen im Datei [#2286]
- PHP8.0 Deprecation Warnings mittels PHPStan [#2287]
- PHP8-Warnungen im Forum [#2288]
- PHP8-Warnungen bzgl. Return Type Hints [#2290]
- PHP8 - Warnungen im Dateibereich [#2291]
- PHP8 - Warnungen in der sendfile.php [#2292]
- PHP8 - Warnungen beim VeranstaltungsExport (PDF) [#2293]
- PHP8 - Warnungen in der Request-Klasse [#2295]
- Ladeanimation zu Groß [#2296]
- PHP8 - Warnungen in TeilnehmerInnen Listen (Anmeldesets) [#2297]
- PHP8 - Warnungen beim Bearbeiten von Einrichtungsdaten [#2299]
- PHP8 - Warnungen in der functions.php [#2302]
- PHP8 - Warnungen in der SiteInfo [#2303]
- PHP8 - Warnungen in der Raumübersicht [#2304]
- PHP8 - Warnungen in der Verwaltung von Lernmodulen [#2306]
- PHP8 - Warnungen in der Administration der HilfeTouren [#2307]
- PHP8 - Warnungen in der Konfiguration der Ilias-Schnittstelle [#2308]
- PHP8 - Warnungen in der Pluginsverwaltung [#2309]
- Outline von Elementen im Content-Bereich ist abgeschnitten [#2312]
- Sidebar erscheint nicht, wenn man zu weit herunter gescrollt hat [#2318]
- Responsive Modus: Keine Titel in der blauen Zeile [#2319]
- Responsive/Blubber: Auf Smartphones nicht zu bedienen [#2321]
- Responsive Navigation: Noch kleine Anpassungen vertikale Ausrichtung [#2323]
- Vollbild: In Courseware fängt der Block-Content zu tief an [#2324]
- Responsive/Vollbild: Die ContenBar sieht teilweise komisch aus und hat Abstand [#2325]
- Auf dem Smartphone darf "Im Vollbildmodus zeigen" generell nicht gezeigt werden [#2329]
- Contentbar: Im Wiki/OER (PHP-Version) ist das Icon oben rechts zu weit links [#2331]
- PHP8 - Warnungen in ResourceRequest [#2334]
- Vollbildmodus: select2 in der Sidebar hat Breite "0px" [#2337]
- Vollbildmodus: select2 in der Sidebar ist abgeschnitten [#2338]
- GUI-Darstellung in der Raumstruktur sieht defekt aus [#2340]
- Raumstruktur hat keine Funktion [#2342]
- Trails betreibt sein Errorhandling in unzureichender Weise [#2346]
- Weitere PHP8-Warnungen [#2351]
- Überarbeitetes Suchwidget: Rand hat noch falsche Farbe [#2353]
- PHP8 - Warnungen wenn Plugins nicht gefunden werden [#2355]
- PHP8 - Warnungen in der Semester-Klasse [#2356]
- Responsive Navigation: markiere aktuell aktive Navigation statt "Ebene nach oben" [#2357]
- PHP8 - Warnungen in Meine Veranstaltungen [#2358]
- Responsive Navigation: Aufklappen der Sidebar erfordert Scrollen an den Seitenanfang [#2360]
- PHP8 - Warnungen in OpenGraphURL [#2361]
- PHP8 - Weitere Warnungen [#2362]
- Responsive Navigation ist in Einrichtungen kaputt [#2363]
- ResourceRequest -Call to a member function first() on null [#2374]
- Courseware: Verknüpfte Inhalte im Kurs nicht sichtbar [#2375]
- Placeholder-Element des jQueryUI-Sortable falsch plaziert [#2378]
- Exception: Call to undefined method Flexi_PhpTemplate::filtered() in app/controllers/jsupdater.php:248 [#2379]
- PHP8 - Diverse weitere Warnungen [#2380]
- PHP8 - Warnungen in der Courseware [#2383]
- Courseware: Verknüpfte Inhalte sind im Kurs bearbeitbar [#2385]
- Aktionsmenü liegt teilweise unter dem Footer [#2389]
- Gewünschtes Verhalten bei horizontalem Scrollen der Seite klären [#2390]
- Template `noheader` bzw. Einstellung `PageLayout::disableHeader()` macht das Layout kaputt [#2394]
- Tests für die Terminvergabe/Sprechstunden schlagen zu gewissen Zeiten immer noch fehl [#2398]
- PHP8: Invalid parameter number: number of bound variables does not match number of tokens [#2400]
- PHP8-Warnings nach dem Abschicken von Nachrichten [#2401]
- Weitere PHP8-Warnungen [#2402]
- Endzeit von Terminen in der Tages- und Wochenansicht falsch [#2404]
- Raum hinzufügen führt zu Endlosschleife [#2405]
- Weitere PHP8-Warnungen in der Cronjobverwaltung [#2407]
- Infotext zu barrierefreien Dateien: Icon als Linkmarker fehlt [#2408]
- CKEditor: LaTeX-Formel geht beim Editieren kaputt [#2418]
- CKEditor: Bildgröße geht verloren [#2419]
- Userexport CSV: freie Datenfelder fehlen [#2420]
- PHP8-Fehler im CourseDate-Model [#2421]
- PHP8-Warning in DBSchemaVersion [#2422]
- neu hinzugefügte Dateien haben falsche Dateiattribute [#2425]
- Stundenplan: ausgeblendete Termine lassen sich nicht wieder anzeigen [#2426]
- Teilnehmende können nicht von Warteliste zu Studierenden hochgestuft werden [#2428]
- Animation zum Ausblenden der Sidebar in der kompakten Navigation ist nicht sauber [#2430]
- Kompakte Navigation: falsche Breite des Inhalts bei eingeblendeter Sidebar [#2432]
- MVV: Neue Modulen können nicht angelegt werden, weil die verantwortliche Einrichtung nicht gespeichert werden kann [#2434]
- Fehlermeldung TypeError: this.initialNavigation is null auf Seiten, die sich nicht in die Navigation einhängen [#2435]
- PHP Warning in CourseNavigation [#2436]
- PHP Warning: Division by zero in lib/classes/JsonApi/Routes/Courseware/UserProgressesOfUnitsShow.php [#2437]
- Person verbleibt auf Warteliste beim Nachrücken in die Veranstaltung [#2441]
- Fragebögen: Auswertung/Ergebnisanzeige ist fehlerhaft [#2442]
- PHP8-Warnungen im Kalender [#2447]
- PHP8 - Warnungen im NewsController [#2449]
- Code-Highlighting geht beim erneuten Bearbeiten kaputt [#2451]
- PHP8 - Warnungen in Admin-User [#2485]
- CKEditor verliert Formatierung [#2495]
- Weitere PHP8-Warnungen [#2496]
- Courseware sticky Contentbar an falscher Position [#2498]
- Courseware TextBlock Toolbar im sticky Modus an falscher Position [#2499]
- Fehler in OERHost::askKnownHosts() [#2508]
- Fragebogen: Likert komplett kaputt [#2509]
- OERSI: Verbindungen werden nicht debugged [#2513]
- Courseware: Code der alten Verwaltungsseite entfernen [#2517]
- OER Campus: Aktualisierung der Serverdaten funktioniert nicht [#2520]
- OER Campus: OERSI Ergebnisse unvollständig [#2521]
- Bug in der Rechtevergabe der Courseware [#2534]
- Verschieben von Lehrenden in den Grunddaten funktioniert nicht [#2540]
- PHP8 - Weitere Warnungen [#2541]
- Undefinierte Variablen im Installer [#2549]
- Installationsassistent ist nicht mehr zentriert [#2550]
- Fatal error: Declaration of JsonApi\Routes\CourseMemberships\CourseMembershipsUpdate::validateResourceDocument($json, CourseMember $membership) must be compatible with JsonApi\Routes\ValidationTrait::validateResourceDocument($json, $data) [#2564]
- PHP8 - Warnungen in statusgroups [#2569]
- PHP8-Warnungen aus dem Errorlog (20230425) [#2579]
- Aufrufen einer abgegebenen Aufgabe in der Courseware (5.3) durch die Dozierende führt nicht direkt zur Aufgabe sondern zur allgemeinen Kachel-Seite [#2584]
- Responsive Navigation: Menü läßt sich nicht mehr öffnen, nachdem ein Dialog geschlossen wurde [#2586]
- CW: Erfolge-Block - Wyswyg-Editor - Redo-Funktion aktiv [#2593]
- PHP8 Warnungen in der MultiPersonSearch [#2597]
- PHP8-Warning [#2606]
- PHP8 Warnungen in der Courseware [#2612]
- PHP8-Warnungen in templates/calendar/entries/icons.php [#2613]
- PHP8 - Warnungen in der Courseware [#2615]
- PHP-Fehler in SingleDate [#2616]
- PHP8 - Warnungen in MetaDate.class.php [#2617]
- Fehler beim importieren gibt keine Hinweise auf Ort/Art des Fehlers [#2619]
- Standard-Uploadgrößen für Dateien verändern [#2623]
- Cronjobs haben keine Titel [#2624]
- PHP8-Warnung in lib/classes/LtiLink.php [#2628]
- Icons in der responsiven Navigation werden nicht mehr vom System umgefärbt [#2629]
- BlockFeedback too much recursion [#2632]
- A11y: Unpassende `role` für `ul#tabs` [#2646]
- Öffentliche Links zu einer Courseware werden nicht erzeugt [#2650]
- OER: PHP8-Warnungen [#2653]
- Barriere melden-Formular wird bei nicht eingeloggtem Benutzer nicht abgeschickt [#2655]
- Barriere melden-Formular lässt sich von Loginmaske aus nicht öffnen [#2664]
- „Barriere melden“ Formular öffnet sich im Dialog [#2665]
- SQL Fehler bei "Teilnehmendenliste importieren" SQLSTATE[42S22]: Column not found: 1054 Unknown column 'auth_user_md5.perms' in 'where clause' [#2704]
- Ankündigungen: Textarea wird nicht angezeigt, wenn WYSIWYG ausgeschaltet ist und in CONTENT_LANGUAGES mehr als eine Sprache eingetragen ist [#2705]
- PHP Warnung in den Raumanfragen [#2712]
- PHP8 BUG bei MVV-Materialien/Dokumente [#2729]
- In einer neuen, leeren Installation können mit PHP 8.0 keine Studienbereiche oder Einträge der Einrichtungshierarchie angelegt werden. [#2733]
# 13.06.2023 v 5.2.2
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.2.2&state=all
- Interne Links gehen beim Kopieren kaputt [#1153]
- Ankündigungen: Suche findet Bereiche, in denen ich keine Rechte habe [#2220]
- Ankündigungen haben keinen Text, wenn kein WYSIWYG-Editor aktiv ist [#2373]
- exTpl: Strings können als callable aufgerufen werden [#2446]
- Call to undefined method MultiPersonSearch::getPageURL() [#2473]
- OAuth2: Erhalten eines AccessToken mittels RefreshToken ist nicht möglich [#2507]
- "Rundmail schreiben" erreicht keine unsichtbaren Teilnehmer mehr [#2511]
- OERSI API-URL hat sich geändert [#2512]
- Materialien von anderen Servern nicht zugreifbar [#2542]
- Export von Veranstaltungen stellt keine Heimateinrichtung dar [#2548]
- OER Campus: Klick auf "Serverdaten aktualisieren" gibt OERSI einen private_key [#2585]
- Dateibereich: „Im OER Campus veröffentlichen“ wird angezeigt, obwohl der OER-Campus erst ab einer höheren Rechtestufe verfügbar ist [#2638]
# 13.06.2023 v 5.1.3
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.1.3&state=all
- Fehler bzw. Exceptions beim Aufruf der JSON-API landen nicht im error_log [#614]
- Courseware Aktivitätsanzeige zeigt falsche Kurszugehörigkeit [#1829]
- Unit-Tests für JSON-API melden in 5.1 immer einen Fehler [#2522]
- Leichen in consultation_responsibilities erzeugen Fehler [#2673]
# 13.06.2023 v 5.0.5
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.0.5&state=all
- Anzeige Personendaten funktioniert nicht für Courseware-Daten [#797]
- SQL-Fehler im Suchfeld beim Import von Wikiseiten [#1243]
- Wiki: HTML-Code in Autor:innenzuordnung und Suche [#1376]
- Ausgeblendeter WYSIWYG-Editor speichert keinen HTML-Marker beim Absenden des Formulars [#1661]
- Polishing: Wiki Footer passt nicht korrekt [#1900]
- Der Text von Tooltip-Icons wird nicht vorgelesen [#1916]
- Hinweis bei leerem Inhaltsverzeichnisblock [#2083]
- Mailweiterleitung Umbruch [#2187]
- Fester Wert für die Paginierung im FilesController [#2294]
- Meine Veranstaltungen: Darstellungsprobleme [#2322]
- Rauminformationen - Unnötiger Whitespace [#2343]
- Nachrichten: Fehler beim Scrollen der Nachrichtenliste [#2364]
- Einrichtungen: Export-Button auf "Mitarbeiter" nicht mehr als solcher zu erkennen [#2370]
- Wording "Nutzer" an diversen Stellen durch "Person" ersetzen [#2391]
- Link mit `data-dialog` wird nicht im dialog geöffnet, wenn required checkboxes existieren [#2392]
- 2FA: Tokens werden nie gelöscht [#2399]
- Dateibereich: Inaktive Aktion Bildergalerie [#2409]
- htaccess-Datei: B-Flag fehlt bei RewriteRule-Einträgen für Download-URLs [#2410]
- Dateibereich: Per Proxy verlinkte Datei kann nicht heruntergeladen werden [#2411]
- Adminseite für Veranstaltungen: Anzeige des Bearbeitungsstatus über ein Icon ist nicht barrierefrei [#2414]
- Veranstaltungs-Adminseite: Bearbeitungs-Status sollte in Hinblick auf Barrierefreiheit optimiert werden [#2416]
- Ankündigungen: Trennlinie des Footer schließt nicht mehr an den Rahmen des Elements an [#2417]
- Migration der Ressourcenverwaltung läßt alte Konfigurationseinstellungen zurück [#2423]
- OER Campus: HTTP_PROXY wird nicht genutzt [#2427]
- Angaben für die Scrollbox im CSS hat doppelte Angabe zur Property background [#2439]
- Die Spalte `description` in einigen Datenbanktabellen verkleinern [#2497]
- Fehlerhafter Zugriff auf `$log_action->name` in Klasse `StudipLog` [#2504]
- WYSIWYG-Editor in Stud.IP 5.2: Funktionen in der unteren Leiste verlieren die Textposition beim Anklicken [#2510]
- Sperrregel für Teilnehmergruppen sperrt Bulkaktion für Teilnehmer aber nicht Einzelaktion [#2515]
- Sperrregel für Ausfalltermine erlaubt Wiederherstellung [#2516]
- OER Campus: Serverübersicht meldet "Kann von dem Server keine Daten bekommen." [#2539]
- Courseware Import Export [#2543]
- Responsive Modus kann die Stickyness der Sidebar nicht deaktivieren [#2546]
- Installationsassistent leitet nicht korrekt weiter [#2551]
- Funktion "Passwort ändern" zeigt eine Fehlerseite an [#2552]
- Raumbuchungen - Suche nach Räumen erst ab 3 Zeichen [#2561]
- Arbeitsplatz: Aufruf des Dateibereichs dauert sehr lange [#2563]
- Persönlicher Dateibereich bremst Browser aus [#2566]
- Nachrichten: Ansicht auf Tabletts kaputt [#2568]
- JSONAPI: Route `/users/:user_id/courses` hat keinen Semesterfilter [#2572]
- Datenschutz: Zeitpunkt letzte Aktivität transparent machen [#2573]
- Belegungsplan: Link zur Veranstaltung zeigt Infos im Dialog an, statt zur Veranstaltung zu springen [#2578]
- Studiengruppe: "klassische" Teilnehmerseite ist aktivierbar (über "Mehr") [#2591]
- onActivation/onDeactivation wird für Plugins nicht aufgerufen wenn eine neue Veranstaltung angelegt wird oder ein Plugin zwangsweise aktiviert wird [#2594]
- CSS-Änderungen schieben Termine in nächste Zeile [#2603]
- Dateinamen wird bei SENDFILE_LINK_MODE "rewrite" nicht kodiert [#2609]
- Fehler in der Terminvergabe, wenn auf einen nicht mehr vorhandenen Terminblock zugegriffen wird [#2611]
- Migration für BIEST #2591 [#2622]
- Cronjobs sortieren falsch [#2625]
- Abschliessen von Semestern fasst zu viele Veranstaltungen an [#2626]
- Schönheitskorrekturen am alten Editor [#2633]
- Aktionsmenü gibt Icons ohne Größenangabe aus [#2636]
- Raumanfragen: Weitere Informationen zu einer Raumanfrage anzeigen: Doppelpunkt fehlt [#2640]
- A11y: Fehlerhaftes Attribut `aria-role` an `nav.action-menu` [#2647]
- Safari 16.5: Falsche Darstellung von Lehrpersonen in Veranstaltungsübersicht [#2668]
- CONSULTATION_TAB_TITLE hat keine Default-Übersetzung [#2690]
- Courseware: Beschreibung der Seite fehlt nach dem Import [#2701]
- Hauptnavigation: Titel werden bei Tastaturbedienung nicht angezeigt [#2706]
# 11.03.2023 v 5.2.1
......
......@@ -31,3 +31,7 @@
- REST-API
- Evaluationen
## Known Issues
- Inhalte aus dem Coursewareplugin können nicht in einem Schritt zum Stand der Courseware in Stud.IP 5.3 migriert werden. Auch wenn die Migration erfolgreich durchgelaufen ist, muss nachträglich noch der Code der Kernmigration 5.3.16 ausgeführt werden, da sonst alle Inhalte keinen Bezug mehr zu ihren Veranstaltungen haben.
\ No newline at end of file
RELEASE 5.3.alpha-svn
RELEASE 5.3.1
......@@ -53,7 +53,7 @@ class Accessibility_FormsController extends StudipController
)->setRequired();
$this->form->addPart($details_part);
$personal_data_part = new \Studip\Forms\Fieldset(_('Ihre persönlichen Daten'));
$personal_data_part->addText(sprintf('<p>%s</p>', _('Geben Sie bitte Ihren Namen und Ihre E-Mail-Adresse an. Optional können Sie auch Ihre Telefonnummer angeben.')));
$personal_data_part->addText(sprintf('<p>%s</p>', _('Freiwillige Angaben Ihrer Kontaktdaten für etwaige Rückfragen.')));
$personal_data_part->addInput(
new \Studip\Forms\SelectInput(
'salutation',
......@@ -75,7 +75,7 @@ class Accessibility_FormsController extends StudipController
_('Vorname und Nachname'),
$user ? sprintf('%s %s', $user->vorname, $user->nachname) : ''
)
)->setRequired();
);
$personal_data_part->addInput(
new \Studip\Forms\TextInput(
'phone_number',
......@@ -89,7 +89,11 @@ class Accessibility_FormsController extends StudipController
_('E-Mail-Adresse'),
$user ? $user->email : ''
)
)->setRequired();
);
$personal_data_part->addText(sprintf('<p>%s</p>',
_('Informationen zum Datenschutz dieses Formulars finden Sie in der Datenschutzerklärung.')));
$privacy_url = Config::get()->PRIVACY_URL;
if (is_internal_url($privacy_url)) {
......@@ -107,13 +111,7 @@ class Accessibility_FormsController extends StudipController
['target' => '_blank']
);
}
$personal_data_part->addInput(
new \Studip\Forms\CheckboxInput(
'confirm_privacy',
_('Ich habe die Datenschutzerklärung gelesen und akzeptiere sie.'),
''
)
)->setRequired();
$this->form->addPart($personal_data_part);
$this->form->setSaveButtonText(_('Barriere melden'));
$this->form->setSaveButtonName('report');
......@@ -128,7 +126,7 @@ class Accessibility_FormsController extends StudipController
//Get the sender and their language:
$sender = User::findCurrent();
//Default to the system default language:
$lang = explode('_', $GLOBALS['DEFAULT_LANGUAGE'])[0];
$lang = explode('_', Config::get()->DEFAULT_LANGUAGE ?? 'de_DE')[0];
if ($sender) {
//Use the senders language since the choices in the form
//are in their language as well.
......
......@@ -26,7 +26,12 @@ class Admin_AccessibilityInfoTextController extends AuthenticatedController
public function edit_action()
{
CSRFProtection::verifyUnsafeRequest();
Config::get()->store('ACCESSIBILITY_INFO_TEXT', Request::i18n('accessbility_info_text'));
Config::get()->store(
'ACCESSIBILITY_INFO_TEXT',
Studip\Markup::purifyHtml(Request::i18n('accessbility_info_text'))
);
PageLayout::postSuccess(_('Die Einstellungen wurden gespeichert.'));
$this->relocate('admin/accessibility_info_text/index');
}
......
......@@ -477,7 +477,7 @@ class Admin_CoursesController extends AuthenticatedController
$data = [];
foreach ($courses as $course_id => $course) {
$course_model = Course::buildExisting($course);
$course_model = Course::find($course_id);
$sem = new Seminar($course_model);
$row = [];
......@@ -486,7 +486,7 @@ class Admin_CoursesController extends AuthenticatedController
}
if (in_array('name', $filter_config)) {
$row['name'] = $course['Name'];
$row['name'] = $course_model->name;
}
if (in_array('type', $filter_config)) {
......@@ -536,13 +536,13 @@ class Admin_CoursesController extends AuthenticatedController
}
if (in_array('institute', $filter_config)) {
$row['institute'] = $course->home_institut ? $course->home_institut['name'] : $course['institute'];
$row['institute'] = $course_model->home_institut ? (string) $course_model->home_institut['name'] : $course_model['institut_id'];
}
foreach (PluginManager::getInstance()->getPlugins('AdminCourseContents') as $plugin) {
foreach ($plugin->adminAvailableContents() as $index => $label) {
if (in_array($plugin->getPluginId() . "_" . $index, $filter_config)) {
$content = $plugin->adminAreaGetCourseContent(Course::find($course_id), $index);
$content = $plugin->adminAreaGetCourseContent($course_model, $index);
$row[$plugin->getPluginId() . "_" . $index] = strip_tags(is_a($content, 'Flexi_Template')
? $content->render()
: $content
......@@ -884,7 +884,10 @@ class Admin_CoursesController extends AuthenticatedController
$course->store();
if (Request::isXhr()) {
$this->render_json((int)$course->completion);
$this->render_json([
'state' => (int)$course->completion,
'label' => $course->getCompetionLabel(),
]);
} else {
$this->redirect('admin/courses/index#course-' . $course_id);
}
......@@ -1193,7 +1196,9 @@ class Admin_CoursesController extends AuthenticatedController
$filter->filterBySemester($this->semester->getId());
}
if ($active_elements['courseType'] && $params['typeFilter'] && $params['typeFilter'] !== "all") {
list($class_filter,$type_filter) = explode('_', $params['typeFilter']);
$parts = explode('_', $params['typeFilter']);
$class_filter = $parts[0];
$type_filter = $parts[1] ?? null;
if (!$type_filter && !empty($GLOBALS['SEM_CLASS'][$class_filter])) {
$type_filter = array_keys($GLOBALS['SEM_CLASS'][$class_filter]->getSemTypes());
}
......
......@@ -29,7 +29,7 @@ class Admin_Cronjobs_LogsController extends AuthenticatedController
if (empty($_SESSION['cronlog-filter'])) {
$_SESSION['cronlog-filter'] = [
'where' => '1',
'values' => [],
'values' => array_fill_keys(['status', 'schedule_id', 'task_id'], null),
];
}
......
......@@ -29,7 +29,7 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController
if (empty($_SESSION['cronjob-filter'])) {
$_SESSION['cronjob-filter'] = [
'where' => '1',
'values' => [],
'values' => array_fill_keys(['type', 'status', 'task_id'], null),
];
}
......@@ -61,24 +61,14 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController
/**
* Displays all available schedules according to the set filters.
*
* @param int $page Which page to display
*/
public function index_action($page = 0)
public function index_action()
{
$filter = $_SESSION['cronjob-filter'];
$this->total = CronjobSchedule::countBySql('1');
$this->pagination = Pagination::create(
CronjobSchedule::countBySql($filter['where']),
$page
);
$this->schedules = $this->pagination->loadSORMCollection(
CronjobSchedule::class,
$filter['where']
);
$this->schedules = CronjobSchedule::findBySQL($filter['where']);
// Filters
$this->tasks = CronjobTask::findBySql('1');
......@@ -134,9 +124,8 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController
* Edits a schedule.
*
* @param String $id Id of the schedule in question (null to create)
* @param int $page Return to this page after editing (optional)
*/
public function edit_action(CronjobSchedule $schedule = null, $page = 0)
public function edit_action(CronjobSchedule $schedule = null)
{
if (Request::submitted('store')) {
$parameters = Request::getArray('parameters');
......@@ -173,7 +162,7 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController
$schedule->store();
PageLayout::postSuccess(_('Die Änderungen wurden gespeichert.'));
$this->redirect('admin/cronjobs/schedules/index/' . $page);
$this->redirect('admin/cronjobs/schedules/index');
return;
}
......@@ -182,11 +171,10 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController
$actions = Sidebar::get()->addWidget(new ActionsWidget());
$actions->addLink(
_('Zurück zur Übersicht'),
$this->indexURL($page),
$this->indexURL(),
Icon::create('link-intern')
);
$this->page = $page;
$this->tasks = CronjobTask::findBySql('1');
}
......@@ -214,56 +202,51 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController
* Activates a schedule.
*
* @param CronjobSchedule $schedule Schedule to activate
* @param int $page Return to this page after activating (optional)
*/
public function activate_action(CronjobSchedule $schedule, $page = 0)
public function activate_action(CronjobSchedule $schedule)
{
$schedule->activate();
if (!Request::isXhr()) {
PageLayout::postSuccess(_('Der Cronjob wurde aktiviert.'));
}
$this->redirect("admin/cronjobs/schedules/index/{$page}#job-{$schedule->id}");
$this->redirect("admin/cronjobs/schedules/index#job-{$schedule->id}");
}
/**
* Deactivates a schedule.
*
* @param CronjobSchedule $schedule Schedule to deactivate
* @param int $page Return to this page after deactivating (optional)
*/
public function deactivate_action(CronjobSchedule $schedule, $page = 0)
public function deactivate_action(CronjobSchedule $schedule)
{
$schedule->deactivate();
if (!Request::isXhr()) {
PageLayout::postSuccess(_('Der Cronjob wurde deaktiviert.'));
}
$this->redirect("admin/cronjobs/schedules/index/{$page}#job-{$schedule->id}");
$this->redirect("admin/cronjobs/schedules/index#job-{$schedule->id}");
}
/**
* Cancels/deletes a schedule.
*
* @param CronjobSchedule $schedule Schedule to cancel
* @param int $page Return to this page after canceling (optional)
*/
public function cancel_action(CronjobSchedule $schedule, $page = 0)
public function cancel_action(CronjobSchedule $schedule)
{
CSRFProtection::verifyUnsafeRequest();
$schedule->delete();
PageLayout::postSuccess(_('Der Cronjob wurde gelöscht.'));
$this->redirect("admin/cronjobs/schedules/index/{$page}");
$this->redirect('admin/cronjobs/schedules/index');
}
/**
* Performs a bulk operation on a set of schedules. Operation can be
* either activating, deactivating or canceling/deleting.
*
* @param int $page Return to this page afterwarsd (optional)
*/
public function bulk_action($page = 0)
public function bulk_action()
{
$action = Request::option('action');
$ids = Request::optionArray('ids');
......@@ -310,6 +293,6 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController
PageLayout::postSuccess($message);
}
$this->redirect("admin/cronjobs/schedules/index/{$page}");
$this->redirect('admin/cronjobs/schedules/index');
}
}
......@@ -47,26 +47,18 @@ class Admin_Cronjobs_TasksController extends AuthenticatedController
/**
* Displays all available tasks.
*
* @param int $page Which page to display
*/
public function index_action($page = 0)
public function index_action()
{
$this->pagination = Pagination::create(
CronjobTask::countBySql('1'),
$page
);
$this->tasks = $this->pagination->loadSORMCollection(CronjobTask::class);
$this->tasks = CronjobTask::findBySQL('1');
}
/**
* Activates a tasks.
*
* @param CronjobTask $task Task to activate
* @param int $page Return to this page after activating (optional)
*/
public function activate_action(CronjobTask $task, $page = 0)
public function activate_action(CronjobTask $task)
{
$task->active = true;
$task->store();
......@@ -80,16 +72,15 @@ class Admin_Cronjobs_TasksController extends AuthenticatedController
$message = sprintf(_('Die Aufgabe und %u Cronjob(s) wurden aktiviert.'), $activated);
PageLayout::postSuccess($message);
}
$this->redirect("admin/cronjobs/tasks/index/{$page}#task-{$task->id}");
$this->redirect("admin/cronjobs/tasks/index#task-{$task->id}");
}
/**
* Deactivates a tasks.
*
* @param CronjobTask $task Task to deactivate
* @param int $page Return to this page after deactivating (optional)
*/
public function deactivate_action(CronjobTask $task, $page = 0)
public function deactivate_action(CronjobTask $task)
{
$task->active = false;
$task->store();
......@@ -103,16 +94,15 @@ class Admin_Cronjobs_TasksController extends AuthenticatedController
$message = sprintf(_('Die Aufgabe und %u Cronjob(s) wurden deaktiviert.'), $deactivated);
PageLayout::postSuccess($message);
}
$this->redirect("admin/cronjobs/tasks/index/{$page}#task-{$task->id}");
$this->redirect("admin/cronjobs/tasks/index#task-{$task->id}");
}
/**
* Deletes a tasks.
*
* @param CronjobTask $task Task to delete
* @param int $page Return to this page after deleting (optional)
*/
public function delete_action(CronjobTask $task, $page = 0)
public function delete_action(CronjobTask $task)
{
CSRFProtection::verifyUnsafeRequest();
$deleted = $task->schedules->count();
......@@ -121,16 +111,14 @@ class Admin_Cronjobs_TasksController extends AuthenticatedController
$message = sprintf(_('Die Aufgabe und %u Cronjob(s) wurden gelöscht.'), $deleted);
PageLayout::postSuccess($message);
$this->redirect("admin/cronjobs/tasks/index/{$page}");
$this->redirect('admin/cronjobs/tasks/index');
}
/**
* Performs a bulk operation on a set of tasks. Operation can be either
* activating, deactivating or deleting.
*
* @param int $page Return to this page afterwarsd (optional)
*/
public function bulk_action($page = 0)
public function bulk_action()
{
$action = Request::option('action');
$ids = Request::optionArray('ids');
......@@ -170,7 +158,7 @@ class Admin_Cronjobs_TasksController extends AuthenticatedController
PageLayout::postSuccess($message);
}
$this->redirect('admin/cronjobs/tasks/index/' . $page);
$this->redirect('admin/cronjobs/tasks/index');
}
/**
......
......@@ -403,11 +403,12 @@ class Admin_InstallController extends Trails_Controller
public function migrate_action()
{
URLHelper::setBaseURL($_SESSION['STUDIP_INSTALLATION']['system']['ABSOLUTE_URI_STUDIP']);
unset($_SESSION['STUDIP_INSTALLATION']);
session_destroy();
header('Location: ' . dirname($_SERVER['SCRIPT_NAME']) . '/web_migrate.php');
die;
$this->redirect(URLHelper::getURL('web_migrate.php'));
}
public function session_error_action()
......
......@@ -492,7 +492,7 @@ class Admin_RoleController extends AuthenticatedController
->setLinkText(_('Personen hinzufügen'))
->setTitle(_('Personen zur Rolle hinzufügen'))
->setExecuteURL($url)
->setSearchObject(new SQLSearch($query, _('Nutzer suchen'), 'user_id'));
->setSearchObject(new SQLSearch($query, _('Person suchen'), 'user_id'));
}
public function assign_role_institutes_action($role_id, $user_id)
......
......@@ -198,11 +198,14 @@ class Admin_SemesterController extends AuthenticatedController
// Validation, step 3: Check overlapping with other semesters
if (empty($errors)) {
$all_semester = SimpleCollection::createFromArray(Semester::getAll())->findBy('id', $this->semester->id, '<>');
$collisions = $all_semester->findBy('beginn', [$this->semester->beginn, $this->semester->ende], '>=<=');
$collisions->merge($all_semester->findBy('ende', [$this->semester->beginn, $this->semester->ende], '>=<='));
if ($collisions->count()) {
$errors[] = sprintf(_('Der angegebene Zeitraum des Semester überschneidet sich mit einem anderen Semester (%s)'), join(', ', $collisions->pluck('name')));
$collisions_beginn = Semester::findByTimestamp($this->semester->beginn);
if ($collisions_beginn && $collisions_beginn->id !== $this->semester->id) {
$errors[] = sprintf(_('Der Beginn des Semester überschneidet sich mit einem anderen Semester (%s)'), $collisions_beginn->name);
}
$collisions_ende = Semester::findByTimestamp($this->semester->ende);
if ($collisions_ende && $collisions_ende->id !== $this->semester->id) {
$errors[] = sprintf(_('Das Ende des Semester überschneidet sich mit einem anderen Semester (%s)'), $collisions_ende->name);
}
}
......@@ -402,7 +405,7 @@ class Admin_SemesterController extends AuthenticatedController
FROM `semester_courses`
JOIN `semester_data` USING (`semester_id`)
GROUP BY `course_id`
HAVING MAX(`beginn`) <= ?";
HAVING MAX(`beginn`) = ?";
$course_ids = DBManager::get()->fetchFirst($query, [$semester->beginn]);
// Leave early if no courses are affected
......
......@@ -401,8 +401,8 @@ class Admin_UserController extends AuthenticatedController
}
}
//get user
$this->user = User::find($user_id);
$this->user_roles = $this->user->getRoles();
// Änderungen speichern
if (Request::submitted('edit')) {
......@@ -440,6 +440,8 @@ class Admin_UserController extends AuthenticatedController
if (
$GLOBALS['perm']->have_perm('root')
&& Config::get()->ALLOW_ADMIN_USERACCESS
&& !StudipAuthAbstract::CheckField('auth_user_md5.password', $this->user->auth_plugin)
&& $this->user->auth_plugin !== null
&& (Request::get('pass_1') !== '' || Request::get('pass_2') !== '')
) {
if (Request::get('pass_1') === Request::get('pass_2')) {
......@@ -634,7 +636,7 @@ class Admin_UserController extends AuthenticatedController
$this->available_auth_plugins[mb_strtolower($ap)] = $ap;
}
if (count($this->user->institute_memberships)) {
if (!empty($this->user->institute_memberships)) {
$this->student_institutes = $this->user->institute_memberships->filter(function ($a) {
return $a->inst_perms === 'user';
});
......@@ -889,16 +891,14 @@ class Admin_UserController extends AuthenticatedController
}
if ($GLOBALS['perm']->have_perm('root')) {
$sql
= "SELECT Institut_id, Name, 1 AS is_fak
$sql = "SELECT Institut_id, Name, 1 AS is_fak
FROM Institute
WHERE Institut_id=fakultaets_id
ORDER BY Name";
$faks = DBManager::get()->query($sql)->fetchAll(PDO::FETCH_ASSOC);
$domains = UserDomain::getUserDomains();
} else {
$sql
= "SELECT a.Institut_id, Name, b.Institut_id = b.fakultaets_id AS is_fak
$sql = "SELECT a.Institut_id, Name, b.Institut_id = b.fakultaets_id AS is_fak
FROM user_inst a
LEFT JOIN Institute b USING (Institut_id)
WHERE a.user_id = ? AND a.inst_perms = 'admin'
......@@ -909,8 +909,7 @@ class Admin_UserController extends AuthenticatedController
$domains = UserDomain::getUserDomainsForUser(User::findCurrent()->id);
}
$query
= "SELECT Institut_id, Name
$query = "SELECT Institut_id, Name
FROM Institute
WHERE fakultaets_id = ? AND institut_id != fakultaets_id
ORDER BY Name";
......@@ -1081,7 +1080,7 @@ class Admin_UserController extends AuthenticatedController
{
$this->user = User::find($user_id);
$institute = null;
if (count($this->user->institute_memberships)) {
if (!empty($this->user->institute_memberships)) {
$this->user->institute_memberships->filter(function ($a) use ($institute_id, &$institute) {
if ($a->institut_id === $institute_id) {
$institute = $a;
......@@ -1516,8 +1515,6 @@ class Admin_UserController extends AuthenticatedController
*/
public function download_user_files_action($user_id, $range_id = null)
{
global $TMP_PATH;
Seminar_Perm::get()->check('root');
if ($range_id === null) {
......@@ -1530,9 +1527,9 @@ class Admin_UserController extends AuthenticatedController
$archive_file_name = $user->username . '_files_' . date('Ymd-Hi') . '.zip';
$archive_path = $TMP_PATH . '/' . $archive_file_name;
$archive_path = $GLOBALS['TMP_PATH'] . '/' . $archive_file_name;
$result = FileArchiveManager::createArchiveFromFileRefs(
FileArchiveManager::createArchiveFromFileRefs(
$file_refs,
User::findCurrent(),
$archive_path,
......@@ -1808,25 +1805,12 @@ class Admin_UserController extends AuthenticatedController
);
}
// Create link to role administration for this user
$extra = '';
$roles = $this->user->getRoles();
$roles_attributes = [];
if ($roles) {
$extra = ' (' . count($roles) . ')';
$title = '• ' . implode("\n• ", array_map(function ($role) {
return $role->rolename;
}, $roles));
$roles_attributes['data-tooltip'] = json_encode([
'html' => htmlReady($title, true, true),
]);
}
$views->addLink(
_('Zur Rollenverwaltung') . $extra,
_('Zur Rollenverwaltung'),
$this->url_for("admin/role/assign_role/{$this->user->id}"),
Icon::create('roles2'),
$roles_attributes
Icon::create('roles2')
);
}
$sidebar->insertWidget($views, 'user_actions', 'views');
......
......@@ -57,7 +57,10 @@ class BlubberController extends AuthenticatedController
);
}
if (!Avatar::getAvatar($GLOBALS['user']->id)->is_customized() && !$_SESSION['already_asked_for_avatar']) {
if (
empty($_SESSION['already_asked_for_avatar'])
&& !Avatar::getAvatar($GLOBALS['user']->id)->is_customized()
) {
$_SESSION['already_asked_for_avatar'] = true;
PageLayout::postInfo(sprintf(
_('Wollen Sie ein Avatar-Bild nutzen? %sLaden Sie jetzt ein Bild hoch%s.'),
......
......@@ -88,7 +88,7 @@ class Calendar_CalendarController extends AuthenticatedController
{
$tmpl_factory = $this->get_template_factory();
$filters = new OptionsWidget();
$filters = new SidebarWidget();
$filters->setTitle('Auswahl');
$tmpl = $tmpl_factory->open('calendar/single/_jump_to');
......@@ -101,6 +101,7 @@ class Calendar_CalendarController extends AuthenticatedController
$tmpl->action_url = $this->url_for();
$tmpl->category = $this->category;
$filters->addElement(new WidgetElement($tmpl->render()));
Sidebar::get()->addWidget($filters);
if (Config::get()->CALENDAR_GROUP_ENABLE
|| Config::get()->COURSE_CALENDAR_ENABLE) {
......@@ -109,14 +110,16 @@ class Calendar_CalendarController extends AuthenticatedController
$tmpl->action_url = $this->url_for('calendar/group/switch');
$tmpl->view = $this->action;
$filters->addElement(new WidgetElement($tmpl->render()));
$filters->addCheckbox(
$settings = new OptionsWidget();
$settings->addCheckbox(
_('Abgelehnte Termine anzeigen'),
$this->settings['show_declined'] ?? false,
$this->url_for($this->base . 'show_declined', ['show_declined' => 1]),
$this->url_for($this->base . 'show_declined', ['show_declined' => 0])
);
Sidebar::get()->addWidget($settings);
}
Sidebar::get()->addWidget($filters);
}
public function index_action()
......
......@@ -79,6 +79,10 @@ abstract class ConsultationController extends AuthenticatedController
$block = ConsultationBlock::find($block_id);
if (!$block || !$block->range) {
throw new Exception(_('Dieser Terminblock ist ungültig.'));
}
if (!$block->range->isAccessibleToUser()) {
throw new AccessDeniedException();
}
......
......@@ -23,6 +23,7 @@ class Contents_CoursewareController extends CoursewareController
$this->user = $GLOBALS['user'];
$this->licenses = $this->getLicenses();
$this->oer_enabled = Config::get()->OERCAMPUS_ENABLED && $GLOBALS['perm']->have_perm(Config::get()->OER_PUBLIC_STATUS);
$this->unitsNotFound = Unit::countBySql('range_id = ?', [$this->user->id]) === 0;
}
......@@ -61,7 +62,7 @@ class Contents_CoursewareController extends CoursewareController
*/
public function courseware_action($unit_id = null): void
{
global $perm, $user;
global $user;
Navigation::activateItem('/contents/courseware/courseware');
if ($this->unitsNotFound) {
......@@ -297,7 +298,7 @@ class Contents_CoursewareController extends CoursewareController
*/
public function shared_content_courseware_action($entry_element_id): void
{
global $perm, $user;
global $user;
$navigation = new Navigation(_('Geteiltes Lernmaterial'), 'dispatch.php/contents/courseware/shared_content_courseware/' . $entry_element_id);
Navigation::addItem('/contents/courseware/shared_content_courseware', $navigation);
......@@ -320,9 +321,6 @@ class Contents_CoursewareController extends CoursewareController
$this->user_id = $struct->owner_id;
$this->oer_enabled = Config::get()->OERCAMPUS_ENABLED && $perm->have_perm(Config::get()->OER_PUBLIC_STATUS);
$this->setCoursewareSidebar();
}
}
......@@ -31,6 +31,7 @@ class Course_CoursewareController extends CoursewareController
object_set_visit_module($this->studip_module->getPluginId());
$this->last_visitdate = object_get_visit(Context::getId(), $this->studip_module->getPluginId());
$this->licenses = $this->getLicenses();
$this->oer_enabled = Config::get()->OERCAMPUS_ENABLED && $GLOBALS['perm']->have_perm(Config::get()->OER_PUBLIC_STATUS);
$this->unitsNotFound = Unit::countBySql('range_id = ?', [Context::getId()]) === 0;
}
......@@ -42,7 +43,7 @@ class Course_CoursewareController extends CoursewareController
public function courseware_action($unit_id = null): void
{
global $perm, $user;
global $user;
Navigation::activateItem('course/courseware/unit');
if ($this->unitsNotFound) {
PageLayout::postMessage(MessageBox::info(_('Es wurde kein Lernmaterial gefunden.')));
......
......@@ -45,6 +45,9 @@ class Course_DatesController extends AuthenticatedController
} else {
PageLayout::postInfo(_('Thema war schon mit dem Termin verknüpft.'));
}
$this->redirect($this->indexURL());
return;
}
Navigation::activateItem('/course/schedule/dates');
......
......@@ -57,7 +57,10 @@ class Course_ElearningController extends AuthenticatedController
if (!isset($GLOBALS['ELEARNING_INTERFACE_MODULES'][$this->cms_select])) {
unset($this->cms_select);
}
if ($this->seminar_id != $_SESSION['elearning_open_close']["id"]) {
if (
isset($_SESSION['elearning_open_close']['id'])
&& $this->seminar_id !== $_SESSION['elearning_open_close']['id']
) {
unset($_SESSION['cache_data']);
unset($_SESSION['elearning_open_close']);
}
......