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
  • 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

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
Show changes
Commits on Source (1307)
Showing
with 1277 additions and 406 deletions
......@@ -20,3 +20,6 @@ block_comment_start = /*
block_comment_end = */
line_comment = //
quote_type = single
[*.yml]
indent_size = 2
\ No newline at end of file
# MYSQL_HOST=""
# MYSQL_USER=""
# MYSQL_PASSWORD=""
# MYSQL_DATABASE=""
# Enable the next line to display the debug bar in development mode
# DEBUG_BAR=1
# Enable the following to allow opening files from exception displays in your
# editor. Beware: You need to provide a full path for prefix your files since
# the exception only displays the relative path.
#
# Variables being substituted: %{file} and %{line}
#
# EDITOR_URL="phpstorm://open?file=<path-to-your-studip>/%{file}&line=%{line}"
# EDITOR_URL="vscode://file/<path-to-your-studip>/%{file}:%{line}:0
# STUDIP_CACHING_ENABLE=""
# STUDIP_CACHE_IS_SESSION_STORAGE=""
# STUDIP_ENV=""
# STUDIP_MAIL_TRANSPORT=""
# STUDIP_PLUGINS_UPLOAD_ENABLE=""
## You may also change configuration settings from the environment. To do so, prefix the configuration name with
## "STUDIP_CONFIG_". Example for changing the site name:
#
# STUDIP_CONFIG_UNI_NAME_CLEAN="new uni name"
{
"parserOptions": {
"parser": "@typescript-eslint/parser",
"sourceType": "module"
},
"env": {
"browser": true,
"es6": true
},
"extends": [
"eslint:recommended",
"plugin:vue/essential",
"@vue/eslint-config-typescript"
],
"globals": {
"STUDIP": "writable",
"CKEDITOR": "writable",
"$": "writable",
"_": "writable",
"jQuery": "writable"
},
"plugins": [
"vue"
],
"rules": {
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": "off",
"no-async-promise-executor": "error",
"no-await-in-loop": "error",
"no-promise-executor-return": "error",
"require-atomic-updates": "error",
"max-nested-callbacks": ["error", 4],
"no-return-await": "error",
"prefer-promise-reject-errors": "error",
"vue/multi-word-component-names": "off"
}
}
......@@ -23,6 +23,7 @@ data/oer_logos/*
data/upload_doc/*
public/.htaccess
public/.rnd
public/assets/javascripts/*.js
public/assets/javascripts/*.js.map
public/assets/stylesheets/*.css
......
image: studip/studip:tests-php8.3
image: studip/studip:tests-php8.1
variables:
FF_NETWORK_PER_BUILD: 1
......@@ -17,7 +17,7 @@ variables:
# Use faster docker driver
DOCKER_DRIVER: overlay2
# Images
NODE_IMAGE: node:16-slim
NODE_IMAGE: node:18-slim
# Directories
CACHE_DIR: .caches
REPORT_DIR: .reports
......@@ -29,6 +29,7 @@ stages:
- checks
- analyse
- test
- cache
- packaging
- release
......@@ -66,8 +67,11 @@ stages:
.definitions:
mariadb-service: &mariadb-service
- name: mariadb
command: [ "--sql_mode=","--character-set-client=utf8","--character-set-server=utf8","--collation-server=utf8_unicode_ci"]
- name: mariadb:10.2.7
command: [ "--sql_mode=","--character-set-client=utf8","--character-set-server=utf8","--collation-server=utf8_unicode_ci"]
mysql-service: &mysql-service
- name: mysql:8.0
command: [ "--sql_mode=","--character-set-server=utf8mb4","--collation-server=utf8mb4_general_ci"]
build-composer:
stage: build
......@@ -107,7 +111,8 @@ lint-php:
- COMPOSER_MEMORY_LIMIT=-1
composer exec phplint
--
--json $PHPLINT_JSON_REPORT
--output=$PHPLINT_JSON_REPORT
--format=json
--cache=$CACHE_LOCATION
after_script:
- ./.gitlab/scripts/convert-phplint-report $PHPLINT_JSON_REPORT > $PHPLINT_CODE_QUALITY_REPORT
......@@ -115,14 +120,14 @@ lint-php:
reports:
codequality: $PHPLINT_CODE_QUALITY_REPORT
lint-php-7.4:
image: studip/studip:tests-php8.2
lint-php-8.3:
image: studip/studip:tests-php8.3
stage: checks
needs: [build-composer]
variables:
CACHE_LOCATION: $CACHE_DIR/phplint-cache
PHPLINT_JSON_REPORT: $REPORT_DIR/phplint-report-7.4.json
PHPLINT_CODE_QUALITY_REPORT: $REPORT_DIR/phplint-codequality-7.4.json
PHPLINT_JSON_REPORT: $REPORT_DIR/phplint-report-8.3.json
PHPLINT_CODE_QUALITY_REPORT: $REPORT_DIR/phplint-codequality-8.3.json
interruptible: true
cache:
- *composer-cache
......@@ -137,7 +142,8 @@ lint-php-7.4:
- COMPOSER_MEMORY_LIMIT=-1
composer exec phplint
--
--json $PHPLINT_JSON_REPORT
--output=$PHPLINT_JSON_REPORT
--format=json
--cache=$CACHE_LOCATION
after_script:
- ./.gitlab/scripts/convert-phplint-report $PHPLINT_JSON_REPORT > $PHPLINT_CODE_QUALITY_REPORT
......@@ -159,17 +165,11 @@ lint-js:
interruptible: true
before_script:
- *mkdir-reports
- npm install -g npm@7
- npm install
--no-save --no-audit --no-fund
--loglevel=error
eslint eslint-formatter-gitlab
- npm ci --prefer--offline
script:
- npx eslint
--ext .js,.vue
- npm run lint-js --
--cache --cache-location $CACHE_LOCATION
--format gitlab
resources/assets/javascripts resources/vue
artifacts:
reports:
codequality: $ESLINT_CODE_QUALITY_REPORT
......@@ -183,24 +183,20 @@ lint-css:
STYLELINT_CODE_QUALITY_REPORT: $REPORT_DIR/stylelint-codequality.json
interruptible: true
cache:
- key: "$CI_JOB_NAME_SLUG:CI_COMMIT_REF_SLUG"
- key: "CI_COMMIT_REF_SLUG-lint-css"
paths:
- $CACHE_LOCATION
policy: pull-push
when: always
before_script:
- *mkdir-caches
- *mkdir-reports
- npm install
--no-save --no-audit --no-fund
--loglevel=error
stylelint@^14.9.1
stylelint-config-standard@^26.0.0
stylelint-formatter-gitlab
script:
- npx
stylelint
- npm run lint-css --
--cache --cache-location $CACHE_LOCATION
--custom-formatter=node_modules/stylelint-formatter-gitlab
--custom-formatter=node_modules/stylelint-formatter-gitlab
--output-file $STYLELINT_CODE_QUALITY_REPORT
resources/assets/stylesheets
artifacts:
reports:
codequality: $STYLELINT_CODE_QUALITY_REPORT
......@@ -211,9 +207,7 @@ phpstan:
variables:
CACHE_LOCATION: $CACHE_DIR/phpstan
PHPSTAN_CODE_QUALITY_REPORT: $REPORT_DIR/phpstan-codequality.json
allow_failure: true
interruptible: true
when: manual
cache:
- *composer-cache
- key: "$CO_JOB_NAME_SLUG:$CI_COMMIT_REF_SLUG"
......@@ -223,12 +217,12 @@ phpstan:
- *mkdir-caches
- *mkdir-reports
- *install-composer
- 'echo "includes:\n - phpstan.neon.dist\n\nparameters:\n tmpDir: $PHPSTAN_CACHE_PATH" > phpstan.neon'
- 'echo -e "includes:\n - phpstan.neon.dist\n\nparameters:\n tmpDir: $PHPSTAN_CACHE_PATH" > phpstan.neon'
script:
- php
composer/bin/phpstan analyse
--memory-limit=1G
--no-progress
composer/bin/phpstan analyse
--memory-limit=1G
--no-progress
--level=$PHPSTAN_LEVEL
--error-format=gitlab > $PHPSTAN_CODE_QUALITY_REPORT
after_script:
......@@ -284,11 +278,12 @@ test-functional:
variables:
FUNCTIONAL_XML_REPORT: $REPORT_DIR/functional-report.xml
FUNCTIONAL_CODE_QUALITY_REPORT: $REPORT_DIR/functional-codequality.json
MYSQL_HOST: mysql
cache:
<<: *composer-cache
policy: pull
services:
- *mariadb-service
- *mysql-service
allow_failure: false
interruptible: true
before_script:
......@@ -414,7 +409,7 @@ packaging:
expire_in: never
build_image:
image:
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
stage: build
......
#!/bin/bash
set -e
importSQLFile() {
mysql --default-character-set=utf8mb4\
--init-command="SET NAMES UTF8;"\
-u $MYSQL_USER\
-h $MYSQL_HOST\
-p$MYSQL_PASSWORD\
$MYSQL_DATABASE\
< $1
}
if [ $(mysql -u $MYSQL_USER -h $MYSQL_HOST -p$MYSQL_PASSWORD $MYSQL_DATABASE -e "show tables;" --batch | wc -l) -eq 0 ]; then
# Setup mysql database
echo "INSTALL DB"
mysql -u $MYSQL_USER -h $MYSQL_HOST -p$MYSQL_PASSWORD $MYSQL_DATABASE < ./db/studip.sql
importSQLFile ./db/studip.sql
echo "INSTALL DEFAULT DATA"
mysql -u $MYSQL_USER -h $MYSQL_HOST -p$MYSQL_PASSWORD $MYSQL_DATABASE < ./db/studip_default_data.sql
mysql -u $MYSQL_USER -h $MYSQL_HOST -p$MYSQL_PASSWORD $MYSQL_DATABASE < ./db/studip_resources_default_data.sql
importSQLFile ./db/studip_default_data.sql
importSQLFile ./db/studip_resources_default_data.sql
echo "INSTALL ROOTUSER"
mysql -u $MYSQL_USER -h $MYSQL_HOST -p$MYSQL_PASSWORD $MYSQL_DATABASE < ./db/studip_root_user.sql
importSQLFile ./db/studip_root_user.sql
# Check if demodata is required
if [ ! -z $DEMO_DATA ]; then
echo "INSTALL DEMODATA"
mysql -u $MYSQL_USER -h $MYSQL_HOST -p$MYSQL_PASSWORD $MYSQL_DATABASE < ./db/studip_demo_data.sql
importSQLFile ./db/studip_demo_data.sql
echo "INSTALL MVV_DEMODATA"
mysql -u $MYSQL_USER -h $MYSQL_HOST -p$MYSQL_PASSWORD $MYSQL_DATABASE < ./db/studip_mvv_demo_data.sql
importSQLFile ./db/studip_mvv_demo_data.sql
echo "INSTALL RESOURCES-DEMODATA"
mysql -u $MYSQL_USER -h $MYSQL_HOST -p$MYSQL_PASSWORD $MYSQL_DATABASE < ./db/studip_resources_demo_data.sql
importSQLFile ./db/studip_resources_demo_data.sql
fi
echo "INSTALLATION FINISHED"
......
{
"extends": "stylelint-config-standard",
"extends": "stylelint-config-standard-scss",
"rules": {
"alpha-value-notation": null,
"at-rule-empty-line-before": null,
"at-rule-no-vendor-prefix": null,
"block-closing-brace-empty-line-before": null,
"block-closing-brace-newline-after": null,
"block-closing-brace-newline-before": null,
"block-closing-brace-space-before": null,
"block-no-empty": null,
"block-opening-brace-newline-after": null,
"block-opening-brace-space-after": null,
"block-opening-brace-space-before": null,
"color-function-notation": null,
"color-hex-case": null,
"color-hex-length": null,
"color-no-invalid-hex": null,
"comment-empty-line-before": null,
"comment-whitespace-inside": null,
"declaration-bang-space-after": null,
"declaration-bang-space-before": null,
"custom-property-empty-line-before": null,
"declaration-block-no-duplicate-properties": null,
"declaration-block-no-redundant-longhand-properties": null,
"declaration-block-no-shorthand-property-overrides": null,
"declaration-block-semicolon-newline-after": null,
"declaration-block-semicolon-space-before": null,
"declaration-block-single-line-max-declarations": null,
"declaration-block-trailing-semicolon": null,
"declaration-colon-newline-after": null,
"declaration-colon-space-after": null,
"declaration-colon-space-before": null,
"declaration-empty-line-before": null,
"font-family-name-quotes": null,
"font-family-no-missing-generic-family-keyword": null,
"function-comma-space-after": null,
"function-comma-space-before": null,
"function-name-case": null,
"function-no-unknown": null,
"function-parentheses-newline-inside": null,
"function-parentheses-space-inside": null,
"function-url-quotes": null,
"hue-degree-notation": null,
"indentation": null,
"import-notation": "string",
"keyframes-name-pattern": null,
"length-zero-no-unit": null,
"max-empty-lines": null,
"max-line-length": null,
"media-feature-range-notation": "prefix",
"media-feature-name-no-vendor-prefix": null,
"no-descending-specificity": null,
"no-duplicate-selectors": null,
"no-empty-first-line": null,
"no-empty-source": null,
"no-eol-whitespace": null,
"no-extra-semicolons": null,
"no-invalid-position-at-import-rule": null,
"no-irregular-whitespace": null,
"no-missing-end-of-source-newline": null,
"number-leading-zero": null,
"number-max-precision": null,
"number-no-trailing-zeros": null,
"property-no-vendor-prefix": null,
"rule-empty-line-before": null,
"selector-attribute-quotes": null,
"selector-class-pattern": null,
"selector-combinator-space-after": null,
"selector-combinator-space-before": null,
"selector-descendant-combinator-no-non-space": null,
"selector-id-pattern": null,
"selector-list-comma-newline-after": null,
"selector-no-vendor-prefix": null,
"selector-not-notation": null,
"selector-pseudo-element-colon-notation": null,
"shorthand-property-no-redundant-values": null,
"string-quotes": null,
"value-keyword-case": null,
"value-list-max-empty-lines": null,
"value-no-vendor-prefix": null
"value-no-vendor-prefix": null,
"custom-property-pattern": [
"^([a-z][a-z0-9]*-+)*[a-z0-9]+$",
{"message": "Expected custom property name to be kebab-case-ish (multiple dashes are allowed"}
],
"scss/at-extend-no-missing-placeholder": null,
"scss/at-mixin-pattern": null,
"scss/dollar-variable-empty-line-before": null,
"scss/dollar-variable-pattern": null,
"scss/double-slash-comment-empty-line-before": null,
"scss/function-unquote-no-unquoted-strings-inside": null,
"scss/no-global-function-names": null
},
"overrides": [
{
"files": ["**/*.scss"],
"customSyntax": "postcss-scss",
"rules": {
"at-rule-no-unknown": null
}
}
],
"ignoreFiles": [
"resource/assets/stylesheets/jquery-ui.structure.css",
"resources/assets/stylesheets/vendor/*"
......
# 28.02.2025 v 5.5.4
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.5.4&state=all
- Pipeline für 5.5 lintet nicht gegen PHP 7.4 [#5134]
- Courseware: Beim Kopieren und Importieren wird die Einstellung "Titelseite" nicht übernommen [#5138]
- Inhaltsverzeichnis-Block zeigt Seite in Kachelansicht nicht an [#5158]
- Löschen eines Accounts erzeugt fehlerhafte Nachrichten [#5161]
- Wiki: Anlegen einer Seite mit Name ".*" löscht den Inhalt aller Seiten, die ".*" enthalten [#5207]
- Call to a member function each() on null in /srv/studip/lib/models/ConsultationEvent.php:37 [#5266]
- Wiki: "Mach die Welt ein Stückchen schlauer" ist unschlau [#5273]
- Austragen einer Person aus einer Kontaktgruppe führt zu einem Fehler [#5319]
# 28.02.2025 v 5.4.7
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.4.7&state=all
- Veranstaltungsverwaltung: Fehlerhafte Darstellung der Studienbereiche [#2863]
- Veranstaltungsverwaltung: Reiter steht in der DB an falscher Position [#4417]
- Blubber in Veranstaltungen zeigt alle globalen und persönlichen Blubberthreads [#4546]
- Undefined key "ref_id" beim Sprung vom Arbeitsplatz ins mit PHP8 [#4939]
- Studiengruppe Werkzeuge-Seite Tabellarische Ansicht kaputt [#4972]
- Falsche Feldnamen in 5.4.6_tree_changes.php [#5129]
- Courseware: Beim Importieren wird zu jeder Seite ein leerer Abschnitt hinzugefügt [#5139]
- Schnittstelle Ilias: In Ilias gelöschte Nutzer führen zu Inkonsistenz [#5145]
- Zusatzangaben: Widget "Veranstaltungen" wird auch Dozenten angezeigt [#5154]
- Rollenzuweisung für Ankündigungen funktioniert nicht mehr richtig. [#5178]
- QR-Code skaliert nicht horizontal [#5190]
- Raumanfragen: Option für Rückmeldung an alle Lehrenden soll wieder immer verfügbar sein (nochmal) [#5264]
- Courseware: Fehler bei der Auswahl von Farben [#5295]
- JSON-API liefert auch bei gesetztem Accept-Language Header nur den Originalstring [#5306]
# 28.02.2025 v 5.3.10
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.3.10&state=all
- InfoIcon im Dialog wird direkt angezeigt [#773]
- SimpleORMap liest falsche Default-Werte aus dem Schema [#4462]
- PHP8 - Warnungen in den Hilfetouren [#4667]
- Teilnehmende: "Diese Seite für Studierende verbergen" funktioniert nicht mehr [#5009]
- Timeout für HTTP Requests in Ilias-Schnittstelle implementieren [#5014]
- Courseware Aufgaben: Fehlende Funktion im Store [#5019]
- Fehler beim Speichern von I18N-Datenfeldern [#5031]
- Im fromSORM fehlt Eingabename des `templates/forms/select_input.php` [#5080]
- Semesterdarstellung ist bei der Anzeige der Veranstaltungen einer Einrichtung verschoben [#5119]
- BIESt 831 taucht beim AdvancedBasicDataWizard auf [#5121]
- User::name not found [#5122]
- LVGroupsWizardStep läuft auf eine Exception [#5123]
- Leerzeichen in Footer von Text Mails [#5128]
- Log-Events schneiden Pluginnamen ab [#5135]
- Änderung des Inhaltstyps macht Aufgabe unbrauchbar [#5144]
- Externe Seiten: Konfiguration kann mit PHP 8 nicht mehr gespeichert werden [#5184]
- Notwendigkeit von »r« (read) und »w« (write) bei den Einstellungen der Zeitgesteuerten Ordner [#5194]
- Beim Löschen von Konten werden die Einladungen in Studiengruppen nicht gelöscht [#5195]
- Inkonsistente Bezeichnungen der Ordnertypen [#5197]
- Fragebögen: Icon in Startzeitpunkt/Endzeitpunkt bewegt sich beim Öffnen des Dialogs [#5202]
- MVV: Bearbeitungskontext geht nach Bearbeitung einer Fachsemsterzuordnung verloren [#5203]
- Fragebogen: Einstellung "Pflichtfrage" funktioniert bei Freitextfrage nicht [#5204]
- Elemente auf "Privatspäre" unter Profil > Einstellungen sind nicht übersetzt [#5205]
- I18N-Datenfelder auf der MitarbeiterInnen-Seite einer Einrichtung können zur Anzeige von "default_value" führen [#5208]
- Inkonsistentes Verhalten von Datenfeldern [#5213]
- Weitere PHP8-Warnungen [#5216]
- Systemplugins sollten vor allen anderen Plugins geladen werden [#5241]
- Globale Suche nach Veranstaltungen berücksichtigt SEM_VISIBILITY_PERM nicht [#5250]
- Methode User::search() liefert ggf. Einträge ohne User-ID zurück [#5279]
- Funktionen/Gruppen: Multipersonsearch führt zu Speichermangel [#5282]
# 20.12.2024 v 5.5.3
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.5.3&state=all
- Fullcalendar: Das Jahr wird in den Spalten bei der Hochkant-Darstellung auf Mobilgeräten abgeschnitten [#3632]
- Polishing: GUI des neuen Terminkalenders verbessern [#3692]
- Terminkalender: Fehler beim Löschen eines Termins [#4291]
- Courseware: Blöcke landen bei Doppelklick unter "nicht zugewiesene Inhalte" [#4403]
- ILIAS-Schnittstelle: neues Feld matriculation_number wird nicht berücksichtigt [#4446]
- Wiki: Berechtigungen für AutorInnen sind nicht korrekt [#4490]
- Wiki: Speichern der Inhalte umgeht den HTML-Purifier [#4528]
- Terminvergabe: Benachrichtigung bei Absage trotz ausgeschalteter Benachrichtigungen [#4532]
- Position der Anfasser in der Merkliste ist inkorrekt, wenn diese herunter gescrollt wird [#4549]
- Courseware: Merkliste springt beim Aklicken des Aktionsmenüs nach oben [#4552]
- Hinzufügen Button im Inhaltsverzeichnis wird ausgeblendet [#4573]
- Courseware: Quellcode-Bearbeitungsfenster im Textblock ist zu klein [#4579]
- Matrikelnummer kann nicht geleert werden und CSRF-Protection wird nicht abgefragt [#4584]
- Im Wiki einer Veransatltung können beliebige Wikiseiten aus anderen Veranstaltungen angeschaut werden [#4585]
- Wiki-Link zeigt die falsche Seite an [#4602]
- User::convert() referenziert nicht mehr vorhandene Tabellen "wiki" und "wiki_locks" [#4608]
- Elemente in der Schnellsuche sind stellenweise nicht richtig angeordnet [#4617]
- PHP 8: Inkompabilität der Bibliothek `lcobucci/jwt:3.4.6` [#4621]
- Diverse PHP8-Warnungen in den Raumanfragen etc- [#4623]
- Löschen von Nutzerkonten: E-Mail-Benachrichtigung auch bei deaktivierter Option [#4624]
- Scrollen funktioniert nicht im Menü „Abschnitt hinzufügen“ in der CW [#4625]
- PHP8 - Fehler im Kalender [#4657]
- Falscher Fokus im CKEditor bei den Courseware-Zertifikatseinstellungen [#4681]
- Raumanfragen: Räume werden beim Auflösen einer Raumanfrage nicht gebucht [#4690]
- Terminbuchung SQL-Fehler bei Buchung auf eigener Terminvergabe-Seite [#4703]
- Kalender: Vertrauliche Termine können von anderen eingesehen werden [#4706]
- Probleme beim Verschieben von Terminen im Terminkalender [#4723]
- Probleme mit Wiederholungsterminen im Terminkalender [#4724]
- UX-Problem im Terminkalender: Der Terminkalender merkt sich das Datum nicht über Aktionen hinweg [#4725]
- Terminkalender: Mehrtägige Termine können nicht gelöscht werden [#4726]
- lib/fullcalendar.js: Dialoge zum Verschieben von Fullcalendar-Einträgen ist zu groß [#4727]
- Wiki triggert jsupdater auf jeder Seite im Stud.IP [#4738]
- Zugriff auf WikiPage::content überschreibt SORM-Daten [#4780]
- „Invalid day number“ im Kalender-Widget der Startseite, wenn es einen Wiederholungstermin gibt, der sich Sonntags wiederholt [#4801]
- register.js nach Umbau der Registrierung obsolet [#4802]
- Eintrag im Stundenplan verschwindet bei Zuweisung der Farbe grau [#4838]
- Dateiwähler ist nach Upload nicht aktuell [#4861]
- 5.5: Im Terminkalender können keine mehrtägigen ganztägigen Termine angelegt werden [#4918]
- Einrichtung bearbeiten: Homepage ist ein Pflichtfeld [#4930]
- Externe Seiten verwenden SimpleORMapCollection statt SimpleCollection oder Array [#4937]
- Themen von unregelmäßigen Veranstaltungsterminen werden in der Übersicht doppelt ausgegeben [#4944]
- Migration 5.5.23 und 5.5.23.1 zusammenfassen [#4981]
- Wiki: Exception taucht auf, wenn ich mit autor-Berechtigungen eine nicht existierende Seite aufrufe [#4991]
- Wiki in Einrichtung kann keine Startseite haben [#4992]
- Alte Links auf Wikiseiten funktionieren nicht mehr [#4996]
# 20.12.2024 v 5.4.6
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.4.6&state=all
- Lehrendenfilter bleibt leer bei nur einer Einrichtung [#4241]
- Blubber "Benachrichtigungen aktiviert umschalten" funktioniert nicht [#4558]
- Fehler im Job "phpstan" der Pipeline [#4559]
- OER: Besser zurück Typ der Methode (oerModuleIntegrateMaterialToCourse()) [#4561]
- Startseitenwidgets: Englische Pluginbeschreibung wird ignoriert [#4568]
- OER: Die Klasse `CoreDocuments` lädt zweimal [#4581]
- Zeiten/Räume: geschlossene Raumanfragen können nicht wieder geöffnet werden [#4582]
- PHP8-Warnungen in den Kontakten [#4609]
- Veranstaltungsverwaltung: Falscher ursprünglicher Name eines Werkzeugs beim Umbenennen [#4633]
- PHP8-Warnung in der Pluginverwaltung [#4640]
- Fehlerhafte Navigation im Vorlesungs-/Einrichtungsverzeichnis [#4748]
- Veranstaltungsverzeichnis/Einrichtungsverzeichnis findet keine unbegrenzt laufenden Veranstaltungen mehr [#4752]
- Filter nach Kategorien in Verwaltung falsche Ansicht von nicht aktivierten Elementen [#4781]
- PHP8-Warnings beim Anpassen der Farbe auf Meine VA [#4803]
- PHP8 Warnungen in Admin-VA [#4809]
- PHP8-Warnungen beim Auflösen von Raumanfragen [#4821]
- StudipModule/StandardPlugins können nicht mehr in Veranstaltungen aktiviert werden [#4862]
- Hilfelasche: Icon vor "Weiterführende Hilfe" steht in eigener Zeile [#4896]
- Admin-VA: unbegrenzte Veranstaltungen werden nicht exportiert [#4907]
- Diverse Felder auf der Admin-Verwaltungsseite für Veranstaltungen sind nicht gegen XSS geschützt [#4911]
# 20.12.2024 v 5.3.9
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.3.9&state=all
- Verwirrende Sichtbarkeitseinstellungen für Tools in einer Veranstaltung [#613]
- OER Campus: Filter Niveaustufe lässt sich nicht wieder entfernen [#2429]
- Warnung "Einstellungen [...] können nur gespeichert werden, wenn der Selbsteintrag aktiviert ist." beim Anlegen einer Gruppe [#2518]
- Courseware: Leinwand Block [#2867]
- RVV: Ablehnen einer Raumanfrage [#2941]
- Arbeitsplatz: Filter im Dateibereich funktioniert nicht mehr [#3267]
- Bulk Update der Gruppengröße bei Gruppen mit Ordner löscht die Verknüpfung zum Ordner [#3342]
- 'data-proxyfor' triggert change nicht [#3467]
- Falsches HTML in der Modulsuche [#3838]
- Datenschutzerklärung kann während Auswahl der Sichtbarkeit/Nutzungsbedingung nicht geöffnet werden [#3912]
- Orphaned `etask_assignments` [#3971]
- SimpleORMap erzeugt mit PHP 8.1 eine Deprecation Warning [#4134]
- Cache-Verwaltung: Einstellung des Memcached-Server wird beim Hinzufügen von Servern überschrieben [#4265]
- MultiPersonSearch respektiert die Sichtbarkeitseinstellungen nicht [#4318]
- ILIAS-Schnittstelle: Kategorien werden nicht angelegt [#4443]
- ILIAS-Schnittstelle: Geschlechts-Eintrag wird nicht korrekt übergeben [#4444]
- ILIAS-Schnittstelle: falscher Typ für Konstanten in IliasUser.php [#4445]
- ILIAS-Schnittstelle: Option, Kategorie auf den Persönlichen Schreibtisch zu legen, wird angezeigt [#4447]
- Veranstaltungstitel in Dateiübersicht sind nicht verlinkt [#4457]
- Breadcrumbs in der Contentbar brechen nicht richtig um [#4503]
- Warnings beim Kalender [#4527]
- Zeiten/Räume erlaubt Nutzern das Bearbeiten und Löschen fremder Termine [#4530]
- Kontakte - Gruppen können nicht angelegt werden [#4555]
- TypeError: Argument 1 passed to ActionMenu::setContext() must be of the type string, null given [#4556]
- Das Eintragen von Personen über [Grunddaten > Personal] führt zu Fehler [#4557]
- StudipFileCache: Funktion "write" findet existierende Datei nicht [#4560]
- URLHelper in JavaScript verhält sich bei "null"-Werten anders als der in PHP [#4564]
- PHP - Warnungen in den Raumbuchungen [#4566]
- Abstände in der Content-Bar [#4569]
- Externe Seiten: Aufruf der Grundeinstellungen führt zu Fehler [#4571]
- Externe Seiten: Speichern der Konfiguration führt zu Fehler (Mitarbeiter templatebasiert) [#4572]
- Fehlerhaftes Form-Tag eingefügt [#4574]
- app/views/course/wizard/steps/basicdata/index_studygroup.php: htmlReady fehlt [#4575]
- Toter Code: course/studygroup/create wird nicht mehr benutzt [#4576]
- SimpleORMap::getNewId funktioniert nicht für int-Primärschlüssel mit auto_increment [#4586]
- Inkonsequente Status-Auswertung des Coureware-Inhaltselement einer VA im Arbeitsplatz [#4588]
- Courseware: Arbeitsplatz->Courseware->Meine Veranstaltungen zeigt nur ein Lernmaterial pro VA an [#4590]
- Vorschau im Dateidialog erhöht Downloadcounter [#4591]
- PHP-8 Warnungen im Dateibereich [#4597]
- PHP8-Warnungen in Visibility [#4598]
- PHP8-Fehler in der Rest-API [#4599]
- PHP8-Warnungen in MyRealmModel [#4600]
- PHP8-Warnungen in den Wartelisten [#4603]
- PHP8-Warnungen in StudipMail [#4607]
- PHP8-Warnungen im jsupdater [#4610]
- PHP8-Warnungen im Forum [#4611]
- PHP8-Warnungen in den Raumbuchungen [#4612]
- PHP8-Warnungen in den Raumanfragen [#4613]
- PHP8 - Warnungen in den Zeiten / Räume [#4614]
- PHP8-Warnung in der SHibboleth-Anbindung [#4616]
- OER-Campus: Alignment im Editor bei den Tags verschoben [#4629]
- PHP8: Gesammelte Warnings aus der 5.5 in Vechta [#4631]
- Warteliste wird nicht angezeigt [#4632]
- Einträge im Aktionsmenü sind per Tastatur nicht mehr erreichbar [#4641]
- Opengraph-Komponente hat noch Flash-Reste [#4643]
- Courseware: Fehler beim Import [#4649]
- Syntax Highlighting wird nicht mehr ausgeführt [#4650]
- JSON-API wirft Fehler bei Anfragen mit Transfer-Encoding [#4652]
- PHP8 - Warnungen auf Meine Veranstaltungen [#4655]
- PHP8 - Warnungen im Kalender [#4658]
- Weitere diverse PHP8 - Warnungen [#4659]
- PHP8 - Warnungen in den Nachrichten [#4662]
- PHP8-Warnungen in der Teilnehmendenliste [#4663]
- PHP8-Warnungen in der Courseware [#4664]
- PHP8 - Warnungen / Fehler [#4665]
- Gelöschter Absender einer Nachricht wirft Exception [#4678]
- Zeiten/Räume: "Alle auswählen" wählt keine Termine mehr aus [#4688]
- „Ordner für Hausaufgaben“ und „Unsichtbare Ordner“ nutzen das gleiche Icon [#4691]
- Diverse kritische Aktionen über ungeschützten GET Request [#4692]
- Blaue Kopfleiste wächst bei Hover auf Benachrichtigungen [#4698]
- Administration/Veranstaltungs-Stundenplan kann ohne Admin Rechte aufgerufen werden [#4701]
- Parameter $avatar bei PersonalNotifications::addUser() hat falschen Default [#4705]
- ToolsNavigation ist verwaist [#4709]
- fehlende Einstellungen in der config-Tabelle für Notifications [#4711]
- JSON-API setzt die baseURL des URLHelper zu spät [#4712]
- JSONAPI: Lehrende und TutorInnen können nicht ausgelesen werden [#4714]
- Prioritätsverteilung kann durch Studierende manipuliert werden [#4717]
- Fehler beim Logout via SSO [#4731]
- Plugin kann durch die Variable $class gestört werden [#4739]
- Buttons im Dialog reagieren nicht auf Änderungen des zugrundeliegenden Buttons [#4745]
- PHP8-Warning bei der Anzeige der Log-Events [#4757]
- SimpleCollection-Methoden verändern den Typ der Collection [#4758]
- SimpleORMap leeres additional_fields set wirft TypeError in Php8 [#4761]
- Änderungen am Proxy triggern nicht mehr andere Helper-Attribute [#4762]
- Fehler in der JSONAPI [#4764]
- Fehler in ExportPDF, wenn eine eingebundene Datei nicht mehr existiert [#4765]
- Kopieren von Lerninhalten aus bestehenden Lernmaterialien klappt nicht [#4766]
- PHP8 - Warnungen in den Anmeldesets [#4767]
- Typo in CourseWareWelcomeScreen [#4772]
- PHP8-Warnungen in der Modulverwaltung [#4773]
- Request::i18n() ist fehlerhaft, wenn als Default ein I18NString angegeben wird [#4774]
- Zugriff auf CourseDate::statusgruppen ist nicht performant [#4776]
- Migration für #4008, um die falschen Einträge abzuräumen [#4777]
- PHP8-Warnung bei der globalen Suche [#4778]
- Kontrastprobleme Hover Effekt wenn Kontrastreiches Farbeschema aktiviert ist [#4782]
- Import von Courseware läuft in einen Fehler, wenn die Datenbank im Strict-Modus ist [#4792]
- PHP8 - Fehler im Dateibereich [#4804]
- PHP8-Warnungen beim Anlegen von Veranstaltungen [#4805]
- Cache kann nicht konfiguriert werden, wenn CACHING_ENABLE ausgeschaltet ist [#4806]
- Browserslist: caniuse-lite is outdated [#4808]
- Fehler beim Anlegen einer Einrichtung [#4811]
- PHP8-Warnung in der MultipersonSearch [#4812]
- PHP8 - Warnungen in der alten RestAPI [#4813]
- PHP8-Warnungen in den Raumanfragen [#4814]
- Diverse weitere PHP8 - Fehler / Warnungen [#4823]
- Weitere PHP8-Warnungen in der Version 5.5 [#4829]
- PHP8 - Warnungen in der Teilnehmendenliste [#4830]
- PHP8-Warnungen in der Courseware [#4834]
- PHP8 - Fehler / Warnungen beim Anlegen von Standorten / Gebäuden und Räumen [#4841]
- Paging/Offset der JSON-API für User funktioniert nicht [#4844]
- Forum: Abfrage nach Kategorie "Allgemein" funktioniert nicht zuverlässig [#4850]
- Forum: Nach Aktivierung ist das Icon rot ohne relevante Inhalte [#4851]
- 2FA: nach zu vielen ungültigen Versuchen kann Token nicht erneut eingegeben werden [#4855]
- Ausgabe von ResourceRequest::getDateString() für Einzeltermine ist unsortiert [#4856]
- Die Übersetzungsdomäne für Plugins wird nicht beim Initialisieren der Übersetzungen gesetzt [#4857]
- Fehlerhafte Type Hints in I18NString [#4860]
- I18NString speichert unter Umständen zu viele Daten [#4863]
- SimpleORMap::isFieldDirty() ist defekt für i18n-Felder [#4864]
- Personendaten drucken (DSGVO) , formatReady fehlt bei den Inhalten [#4882]
- PHP8-Warnungen im htmlpurifier [#4883]
- Speichern von I18N-Datenfeldern ist defekt [#4891]
- Eintragen von Standardvertretung scheitert mit "Unzulässige Request-Methode" [#4897]
- PHP8-TypeError beim Genehmigen eines Studiengangs [#4899]
- PHP8 Warning in Auswertung von Likert- und Polskala-Fragen [#4906]
- Probleme mit Nicht-Pflicht-Fragen bei Likert- und Polskalen [#4908]
- Drag & Drop von Räumen mit sehr langem Namen in Raumgruppen funktioniert nicht wie erwartet [#4917]
- Weitere PHP8-Warnungen [#4925]
- OER Campus: Löschen von Themen beim Anlegen eines Materials fehlerbehaftet [#4931]
- Zeiten/Räume: Sammelaktion bucht Termine nicht mehr in der auswählten Reihenfolge [#4938]
- PHP8 Warning in LVGrizosWizardStep [#4941]
- Funktion "tooltipHtmlIcon()" interpretiert kein HTML und zeigt alle Tooltips als wichtig an [#4947]
- PHP >= 8.1: Probleme durch Änderungen am Verhalten von Rückgaben durch PDO [#4971]
- CKEditor: readonly wird nicht gesetzt [#4979]
- Im Stundenplan werden veraltete Termine angezeigt [#4984]
- Raumgruppen: Admin kann beim Zuweisen von Rechten unsichtbare Accounts nicht finden [#4994]
- Meldung bei fehlender Datenbankverbindung anpassen [#5012]
# 03.09.2024 v 5.5.2
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.5.2&state=all
- Courseware: Fokusmodus bietet zwar Bearbeiten an, bricht dann aber ab/beendet bearbeiten [#1461]
- Wiki: Das automatische Speichern ist standardmäßig angeschaltet [#4166]
- Courseware: TypeError beim Weiterschalten der Seite [#4192]
- „Anmerkungen aktivieren“ funktioniert nicht [#4400]
- Courseware: in der neuen Block-Auswahl-Liste ist für mich unten der letzte Eintrag nicht richtig sichtbar [#4401]
- Courseware: Anzeige einer Sperre beim Löschen einer Seite [#4406]
- Courseware: Fehler in der JSON-API durch Warnungen in PHP 8 [#4408]
- Wiki: Neue Seiten zeigt falsche Autorenzuordnung an [#4410]
- Wiki: InvalidArgumentException beim Anklicken eines Links [#4411]
- Blubber: Eingabefeld wächst bei jedem eingegeben Zeichen [#4413]
- Blubber-Thread: Das Lade-Icon dreht sich dauerhaft [#4414]
- Courseware: Quelltext-Block zeigt kein Highlighting mehr an [#4439]
- Probleme beim Eintragen von Terminen [#4484]
- Fehler beim Import von Terminen [#4485]
- Wiki ermöglicht, alte Zwischenversionen der Seite zu löschen [#4486]
- Suche nach Matrikelnummer in der Nutzerverwaltung nicht möglich [#4497]
- Update verändert erste Seite einer Courseware [#4499]
- Externe Seiten: Fatal error: Allowed memory size exhausted [#4518]
- PHP8: Warnungen in JSON-API Route des Dateibereichs [#4519]
- Wiki: Keine Warnung beim Verlassen der Seite bei ungespeicherten Änderungen [#4522]
- PHP8 - Warnungen im WIKI [#4535]
- PHP8 - Warnungen im CourseMember [#4536]
- CalendarDate::garbageCollect() wird nicht verwendet [#4539]
- Wiki: Warnung beim Speichern der Seite [#4543]
# 03.09.2024 v 5.4.5
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.4.5&state=all
- Verwaltung von Veranstaltungen: Spalte "Inhalte" bricht um [#3078]
- Galerie Block Gitter Layout defekt [#3184]
- Courseware: Export des Lernmaterials ist kaputt, wenn ein Bild aus dem Bilderpool gewählt wurde [#3743]
- Admin-VA CSV-Export ist unsortiert [#3994]
- Bei einem leeren Blubber-Thread dreht sich dauerhaft das Lade-Icon am linken Rand des Hauptbereiches [#4191]
- JSON-API controller RangeTreeIndex StudyAreasIndex haben eine irreführende und zu kurze Beschreibung im DocBlock [#4396]
- JSON-API Controller RangeTreeIndex ist nicht eingebunden [#4397]
- Veranstaltungsverwaltung: ursprünglicher Werkzeugname zeigt nichts an [#4419]
- Werkzeuge: Einstellung für Sichtbarkeit wird auch in Einrichtungen angeboten [#4420]
- kompakte/mobile Navigation: Verwaltung ist ganz unten im Menü [#4422]
- "Mehrere Gruppen anlegen" wirft Fehler bei Einzelterminen wegen fehlender Description [#4449]
- Adminverwaltungsseite für Veranstaltungen: Zurücksetzen der Suche setzt diese nicht unmittelbar zurück [#4460]
- Werkzeuge: Zusätzliche Kategorie "Sonstige" [#4469]
- Das Feedback-Modul ist kaputt [#4475]
- Hauptordner in Veranstaltung gehört Studierendem statt Dozierendem [#4479]
- Veranstaltungs-Stundenplan zeigt keine Treffer, wenn auf der Veranstaltungsverwaltungsseite ein Suchbegriff eingegeben wurde [#4515]
- PHP8 - Warnungen auf der Teilnehmerseite [#4533]
- PHP8 - Warnungen in den Raumberechtigungen [#4538]
# 03.09.2023 v 5.3.8
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.3.8&state=all
- Courseware: Falsche Berechtigungen für nicht im Kurs eingetragene Personen [#889]
- Globale Suche/Schnellsuche: Graue Texte entfernen [#1382]
- WYSIWYG: Unterschiedliche Darstellung Editor/Lesemodus [#1607]
- Zusammenführen von Accounts nimmt keine Courseware-Inhalte mit [#2492]
- Beschreibung des Lernmaterials nur beim Import nicht zwingend erforderlich. [#2776]
- Aktion "Inhalt kopieren" bei einer abgegebenen Aufgabe funktioniert nicht [#2805]
- Courseware Dateiordner Block Darstellungsfehler [#2823]
- Courseware: Kopieren von Abschnitten generiert `null`-Einträge in der Payload [#2842]
- Verschieben von Blöcken direkt nach dem Anlegen funktioniert nicht [#3000]
- Exportierter Kalender kann nicht in einem anderen Account importiert werden [#3103]
- Beschreibung im Block Karriere wird nicht angeziegt [#3144]
- Courseware: "Lerninhalte kopieren"-Wizard kann verschoben werden, Dropdownmenü bleibt sticky [#3174]
- Courseware: "Error: Undefined data type" im Block "Ziele" [#3181]
- DOMDocument::loadHTML(): Empty string supplied as input [#3194]
- Courseware: verlängerte Aufgabe kann von Studi nicht mehr abgegeben werden (Aktionsmenü fehlt) [#3269]
- Shibboleth: Logout beendet Session nicht [#3624]
- Courseware: PDF-Export exportiert "unsichtbare" Blöcke [#3726]
- Implementierungen des Serializable-Interfaces erzeugen unter PHP 8.1 Deprecation Warnings [#4135]
- PHP 8: Warnungen in JSON-API Route der Courseware [#4268]
- Memcached-Cache: Änderung der Einstellungen wird nicht aktiv [#4284]
- Memcached-Cache: Eintragen von mehr als einem Server führt zu einem nicht funktionieren System [#4286]
- Suche findet eigene Veranstaltungen nicht immer [#4384]
- PHP8 Warning bei Export von Ablaufplan [#4399]
- Courseware: Quelltext-Block rendert HTML statt es mit Syntaxhervorhebung darzustellen [#4437]
- Evaluationsblock trotz global deaktivierter Evaluationsfunktion in Veranstaltungskurzinfo sichtbar [#4440]
- PHP8 Fehler in AuthPlugin: method_exists(): Argument #2 ($method) must be of type string, Closure given [#4442]
- Raumverwaltung: Dokumente zu Räumen haben "Größe" als Standardsortierung [#4450]
- Fragebogen: Nicht-Pflicht Antwort wird auf erste Option gesetzt [#4452]
- Verwaltungsfunktionen von Einrichtungen sind auch für nicht berechtigte Nutzer sichtbar [#4458]
- LTI-Schnittstelle: Parameter lis_course_section_sourcedid ergänzen [#4461]
- Courseware: keine Anzeige bei Lernmaterialien [#4466]
- Regelmäßige Termine lassen sich nicht bearbeiten [#4471]
- Fehler "Only variables should be passed by reference" in der Übersicht der Module [#4472]
- Bearbeiten von vielen Modulen ist kompliziert [#4473]
- PHP8-Warning beim Login via SSO [#4480]
- „Neue Nachricht schreiben“: Pflichtfelder werden nicht barrierearm ausgezeichnet [#4488]
- Studiengruppen: Liste der teilnehmenden Personen als Gallerie ist zu starr [#4489]
- PHP-Warnungen in den Umfragen [#4492]
- Ausgabe der Ankündigungen auf externen Seiten ist defekt [#4496]
- Zugriffsbeschränkung der SOAP/XML-RPC Web-Services funktioniert nicht mit IPv6 [#4500]
- Veranstaltung: Übersichtsseite hat Textstrings mit Positionsangaben und bei Evaluationen fehlt die Icon-Bezeichnung [#4505]
- Standardeinrichtung beim Anlegen von LV ist für Dozenten nicht vorgewählt [#4506]
- JSUpdater leert den Flash [#4507]
- CoreScm: Entfer nicht verwendete Methode [#4508]
- PHP8-Warnungen bei Raumzeit [#4521]
- Eintragen von IPv6 Bereich bei den Webservices nicht möglich [#4524]
- Links in formatiertem Text haben falsche vertikale Position [#4531]
- PHP8 - Warnungen in den Institute-Klasse [#4534]
- StudipArrayObject unserialize wirft fehler [#4537]
- Fehlende Schriftarten ergänzen [#4542]
- PHP8 - Warnungen bei widget-layout [#4544]
- CSRF-Protection wird an diversen Stellen falsch verwendet [#4545]
- CSRF-Protection wird an noch mehr Stellen falsch verwendet [#4548]
# 25.07.2024 v 5.5.1
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.5.1&state=all
- PortalPlugins auf der Startseite im ausgeloggten Zustand entfernen [#3150]
- Courseware: TypeError beim Anklicken einer Seite im Inhaltsverzeichnis [#4193]
- Courseware: Niveau-Stufe lässt sich nicht zurücksetzen [#4315]
- Coureware: Toolbar Drag&Drop funktioniert im gescrollten Zustand nicht mehr richtig [#4322]
- [Vue warn]: The computed property "context" is already defined in data. [#4340]
- Course - Blöcke in Tabs hinzufügen nicht intuitiv [#4344]
- Die Kacheln für Blöcke in der Werkzeugleiste lassen sich auch außerhalb des Anfassers ziehen, einsetzen in einen Abschnitt geht aber nicht [#4355]
- Courseware exportiert keine Unterseiten mehr [#4371]
- Terminvergabe-Termine im Kalender [#4375]
- Sprechstunden: Warning: 1265 Data truncated for column 'repetition_type' at row 1 [#4379]
- Verwaiste Template fürs Wiki [#4386]
- Undefined variablen Warnungen beim Resource hinzufügen [#4423]
# 25.07.2024 v 5.4.4
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.4.4&state=all
- Courseware: Aktionsmenü in "Merkliste" ist falsch plaziert [#3009]
- Vorlesungsverzeichnis: HTML in Tooltips [#3050]
- Veranstaltungsverzeichnis: Einträge ohne Namen sind nicht mehr bearbeitbar [#3489]
- Courseware: öffentliche Links kaputt [#4351]
- Bilder-Pool Dateipfad/URL nicht konfigurierbar [#4356]
- VVZ: Kacheln laden teilweise nicht mehr nach [#4358]
- PHP - Warnungen im PluginManager [#4363]
- Stock Images: Fehler beim Upload, wenn das Bild nicht breit genug ist [#4377]
- PHP8-Fehler beim StockImage-Upload [#4378]
- search/courses lädt nicht, wenn in der URL der Parameter „cid“ steht [#4394]
# 24.07.2024 v 5.3.7
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.3.7&state=all
- Courseware: Aktionsmenü in der Contentbar ist falsch plaziert [#2557]
- Courseware: Aktionsmenü in der Contentbar ist falsch plaziert [#3073]
- Aktionsmenü sollte nicht mehr immer umgehängt werden [#3447]
- Sprechstunden: Fehler beim Aufruf von "Termin reservieren" ohne Anmeldung [#3771]
- PHP8-Warnungen [#4341]
- Neues-Passwort-Mail ist falsch [#4368]
- PHP8-Warnungen bei den MVV-Dateien [#4369]
- XSS beim Namen des Autoren in Details eines OER-Materials [#4376]
- PHP8-Warnung [#4381]
# 24.07.2024 v 5.2.9
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.2.9&state=all
- Fehler bei der Raumplanung (Errorlog) [#3676]
- StudipFileCache::getStats() gibt Werte für den falschen Cache raus [#3699]
- Tägliche Benachrichtigungen: seminar_id statt range_id in notification_text.php [#3978]
- Methode "Folder::findTopFolder()" prüft nicht auf Typ "RootFolder" [#4008]
- Exception in OpenGraph::extract() bei null-String [#4319]
- X-Icon zum Zurücksetzen der globalen Suche ist grau statt blau [#4326]
- Fehler beim Anzeigen eines Tooltips im oberen Bereich [#4330]
- Umbenennen von Funktionen/Gruppen löscht Übernahme der Standarddaten [#4331]
- Typo im BIEST #4288 [#4333]
- Fehlerhaftes Verhalten beim Bearbeiten von Terminen bei vorhandener Gruppenzuordnung [#4334]
- Manuelles Eintragen von Personen: Beim Domänenfilter wird bei der Auswahl „Ohne Domain“ niemand gefunden [#4353]
- CLI-Kommando "plugin:i18n:extract" aktualisiert nicht die .po-Dateien [#4360]
- Dateibereich: Literaturangaben haben ungeklärte Lizenz [#4361]
- Pluginverwaltung: Filter auf Plugintypen mit Namespace funktioniert nicht [#4364]
- Falsche Fehlerbehandlung in Auth-Plugins [#4374]
- Fragebögen: Benachrichtigung an den erstellenden Nutzer werden in der Sprache des teilnehmenden Nutzers verschickt [#4385]
- Nachricht beim Abgeben einer Aufgabe enthält nicht den Aufgabentitel [#4389]
# 18.06.2024 v 5.5
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.5&state=all
- Anspringen von Ankündigungen soll diese gleich öffnen [#912]
- Überarbeitung des Terminkalenders in Stud.IP [#1354]
- Kalender/Stundenplan: Teilweise schwierige Kontraste der Farbboxen [#1368]
- Wiki: Autor:innenzuordnung in der Versionierung ausschließlich über Farben [#1377]
- Registrierungsformular mit FormBuilder neu bauen [#1559]
- Wiki: Wiki-Seiten sollen umbenannt werden können [#1790]
- StEP00370 Neuprogrammierung der "Externen Seiten" [#1800]
- Neuentwicklung der Exporte [#1959]
- Aktuelle Termine führen nicht zur Veranstaltung [#2011]
- LESS/SCSS-Farbvariablen durch CSS-Variablen ersetzen [#2125]
- Courseware: Bewertung von Lernmaterialien [#2472]
- Werkzeugleiste für Courseware [#2488]
- Hinzufügen von Blöcken/Abschnitten per Drag&Drop [#2532]
- Courseware-CSS nur bei Bedarf laden [#2627]
- Nutzendenfreundliche Umgestaltung der Loginseite [#2660]
- Fragebogen: Sortierung nach Spaltenüberschriften [#2822]
- Likertskala und Polskala sollen absolute Zahlen in der Auswertungen anzeigen [#2911]
- Nachrichten: Textstrings „Nachrichten im Posteingang löschen“ und „Nachrichten im Postausgang löschen“ ersetzen [#2975]
- Trennlinien in Aktionsmenüs ermöglichen [#3013]
- Fehler beim Zustellen von E-Mails an den Absender senden lassen [#3023]
- Lernmaterialien in Courseware sortieren [#3032]
- Array bei UNI_LOGOUT_ADD zulassen [#3092]
- Widget-Verwaltung der Startseite auf SORM umstellen [#3094]
- Neugestaltung der ersten Seite eines Lernmaterials (Courseware) [#3111]
- Lernmaterial OER-Metadaten nur bei Inhaltstyp OER-Material anzeigen [#3112]
- Aufräumen von object_user_visits in den GarbageCollector aufnehmen [#3113]
- Mindestanforderung auf PHP 7.4 hochsetzen [#3123]
- Informationsseite zu Leichter Sprache bereitstellen [#3132]
- Avatare als WebP statt als PNG speichern [#3183]
- JSONAPI Routen für Feedback Elemente und Einträge [#3185]
- Keine unbegrenzten Veranstaltungen mehr in der Kategorie Lehre [#3193]
- Deprecation-Warnings im Autoloader mit PHP8.2 [#3201]
- Fehler bei StudipFileloader::load() bei den Tests mit PHP 8.2 [#3202]
- Warnungen und Fehler bei Unit-Tests mit PHP8.2 (vermutlich auch 8.0 und 8.1) [#3204]
- Warnungen und Fehler bei den Tests der JSONAPI mit PHP8.2 (vermutlich auch 8.0 und 8.1) [#3206]
- Wiki modernisieren [#3215]
- "Bewegung reduzieren" vereinheitlichen und anders lösen [#3216]
- Polyfills für PHP 8.2 und 8.3 hinzufügen [#3221]
- Properties der SORM-Models korrekt definieren [#3225]
- Einstellung zum Deaktivieren des ckeditor entfernen [#3227]
- Trennlinien in Sidebar-Widgets ermöglichen [#3235]
- Dependabot-gitlab für Stud.IP ermöglichen [#3242]
- Überarbeitung der Kommentarfunktion von Courseware [#3255]
- Courseware Seiten-Export als eine Aktion [#3257]
- Courseware Lerninhalte und Seiten hinzufügen, kopieren und importieren als eine Aktion [#3258]
- Courseware Ansichten entfernen [#3260]
- Courseware Seiten im Inhaltsverzeichnis anlegen und umbenennen [#3261]
- Erweiterter Dateiwähler als Vue-Komponente [#3262]
- Lernmaterial im Inhaltsverzeichnis prominenter darstellen [#3266]
- Courseware Aufgaben erweitern [#3286]
- Updates der Bibliotheken zur 5.5 [#3315]
- Erweiterung der Courseware-Zertifikate [#3319]
- Impressum mit Option ausstatten: Seiten für nicht eingeloggte Nutzer ausblenden, Reihenfolge ändern, Entwurfsmodus [#3331]
- Matrikelnummer als Feld in auth_user_md5 [#3336]
- Testergebnisse aus ILIAS in das Stud.IP Gradebook importieren [#3344]
- Bump @vue/eslint-config-typescript from 11.0.3 to 12.0.0. [#3352]
- Courseware CSS aufteilen [#3361]
- Optimierung der Courseware-Ladezeiten [#3364]
- Flash-Altlasten entfernen [#3371]
- Dialog-Titel ist schwarz und nicht lesbar [#3372]
- Sprechstunden: Link zum kopieren anbieten & Fehler mit falscher URL vermeiden [#3373]
- Fehler beim Aufruf von web_migrate [#3374]
- MVV: Logging von Personen und Dateizuordnungen [#3384]
- MVV: Ausgabetemplates für Objektnamen [#3386]
- MVV: Suche (Filter) nach Abschlüssen und Fächern im Backend [#3387]
- AudioBlock modernisieren [#3388]
- SimpleORMap::__clone() sollte die Kopie als "neu" markieren [#3398]
- Parameter `-f` bei mysql-Kommandos entfernen [#3417]
- Sidebar in "Veranstaltungen->Administration" ist zu lang [#3421]
- JSON-API: Auflisten von Nutzern einer Einrichtung ermöglichen [#3429]
- Sprechstunden: Möglichkeit schaffen, dass TutorInnen vom Emfpang der Buchungsbenachrichtigung ausgeschlossen werden [#3435]
- Belegungsplan eines Raumes - Bearbeiten ist nicht verlinkt [#3451]
- TIC 3336: Nach dem Feld Matrikelnummer kann in admin/user nicht sortiert werden [#3455]
- Dateigrößen im FileArchiveManager besser lesbar machen [#3463]
- Admin-Benutzerverwaltung - Tabellenfusszeile ist kaputt [#3470]
- UserManagement->deleteUser verschickt jedes mal eine E-Mail [#3473]
- Felder bei den Einrichtungsdaten mehrsprachig erlauben [#3474]
- Checkboxen in Aktionsmenüs werden als "Link" vorgelesen [#3482]
- Polishing: CoursewareStructuralElement Komponente aufräumen [#3501]
- Polishing: Überarbeitung der Sprechblasen in Blubber [#3512]
- SelectListElement ignoriert Parameter $selected_option [#3522]
- Verwaltung -> Grunddaten: Bereich „Beschreibungen“ umbenennen in „Weitere Angaben“ [#3525]
- Ungenutzte Dateien in "public/pictures/blubberstream" entfernen [#3530]
- Die Designänderungen in TIC 3512 funktionieren nicht mit dem Hochkontrastmodus [#3537]
- Anzeige des Avatars bei Einrichtungen zu groß [#3540]
- Courseware: Abruf des Zertifikats, obwohl das für die Unit gar nicht aktiviert ist [#3548]
- Fehlendes CSS - Arbeitsplatz -> Courseware -> Meine Veranstaltungen [#3564]
- Layout Fehler in Courseware [#3589]
- Login: Fokusmarkierung ist links und rechts abgeschnitten [#3601]
- PHP8-Warnung auf der Loginseite [#3603]
- Änderungen aus MR !2437 sind verloren gegangen [#3604]
- Barriere in der Nutzung des Login-Formulars [#3605]
- Änderungen aus MR !1905 sind durch den Login Step wieder verloren gegangen [#3606]
- CSRFProtection ist defekt [#3609]
- Neuer Login: Fehlermeldung verschiebt die anderen Boxen [#3612]
- Layout des Loginformulars [#3620]
- Skiplinks auf Login-Seite funktionieren nicht [#3621]
- Fullcalendar-Ladeindikator ist größer als der Ladeindikator auf anderen Seiten [#3626]
- Bildvergleich Block fehlt mapgetters. [#3627]
- Polishing: Aktion „Gruppen verwalten“ zum neuen Terminkalender hinzufügen [#3629]
- Fehlendes CSS in Courseware [#3630]
- Fullcalendar wird bei breiten Bildschirmen zu breit [#3633]
- Courseware Layout Polishing [#3634]
- Polishing: „Kalender teilen“ + „Kalender veröffentlichen“ in einem Dialog vereinheitlichen [#3635]
- Fragebögen: Standardsortierung nach Titel ist nicht hilfreich [#3646]
- Login: Eingabeformular wird nicht angezeigt, obwohl es der primäre Login ist [#3647]
- Wiki ab 5.5: Autor:innenzuordnung zeigt nichts an [#3650]
- Wiki Aktivitäten haben keinen korrekten Link mehr [#3651]
- Wiki ab 5.5: Fehler nach dem Merge im Main [#3652]
- Spalte wiki_version.user_id hat falsche Collation [#3655]
- Fehler beim Abrufen der Aktivitäten [#3656]
- PHP8-Warning im JSUpdater [#3657]
- Courseware - Lernmaterialien lassen sich nicht importieren [#3666]
- Neues Wiki (ab 5.5): Speichern-Button ist nach dem automatischen Speichern ausgegraut [#3668]
- Fehlerhafte Darstellung der Plus/Minus-Icons auf der Seite der Änderungen [#3673]
- Wegzeugleiste toggelt Bearbeitungsmodus [#3675]
- Das Registrierungsformular tut nichts [#3678]
- Hinweise zum Login: Editor schreibt nur fett [#3683]
- Terminkalender-StEP hat die falsche Migrationsnummer 5.4.1.1 [#3684]
- FormBuilder macht kein autoStore() mehr [#3690]
- JSONAPI: Course-Schema gibt für Studiengruppen das CourseAvatar zurück [#3700]
- Probleme im Registrierungsformular (autocomplete, Titel, Geschlecht fehlt) [#3705]
- Login-Formular: deprecation-Warnungen unter PHP 8.3 [#3708]
- PHP 8.3 deprecation Warning in SimpleCollection [#3709]
- PHP 8.3 deprecation-Warnung in StudipPDO [#3710]
- CLI-Skript `migrate:matrikelnummer` umbenennen [#3711]
- PHP 8.3 deprecation-Warnungen in Trails [#3712]
- PHP 8.3 deprecation-Warnung in PluginManager [#3713]
- Fatal Error in der Rangliste und beim zusammenführen wegen nicht mehr existenten Kalendertabellen [#3715]
- Courseware: Falsches Icon beim verknüpfen [#3748]
- Exception: Class 'CalendarEvent' not found [#3750]
- Typo im JS des Wiki [#3751]
- Login FAQ ist nicht übersetzbar [#3780]
- Wiki Suche läuft in Exception WikiVersion::chdate not found [#3784]
- Teilnehmerexport läuft in Fehler: Call to undefined function export_link() [#3785]
- Veranstaltungskalender kann nicht aufgerufen werden: AccessDeniedException [#3792]
- VA-Kalender: Call to undefined method Course::calendarWritable() [#3794]
- Mehrtägige Termine werden in der Wochenansicht des Kalenders mehrfach an den Folgetagen ausgegeben [#3795]
- Persönliche Startseite „Kalender“ funktioniert nicht mehr [#3798]
- Terminkalender: Datumsformat im Sidebarwidget "Datum auswählen" defekt [#3809]
- Enddatum einer Terminwiederholung nicht auswählbar [#3810]
- Nach dem Bearbeiten eines Wiederholungstermins springt die Ansicht zum ersten Termin der Wiederholungsserie [#3813]
- Terminkalender - Einträge ohne Farbe [#3818]
- Terminkalender: Termine im VA-Kalender können mit „tutor“-Berechtigungen nicht geändert werden [#3824]
- Terminkalender: Andere Kalender zeigen immer die eigenen Termine [#3826]
- Info-Dialog zu Terminen zeigt den Ort des Termins nicht an [#3828]
- Coursware - Sichtbarkeit einer Seite lässt sich nicht ändern [#3830]
- Fehler im Wiki [#3831]
- Fehler beim Kalenderexport [#3832]
- Fehler in den Sprechstunden [#3834]
- ScheduleWidget ist seit dem Umbau des Kalenders kaputt [#3836]
- ICAL Export fehlt das UID Attribut [#3837]
- Kalender hat alle geteilten Kalender verloren [#3840]
- Teilnehmerexport liefert nicht alle TeilnehmerInnen [#3841]
- Wiederholungstermine werden am Tag der Sommerzeitumstellung nicht korrekt angezeigt [#3843]
- Verkehrte Woche [#3847]
- Zeitbereich ziehen funktioniert nicht im Veranstaltungskalender [#3849]
- Gruppenkalender zeigt Termine mehrfach an, wenn mehrere Personen der Gruppe den Termin im Kalender haben [#3850]
- Kalender: Austragen von Personen aus einem Termin funktioniert nicht [#3854]
- Zeilenumbrüche in Terminbeschreibung fehlen [#3861]
- Verschieben eines Termins durch Änderung des Datums [#3862]
- Falsche Darstellung ganztägiger Termine an den Tagen der Sommer-/Winterzeitumstellung [#3864]
- Terminkalender: Tages- und Wochenansicht endet um 23:00 Uhr [#3868]
- Ganztägige Termine über mehrere Tage können nicht angelegt werden [#3872]
- Nachdem der Kalender „(bitte wählen)“ ausgewählt wurde, wird eine AccessDeniedException angezeigt [#3874]
- Ganztägige Termine über mehrere Tage werden nicht als Ganztagstermine dargestellt [#3875]
- Termine können nicht gelöscht werden, wenn diese zusätzlich noch in weiteren Kalendern eingetragen sind [#3877]
- Ganztägige Termine, die über einen Tag gehen, werden an 2 Tagen angezeigt [#3878]
- Die Kopfzeile des Terminkalenders enthält keine Informationen zum Datum [#3879]
- Die Elemente in der Kopfzeile des Terminkalenders brechen bei kleinen Displaybreiten (Mobilansicht) nicht um [#3880]
- Kalenderauswahl: Titel bei getFullName() verwirrend [#3881]
- Beim Löschen eines Termins aus mehreren Terminkalendern wird nicht nachgefragt, ob der Termin für alle gelöscht werden soll oder nur für einen selbst [#3882]
- Beim Löschen eines Termins aus dem Terminkalender wird in der Benachrichtigungsmail die falsche Person genannt [#3884]
- Exception beim Klick auf „Bearbeiten“ in der Contentbar eines leeren Wikis [#3885]
- REST-API Routen für den Kalender sind kaputt [#3886]
- Ganztagestermine werden im Gruppenterminkalender nicht dargestellt [#3889]
- Performance des persönlichen Kalenders / Gruppenkalender ist schlecht [#3893]
- Wiki: navigation item '/course/wiki/allpages' not found [#3898]
- Wiki: Incorrect integer value: '-' for column `studip`.`wiki_pages`.`parent_id` at row 1 [#3899]
- lib/models/WikiPage.class.php: @property veraltet [#3901]
- Wiki: Hierarchie kaputt bei Seiten ohne parent [#3904]
- Courseware: Auflösung der generiertenSchmuckbilder zu gering [#3905]
- Terminkalender/Stundenplan: nur 15 Farben verfügbar [#3909]
- Statistik: Table 'studip.wiki' doesn't exist [#3913]
- Doppeltes CSS in questionnaire.scss [#3917]
- Courseware Schmuckbilder haben durch höhere Auflösung falsche Dimensionen [#3918]
- Im Datepicker Woche/Datum anzeigen, in der ich mich befinde [#3920]
- Widget "Meine aktuellen Termine" sortiert falsch [#3922]
- Termin im falschen Kalender eingetragen [#3923]
- Kalender soll in der gleichen Woche/Tag/Monat bleiben, wenn man auf andere Person schaltet [#3924]
- Coursware - Nach dem Erstellen eine Lernmaterials und eines Abschnittes lassen sich keine Blöcke hinzufügen [#3933]
- iCal Export liefert abgewählte Veranstaltungstermine mit aus [#3938]
- PHP-Warnung im Kalender [#3940]
- Leerer Abschnitt auf erster Seite im Lernmaterial [#3945]
- PHP - Fehler im JS-Updater [#3950]
- Blubber - Avatare sind zu groß [#3951]
- iCal Export zeigt Terminserie an, die schon abgelaufen ist [#3953]
- Terminkalender - Veranstaltung hinzufügen funktioniert nicht [#3954]
- Gruppenterminkalender Suchfeld Personen [#3963]
- PHP Warnungen im WIKI [#3967]
- Wiki-Bearbeiten wird nicht freigegeben, wenn gespeichert wird [#3970]
- Wiki Änderungen seit letztem Besuch zeigt zu viel Text an [#3972]
- Wikiseite angeblich vom 1.1.1970 [#3973]
- SQL-Fehler im Kalender [#3983]
- CW: Bearbeitungsleiste und Scrollbalken überlappen sich [#4033]
- PHP Fehler im Wiki [#4044]
- Terminkalender: Bei Eintragen eines Termins in fremdem Kalender wird der Termin nur bei einem selbst eingetragen [#4058]
- Wiki: Einzelne Wikiversionen können nicht mehr gelöscht werden [#4079]
- Terminkalender: Täglich wiederholte Termine werden nicht angezeigt [#4080]
- Courseware: Block kann manchmal nicht hinzugefüt werden [#4083]
- Terminkalender: Dialog des Termin-Exports schließt sich nicht nach Download [#4094]
- Layout-Fehler: Ordner wählen [#4121]
- Fehlerhaftes Layout: Courseware Titelseite [#4122]
- PHP - Warnungen in den externen Seiten [#4124]
- Suchfunktion Wiki [#4126]
- CLI-Kommando "sorm:describe" läuft in Fehler [#4145]
- Bei einem leeren Blubber-Thread dreht sich dauerhaft das Lade-Icon am linken Rand des Hauptbereiches [#4191]
- Warning im Installationsassistent unter PHP 8.1 [#4209]
- Fehler in der Datei- und Aktivitätsübersicht: Tabelle "wiki" existiert nicht mehr [#4219]
- Neue Externe Seiten zeigen auch unsichtbare VA an [#4229]
- Externe Seiten: Die Sichbarkeit von Veranstaltungen wird an weiteren Stellen nicht berücksichtigt [#4231]
- Semesterwahl in der globalen Suche versteckt das Label nicht mehr [#4238]
- Kalender: Beim Löschen von Ausnahmen von Wiederholungsterminen wird immer die erste Ausnahme gelöscht [#4250]
- Loginmaske verliert die CID [#4313]
# 18.06.2024 v 5.4.3
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.4.3&state=all
- Verwaltung von Veranstaltungen: Lehrendenfilter wird angewendet, obwohl das nicht angezeigt wird [#991]
- Nachrichten: Dialoge haben kein data-secure [#2908]
- Verlinkung bei der Raumverwaltung > Auflösen von Raumanfragen [#2956]
- Courseware: Bildvergleich im Tabs und Accordion Abschnitt im Lesemodus "weg" [#3192]
- Veranstaltungshierarchie: Aktionen in der Contentbar funktionieren nach Schließen des Dialogs nicht mehr [#3490]
- Textarea fängt an rückwärts zu schreiben [#3510]
- MyCoursesController::getMyCoursesData(): Argument 1 ($sem_courses) must be of type array, null given [#3740]
- Courseware: Bild zum Lernmaterial kann nicht mehr entfernt werden [#3742]
- Contentbar verdeckt Content im Wiki im Kompaktmodus [#3749]
- Icons von Meetings, Kalender und Stoodle sind schwarz statt blau [#3801]
- Semesterfilter für Benutzer verwendet noch all [#3803]
- Forum: Beitrag zitieren/antworten hat neuerdings verwirrende UI [#3816]
- Nachladen bei Blubber funktioniert nicht [#3817]
- Blubber: Performance der Routen zum Teil überarbeitungswürdig [#3819]
- Blubber: Avatare sind schwammig [#3820]
- Semesterfilter für Benutzer verwendet noch all [#3821]
- MyRealmModel - Warning: max(): Array must contain at least one element [#3822]
- Fehler bei einer Raumanfrage [#3825]
- Warnungen in den Raumanfragen [#3833]
- Doc-Block in Contact.class.php fehlerhaft [#3839]
- Semesterwechsel funktioniert nicht [#3844]
- Anzahl der Veranstaltungen in der Unterebene beim VVZ passt nicht [#3852]
- Sichtbarkeitseinstellung: irreführender Hinweis [#3859]
- Umschalten der Ansicht im Veranstaltungsverzeichnis springt wieder an den Anfang zurück [#3867]
- Raumverwaltung: Raumplanung > Anfragenplan [#3873]
- Sortierung im Admin-Veranstaltungs-Übersichtsbereich [#3888]
- Falsche Information für Admin-Verwaltung bei TN-Zahl [#3906]
- CW: Bilderpool kann nur einmal bei Lernmaterialien ausgewählt werden [#3908]
- PDF-Export der Veranstaltungsübersicht ist leer [#3925]
- Sortieren nach Semester auf Veranstaltungsadminseite alphabetisch nicht zeitlich [#3926]
- Kompaktmodus: Wiki und Benutzerverwaltung [#3927]
- Veranstaltungsadministration - Verwaiste View [#3930]
- Docker-Container zum Testen sollen mit WebP umgehen können und im "main" mit PHP 8.3 statt PHP 8.2 laufen [#3935]
- Logout Success Messagebox fehlt ab 5.4 [#3937]
- PHP-Warnungen im Blubber [#3939]
- Kopieren und einfügen aus der Merkliste mit Text Blöcken wirft Fehler [#3942]
- Modulfilter bei "Meine Veranstaltungen" [#3946]
- Raumanfragen - Gewünschte Eigenschaften werden leer abgespeichert [#3947]
- PDFs werden nicht richtig skaliert [#3948]
- Blubber - Neue Konversation erstellen - Dialog sieht kaputt aus [#3952]
- Verwendung von get_called_class() in SimpleORMap behindert Discovery in IDEs [#3976]
- Raumanfragen brechen mit einem Fehler ab [#3980]
- SQL-Fehler im Stundenplan [#3981]
- CLI-Cronjobs ohne ID führt zu einem Fehler [#3982]
- Fehler in den Raumanfragen aus Raum/Zeit [#3991]
- Nicht mehr benötigte Funktion im Admin_CoursesController [#3996]
- Performance von AdminCourseFilter::getCourses() ist nicht optimal [#3999]
- Weitere Probleme in den Raumanfragen [#4000]
- PHP-Warnungen in der showNews.inc.php [#4001]
- Fehler bei einer Raumanfrage bei der Anzahl der Sitzplätze [#4004]
- Raumanfrage: Call to a member function getRequestableProperties() on null [#4010]
- Admin-Filter nach Lehrenden und Studiengangteilen werden nicht zurückgesetzt [#4018]
- VA-Admin, Filter Veranstaltungsverwaltung, Veranstaltungszugriff in Veranstaltungen [#4030]
- Mangelnde Tastatur-Bedienbarkeit im Veranstaltungsverzeichnis [#4031]
- Beim Navigieren durch das Vorlesungsverzeichnis aktualisiert sich der Seitentitel nicht [#4035]
- Lehrendenfilter zeigt keine Einträge bei "Einrichtung + Institute" [#4050]
- Einrichtungsfilter zeigt falschen Wert bei "Einrichtung + Institute" [#4051]
- Verwaltung von Veranstaltungen: Lehrendenfilter wird angewendet, obwohl das nicht angezeigt wird [#4053]
- PHP - Fehler im Kalender [#4063]
- PHP8-Warnungen [#4086]
- PERSONALDOCUMENT_ENABLE wird noch verwendet? [#4093]
- PHP - Warnungen in den Fragebögen [#4098]
- PHP8 Warning Administration von Veranstaltungen [#4107]
- Verwaltung von Veranstaltungen: Einrichtungsfilter filtert bei "Fakultät + Institute" nur auf die Fakultät [#4108]
- SimpleOrMapNodbTest.php:testI18nFields schlägt fehl, wenn man nur eine Sprache konfiguriert hat [#4129]
- SORM und IDE vertragen sich nicht so gut [#4130]
- Verwaltung von Veranstaltungen: Lehrendenfilter zeigt zuviele Einträge [#4146]
- Courseware: DokumentenBlock skaliert falsch [#4186]
- Fragebögen: Frageoptionen werden überschrieben wenn Fragen kopiert werden [#4208]
- VA-Administration: Filter nach Text-Datenfelder funktionieren nicht [#4215]
- CLI-Kommando oauth2:keys ist (immer noch) defekt [#4223]
- Sortierung auf der Veranstaltungsseite für Admins ist nicht konsistent [#4226]
- Alter Blubber: Kontrastverhältnisse Text zu Hintergrund prüfen und korrigieren (Hochkontrastansicht) [#4232]
- Fix typo in cli command `oauth2:keys`. [#4239]
- Veranstaltungshierarchie: Fehler beim Anlegen von Unterelementen [#4257]
- Suche in der Sidebar löscht ihren Inhalt beim Drücken von Enter [#4274]
- Loggin im Dateibereich defekt [#4280]
- PHP-Warnungen in den Raumanfragen [#4281]
# 17.06.2023 v 5.3.6
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.3.6&state=all
- Courseware - Import schlägt fehl [#2565]
- Fehler bei der Anzeige aus Arbeitsplatz in Veranstaltung kopierter Fragebögen [#2927]
- Courseware: Fehler beim Verschieben von Blöcken in einen Tabs-Abschnitt [#3151]
- Studierende mit Schreibrechten können sich die Schreibrechte und Leserechte entziehen [#3340]
- Fragebogen: Likertskala und Polskala zeigen Aussagen immer in zufälliger Reihenfolge an [#3460]
- Fragebögen: Einleitungstext kann bei Likert-Skala und Pol-Skala nicht eingegeben werden [#3466]
- Fragebogen: Auswahlfrage zeigt Aussagen in zufälliger Reihenfolge an [#3526]
- Fragebogen: Änderung der Option "Pflichtfrage" wird nicht gespeichert [#3691]
- Mein Arbeitsplatz: Text läuft aus Kachel in mobiler Ansicht [#3725]
- PHP8-Warnungen [#3741]
- PHP8-Warnungen [#3793]
- Modulkontakte sortieren [#3797]
- Courseware - VUE Warnungen [#3829]
- aria-expanded ist bei der responsiven Navigation am falschen Element [#3858]
- PHP8-Warnungen [#3890]
- Raumanfrage: Liste der Räume steht nicht mehr rechts im Dialog [#3903]
- Fragebögen: Zu Auswahlfrage ohne Antworten können keine Antworten hinzugefügt werden [#3914]
- Fragebögen: Auswahlfrage ohne Fragetext wird beim Bearbeiten "geleert" [#3915]
- Fragebögen: Fehler beim Speichern, wenn man als Startzeitpunkt "händisch" auswählt [#3916]
- PHP Warnung in den Plugin-Administration [#3928]
- Courseware - DateiordnerBlock funktioniert nicht richtig [#3934]
- Barrierefreiheit: "Back to top" ist nicht per Tabulator erreichbar [#3941]
- I18NString ignoriert den default-Wert [#3943]
- PHP - Fehler in der Courseware [#3949]
- Barrierefreiheit: Auf- und Zuklappverhalten für Screenreader kennzeichnen [#3960]
- Return Type Probleme beim DI-Container [#3968]
- Tägliche Benachrichtigungen: seminar_id statt range_id in notification_text.php [#3978]
- Methode NewsRangesSearch::getResults() ist für Berechtigung "admin" defekt [#3992]
- CSS-Klasse "list-unstyled" ist verlorengegangen [#3997]
- Responsive Navigation erscheint auf dem Desktop nicht, wenn ein Anker angesprungen wird [#4005]
- Weitere PHP8-Warnings [#4012]
- Avatare und Asset-Images via Vue haben kein alt-Attribut im Image-Tag [#4014]
- PHP-Warnungen in den Studiengruppen [#4019]
- CLI-Kommando "check:globalized-config" ist defekt [#4024]
- Weitere PHP8-Warnungen [#4026]
- Meine Veranstaltungen: Fehlende Textalternativen für die angezeigte Farbgruppierung [#4036]
- Fehlende textuelle Beschreibungen für Icons im Dateibereich [#4037]
- Dialogtitel sind nicht als Überschrift gekennzeichnet und nicht modal [#4038]
- article.studip und fieldsets kennzeichnen nicht ihren auf-/zugeklappten Zustand für Screenreader mit aria-expanded [#4040]
- BlubberThread::getContextTemplate() geht von falscher Annahme für StudipModule::getTabNavigation() aus [#4041]
- Das Skiplink-Menü enthält Skiplinks, die nirgendwohin verweisen [#4049]
- Fehlende aria-Informationen für Warndialoge und fehlerhafte Aria-Sortierinformation für Tabellen [#4064]
- Vertikale Ausrichtung von Text wird nicht übernommen [#4067]
- Responsive Ansicht von Veranstaltungen unterscheidet sich von der normalen Ansicht [#4076]
- PHP8-Warnungen [#4077]
- Listenelemente sind nicht syntaktisch korrekt ausgezeichnet [#4088]
- Datentabellen im Bereich "Forum" sind nicht korrekt aufgebaut/beschriftet [#4089]
- Formularfelder sind nicht mit einem label verknüpft [#4091]
- CLI-Kommando `plugin:register` hat ein anderes Verhalten [#4099]
- PHP8-Warnungen in SimpleORMap::import() [#4100]
- Formular zum Barrieremelden lässt sich effektiv nicht abschalten [#4112]
- PHP - Warnungen im OER-Campus [#4114]
- Formular zum Melden einer Barriere erzeugt ggf. unnötig lange URLs [#4115]
- PHP8 Warnungen im Forum [#4127]
- PHP8-Warnungen [#4128]
- Courseware Abschnitt-Liste-Element Bearbeitungsmodus Icons verschoben [#4142]
- Globale Variable ASSETS_URL soll erst nach dem Laden der Konfiguration gesetzt werden [#4143]
- PHP8-Warnungen [#4168]
- PHP - Warnungen in dates.inc.php [#4178]
- Beschriftung des Formularfelds ist nicht mit dem dazugehörigen Feld verknüpft [#4183]
- PHP8-Warnungen [#4210]
- PHP8-Warnungen [#4221]
- Gruppen von Formularelementen strukturieren [#4224]
- Kontrastverhältnisse Text zu Hintergrund prüfen und korrigieren (Normal- und Hochkontrastansicht) [#4225]
- Sortierungspfeile im Tabellenkopf sind verloren gegangen [#4227]
- Name des markierten Formularfeldes enthält nicht den sichtbaren Text [#4235]
- Pflichtfelder beim Schreiben einer neuen Nachricht werden nicht als solche gekennzeichnet [#4237]
- PHP8-Warnung bei Verwendungen von PageLayout::disableHeader() [#4242]
- Suchfeld im Adminbereich verschwunden [#4249]
- Ablaufplan: Warnmeldung, wenn Termin "ohne Semester" ist [#4275]
- PHP8-Warnungen [#4279]
- Fragebogen: Single Choice CSV-Export unnötig kompliziert [#4308]
- PHP - Warnungen / Fehler [#4310]
- PHP8-Warnungen, wenn die Hilfetouren abgeschaltet sind [#4311]
# 17.06.2024 v 5.2.8
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.2.8&state=all
- Fehler im Quellcode der Raumverwaltung -> Raumübersicht [#1421]
- CW: Externe Ansicht bei einigen Blöcken [#3887]
- Angabe fürs Umfärben des Platzhalters von Eingabefeldern im Hochkontrastmodus wird nicht übernommen [#3902]
- admin oder root kann eine Veranstaltung in eine Studiengruppe umwandeln [#3921]
- Barrierefreiheit: Leeres alt-Attribut bei Verwendung von studip-icon [#3931]
- Nachträgliche Gruppenzuweisung zu einem Termin wird nicht übernommen [#3995]
- Falscher Link zu OER-Material in Abo-Nachricht [#4052]
- Cronjobs: Exceptions beim Ausführen werden nicht korrekt verarbeitet [#4096]
- TypeError: STUDIP.Audio is undefined [#4207]
- Gradebook: Beim Speichern einer Note wird das chdate immer aktualisiert [#4283]
- Fehler beim Authorisieren einer OAuth2-App mittels SSO [#4288]
# 17.06.2024 v 5.1.9
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.1.9&state=all
- Datenfelder: Undefined variable $object_type [#1757]
- JSON-API: OAuthRequestVerifier prüft falsche Signatur, wenn ein Request-Parameter als Array übergeben wird [#1971]
- Log-Events für Aktion SINGLEDATE_CHANGE_TIME und SEM_ADD_SINGLEDATE werden mit ungültigem Werten angelegt [#2735]
- Selbst hochgeladene Dateien in Ordnern ohne Lesezugriff schlecht sichtbar [#2954]
- MailQueueEntry::send prüft nicht darauf, ob die Mail Empfänger hat [#3523]
- Nested fieldsets erben styling vom collapsable [#3704]
- CW-IFRAME-Block [#3823]
- Statusgruppen werfen beim Löschen ein Fehler [#3845]
- SORM: Mehrere Aliase auf die gleiche Spalte sind nicht möglich [#3876]
- PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'Statusgruppen' does not have a method 'cbRemoveTasks' [#3891]
- Request::getDateTime() liefert falschen Zeitpunkt [#3895]
- Wiki: Übergeordnete Seite im Inhaltsverzeichnis geht bei Import verloren [#3900]
- Temporäre Buchungsrechte: Rechte- und Buchungszeitraum identisch [#3907]
- Nutzerverwaltung: "gesperrt von" zeigt eigenen Username [#3932]
- OER-Campus: Suche speichert nicht korrekt, dass schonmal in kürzester Zeit gesucht wurde [#3944]
- Studiengruppennamen bleiben rot [#3956]
- Dialog „Nachricht schreiben“: „Mehrere Adressaten hinzufügen“ hat drei Beschreibungen, die vorgelesen werden [#3961]
- Der Text von Tooltip-Icons wird nur als „leer“ vorgelesen [#3962]
- OER Campus: Suche nach Autoren von Materialien hat schlechte Performance [#3964]
- ILIAS Schnittstelle: SOAP Methode getUser wird noch an einer Stelle verwendet [#3966]
- CSS-Klasse .list-csv hat unnötigen Abstand nach rechts [#3969]
- Plugin wird weiterhin als StandardPlugin angesehen [#3977]
- OpenGraph: Anzeige der URL escapet zuviel [#3990]
- Funktion zum Erstellen einer Raumanfrage gehört nicht in den Dialog [#4003]
- Barrierefreiheit: Größer gestellter Text wächst aus Box [#4006]
- Auswahlelemente von Datei-Nutzungsbedingungen und Ordnertyp: Radio-Buttons sind nicht als solche erkennbar [#4009]
- URL-Validierung in CoursewareIframeBlock sollte überarbeitet werden [#4021]
- Positionsangaben von Elementen in Texten sind nicht barrierefrei [#4022]
- Barrierefreiheit: Blubber für 200% [#4023]
- Links von der Admin-Verwaltungsseite sollten immer auf die Grunddaten einer Veranstaltung zeigen [#4028]
- MultiPersonSearch: Icons zum Suchen und Zurücksetzen sind nicht per Tastatur erreichbar [#4029]
- Installationsskript kann nicht gestartet werden, wenn Warnungen aktiviert sind [#4034]
- Doppeltes Id Attribut auf der Nachrichtenseite [#4039]
- MessageBox sollte als Statusmeldung ausgezeichnet werden [#4042]
- PHP 8: Too few arguments to function Trails_Dispatcher::error_handler() [#4045]
- Profilseite: Icons von Aktionen haben keine Textalternative [#4046]
- Gruppenzuordnung von Veranstaltungen ist nicht barrierefrei [#4047]
- Stundenplan: Auswahl der Farbe für Termine ist nicht barrierefrei [#4048]
- Verwaltung von Veranstaltungen: Duplikate im Lehrendenfilter [#4054]
- Zeiten/Räume-Seite: Aktionen „Neue Raumanfrage“ und „Raumanfrage bearbeiten“ im Drei-Punkte-Menü von Einzelterminen funktioniert nicht in Stud.IP 5.3 [#4057]
- Barrierefreiheit: Blubber Benachrichtigungsstatus ist nicht für Screenreader erkennbar [#4061]
- Seite "Anzeige der Log-Events" ist sehr langsam, wenn kein Filter gewählt ist [#4062]
- ResourceNavigation wird nicht richtig initialisiert [#4065]
- Barrierefreiheit: Globale Suche nicht barrierefrei nutzbar [#4072]
- Ilias Schnittstelle: Automatisch angelegte Benutzer können sich in Ilias nicht anmelden (Ilias 8) [#4081]
- Anzeige von freier Raumangabe enthält zu viele Klammern [#4092]
- Vue-Fehler in Blubber (Developer-Server) [#4097]
- Terminvergabe: Ortsangabe bei nicht gruppierter Anzeige falsch [#4103]
- Anmeldesets: Nutzer können beliebige Anmeldesets löschen [#4144]
- Fehlende Indizes bei schedule_seminare verlangsamen Löschen von VAs [#4157]
- "Freie" sollte "Freie Veranstaltungen" heissen [#4222]
- SORM-Relation kann nicht auf NULL gesetzt werden [#4233]
- ConsultationBlock::range_display gibt für Einrichtungen fälschlicherweise "Veranstaltung" aus [#4234]
- Kaputte Darstellung von Tooltips [#4251]
- JSON-API: Route "/folders/{id}/folders" zeigt unsichtbare Unterordner an [#4277]
- Fehlerbehandlung im Chunk Loader [#4287]
- STUDIP.loadChunk is not a function [#4293]
# 14.03.2024 v 5.4.2
https://gitlab.studip.de/studip/studip/-/issues?milestone_title=Stud.IP+5.4.2&state=all
......
......@@ -38,7 +38,7 @@ PROJECT_NAME = Stud.IP
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 5.4
PROJECT_NUMBER = 6.1
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
......
......@@ -2,8 +2,8 @@ Die Installation von Stud.IP ist halb so schlimm:
es müssen lediglich ein paar Dateien kopiert werden und ein paar
Programme laufen ;-)
Vorausgesetzt wird ein Webserver wie Apache2 oder nginx mit PHP-7.4 Modulen und
eine MySQL 5.7.6 Datenbank.
Vorausgesetzt wird ein Webserver wie Apache2 oder nginx mit PHP-8.1 Modulen und
eine MySQL 8 oder MariaDB 10.2.2 Datenbank.
Was genau zu tun ist, steht in
> doc/de/studip-installation-guide-de-401.pdf
......
......@@ -87,12 +87,12 @@ optimize-icons: npm
find public/assets/images/icons/blue -type f | xargs -P0 npx svgo -q --config=config/svgo.config.js
icons: optimize-icons
find public/assets/images/icons/blue -type f -print0 | xargs -0 -n1 -I{} echo 'sed "s/#28497c/#000000/" {} > {}' | sed 's#icons/blue#icons/black#2' | sh
find public/assets/images/icons/blue -type f -print0 | xargs -0 -n1 -I{} echo 'sed "s/#28497c/#00962d/" {} > {}' | sed 's#icons/blue#icons/green#2' | sh
find public/assets/images/icons/blue -type f -print0 | xargs -0 -n1 -I{} echo 'sed "s/#28497c/#6e6e6e/" {} > {}' | sed 's#icons/blue#icons/grey#2' | sh
find public/assets/images/icons/blue -type f -print0 | xargs -0 -n1 -I{} echo 'sed "s/#28497c/#cb1800/" {} > {}' | sed 's#icons/blue#icons/red#2' | sh
find public/assets/images/icons/blue -type f -print0 | xargs -0 -n1 -I{} echo 'sed "s/#28497c/#ffffff/" {} > {}' | sed 's#icons/blue#icons/white#2' | sh
find public/assets/images/icons/blue -type f -print0 | xargs -0 -n1 -I{} echo 'sed "s/#28497c/#ffad00/" {} > {}' | sed 's#icons/blue#icons/yellow#2' | sh
find public/assets/images/icons/blue -type f -print0 | xargs -0 -n1 -I{} echo 'sed "s/#28497c/#000000/g" {} > {}' | sed 's#icons/blue#icons/black#2' | sh
find public/assets/images/icons/blue -type f -print0 | xargs -0 -n1 -I{} echo 'sed "s/#28497c/#00962d/g" {} > {}' | sed 's#icons/blue#icons/green#2' | sh
find public/assets/images/icons/blue -type f -print0 | xargs -0 -n1 -I{} echo 'sed "s/#28497c/#6e6e6e/g" {} > {}' | sed 's#icons/blue#icons/grey#2' | sh
find public/assets/images/icons/blue -type f -print0 | xargs -0 -n1 -I{} echo 'sed "s/#28497c/#cb1800/g" {} > {}' | sed 's#icons/blue#icons/red#2' | sh
find public/assets/images/icons/blue -type f -print0 | xargs -0 -n1 -I{} echo 'sed "s/#28497c/#ffffff/g" {} > {}' | sed 's#icons/blue#icons/white#2' | sh
find public/assets/images/icons/blue -type f -print0 | xargs -0 -n1 -I{} echo 'sed "s/#28497c/#ffad00/g" {} > {}' | sed 's#icons/blue#icons/yellow#2' | sh
# default rules for gettext handling
js-%.pot: $(VUE_SOURCES)
......
# Stud.IP v6.0
# Stud.IP v6.1
**15.03.2024**
**dd.mm.jjjj**
## Neue Features
......@@ -8,16 +8,7 @@
## Breaking changes
- Im Rahmen von [Issue #3788](https://gitlab.studip.de/studip/studip/-/issues/3788) wurden die Zusätze an allen Icons entfernt. Dadurch kann es sein, dass manche Plugins nicht mehr erscheinen. Diese müssen dann auf eine Variante ohne Zusätze umgestellt werden.
- Die Funktion `get_config()` wurde entfernt. Stattdessen muss die Methode `Config::get()->getValue('CONFIG_KEY')` bzw. der Shortcut `Config::get()->CONFIG_KEY` verwendet werden. ([Issue #2797](https://gitlab.studip.de/studip/studip/-/issues/2797))
- Die Funktion `smile()` wurde entfernt. Sie kann ersatzlos entfernt werden. ([Issue #3158](https://gitlab.studip.de/studip/studip/-/issues/3158))
- Die Funktion `transformBeforeSave()` wurde entfernt. Sie kann ersatzlos entfernt werden. ([Issue #3159](https://gitlab.studip.de/studip/studip/-/issues/3159))
- Die schon lange nicht mehr genutzten Methoden zum Setzen, Auslesen und Enfernen von Schmuckgrafiken von Bildern für die Sidebar wurde entfernt. Die Methoden `Sidebar::setImage()`, `Sidebar::getImage()` sowie `Sidebar::removeImage()` müssen ersatzlos entfernt werden. ([Issue #3157](https://gitlab.studip.de/studip/studip/-/issues/3157))
- Der zweite Parameter für die Methode `Navigation::setImage()` wurde entfernt. Der Parameter schien sich auf das Bild zu beziehen, hat aber Attribute an dem Link gesetzt. Stattdessen muss die Methode `Navigation::setLinkAttributes()` verwendet werden. ([Issue #3578](https://gitlab.studip.de/studip/studip/-/issues/3578))
- Die Unterstützung für LESS-Stylsheets in Plugins wurde entfernt. Als Alternative wird SCSS unterstützt. ([Issue #2720](https://gitlab.studip.de/studip/studip/-/issues/2720))
- Die Funktionen `studip_json_encode()` und `studip_json_decode()` wurden entfernt. Stattdessen müssen die Methode `json_encode()` und `json_decode()` verwendet werden. ([Issue #3814](https://gitlab.studip.de/studip/studip/-/issues/3814))
- Die `MembersModel.php` wurde entfernt ([Issue #3811](https://gitlab.studip.de/studip/studip/-/issues/3811))
- Die `admission.inc.php` wurde entfernt. ([Issue #3812](https://gitlab.studip.de/studip/studip/-/issues/3812))
-
## Security related issues
......
RELEASE 5.4.alpha
RELEASE 6.1.alpha
......@@ -3,6 +3,21 @@ class Accessibility_FormsController extends StudipController
{
protected $with_session = true;
public function before_filter(&$action, &$args)
{
parent::before_filter($action, $args);
if (
Config::get()->REPORT_BARRIER_MODE === 'off'
|| (
Config::get()->REPORT_BARRIER_MODE === 'logged-in'
&& !User::findCurrent()
)
) {
throw new AccessDeniedException();
}
}
public function report_barrier_action()
{
PageLayout::setTitle(_('Barriere melden'));
......@@ -131,6 +146,9 @@ class Accessibility_FormsController extends StudipController
}
$this->form->addPart($personal_data_part);
$this->form->addPart(new \Studip\Forms\Captcha());
$this->form->setSaveButtonText(_('Barriere melden'));
$this->form->setSaveButtonName('report');
$this->form->setURL($this->report_barrierURL());
......
......@@ -53,7 +53,7 @@ class ActivityfeedController extends AuthenticatedController
unset($modules[Context::INSTITUTE]['participants']);
unset($modules[Context::INSTITUTE]['schedule']);
$standard_plugins = PluginManager::getInstance()->getPlugins("StandardPlugin");
$standard_plugins = PluginManager::getInstance()->getPlugins(StandardPlugin::class);
foreach ($standard_plugins as $plugin) {
if ($plugin instanceof ActivityProvider) {
$modules[Context::COURSE][$plugin->getPluginName()] = $plugin->getPluginName();
......@@ -67,7 +67,7 @@ class ActivityfeedController extends AuthenticatedController
'blubber' => _('Blubber'),
];
$homepage_plugins = PluginEngine::getPlugins('HomepagePlugin');
$homepage_plugins = PluginEngine::getPlugins(HomepagePlugin::class);
foreach ($homepage_plugins as $plugin) {
if ($plugin->isActivated($GLOBALS['user']->id, 'user')) {
if ($plugin instanceof ActivityProvider) {
......@@ -92,4 +92,193 @@ class ActivityfeedController extends AuthenticatedController
PageLayout::setTitle(_('Aktivitäten konfigurieren'));
}
public function load_action(): void
{
$user = User::findCurrent();
// failsafe einbauen - falls es keine älteren Aktivitäten mehr im System gibt, Abbruch!
$oldest_activity = \Studip\Activity\Activity::getOldestActivity();
$max_age = $oldest_activity ? $oldest_activity->mkdate : time();
$contexts = [];
// create system context
$system_context = new \Studip\Activity\SystemContext($user);
$contexts[] = $system_context;
$contexts[] = new \Studip\Activity\UserContext($user, $user);
$user->contacts->each(function ($another_user) use (&$contexts, $user) {
$contexts[] = new \Studip\Activity\UserContext($another_user, $user);
});
if (!in_array($user->perms, ['admin','root'])) {
// create courses and institutes context
foreach (\Course::findMany($user->course_memberships->pluck('seminar_id')) as $course) {
$contexts[] = new \Studip\Activity\CourseContext($course, $user);
}
foreach (\Institute::findMany($user->institute_memberships->pluck('institut_id')) as $institute) {
$contexts[] = new \Studip\Activity\InstituteContext($institute, $user);
}
}
// add filters
$filter = new \Studip\Activity\Filter();
$start = Request::int('start', strtotime('yesterday'));
$end = Request::int('end', time());
$scrollfrom = Request::int('scrollfrom', false);
$filtertype = Request::get('filtertype', '');
$objectType = Request::get('object_type');
$filter->setObjectType($objectType);
$objectId = Request::get('object_id');
$filter->setObjectId($objectId);
$context = Request::get('context_type');
$filter->setContext($context);
$contextId = Request::get('context_id');
$filter->setContextId($contextId);
if (!empty($filtertype)) {
$filter->setType(json_decode($filtertype));
}
if ($scrollfrom) {
// shorten "watch-window" by one second to prevent duplication of activities
$scrollfrom -= 1;
if ($scrollfrom > $max_age){
$end = $scrollfrom;
$start = strtotime('yesterday', $end);
$data = [];
$backtrack = 1;
while (empty($data)) {
$filter->setStartDate($start);
$filter->setEndDate($end);
$data = $this->getStreamData($contexts, $filter);
if ($start < $max_age) {
break;
}
// move "watch-window" back one day at a time
$end = $start - 1;
$start = strtotime("-{$backtrack} days", $start);
// enforce maximum "watch-window", currently 2 weeks
$backtrack = min(14, $backtrack + 1);
}
} else {
$data = false;
}
} else {
$filter->setStartDate($start);
$filter->setEndDate($end);
$data = $this->getStreamData($contexts, $filter);
}
// set etag for preventing resending the same stuff over and over again
$etag = md5(serialize($data));
$this->response->add_header('ETag', '"' . $etag . '"');
if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && $this->etagMatches($etag, $_SERVER['HTTP_IF_NONE_MATCH'])) {
$this->set_status(304);
$this->render_nothing();
return;
}
if (isset($_SERVER['HTTP_IF_MATCH']) && !$this->etagMatches($etag, $_SERVER['HTTP_IF_MATCH'])) {
$this->set_status(412);
$this->render_nothing();
return;
}
$this->render_json($data);
}
/**
* private helper function to get stream data for given contexts and filter
*
* @param $contexts
* @param $filter
* @return array
*/
private function getStreamData($contexts, $filter): array
{
$stream = new Studip\Activity\Stream($contexts, $filter);
$data = $stream->toArray();
foreach ($data as $key => $act) {
$actor = [
'type' => $act['actor_type'],
'id' => $act['actor_id'],
];
if ($act['actor_type'] == 'user') {
$a_user = \User::findFull($act['actor_id']);
$actor['details'] = $this->getMiniUser($a_user ?: new \User());
} elseif ($act['actor_type'] === 'anonymous') {
$actor['details'] = [
'name' => _('Anonym'),
];
}
unset($data[$key]['actor_type']);
unset($data[$key]['actor_id']);
$data[$key]['actor'] = $actor;
}
return $data;
}
private function getMiniUser(User $user): array
{
$avatar = \Avatar::getAvatar($user->id);
return [
'id' => $user->id,
'name' => $this->getNamesOfUser($user),
'avatar_small' => $avatar->getURL(\Avatar::SMALL),
'avatar_medium' => $avatar->getURL(\Avatar::MEDIUM),
'avatar_normal' => $avatar->getURL(\Avatar::NORMAL),
'avatar_original' => $avatar->getURL(\Avatar::NORMAL)
];
}
private function getNamesOfUser(User $user): array
{
return [
'username' => $user->username,
'formatted' => $user->getFullName(),
'family' => $user->nachname,
'given' => $user->vorname,
'prefix' => $user->title_front,
'suffix' => $user->title_rear,
];
}
// Helper method checking if a ETag value list includes the current ETag.
private function etagMatches(string $etag, string $list)
{
if ($list === '*') {
return true;
}
return in_array(
$etag,
preg_split('/\s*,\s*/', $list)
);
}
}
......@@ -31,7 +31,9 @@ class Admin_AdditionalController extends AuthenticatedController
"Veranstaltung zu verändern."));
}
Sidebar::get()->addWidget(new CourseManagementSelectWidget());
if ($GLOBALS['perm']->have_studip_perm('admin', $this->course->id)) {
Sidebar::get()->addWidget(new CourseManagementSelectWidget());
}
}
/**
......
<?php
/**
*
**/
class Admin_ApiController extends AuthenticatedController
{
/**
*
**/
public function before_filter(&$action, &$args)
{
parent::before_filter($action, $args);
require_once 'lib/bootstrap-api.php';
$GLOBALS['perm']->check('root');
Navigation::activateItem('/admin/config/api');
PageLayout::setTitle(_('API Verwaltung'));
$this->types = [
'website' => _('Website'),
'desktop' => _('Herkömmliches Desktopprogramm'),
'mobile' => _('Mobile App')
];
// Sidebar
$views = new ViewsWidget();
$views->addLink(_('Registrierte Applikationen'),
$this->url_for('admin/api'))
->setActive($action === 'index');
$views->addLink(_('Globale Zugriffseinstellungen'),
$this->url_for('admin/api/permissions'))
->setActive($action == 'permissions');
$views->addLink(_('Konfiguration'),
$this->url_for('admin/api/config'))
->setActive($action == 'config');
Sidebar::get()->addWidget($views);
$actions = new ActionsWidget();
$actions->addLink(_('Neue Applikation registrieren'),
$this->url_for('admin/api/edit'),
Icon::create('add', 'clickable'))
->asDialog();
Sidebar::get()->addWidget($actions);
}
/**
*
**/
public function index_action()
{
$this->consumers = RESTAPI\Consumer\Base::findAll();
$this->routes = RESTAPI\Router::getInstance()->getRoutes(true);
}
/**
*
**/
public function render_keys($id)
{
$consumer = RESTAPI\Consumer\Base::find($id);
return [
'Consumer Key = ' . $consumer->auth_key,
'Consumer Secret = ' . $consumer->auth_secret,
];
}
/**
*
**/
public function keys_action($id)
{
$details = $this->render_keys($id);
if (Request::isXhr()) {
$this->render_text(implode('<br>', $details));
} else {
PageLayout::postMessage(MessageBox::info(_('Die Schlüssel in den Details dieser Meldung sollten vertraulich behandelt werden!'), $details, true));
$this->redirect('admin/api/#' . $id);
}
}
/**
*
**/
public function edit_action($id = null)
{
$consumer = $id
? RESTAPI\Consumer\Base::find($id)
: RESTAPI\Consumer\Base::create(Request::option('consumer_type') ?: 'oauth');
if (Request::submitted('store')) {
$errors = [];
$consumer->active = (bool) Request::int('active');
$consumer->title = Request::get('title');
$consumer->contact = Request::get('contact');
$consumer->email = Request::get('email');
$consumer->callback = Request::get('callback');
$consumer->url = Request::get('url');
$consumer->type = Request::get('type') ?: null;
$consumer->commercial = Request::int('commercial');
$consumer->notes = Request::get('notes');
$consumer->description = Request::get('description');
if (!empty($errors)) {
$message = MessageBox::error(_('Folgende Fehler sind aufgetreten:'), $errors);
PageLayout::postMessage($message);
return;
}
$consumer->store();
if ($id) {
$message = MessageBox::success(_('Die Applikation wurde erfolgreich gespeichert.'));
} else {
$details = $this->render_keys($consumer->id);
$message = MessageBox::success(_('Die Applikation wurde erfolgreich erstellt, die Schlüssel finden Sie in den Details dieser Meldung.'), $details, true);
}
PageLayout::postMessage($message);
$this->redirect('admin/api/index#' . $consumer->id);
return;
}
$this->consumer = $consumer;
$this->id = $id;
}
/**
*
**/
public function toggle_action($id, $state = null)
{
$consumer = RESTAPI\Consumer\Base::find($id);
$consumer->active = $state === null ? !$consumer->active : ($state === 'on');
$consumer->store();
$message = $state
? _('Die Applikation wurde erfolgreich aktiviert.')
: _('Die Applikation wurde erfolgreich deaktiviert.');
PageLayout::postMessage(MessageBox::success($message));
$this->redirect('admin/api/#' . $consumer->id);
}
/**
*
**/
public function delete_action($id)
{
if (!Request::isPost()) {
throw new MethodNotAllowedException();
}
if ($consumer = RESTAPI\Consumer\Base::find($id)) {
$consumer->delete();
PageLayout::postSuccess(_('Die Applikation wurde erfolgreich gelöscht.'));
}
$this->redirect('admin/api');
}
/**
*
**/
public function permissions_action($consumer_id = null)
{
if (Request::submitted('store')) {
$perms = Request::getArray('permission');
$permissions = RESTAPI\ConsumerPermissions::get($consumer_id ?: 'global');
foreach ($perms as $route => $methods) {
foreach ($methods as $method => $granted) {
$permissions->set(urldecode($route), urldecode($method), (bool)$granted, true);
}
}
$permissions->store();
PageLayout::postMessage(MessageBox::success(_('Die Zugriffsberechtigungen wurden erfolgreich gespeichert')));
$this->redirect($consumer_id ? 'admin/api' : 'admin/api/permissions');
return;
}
$title = $consumer_id ? _('Zugriffsberechtigungen') : _('Globale Zugriffsberechtigungen');
$title .= ' - ' . PageLayout::getTitle();
PageLayout::setTitle($title);
$this->consumer_id = $consumer_id;
$this->router = RESTAPI\Router::getInstance();
$this->routes = $this->router->getRoutes(true, false);
$this->permissions = RESTAPI\ConsumerPermissions::get($consumer_id ?: 'global');
$this->global = $consumer_id ? RESTAPI\ConsumerPermissions::get('global') : false;
}
public function config_action()
{
$this->config = Config::get();
if (Request::isPost()) {
$this->config->store('API_ENABLED', Request::int('active', 0));
$this->config->store('API_OAUTH_AUTH_PLUGIN', Request::option('auth'));
PageLayout::postMessage(MessageBox::success(_('Die Einstellungen wurden gespeichert.')));
$this->redirect('admin/api/config');
}
}
}
......@@ -44,11 +44,11 @@ class Admin_AutoinsertController extends AuthenticatedController
if (Request::submitted('suchen')) {
if (Request::get('sem_search')) {
$this->sem_search = Request::get('sem_search');
$this->sem_select = Request::option('sem_select');
$this->sem_select = Request::option('sem_select') ?: null;
$search = new SeminarSearch();
$this->seminar_search = $search->getResults
(Request::get('sem_search'),
['search_sem_sem' => Request::option('sem_select')]
$this->seminar_search = $search->getResults(
$this->sem_search,
['search_sem_sem' => $this->sem_select]
);
if (count($this->seminar_search) == 0) {
PageLayout::postInfo(_('Es wurden keine Veranstaltungen gefunden.'));
......@@ -159,7 +159,7 @@ class Admin_AutoinsertController extends AuthenticatedController
} elseif (!count($filters)) {
PageLayout::postError(_('Keine Filterkriterien gewählt'));
} else {
$seminar = Seminar::GetInstance($seminar_id);
$course = Course::find($seminar_id);
$userlookup = new UserLookup();
foreach ($filters as $type => $values) {
......@@ -170,8 +170,11 @@ class Admin_AutoinsertController extends AuthenticatedController
foreach ($user_ids as $user_id) {
if ($force || !AutoInsert::checkAutoInsertUser($seminar_id, $user_id)) {
$real_users += $seminar->addMember($user_id) ? 1 : 0;
AutoInsert::saveAutoInsertUser($seminar_id, $user_id);
$user = User::find($user_id);
if ($user) {
$real_users += $course->addMember($user) ? 1 : 0;
AutoInsert::saveAutoInsertUser($seminar_id, $user_id);
}
}
}
......@@ -182,9 +185,8 @@ class Admin_AutoinsertController extends AuthenticatedController
count($user_ids),
sprintf(
'<a href="%s">%s</a>',
URLHelper::getLink('dispatch.php/course/details/', ['cid' => $seminar->getId()]),
htmlReady($seminar->getName()
)
URLHelper::getLink('dispatch.php/course/details/', ['cid' => $course->id]),
htmlReady($course->name)
)
);
$details = [_('Etwaige Abweichungen der Personenzahlen enstehen durch bereits vorhandene bzw. wieder ausgetragene Personen.')];
......
......@@ -156,9 +156,7 @@ class Admin_BannerController extends AuthenticatedController
}
break;
case 'seminar':
try {
Seminar::getInstance($target);
} catch (Exception $e) {
if (!Course::exists($target)) {
$errors[] = _('Die angegebene Veranstaltung existiert nicht. '
.'Bitte geben Sie eine gültige Veranstaltungs-ID ein.');
}
......@@ -199,14 +197,14 @@ class Admin_BannerController extends AuthenticatedController
->defaultValue($banner->target,$seminar_name['name'])
->render();
}
if ($banner->target_type == 'user') {
$this->user = QuickSearch::get('user', new StandardSearch('username'))
->setInputStyle('width: 240px')
->defaultValue($banner->target, $banner->target)
->render();
}
if ($banner->target_type == 'inst') {
$institut_name = get_object_name($banner->target, 'inst');
$this->institut = QuickSearch::get('institut', new StandardSearch('Institut_id'))
......
......@@ -47,16 +47,14 @@ class Admin_CacheController extends AuthenticatedController
$this->sidebar->addWidget($views);
if ($this->enabled) {
$actions = new ActionsWidget();
$actions->addLink(
_('Cache leeren'),
$this->url_for('admin/cache/flush'),
Icon::create('decline'),
['data-confirm' => _('Soll der gesamte Inhalt des Caches wirklich gelöscht werden?')]
);
$this->sidebar->addWidget($actions);
}
$actions = new ActionsWidget();
$actions->addLink(
_('Cache leeren'),
$this->url_for('admin/cache/flush'),
Icon::create('decline'),
['data-confirm' => _('Soll der gesamte Inhalt des Caches wirklich gelöscht werden?')]
);
$this->sidebar->addWidget($actions);
}
/**
......@@ -64,28 +62,29 @@ class Admin_CacheController extends AuthenticatedController
*/
public function settings_action()
{
if ($this->enabled) {
$this->types = CacheType::findAndMapBySQL(function (CacheType $type) {
return $type->toArray();
}, "1 ORDER BY `cache_id`");
$currentCache = Config::get()->SYSTEMCACHE;
$currentCacheClass = CacheType::findOneByClass_name($currentCache['type']);
$this->cache = $currentCacheClass->class_name;
$this->config = $currentCacheClass->class_name::getConfig();
} else {
PageLayout::postWarning(
_('Caching ist systemweit ausgeschaltet, daher kann hier nichts konfiguriert werden.'));
}
$currentCache = Config::get()->SYSTEMCACHE;
$currentCacheClass = CacheType::findOneByClass_name($currentCache['type']);
$this->render_vue_app(
Studip\VueApp::create('CacheAdministration')
->withProps([
'enabled' => (bool) $this->enabled,
'currentCache' => $currentCacheClass->class_name,
'currentConfig' => $currentCacheClass->class_name::getConfig(),
'cacheTypes' => CacheType::findAndMapBySQL(
fn(CacheType $type) => $type->toArray(),
"1 ORDER BY `cache_id`"
),
])
);
}
/**
* Fetches necessary configuration for given cache type.
*
* @param string $className
*/
public function get_config_action($className)
public function get_config_action()
{
$className = Request::get('cache');
$type = CacheType::findOneByClass_name($className);
$this->render_json($type->class_name::getConfig());
......@@ -111,7 +110,7 @@ class Admin_CacheController extends AuthenticatedController
// Store settings to global config.
if (Config::get()->store('SYSTEMCACHE', $settings)) {
PageLayout::postSuccess(_('Die Einstellungen wurden gespeichert.'));
StudipCacheFactory::unconfigure();
\Studip\Cache\Factory::unconfigure();
}
$this->relocate('admin/cache/settings');
......@@ -122,7 +121,7 @@ class Admin_CacheController extends AuthenticatedController
*/
public function flush_action()
{
$cache = StudipCacheFactory::getCache();
$cache = \Studip\Cache\Factory::loadSystemCache(true);
$cache->flush();
PageLayout::postSuccess(_('Die Inhalte des Caches wurden gelöscht.'));
......@@ -135,7 +134,7 @@ class Admin_CacheController extends AuthenticatedController
*/
public function stats_action()
{
$cache = StudipCacheFactory::getCache();
$cache = \Studip\Cache\Factory::getCache();
$this->stats = $cache->getStats();
}
......